foto.class.php 4.72 KB
<?php
Class Foto{
	private $db;
	private $lang;
	private $path_pic = array('pic'=>"./pics/foto/rubrics/",'gallery_pic'=>"./pics/foto/",'gallery_pic_big'=>"./pics/foto/big/");
 
	function __construct($lang){
		$this->db = sdb::getInstance();
		$this->lang = $lang;
	}
	
	public function valid($data){
		$error = array();
		if(!preg_match("/.{1,50}/i",$data['name']))$error[] = "error name";
		return $error;
	}

	public function viewRubric($id){
		return $this->db->getRow("select * from foto_rubrics where id=?",array($id),DB_FETCHMODE_ASSOC);
	}	

	public function getRubrics_begin(){
		$sql = "select id,parent_id,name_{$this->lang} as name from foto_rubrics where parent_id=? order by sort";
		return $this->db->getAll($sql,array(0),DB_FETCHMODE_ASSOC);
	}
	
	
 public function getRubrics(){
  $sql = "select * from foto_rubrics where 1=1";
  $sql .= " order by sort";
  return $this->db->getAll($sql,array(),DB_FETCHMODE_ASSOC);
 }
 
	
	public function saveRubric($data,$upload){
		$table_name = "foto_rubrics";
		$DB_AUTOQUERY = ($data['update_id']>0) ? DB_AUTOQUERY_UPDATE : DB_AUTOQUERY_INSERT;
		$fields_values = array(
								'sort' => $data['sort'],
								'name' => $data['name'],
								'meta_title' => $data['meta_title'],
								'meta_description' => $data['meta_description'],
								'meta_keywords' => $data['meta_keywords'],
								'meta_about' => $data['meta_about']
								);
								
	
	if(isset($data['delete_pic']) && $data['delete_pic']==1){
		if($data['update_id']>0)$this->deletePic($data['update_id']);
		$fields_values['pic'] = null;
	}
	if($upload['pic']['tmp_name']){
		if($data['update_id']>0)$this->deletePic($data['update_id']);
		$fields_values['pic'] = upload_ImageResize($upload['pic'],array('crop'=>true,'width'=>"147",'height'=>"147",'upload_path'=>$this->path_pic['pic']));
	}
	 //print_r($fields_values);
		$res = $this->db->autoExecute($table_name,$fields_values,$DB_AUTOQUERY,"id={$data['update_id']}");
		if (PEAR::isError($res)) die($res->getMessage());
 }
 
 private function deletePic($id){
  $sql = "select pic from foto_rubrics where id=?";
  $row = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  @unlink($this->path_pic['pic'] . $row['pic']);
 } 


	public function deleteRubric($id){
		$this->deletePic($id);
		$this->db->query("delete from foto_rubrics where id=?",array($id));
		$this->deleteGalleryRubric($id);
	}
	
	
 public function getGallery($rubric_id = 0){
  $search = array();
  if($rubric_id>0)$search[] = sprintf("rubric_id='%d'",$rubric_id);
  $sql = "select * from foto_gallery where 1=1 ";
  if(count($search))$sql .= "AND " . implode(" AND ",$search)." ";
  $sql .= "order by id desc";
  //print $sql;
  $pagerOptions = Array(
    'mode' => 'Sliding',
    'delta' => 6,
    'perPage' => 10,
    'spacesBeforeSeparator' => 1,
    'spacesAfterSeparator' => 1
  );
  return Pager_Wrapper_DB($this->db, $sql, $pagerOptions, false, DB_FETCHMODE_ASSOC, array());
 }

 public function saveGallery($data,$upload = null){
  $table_name = "foto_gallery";
  if($data['update_id']>0){$DB_AUTOQUERY = DB_AUTOQUERY_UPDATE;$where = "id={$data['update_id']}";}else{$DB_AUTOQUERY = DB_AUTOQUERY_INSERT;$where = null;}

  $fields_values = array("name"=>$data['name'],
						 "rubric_id"=>$data['rubric_id']
						 );

  if(isset($data['delete_pic']) && $data['delete_pic']==1){
   if($data['update_id']>0)$this->deletePic_gallery($data['update_id']);
   $fields_values['pic'] = null; $fields_values['pic_big'] = null;
  }
  if($upload['pic']['tmp_name']){
   if($data['update_id']>0)$this->deletePic_gallery($data['update_id']);
   $fields_values['pic'] = upload_ImageResize($upload['pic'],array('crop'=>true,'width'=>"147",'height'=>"147",'upload_path'=>$this->path_pic['gallery_pic']));
   $fields_values['pic_big'] = upload_ImageResize($upload['pic'],array('width'=>"700",'height'=>"700",'upload_path'=>$this->path_pic['gallery_pic_big']));
  }


  $this->db->autoExecute($table_name, $fields_values, $DB_AUTOQUERY,$where);
 } 
 
 private function deletePic_gallery($id){
  $sql = "select pic,pic_big from foto_gallery where id=?";
  $row = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC);
  @unlink($this->path_pic['gallery_pic'] . $row['pic']);
  @unlink($this->path_pic['gallery_pic_big'] . $row['pic_big']);
 }  
 
 public function getGalleryOne($id){
	return $this->db->getRow("select * from foto_gallery where id=?",array($id),DB_FETCHMODE_ASSOC);
 }
 
	public function deleteGallery($id){
		$this->deletePic_gallery($id);
		$this->db->query("delete from foto_gallery where id=?",array($id));
	}

	private function deleteGalleryRubric($rubric_id){
		$sql = "select * from foto_gallery where rubric_id=?";
		$res = $this->db->getAll($sql,array($rubric_id),DB_FETCHMODE_ASSOC);
		foreach($res as $row){
			$this->deleteGallery($row['id']);
		}
	}

}
?>