gallery.class.php 8.89 KB
<?php
class Gallery{
 var $db = null;
 var $tpl = null;
 var $error = null;
 var $photo_id = null;


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


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

 function valid($data,$upload = null){

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

 return ( count($this->error) ) ? true : false;
 }
 
 function deletePhoto($id){
  $sql = "select pic,pic_big from gallery where id=?";
  $row = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  @unlink("{$_SERVER['DOCUMENT_ROOT']}/uploaded/pic/gallery/{$row['pic']}");
  @unlink("{$_SERVER['DOCUMENT_ROOT']}/uploaded/pic/gallery/big/{$row['pic_big']}");
  $sql = "delete from gallery where id=?";
  $this->db->query($sql,array($id));
 }
 
 function deleteRoom($id){
  $sql = "select pic from rooms where id=?";
  $row = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  @unlink("{$_SERVER['DOCUMENT_ROOT']}/uploaded/pic/gallery/rooms/{$row['pic']}");
  $sql = "delete from rooms where id=?";
  $this->db->query($sql,array($id));
 }


 function PhotosCheck($id_s,$check_s = array()){
  $sql = "UPDATE gallery SET active = ? WHERE id =?";

  foreach($id_s as $id){
  $this->db->query($sql,array(0,$id));
  }
 if(count($check_s)){
  foreach($check_s as $id){
  $this->db->query($sql,array(1,$id));
  }
 }
 }
 
 function viewCheckPhotos(){
  $sql = "select gallery.*,topic.id as topic_id,topic.comments as topic_comments, firms.name as firm_name from gallery left join topic on topic.parent_table='gallery' Left join firms on firms.id=gallery.firm_id where gallery.active=? and topic.parent_table_id=gallery.id order by gallery.mktime desc";
  $row = $this->db->getAll($sql,array(1),DB_FETCHMODE_ASSOC);
  $this->tpl->assign('photosCheck',$row);
 }
 

 function SavePhoto($data,$upload){
 $table_name = "gallery";
 $id = ($data['update_id']>0) ? $data['update_id'] : $this->db->nextId('mySequenceGallery');
 $DB_AUTOQUERY = ($data['update_id']>0) ? DB_AUTOQUERY_UPDATE : DB_AUTOQUERY_INSERT;
 $fields_values = array('id'=>$id,'name_rus' => $data['name_rus'],'rub_id'=>$data['rub_id']);

 if(!$data['update_id'])$fields_values['mktime'] = mktime();
  if($upload['upload']['tmp_name']){
   $fields_values['pic'] = upload_ImageResize($upload['upload'],array('width'=>"180",'height'=>"180",'upload_path'=>"./uploaded/pic/gallery/"));
   $fields_values['pic_big'] = upload_ImageResize($upload['upload'],array('width'=>"600",'height'=>"600",'upload_path'=>"./uploaded/pic/gallery/big/"));
  }

  $res = $this->db->autoExecute($table_name,$fields_values,$DB_AUTOQUERY,"id='$id'");
  if (PEAR::isError($res)) die($res->getMessage());
 return $id;
 }
 
 function SaveRoom($data,$upload){
 $table_name = "rooms";
 $id = ($data['update_id']>0) ? $data['update_id'] : $this->db->nextId('mySequenceRooms');
 $DB_AUTOQUERY = ($data['update_id']>0) ? DB_AUTOQUERY_UPDATE : DB_AUTOQUERY_INSERT;
 $fields_values = array('id'=>$id,'title' => $data['title'],'about' => $data['about'], 'mktime' => mktime());
  if($upload['pic']['tmp_name']){
   $fields_values['pic'] = upload_ImageResize($upload['pic'],array('width'=>"180",'height'=>"180",'upload_path'=>"./uploaded/pic/gallery/rooms/"));
  }

  $this->db->autoExecute($table_name,$fields_values,$DB_AUTOQUERY,"id='$id'");
 return $id;
 }
 
 function saveSortRooms($sorts){
  $sql = "update rooms set sort=? where id=?";
  foreach($sorts as $key=>$value){
   $this->db->query($sql,array($value,$key));
  }
 }
 
 function viewRoomOne($id){
  $sql = "select * from rooms where id=?";
  $row = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  $this->tpl->assign('room',$row);
 }
 
 function countPhotosFirm($firm_id){
  $data = array();
  $sql = "select count(id) from gallery where 1=1";
  if($firm_id!='All'){$sql .= " and firm_id=?";$data[] = $firm_id;}
  $count = $this->db->getOne($sql,$data);
  $this->tpl->assign('count_photos',$count);
 }
 
 function viewRooms(){
  $sql = "select * from rooms order by sort";
  $pagerOptions = Array(
    'mode' => 'Sliding',
    'delta' => 6,
    'perPage' => 10,
    'spacesBeforeSeparator' => 1,
    'spacesAfterSeparator' => 1
  );
  $this->tpl->assign('roomsData', Pager_Wrapper_DB($this->db, $sql, $pagerOptions, false, DB_FETCHMODE_ASSOC, array()));
 }
 
 function viewAllPhotos($param = array(),$isview = "all"){
  $search = array();
  if(isset($param['rubID']) && $param['rubID']>0)$search[] = sprintf("rub_id=%d",$param['rubID']);
  if(isset($param['trainingID']) && $param['trainingID']>0)$search[] = sprintf("training_id=%d",$param['trainingID']);

  if($isview != "all"){$search[] = sprintf("isview='%d'",0);}

  $sql = "select id,rub_id,pic,pic_big,name_rus as name from gallery where 1=1 ";
  if(count($search))$sql .= " and " . implode(" and ",$search)." ";
  $sql .= "order by mktime desc";

  $pagerOptions = Array(
    'mode' => 'Sliding',
    'delta' => 6,
    'perPage' => 21,
    'spacesBeforeSeparator' => 1,
    'spacesAfterSeparator' => 1
  );
  $this->tpl->assign('galleryAllData', Pager_Wrapper_DB($this->db, $sql, $pagerOptions, false, DB_FETCHMODE_ASSOC, array()));
 }
 
 function viewAllPhotosTrainings($param = array()){
  $search = array();
  /*
  if(isset($param['rubID']) && $param['rubID']>0)$search[] = sprintf("rub_id=%d",$param['rubID']);
  if(isset($param['trainingID']) && $param['trainingID']>0)$search[] = sprintf("training_id=%d",$param['trainingID']);

  $sql = "select * from gallery where 1=1 ";
  if(count($search))$sql .= " and " . implode(" and ",$search)." ";
  $sql .= "order by mktime asc";
  */
  $sql = "select trainings.id,trainings.title from trainings,gallery WHERE gallery.training_id=trainings.id and trainings.active='1' GROUP BY gallery.training_id  order by trainings.sort";
  $pagerOptions = Array(
    'mode' => 'Sliding',
    'delta' => 6,
    'perPage' => 21,
    'spacesBeforeSeparator' => 1,
    'spacesAfterSeparator' => 1
  );
  $data = Pager_Wrapper_DB($this->db, $sql, $pagerOptions, false, DB_FETCHMODE_ASSOC, array());
  foreach($data['data'] as $key=>$value){
   $pics_row = $this->db->getAll("select pic from gallery where training_id=? ORDER BY mktime DESC limit 3",array($value['id']), DB_FETCHMODE_ASSOC);
   if(isset($pics_row[0]))$data['data'][$key]['pic1'] = $pics_row[0]['pic'];
   if(isset($pics_row[1]))$data['data'][$key]['pic2'] = $pics_row[1]['pic'];
   if(isset($pics_row[1]))$data['data'][$key]['pic3'] = $pics_row[2]['pic'];
  }
  $this->tpl->assign('galleryAllData',$data);
 }
 
 function viewPhotosRubric($id,$lang = "rus"){
  $sql = "select pic,pic_big,name_$lang as name from gallery where rub_id=? order by mktime desc";
  $row = $this->db->getAll($sql,array($id),DB_FETCHMODE_ASSOC);
  $this->tpl->assign('gallery', $row);
 }
 
 function viewPhotosRubAll($id_s){
  foreach($id_s as $id){
  $sql = "select * from gallery where rub_id=? order by mktime desc";
  $row[$id] = $this->db->getAll($sql,array($id),DB_FETCHMODE_ASSOC);
  $this->tpl->assign('gallery_'.$id, $row[$id]);
  }
 }
 
 function viewPhoto($id){
  $sql = "select * from gallery where id=?";
  $row = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  $this->tpl->assign('photo',$row);
 }
 
 function nextPhotoID($firm_id){
  $data = array($this->photo_id);
  $sql = "select id from gallery where id<?";
  if($firm_id!='All'){$sql .= " and firm_id=?";$data[] = $firm_id;}
  $sql .= " order by id desc limit 1";
  
  $id = $this->db->getOne($sql,$data);
  $this->tpl->assign('next_id',$id);
 }
 
 function prevPhotoID($firm_id){
  $data = array($this->photo_id);
  $sql = "select id from gallery where id>?";
  if($firm_id!='All'){$sql .= " and firm_id=?";$data[] = $firm_id;}
  $sql .= " order by id asc limit 1";
  
  $id = $this->db->getOne($sql,$data);
  $this->tpl->assign('prev_id',$id);
 }
 
 function numberPhoto($firm_id){
  $data = array($this->photo_id);
  $sql = "select count(id) from gallery where id>=?";
  if($firm_id!='All'){$sql .= " and firm_id=?";$data[] = $firm_id;}

  $count = $this->db->getOne($sql,$data);
  $this->tpl->assign('number_id',$count);
 }

 function displayServiceGallery(){
  $this->tpl->assign("service_tpl",'gallery.tpl');
 }
 
 function displayGallery(){
  $this->tpl->assign("tpl",'gallery.tpl');
 }
 
 function displayGalleryTrainings(){
  $this->tpl->assign("tpl",'gallery_trainings.tpl');
 }
 
 function displayGallerySave(){
  $this->tpl->assign("tpl",'gallery_save.tpl');
 }

 function displayRoomGallerySave(){
  $this->tpl->assign("tpl",'rooms_gallery_save.tpl');
 }
 
 function displayRooms(){
  $this->tpl->assign("tpl",'rooms_gallery.tpl');
 }

 function displayGalleryBar(){
  $this->tpl->display('gallery_bar.tpl');
 }
 
}
?>