"./pics/products/", 'pic_big'=>"./pics/products/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 save($data,$upload){ $table_name = "catalogs_products"; $DB_AUTOQUERY = ($data['update_id']>0) ? DB_AUTOQUERY_UPDATE : DB_AUTOQUERY_INSERT; $fields_values = array( 'catalog_id' => $data['catalog_id'], 'brend_id' => $data['brend_id'], 'status' => $data['status'], 'name' => $data['name'], 'code' => $data['code'], 'translit' => ($data['translit']) ? $data['translit'] : translitIt($data['name']), 'text' => $data['text'], 'features' => $data['features'], 'video_code' => $data['video_code'], 'cost' => $data['cost'], 'recommended' => $data['recommended'], 'meta_title' => $data['meta_title'], 'meta_description' => $data['meta_description'], 'meta_keywords' => $data['meta_keywords'], 'meta_about' => $data['meta_about'] ); if(isset($data['hit']))$fields_values['hit'] = 1;else $fields_values['hit'] = 0; if(isset($data['top']))$fields_values['top'] = 1;else $fields_values['top'] = 0; if(isset($data['delete_pic']) && $data['delete_pic']==1){ if($data['update_id']>0)$this->deletePic($data['update_id']); $fields_values['pic'] = null; $fields_values['pic_big'] = 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'])); $fields_values['pic_big'] = upload_ImageResize($upload['pic'],array('width'=>"700",'height'=>"700",'upload_path'=>$this->path_pic['pic_big'])); } $res = $this->db->autoExecute($table_name,$fields_values,$DB_AUTOQUERY,"id={$data['update_id']}"); if (PEAR::isError($res)) die($res->getMessage()); $id = ($data['update_id']>0) ? $data['update_id'] : mysql_insert_id(); $filters = new Filters($this->lang); $filters->saveKeys($id,$data['filter'],$data['filter_sort']); } private function deletePic($id){ $sql = "select pic,pic_big from catalogs_products where id=?"; $row = $this->db->getRow($sql,array($id),DB_FETCHMODE_ASSOC); @unlink($this->path_pic['pic'] . $row['pic']); @unlink($this->path_pic['pic_big'] . $row['pic_big']); } public function getView($catalog_id,$params = array()){ $search = array(); $sort = array(); if($catalog_id>0)$search[] = sprintf("catalog_id='%d'", $catalog_id); $sql = "select * from catalogs_products where 1=1 "; if(count($search))$sql .= "AND " . implode(" AND ",$search)." "; $sql .= "order by "; $sort[] = (isset($params['sort'])) ? $params['sort'] : "id"; $sort[] = (isset($params['order'])) ? $params['order'] : " desc"; $sql .= implode(" ",$sort); $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 getProduct($id){ return $this->db->getRow("select * from catalogs_products where id=?",array($id),DB_FETCHMODE_ASSOC); } public function deleteProduct($id){ $this->deletePic($id); $this->db->query("delete from catalogs_products where id=?",array($id)); $filters = new Filters($this->lang); $filters->deleteKeysProduct($id); } public function deleteProducts($catalog_id){ $res = $this->db->getAll("select * from catalogs_products where catalog_id=?",array($catalog_id),DB_FETCHMODE_ASSOC); foreach($res as $row){ $this->deleteProduct($row['id']); } } public function export(){ $tmpfname = "tmp/products.csv"; $handle = fopen($tmpfname, "w"); $res = $this->db->getAll("select code,name,text,'',cost from catalogs_products",array(),DB_FETCHMODE_ASSOC); foreach($res as $row){ fputcsv($handle,$row,';'); } fclose($handle); $params = array( 'file' => $tmpfname, 'contenttype' => 'application/xls', 'contentdisposition' => array(HTTP_DOWNLOAD_ATTACHMENT, 'products.csv'), 'cache' => false ); $error = HTTP_Download::staticSend($params, false); //отдаём файл if ($error === true) { //если файл загружен успешно, обновляем дату последней закачки } unlink($tmpfname); } public function import($file){ if (($handle = fopen($file['tmp_name'], "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { //print $data[4]."
"; $code = trim($data[0]); if(strlen($code)>0){ $this->db->autoExecute("catalogs_products", array('cost'=>$data[4]), DB_AUTOQUERY_UPDATE,"code='$code'"); } } fclose($handle); } } } ?>