HEX
Server: Apache/2.4.6 (CentOS) mpm-itk/2.4.7-04 mod_fcgid/2.3.9 PHP/5.4.16
System: Linux dvm.vladweb.ru 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: region-gk.ru (1016)
PHP: 7.3.33
Disabled: NONE
Upload Files
File: //home/temp/yarusvl.ru/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');
	}
}