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(); } } ?>