'; return str_replace('frameborder="0"', '', $x); } /** * Simpla CMS * * @copyright 2011 Denis Pikusov * @link http://simplacms.ru * @author Denis Pikusov * * Этот класс использует шаблон products.tpl * */ require_once('View.php'); class ArticlesView extends View { /** * * Отображение списка товаров * */ public $servicesTree = array(); function fetch() { $url = $this->request->get('url', 'string'); if($this->request->get('filter')) $this->design->assign('service_filter', $this->request->get('filter')); if(empty($url)) return $this->fetch_articles(); $res = $this->checkMarkaModel(); if($res) return $res; $article = $this->articles->get_article($url); if(!$article) return $this->fetch_articles(); if($article && (!$article->visible && empty($_SESSION['admin']))) return false; return $this->fetch_article($url); } function checkMarkaModel(){ $url = $this->request->get('url', 'string'); $model = $this->request->get('model', 'string'); if(!$url && !$model) return; if(!$marka = $this->marka->get_brand($url)) return; if(!$model) return $this->fetch_marka($marka); $model = $this->model->get_model($model); if($model) return $this->fetch_model($model); } function fetch_model($model){ //print_r($model);die; $res = $this->db->query("SELECT * FROM __article_models WHERE model_id=" . $model->id); $rows = $this->db->results(); if(!$rows) return; $articleIds = array(); foreach($rows as $row) $articleIds[$row->article_id] = $row->article_id; $filter = array('id' => $articleIds); $this->design->assign('services', $this->getServices($filter)); $filter = $this->sortByService($filter); $articles = $this->articles->get_articles($filter); $this->design->assign('articles', $articles); $filterService = $this->getFilterService(); $h1 = 'Наши проекты с ' . $model->marka->name .' '.$model->name; if(!$filterService){ if(!$model->meta_title) $model->meta_title = 'Тюнинг ' . $model->marka->name . ' ' . $model->name . ' в Санкт-Петербурге - Atomic Garage'; if(!$model->meta_description) $model->meta_description = 'Тюнинг ' . $model->marka->name . ' ' . $model->name . ' в Санкт-Петербурге - примеры работ центра Atomic Garage: тюнинг, ремонт, установка автомобильной оптики, восстановление и улучшение качества света, комплексное обслуживание автомобиля.'; if(!$model->meta_keywords) $model->meta_keywords = $model->marka->name . ', ' . $model->name . ', тюнинг, центр, санкт-петербург, авто, автомобиль, фары, оптика, линзы, примеры работ, проекты, установка, замена, ремонт'; }else{ $model->meta_title = $filterService->name .' ' . $model->marka->name . ' ' . $model->name . ' в Санкт-Петербурге'; $model->meta_description = $filterService->name . ' ' . $model->marka->name . ' ' . $model->name . ' в Санкт-Петербурге - примеры работ центра Atomic Garage: тюнинг и ремонт фар любой сложности, восстановление и улучшение качества света, комплексное обслуживание автомобиля.'; $model->meta_keywords = 'наши работы, проекты, ' . $filterService->name .', ' . $model->marka->name . ', ' . $model->name . ', тюнинг центр, авто, автомобиль, санкт-петербург, установка, замена, ремонт'; $h1 = 'Наши проекты с ' . $model->marka->name . ' ' .$model->name . ' - ' . $filterService->name; } $this->design->assign('meta_title', $model->meta_title); $this->design->assign('meta_keywords', $model->meta_keywords); $this->design->assign('meta_description', $model->meta_description); $this->design->assign('model', $model); $this->design->assign('h1', $h1); return $this->design->fetch('model.tpl'); } function fetch_marka($marka){ $res = $this->db->query("SELECT * FROM __article_models WHERE marka_id=" . $marka->id); $rows = $this->db->results(); if(!$rows) return; $modelIds = $articleIds = array(); foreach($rows as $row){ if($row->model_id) $modelIds[$row->model_id] = $row->model_id; $articleIds[$row->article_id] = $row->article_id; } if($modelIds){ $this->db->query("SELECT * FROM __model WHERE visible=1 AND id IN(".implode(',', $modelIds).")"); $models = $this->db->results(); $this->design->assign('models', $models); } $filter = array('id' => $articleIds); $this->design->assign('services', $this->getServices($filter)); $filter = $this->sortByService($filter); $articles = $this->articles->get_articles($filter); $this->design->assign('articles', $articles); $filterService = $this->getFilterService(); $h1 = 'Наши проекты с ' . $marka->name; if(!$filterService){ if(!$marka->meta_title) $marka->meta_title = 'Тюнинг ' . $marka->name . ' в Санкт-Петербурге - Atomic Garage'; if(!$marka->meta_description) $marka->meta_description = 'Тюнинг ' . $marka->name . ' в Санкт-Петербурге - примеры работ центра Atomic Garage: тюнинг, ремонт, установка автомобильной оптики, восстановление и улучшение качества света, комплексное обслуживание автомобиля.'; if(!$marka->meta_keywords) $marka->meta_keywords = $marka->name . ', тюнинг, центр, санкт-петербург, авто, автомобиль, фары, оптика, линзы, примеры работ, проекты, установка, замена, ремонт'; }else{ $marka->meta_title = 'Примеры работ: ' .$filterService->name .' ' . $marka->name . ' в Санкт-Петербурге'; $marka->meta_description = $filterService->name . ' ' . $marka->name . ' в Санкт-Петербурге - примеры работ центра Atomic Garage: тюнинг и ремонт фар любой сложности, восстановление и улучшение качества света, комплексное обслуживание автомобиля.'; $marka->meta_keywords = 'наши работы, проекты, ' . $filterService->name .', ' . $marka->name . ', тюнинг центр, авто, автомобиль, санкт-петербург, установка, замена, ремонт'; $h1 = 'Наши проекты с ' . $marka->name . ' - ' . $filterService->name; } $this->design->assign('meta_title', $marka->meta_title); $this->design->assign('meta_keywords', $marka->meta_keywords); $this->design->assign('meta_description', $marka->meta_description); $this->design->assign('marka', $marka); $this->design->assign('h1', $h1); return $this->design->fetch('marka.tpl'); } function fetch_article($url) { // Выбираем пост из базы $article = $this->articles->get_article($url); $article->visited++; $update_visited->visited = $article->visited; $this->articles->update_article($article->id, $update_visited); // Если не найден - ошибка if(!$article || (!$article->visible && empty($_SESSION['admin']))) return false; // Автозаполнение имени для формы комментария if(!empty($this->user)) $this->design->assign('comment_name', $this->user->name); // Принимаем комментарий if ($this->request->method('post') && $this->request->post('comment')) { $comment->name = $this->request->post('name'); $comment->text = $this->request->post('text'); // Передадим комментарий обратно в шаблон - при ошибке нужно будет заполнить форму $this->design->assign('comment_text', $comment->text); $this->design->assign('comment_name', $comment->name); $cp = new ReCaptcha('6LegdywdAAAAAJaQLxIlHnITncRtuHQu-HHxeAYG'); $cpResult = $cp->verifyResponse($_SERVER['REMOTE_ADDR'], $this->request->post('recaptcha_response')); if (!$cpResult->success) { $this->design->assign('error', 'captcha'); } elseif (empty($comment->name)) { $this->design->assign('error', 'empty_name'); } elseif (empty($comment->text)) { $this->design->assign('error', 'empty_comment'); } else { // Создаем комментарий $comment->object_id = $article->id; $comment->type = 'article'; $comment->ip = $_SERVER['REMOTE_ADDR']; // Если были одобренные комментарии от текущего ip, одобряем сразу $this->db->query("SELECT 1 FROM __comments WHERE approved=1 AND ip=? LIMIT 1", $comment->ip); if($this->db->num_rows()>0) $comment->approved = 1; // Добавляем комментарий в базу if($this->request->post('email') == '') $comment_id = $this->comments->add_comment($comment); // Отправляем email $this->notify->email_comment_admin($comment_id); header('location: '.$_SERVER['REQUEST_URI'].'#comment_'.$comment_id); } } // Комментарии к посту $comments = $this->comments->get_comments(array('type'=>'article', 'object_id'=>$article->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR'])); $this->design->assign('comments', $comments); $article->text = preg_replace_callback('~