articles.class.php 9.61 KB
<?php
class Articles{
 var $db = null;
 var $tpl = null;
 var $error = null;
//var $id = false;

 function Articles(&$db,&$tpl,&$error){
  $this->db = &$db;
  $this->tpl = &$tpl;
  $this->error = &$error;
 }
 
 function viewArticlesLast($limit = 4,$lang='ru'){
  $sql = "select *";
  if($lang=='ukr')$sql .=", title_ukr as title,text_ukr as text";
  $sql .=" from articles where velo='0' order by date desc limit $limit";
  $row = $this->db->getAll($sql,array(),DB_FETCHMODE_ASSOC);
  $this->tpl->assign('articles_last',$row);
 }
 

 function viewArticlesComments(){
  $sql = "select articles.*,firms.name as firm_name,topic.comments from articles left join firms on firms.id=articles.firm_id left join topic on topic.parent_table='articles' where topic.parent_table_id=articles.id order by topic.comments desc limit 3";
  $row = $this->db->getAll($sql,array(),DB_FETCHMODE_ASSOC);
  $this->tpl->assign('articles_comments',$row);
 }

 function viewFirmArticles($firm_id){
  $sql = "select articles.*,firms.name as firm_name from articles left join firms on firms.id=articles.firm_id where articles.firm_id=? order by articles.mktime desc";

  $pagerOptions = Array(
    'mode' => 'Sliding',
    'delta' => 6,
    'perPage' => 10,
    'spacesBeforeSeparator' => 1,
    'spacesAfterSeparator' => 1
  );
  $this->tpl->assign('articlesData', Pager_Wrapper_DB($this->db, $sql, $pagerOptions, false, DB_FETCHMODE_ASSOC, array($firm_id)));
 }

 function viewAllArticles($param = array(),$lang = 'ru'){
  $search = array();
  if(isset($_GET['rubID']) && $_GET['rubID']>0)$search[] = sprintf("rubric_id='%d'",$_GET['rubID']);
  if(isset($_GET['velo']))$search[] = sprintf("velo='%d'",$_GET['velo']);
  $sql = "select *";
  if($lang=='ukr')$sql .=", title_ukr as title,text_ukr as text";
  $sql .= " from articles where 1=1 ";
  if(count($search))$sql .= "AND " . implode(" AND ",$search)." ";
  $sql .= "order by date desc";
  $pagerOptions = Array(
    'mode' => 'Sliding',
    'delta' => 6,
    'perPage' => 10,
    'linkClass'=>"link_class",
    'curPageLinkClassName'=>"link_class_active",	
    'spacesBeforeSeparator' => 1,
    'spacesAfterSeparator' => 1
  );
  $this->tpl->assign('articlesAllData', Pager_Wrapper_DB($this->db, $sql, $pagerOptions, false, DB_FETCHMODE_ASSOC, array()));
 }
 
 function viewArticlesList($rubric_id){
  $sql = "select * from articles where action like '%|$rubric_id|%' limit 20";
  $row = $this->db->getAll($sql,array(),DB_FETCHMODE_ASSOC);
  $this->tpl->assign('articles',$row);
 }

 function getArticles($limit = 10,$firm_id = "all"){
  $sql = "select articles.*,rss_rubrics.name as rss_rubric_name from articles left join rss_rubrics on rss_rubrics.id=articles.rss_rubric ";
  if($firm_id!="all")$sql .= "where articles.firm_id=$firm_id ";
  $sql .= "order by articles.mktime desc limit $limit";
 return $this->db->getAll($sql,array(),DB_FETCHMODE_ASSOC);
 }

 function viewOneArticle($id,&$row,$lang = 'ru'){
  $sql = "select *";
  if($lang=='ukr')$sql .=", title_ukr as title,text_ukr as text,meta_title_ukr as meta_title,meta_description_ukr as meta_description";
  $sql .=", title as title_ru";
  $sql .= " from articles where id=? limit 1";
  $row = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  if(strlen($row['action'])>0){$row['rubrics_checked'] = explode('|',substr($row['action'],1,-1));}
  $this->tpl->assign('article',$row);
 }
 
 function infoEditArticleOne($id,$firm_id){
  $sql = "select * from articles where firm_id=? and id=? limit 1";
  $row = $this->db->getRow($sql,array($firm_id,$id),DB_FETCHMODE_ASSOC);
  $this->tpl->assign('article',$row);
 }
 
 function admin_infoEditArticleOne($id){
  $sql = "select * from articles where id=? limit 1";
  $row = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  $row['rubrics_checked'] = explode('|',substr($row['action'],1,-1));
  $this->tpl->assign('article',$row);
 }

 function Click($id){
  $sql = "update articles set view=view+1 where id=? limit 1";
  $this->db->query($sql,$id);
 }


 function trim(&$data){
  foreach($data as $key=>$value){
   if(!is_array($data[$key]))$data[$key] = trim($value);
  }
 }

 function valid($data,$upload = null){
  if(isset($data['rubric'])){
   if( !preg_match("/^([0-9]+)$/",$data['rubric']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Ðóáðèêà.";
  }
  
  if(isset($data['title'])){
   if( !preg_match("/.{1,150}/i",$data['title']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Çàãëàâèå, îò 1-150 ñèìâîëîâ.";
  }

  if(isset($data['about'])){
   if( !preg_match("/.+/is",$data['about']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Àíîíñ.";
  }

  if(isset($data['text'])){
   if( !preg_match("/.+/is",$data['text']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Îïèñàíèå.";
  }
  

  if(isset($upload['pic']['name']) && $upload['pic']['name']!=null){
   $type = substr(strrchr($upload['pic']['name'],"."),1);
   if( !preg_match("/^(jpeg|jpg|gif|png)$/i",$type) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Èçîáðàæåíèÿ, òîëüêî jpg,png,gif.";
  }
  
  
  if(isset($data['name_rubrics'])){
   if( !preg_match("/.{1,250}/i",$data['name_rubrics']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Íàçâàíèÿ ðóáðèêè, îò 1-250 ñèìâîëîâ.";
  }
  
  if(isset($data['sort_rubrics'])){
   if( !preg_match("/^[0-9]+$/",$data['sort_rubrics']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Ñîðòèðîâêà.";
  }

 return ( count($this->error) ) ? true : false;
 }
 
 function SaveRubric($data){
  $table_name = "articles_rubrics";
  if($data['update_id']>0){$DB_AUTOQUERY = DB_AUTOQUERY_UPDATE;$id = $data['update_id'];$where = "id=$id";}else{$DB_AUTOQUERY = DB_AUTOQUERY_INSERT;$where = null;}
  $fields_values = array("name"=>$data['name_rubrics'],"sort"=>$data['sort_rubrics']);
  $this->db->autoExecute($table_name, $fields_values, $DB_AUTOQUERY,$where);
 }


 function SaveArticle($data,$upload = null){
  $table_name = "articles";
  if($data['update_id']>0){$DB_AUTOQUERY = DB_AUTOQUERY_UPDATE;$id = $data['update_id'];$where = "id=$id";}else{$DB_AUTOQUERY = DB_AUTOQUERY_INSERT;$id = $this->db->nextId('mySequenceArticles');$where = null;}

  if(isset($data['rubrics'])){
   $action = '|'.implode("|",$data['rubrics']).'|';
  }else $action = "";

  $fields_values = array("id"=>$id,"action"=>$action,"title"=>$data['title'],"title_ukr"=>$data['title_ukr'],"text"=>$data['text'],"text_ukr"=>$data['text_ukr'],"date"=>$data['date'],"fonheight"=>$data['fonheight'],"meta_title"=>$data['meta_title'],"meta_title_ukr"=>$data['meta_title_ukr'],"meta_description"=>$data['meta_description'],"meta_description_ukr"=>$data['meta_description_ukr'],"meta_keywords"=>$data['meta_keywords'],"meta_keywords_ukr"=>$data['meta_keywords_ukr'],"meta_about"=>$data['meta_about'],"meta_about_ukr"=>$data['meta_about_ukr']);
  if(isset($data['velo']))$fields_values['velo'] = 1;else $fields_values['velo'] = 0;
  //if(!$data['update_id']){$fields_values['mktime'] = mktime();}
  if(isset($data['delete_pic']) && $data['delete_pic']==1){
   $this->deletePic($id);
   $fields_values['pic'] = null; $fields_values['pic_big'] = null;
  }
  if($upload['pic']['tmp_name']){
   $this->deletePic($id);
   $fields_values['pic'] = upload_ImageResize($upload['pic'],array('width'=>"100",'height'=>"100",'upload_path'=>"./uploaded/pic/articles/"));
   $fields_values['pic_big'] = upload_ImageResize($upload['pic'],array('width'=>"300",'height'=>"300",'upload_path'=>"./uploaded/pic/articles/big/"));
  }
  
  if(isset($data['delete_picbg']) && $data['delete_picbg']==1){
   $this->deletePicBg($id);
   $fields_values['picbg'] = null;
  }  
  
  if($upload['picbg']['tmp_name']){
   $this->deletePicBg($id);
                        $uploadfile = "./uploaded/pic/articles/bg/";
                        $type = substr(strrchr($upload['picbg']['name'], "."), 1);
                        $uploadname = mktime() . "." . $type;
                        if (!move_uploaded_file($_FILES['picbg']['tmp_name'], $uploadfile . $uploadname)) {
                                print"Îøèáêà ïðè çàêà÷êå ôàéëà!";
                        }
                        $fields_values['picbg'] = $uploadname;
  }    

  $this->db->autoExecute($table_name, $fields_values, $DB_AUTOQUERY,$where);
  return $id;
 }
 
 function deletePicBg($id){
  $sql = "select picbg from articles where id=?";
  $news = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  @unlink("./uploaded/pic/articles/bg/{$news['picbg']}");
 } 

 function deletePic($id){
  $sql = "select pic,pic_big from articles where id=?";
  $article = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  @unlink("./uploaded/pic/articles/{$article['pic']}");
  @unlink("./uploaded/pic/articles/big/{$article['pic_big']}");
 }
 
 function admin_deleteArticleOne($id){
  $this->deletePic($id);
  $this->deletePicBg($id);
  $sql = "delete from articles where id=?";
  $this->db->query($sql,array($id));
 }
 
 function viewRubrics(){
  $sql = "select * from articles_rubrics order by sort asc";
  $rubrics = $this->db->getAll($sql,array(),DB_FETCHMODE_ASSOC);
  $this->tpl->assign('articles_rubrics',$rubrics);
 }
 
 function viewRubricOne($id){
  $sql = "select * from articles_rubrics where id=?";
  $row = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  $this->tpl->assign('rubric',$row);
 }
 
 function deleteRubric($id){
  $sql = "delete from articles_rubrics where id=?";
  $this->db->query($sql,array($id));
 }


 function displayServieArticles(){
  $this->tpl->assign("service_tpl","articles.tpl");
 }

 function displayServieArticleSave(){
  $this->tpl->assign("service_tpl","article_save.tpl");
 }

 function displayArticleSave(){
  $this->tpl->assign("tpl","article_save.tpl");
 }
 
 function displayArticles(){
  $this->tpl->assign("tpl","articles.tpl");
 }

 function displayArticleOne(){
  $this->tpl->assign("tpl","article_one.tpl");
 }
 
 function displayRubrics(){
  $this->tpl->assign("tpl","articles_rubrics.tpl");
 }

}
?>