rubrics.class.php 6.59 KB
<?php
class Rubrics{
 var $db = null;
 var $tpl = null;
 var $error = null;
//var $id = false;

 function Rubrics(&$db,&$tpl,&$error){
  $this->db = &$db;
  $this->tpl = &$tpl;
  $this->error = &$error;
 }
 



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

 function valid($data,$upload = null){
  if(isset($data['order_name'])){
   if( !preg_match("/.{1,100}/i",$data['order_name']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Èìÿ (Ìàêñèìóì 100 ñèìâîëîâ).";
  }

  if(isset($data['order_adress'])){
   if( !preg_match("/.{1,200}/i",$data['order_adress']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ order_adress (Ìàêñèìóì 200 ñèìâîëîâ).";
  }

  if(isset($data['order_tel'])){
   if( !preg_match("/.{1,70}/i",$data['order_tel']) ) $this->error[] = "Îøèáêà ââîäà ïîëÿ Òåëåôîí (Ìàêñèìóì 70 ñèìâîëîâ).";
  }

  if(isset($data['order_email'])){
   if( !preg_match("/^([^@]+)+@([^@]+)\.([^@]+)$/i",$data['order_email']) || strlen($data['order_email'])>80 ) $this->error[] = "Îøèáêà ââîäà ïîëÿ E-mail, äî 80 ñèìâîëîâ.";
  }

  return ( count($this->error) ) ? true : false;
 }


 function saveRubric($data,$upload){
  $table_name = "rubrics";
  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('mySequenceRubrics');$where = null;}

  $parent_id = (isset($data['parent_id']) ? $data['parent_id'] : 0);
  $fields_values = array("id"=>$id,"parent_id"=>$parent_id,"level"=>($this->getLevelRubric($parent_id)+1),"name_rus"=>$data['name_rus'],
                         "text_rus"=>$data['text_rus'],"sort"=>$data['sort'],
                         "meta_title_rus"=>$data['meta_title_rus'],
                         "meta_description_rus"=>$data['meta_description_rus'],
                         "meta_keywords_rus"=>$data['meta_keywords_rus'],
                         "meta_about_rus"=>$data['meta_about_rus'],"rub_id"=>$data['rub_id']);

  if($upload['pic']['tmp_name']){
   $fields_values['pic'] = upload_ImageResize($upload['pic'],array('width'=>"180",'height'=>"180",'upload_path'=>"./uploaded/pic/rubrics/"));
   $fields_values['pic_big'] = upload_ImageResize($upload['pic'],array('width'=>"250",'height'=>"250",'upload_path'=>"./uploaded/pic/rubrics/big/"));
  }

  $this->db->autoExecute($table_name, $fields_values, $DB_AUTOQUERY,$where);
  return $id;
 }
 
 function getLevelRubric($id){
  $level = $this->db->getOne("select level from rubrics where id=?",array($id));
  return ($level==null)? -1 : $level;
 }


 function viewRubricOne($id){
  $sql = "select * from rubrics where id=? limit 1";
  $row = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  $this->tpl->assign("rubric",$row);
 }
 
 function viewRubricOneLang($id,&$row,$lang = "rus"){
  $sql = "select name_$lang as name,text_$lang as text,meta_title_$lang as meta_title,meta_description_$lang as meta_description,meta_keywords_$lang as meta_keywords,meta_about_$lang as meta_about from rubrics where id=? limit 1";
  $row = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  $this->tpl->assign("rubric",$row);
 }
 
 function deleteRubricTree($id){
  $sql = "select * from rubrics where parent_id=? order by sort asc";
  $res = $this->db->query($sql,array($id));
  while ($res->fetchInto($row,DB_FETCHMODE_ASSOC)){
   $sql = "delete from rubrics where id=?";
   $this->db->query($sql,array($row['id']));
   $this->deleteRubricTree($row['id']);
  }
   $sql = "delete from rubrics where id=?";
   $this->db->query($sql,array($id));
 }
 
 function getRubricsTree($id = 0,$rub_id){
  global $rubrics;
  $sql = "select * from rubrics where rub_id=? and parent_id=? order by sort asc";
  $res = $this->db->query($sql,array($rub_id,$id));
  while ($res->fetchInto($row,DB_FETCHMODE_ASSOC)){
   $rubrics[] = $row;
   //if($parent_id == $row['id'])$this->viewRubricsTree($row['id']);
   $this->viewRubricsTree($row['id'],$rub_id);
  }
  //           print_r($rubrics);
 return $rubrics;
 }
 
 function is_RubricsTree($rub_id){
  return $this->db->getOne("select count(*) from rubrics where rub_id=?",array($rub_id));
 }
 
 function viewRubricsTreeAll($id = 0,$rub_id,$open_id,$lang = "rus"){
  global $rubrics, $i, $p;
  if(!$i)$i = 0;
  if(!$p)$p = 0;
  $sql = "select rubrics.id,rubrics.parent_id,rubrics.name_$lang as name,rules.action from rubrics LEFT JOIN rules ON rules.id=rub_id where rubrics.parent_id=? and rubrics.rub_id=? order by rubrics.sort asc";
  //$res = $this->db->query($sql,array($rub_id,$id));
  //while ($res->fetchInto($row,DB_FETCHMODE_ASSOC)){
  $res = $this->db->getAll($sql,array($id,$rub_id),DB_FETCHMODE_ASSOC);
  foreach($res as $row){
   if($row['parent_id']>0){ $rubrics[$p]['parent'][] = $row;}
   else {$rubrics[$i] = $row;
   $p = $i;$i++;}

  //$this->viewRubricsTreeAll($row['id'],$rub_id,$lang);
  if(in_array($row['id'],$this->getParentIdRubric($open_id))){$this->viewRubricsTreeAll($row['id'],$rub_id,$open_id,$lang);}
  }

  // print"<pre>"; print_r($rubrics);print"</pre>";
  
  $this->tpl->assign("rubrics",$rubrics);
 return $rubrics;
 }
 
 function getParentIdRubric($id){
 $ids = array();
  while($id>0){
   $row = $this->db->getRow('select id,parent_id from rubrics where id=?',array($id),DB_FETCHMODE_ASSOC);
   $ids[] = $row['id'];
   $id = $row['parent_id'];
  }   //print_r($ids);
 // sort($ids);
  return $ids;
 }
 
 function viewRubricsTree($id = 0,$rub_id){
   $this->tpl->assign("rubrics",$this->getRubricsTree($id,$rub_id));
 }
 
 function viewRubricsTreeBlock($id = 0,$parent_id,$rub_id,$lang = "rus"){
 /*  $ids = $this->getParentIdRubric($parent_id);
   array_unshift($ids, "0");
   foreach($ids as $row){ print $row;
    $res = $this->getRubricsTreeOpen($row,$parent_id,$rub_id,$lang);
   } */
   global $out;
   $out = '';
   $res = $this->getRubricsTreeOpen($id,$parent_id,$rub_id,$lang);
   $this->tpl->assign("rubrics_$rub_id",$res);
 }
 
 function viewParentRubrics($id,$lang = "rus"){
  $row = $this->db->getAll("select id,pic,name_$lang as name,text_$lang as text from rubrics where parent_id=?",array($id),DB_FETCHMODE_ASSOC);
  $this->tpl->assign("rubric_parent",$row);
 }
 
 function viewRubricsBlock($rub_id,$lang = "rus"){
  $row = $this->db->getAll("select id,pic,name_$lang as name,text_$lang as text from rubrics where rub_id=? and level='0' order by sort",array($rub_id),DB_FETCHMODE_ASSOC);
  $this->tpl->assign("rubric_block_$rub_id",$row);
 }
 
 function displayStaticsEdit(){
  $this->tpl->assign("tpl","statics_form.tpl");
 }

 function displayRubrics(){
  $this->tpl->assign("tpl","rubrics.tpl");
 }
 
 function displayRubric(){
  $this->tpl->assign("tpl","rubric.tpl");
 }

}
?>