db = sdb::getInstance();
$this->lang = $lang;
}
public function valid($data){
$error = array();
if(isset($data['order_name'])){
if( !preg_match("/.{1,100}/i",$data['order_name']) ) $error[] = "Îøèáêà ââîäà ïîëÿ Èìÿ (Ìàêñèìóì 100 ñèìâîëîâ).";
}
if(isset($data['order_adress'])){
if( !preg_match("/.{1,200}/i",$data['order_adress']) ) $error[] = "Îøèáêà ââîäà ïîëÿ Àäðåñ (Ìàêñèìóì 200 ñèìâîëîâ).";
}
if(isset($data['order_phone'])){
if( !preg_match("/.{1,200}/i",$data['order_phone']) ) $error[] = "Îøèáêà ââîäà ïîëÿ Ìîáèëüíûé òåëåôîí";
}
if(isset($data['order_email'])){
if( !preg_match("/^([^@]+)+@([^@]+)\.([^@]+)$/i",$data['order_email']) || strlen($data['order_email'])>80 ) $error[] = "Îøèáêà ââîäà ïîëÿ E-mail, äî 80 ñèìâîëîâ.";
}
return $error;
}
public function getHit(){
$sql = "select * from catalogs_products where hit=1";
return $this->db->getAll($sql,array(),DB_FETCHMODE_ASSOC);
}
public function getTop(){
$sql = "select * from catalogs_products where top=1";
return $this->db->getAll($sql,array(),DB_FETCHMODE_ASSOC);
}
public function addViewProduct($product_id){
$i = 0;
if(isset($_SESSION['view_product']) && count($_SESSION['view_product'])>0){
foreach($_SESSION['view_product'] as $id){
if($product_id==$id)$i++;
}}
if($i==0)$_SESSION['view_product'][] = $product_id;
}
public function getUserProducts($limit = "all"){ //unset($_SESSION['view_product']);
if(isset($_SESSION['view_product']) && count($_SESSION['view_product'])>0){
$sql = "select p.*,r.translit as rubric_translit from catalogs_products p LEFT JOIN catalogs_rubrics r ON r.id=p.catalog_id
WHERE p.id IN (".implode(",",$_SESSION['view_product']).") ";
if($limit != "all")$sql .= "LIMIT ".$limit;
return $this->db->getAll($sql,array(),DB_FETCHMODE_ASSOC);
}
}
public function getRecommended($product_id){
$id_s = $this->db->getOne("select recommended from catalogs_products where id=?",array($product_id));
if(strlen($id_s)>0){
return $this->db->getAll("select p.*,r.translit as rubric_translit from catalogs_products p LEFT JOIN catalogs_rubrics r ON r.id=p.catalog_id where p.id in ($id_s)",array(),DB_FETCHMODE_ASSOC);
}else return array();
}
public function getView($brend_id,$catalog_id,$params = array()){
$search = array();
$sort = array();
$left = '';
if($catalog_id>0){
//if($catalog_id==46)$catalog_id = 22;
$search[] = sprintf("p.catalog_id='%d'", $catalog_id);
}
if($brend_id>0){
$search[] = sprintf("p.brend_id='%d'", $brend_id);
}
if(isset($params['search_str']) && strlen($params['search_str'])>0)$search[] = "(p.name LIKE '%".$params['search_str']."%' or p.code LIKE '%".$params['search_str']."%' or p.text LIKE '%".$params['search_str']."%')";
if(isset($params['filter_id']) && $params['filter_id']>0){
$left .= "Left Join catalogs_filters_keys k ON k.product_id=p.id";
$search[] = sprintf("k.filter_id='%d'", $params['filter_id']);
}
$sql = "select p.*,r.name as rubric_name,r.translit as rubric_translit,b.translit as brend_translit from catalogs_products p LEFT JOIN catalogs_rubrics r ON r.id=p.catalog_id LEFT JOIN catalogs_brends b ON b.id=p.brend_id $left where 1=1 ";
if(count($search))$sql .= "AND " . implode(" AND ",$search)." ";
$sql .= "order by ";
if(isset($params['filter_id']) && $params['filter_id']>0){
$sort[] = "k.sort";
$sort[] = "asc";
}else{
$sort[] = (isset($params['sort'])) ? $params['sort'] : "p.catalog_id";
$sort[] = (isset($params['order'])) ? $params['order'] : " asc";
}
$sql .= implode(" ",$sort);
//print $sql;
$pagerOptions = Array(
'mode' => 'Sliding',
'delta' => 6,
'perPage' => 12,
'spacesBeforeSeparator' => 1,
'spacesAfterSeparator' => 1
);
$res = Pager_Wrapper_DB($this->db, $sql, $pagerOptions, false, DB_FETCHMODE_ASSOC, array());
return $res;
}
public function getProduct($id){
return $this->db->getRow("select p.*,r.name as rubric_name,b.translit as brend_translit from catalogs_products p LEFT JOIN catalogs_rubrics r ON r.id=p.catalog_id LEFT JOIN catalogs_brends b ON b.id=p.brend_id where p.id=?",array($id),DB_FETCHMODE_ASSOC);
}
private function getProductCost($id){
return $this->db->getOne("select cost from catalogs_products where id=?",array($id));
}
public function addBasket($product_id,$count){
$i = 0;
if(isset($_SESSION['basket'])){
foreach($_SESSION['basket'] as $key=>$basket){
if($product_id == $basket['id']){$_SESSION['basket'][$key]['count'] += $count;$i++;}
}}
if($i == 0)$_SESSION['basket'][] = array('id'=>$product_id, 'count'=>$count);
//print_r($_SESSION['basket']);
}
public function clearBasket(){
$_SESSION['basket'] = array();
}
public function rowBasket(){
$cost = 0;$count = 0;
if(isset($_SESSION['basket']) && count($_SESSION['basket'])){
foreach($_SESSION['basket'] as $product){
$cost += ($this->getProductCost($product['id'])*$product['count']);
$count += $product['count'];
}
//$count = count($_SESSION['basket']);
}
return array('cost'=>$cost,'count'=>$count);
}
public function getBasketProducts(){
$products = array();
foreach($_SESSION['basket'] as $product){
$row = $this->db->getRow("select * from catalogs_products where id=?",array($product['id']),DB_FETCHMODE_ASSOC);
$row['count'] = $product['count'];
$row['sum_cost'] = $product['count'] * $row['cost'];
$products[] = $row;
}
return $products;
}
public function updateBasket($data){
$_SESSION['basket'] = array();
foreach($data['product_id'] as $key=>$product_id){
if($data['product_count'][$key]>0) $_SESSION['basket'][] = array('id'=>$product_id, 'count'=>$data['product_count'][$key]);
}
}
public function getSumCost(){
$cost = 0;
foreach($_SESSION['basket'] as $product){
$cost += ($this->getProductCost($product['id'])*$product['count']);
}
return $cost;
}
public function getBasketFull(){
$count = 0;
foreach($_SESSION['basket'] as $product){
$count += $product['count'];
}
return $count;
}
public function sendOrder($data){
$mail = new PHPMailer();
$mail->CharSet = "windows-1251";
$mail->From = (strlen($data['order_email'])>0) ? $data['order_email'] : "send@gopro.com.ua";
$mail->FromName = $data['order_name'];
$mail->AddAddress("v.izubenko@extremepride.com.ua", "v.izubenko");
$mail->AddAddress("anton7779@gmail.com", "anton7779");
$mail->Subject = "Îôîðìèòü çàêàç!";
$msg = "";
foreach($data['product_id'] as $key=>$value){
$msg .= "ID: ".$value." ";
$msg .= "Íàçâàíèå: ".$data['product_name'][$key]." ";
$msg .= "Öåíà çà îäèí: ".$data['product_cost'][$key]." ";
$msg .= "Êîëè÷åñòâî: ".$data['product_count'][$key]." ";
$msg .= "Çà âåñü òîâàð: ".$data['product_sum_cost'][$key]." ";
$msg .= "
";
}
$msg .= "
";
$msg .= "
";
$msg .= "Îáùàÿ ñóìà: ".$data['sumCost'];
$msg .= "
";
$msg .= "Êîíòàêòíûå äàííûå:";
$msg .= "
";
$msg .= "Èìÿ: ".$data['order_name'];
$msg .= "
";
$msg .= "Àäðåñ: ".$data['order_adress'];
$msg .= "
";
$msg .= "E-mail: ".$data['order_email'];
$msg .= "
";
$msg .= "Òåëåôîí: ".$data['order_phone'];
$msg .= "
";
$msg .= "Êîììåíòàðèé: ".$data['order_comment'];
$mail->MsgHTML($msg);
if(!$mail->Send()){echo "There has been a mail error sending to
";return false;}
$mail->ClearAddresses();
$mail->ClearAttachments();
}
}
?>