<?PHP

/**
 * Simpla CMS
 *
 * @copyright 	2011 Denis Pikusov
 * @link 		http://simplacms.ru
 * @author 		Denis Pikusov
 *
 * Этот класс использует шаблоны blog.tpl и post.tpl
 *
 */

require_once('View.php');

class RepairsView extends View
{
	public function fetch()
	{
		$url = $this->request->get('url', 'string');
		
		// Если указан адрес поста,
		if(!empty($url))
		{ 
			// Выводим пост
			return $this->fetch_post($url);
		}
		else
		{ 
		//	if($url) 
				return $this->fetch_blog($url);
			//else 
			//return $this->fetchPage($url);
		}
	}
	
	function fetchPage($url)
	{ 
		if(!$url) $url = 'repairs';

		$page = $this->pages->get_page($url); 
		
		// Отображать скрытые страницы только админу
		if(empty($page) || (!$page->visible && empty($_SESSION['admin'])))
			return false;
		
		$this->design->assign('page', $page);
		$this->design->assign('meta_title', $page->meta_title);
		$this->design->assign('meta_keywords', $page->meta_keywords);
		$this->design->assign('meta_description', $page->meta_description);
		
		//return 
	//return	$this->design->fetch('page.tpl');
		return $this->fetch_blog($url);
	}
	
	private function fetch_post($url)
	{ 

		// Выбираем пост из базы
		$post = $this->repairs->get_post($url);
		
		// Если не найден - ошибка
		if(!$post || (!$post->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');
			$captcha_code =  $this->request->post('captcha_code', 'string');
			
			// Передадим комментарий обратно в шаблон - при ошибке нужно будет заполнить форму
			$this->design->assign('comment_text', $comment->text);
			$this->design->assign('comment_name', $comment->name);
			
			// Проверяем капчу и заполнение формы
			if ($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))
			{
				$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 = $post->id;
				$comment->type      = 'repairs';
				$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;
				
				// Добавляем комментарий в базу
				$comment_id = $this->comments->add_comment($comment);
				
				// Отправляем email
				$this->notify->email_comment_admin($comment_id);				
				
				// Приберем сохраненную капчу, иначе можно отключить загрузку рисунков и постить старую
				unset($_SESSION['captcha_code']);
				header('location: '.$_SERVER['REQUEST_URI'].'#comment_'.$comment_id);
			}			
		}
		
		// Комментарии к посту
		$comments = $this->comments->get_comments(array('type'=>'repairs', 'object_id'=>$post->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR']));
		$this->design->assign('comments', $comments);
		$this->design->assign('post',      $post);
  
        //Страница родительского раздела
        $page_url = trim($_SERVER['REQUEST_URI']);
        $arr_page_url = explode('/', $page_url);
        $parent_url = $arr_page_url[1];
        $this->page = $this->pages->get_page($parent_url);
        $this->design->assign('page', $this->page);
        
		// Соседние записи
		$this->design->assign('next_post', $this->repairs->get_next_post($post->id));
		$this->design->assign('prev_post', $this->repairs->get_prev_post($post->id));
		
		$escapedName = htmlspecialchars($post->name);
		
		// Мета-теги
		if(!$post->meta_title) $post->meta_title = $escapedName . ' - Услуги Автосервиса Atomic Garage';
		if(!$post->meta_description) $post->meta_description = $escapedName . ' в Atomic Garage - Услуги Автосервиса в Санкт-Петербурге.';
//		if(!$post->meta_keywords) $post->meta_keywords = mb_strtolower($escapedName, 'utf-8') . ', акции, скидки, товары, услуги, для автомобиля, авто, санкт-петербург, установка, ремонт, тюнинг центр, линзы, оптика, фары, фонари, птф, дхо';
		
		
		$this->design->assign('meta_title', $post->meta_title);
		$this->design->assign('meta_keywords', $post->meta_keywords);
		$this->design->assign('meta_description', $post->meta_description);
		
		
		
		$this->db->query("SELECT * FROM __repair_photo WHERE repair_id='" . $post->id . "' ORDER BY position, id DESC");
        $photos = $this->db->results();
        foreach($photos as $ph){
        	$ph->image = Img::get('/files/post/' . $ph->img, array('width'=>400));
        	$ph->bigImage = Img::get('/files/post/' . $ph->img, array('width'=>1200));
        } 
        $this->design->assign('repair_photos', $photos);

		
		
		return $this->design->fetch('repairs_post.tpl');
	}	
	
	// Отображение списка постов
	private function fetch_blog()
	{ 
		// Количество постов на 1 странице
		$items_per_page = 20;

		$filter = array();
		
		// Выбираем только видимые посты
		$filter['visible'] = 1;
		
		// Текущая страница в постраничном выводе
		$current_page = $this->request->get('page', 'integer');
		
		// Если не задана, то равна 1
		$current_page = max(1, $current_page);
		$this->design->assign('current_page_num', $current_page);

		// Вычисляем количество страниц
		$posts_count = $this->repairs->count_posts($filter);

		// Показать все страницы сразу
		if($this->request->get('page') == 'all')
			$items_per_page = $posts_count;	

		$pages_num = ceil($posts_count/$items_per_page);
		$this->design->assign('total_pages_num', $pages_num);

		$filter['page'] = $current_page;
		$filter['limit'] = $items_per_page;

		// Выбираем статьи из базы
		$posts = $this->repairs->get_posts($filter);
		if(empty($posts)) 
			return false;
		
		// Передаем в шаблон
		$this->design->assign('posts', $posts);
		
		
//		$this->page = $this->pages->get_page();
		$page = $this->pages->get_page('repairs');
		$this->design->assign('page', $this->page);
		// Метатеги
		if($this->page)
		{
			$this->design->assign('meta_title', $this->page->meta_title);
			$this->design->assign('meta_keywords', $this->page->meta_keywords);
			$this->design->assign('meta_description', $this->page->meta_description);
		}
		
		$body = $this->design->fetch('repairs.tpl');
		
		return $body;
	}	
}