File: /home/bk/__backup/view/ReviewsView.php
<?php
require_once('View.php');
class ReviewsView extends View {
public function fetch() {
if ($this->request->method('post') && $this->request->post('review')) {
$review = new stdClass();
$review->parent_id = $this->request->post('parent_id', 'integer');
$review->name = $this->request->post('name');
$review->text = $this->request->post('text');
if($this->request->post('video')) {
$review->video = $this->request->post('video');
}
if($this->request->post('image')) {
$review->image = $this->request->post('image');
}
$captcha_code = $this->request->post('captcha_code', 'string');
// Передадим комментарий обратно в шаблон - при ошибке нужно будет заполнить форму
$this->design->assign('review_text', $review->text);
$this->design->assign('review_name', $review->name);
$this->design->assign('review_video', $review->video);
$this->design->assign('review_image', $review->image);
$this->design->assign('parent_id', $review->parent_id);
$image = $this->request->files('image');
if(!empty($image['name']) && ($filename = $this->image->upload_image($image['tmp_name'], $image['name'], $this->config->original_reviews_dir))) {
$this->design->assign('review_image', $filename);
$review->image = $filename;
}
/*var_dump($_SESSION['captcha_review']);
var_dump($captcha_code);*/
// Проверяем капчу и заполнение формы
$captcha_code = $_SESSION['captcha_review'] = 1;
if ($_SESSION['captcha_review'] != $captcha_code || empty($captcha_code)) {
$this->design->assign('error', 'captcha');
} elseif (empty($review->name)) {
$this->design->assign('error', 'empty_name');
} elseif (empty($review->text)) {
$this->design->assign('error', 'empty_review');
} else {
$review->ip = $_SERVER['REMOTE_ADDR'];
$this->db->query("SELECT 1 FROM __reviews WHERE approved=1 AND ip=? LIMIT 1", $review->ip);
if($this->db->num_rows()>0) {
$review->approved = 1;
}
$review_id = $this->reviews->add_review($review);
$this->notify->email_review_admin($review_id);
unset($_SESSION['captcha_code']);
header('location: '.$_SERVER['REQUEST_URI']);
}
}
$filter = array();
$filter['page'] = max(1, $this->request->get('page', 'integer'));
$filter['limit'] = 20;
if (!isset($_SESSION['admin'])) {
$filter['approved'] = 1;
}
$filter['has_parent'] = false;
$reviews_count = $this->reviews->count_reviews($filter);
// Показать все страницы сразу
if($this->request->get('page') == 'all') {
$filter['limit'] = $reviews_count;
}
$this->design->assign('current_page_num', $filter['page']);
$this->design->assign('total_pages_num', ceil($reviews_count/$filter['limit']));
$reviews = $this->reviews->get_reviews($filter);
foreach($reviews as $review) {
if($review->video) {
$tmp = explode('/',$review->video);
$tmp = end($tmp);
$tmp = stristr($tmp,'v=');
$b_p = strpos($tmp,'&');
if($b_p) {
$tmp = substr($tmp,0,$b_p);
}
$tmp = substr($tmp,2);
$review->video = $tmp;
}
}
$filter['has_parent'] = true;
unset($filter['page']);
unset($filter['limit']);
$children = array();
foreach($this->reviews->get_reviews($filter) as $review) {
if($review->video) {
$tmp = explode('/',$review->video);
$tmp = end($tmp);
$tmp = stristr($tmp,'v=');
$b_p = strpos($tmp,'&');
if($b_p) {
$tmp = substr($tmp,0,$b_p);
}
$tmp = substr($tmp,2);
$review->video = $tmp;
}
$children[$review->parent_id][] = $review;
}
$this->design->assign('reviews', $reviews);
$this->design->assign('children', $children);
$this->design->assign('reviews_count', $reviews_count);
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);
} else {
$this->design->assign('meta_title', 'Отзывы о магазине');
$this->design->assign('meta_keywords', 'Отзывы о магазине');
$this->design->assign('meta_description', 'Отзывы о магазине');
}
return $this->design->fetch('reviews.tpl');
}
}