HEX
Server: LiteSpeed
System: Linux php-prod-3.spaceapp.ru 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: sarli3128 (1010)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/retile.ru/public_html/catalog/model/extension/module/uni_reviews.php
<?php
class ModelExtensionModuleUniReviews extends Model
{
    public function getAllReviews($start = 0, $limit = 12, $page) {
		
		$cache_name = 'unishop.reviews.all.'.(int)$page;
		
		$reviews_data = $this->cache->get($cache_name);

		if(!$reviews_data) {
			$sql = "SELECT r.review_id, r.author, r.rating, r.text, p.product_id, pd.name, p.price, p.image, r.date_added FROM ".DB_PREFIX."review r LEFT JOIN `".DB_PREFIX."product` p ON (r.product_id = p.product_id) LEFT JOIN `".DB_PREFIX."product_description` pd ON (p.product_id = pd.product_id) LEFT JOIN `".DB_PREFIX."product_to_store` p2s ON (p.product_id = p2s.product_id) WHERE p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND p.date_available <= NOW() AND p.status = '1' AND r.status = '1' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY r.date_added DESC";
			
			if ($start < 0) {
				$start = 0;
			}

			if ($limit < 1) {
				$limit = 12;
			}
	
			$sql .= " LIMIT ".(int)$start.", ".(int)$limit;
			
			$query = $this->db->query($sql);
			
			$reviews_data = $query->rows;
			
			$this->cache->set($cache_name, $reviews_data);
		}
		
		return $reviews_data;
    }

    public function getTotalReviews() {
		$reviews_data = $this->cache->get('unishop.reviews.total');

		if(!$reviews_data) {
			$query = $this->db->query("SELECT COUNT(*) AS total FROM `".DB_PREFIX."review` r LEFT JOIN `".DB_PREFIX."product` p ON (r.product_id = p.product_id) LEFT JOIN `".DB_PREFIX."product_to_store` p2s ON (p.product_id = p2s.product_id) WHERE p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND p.date_available <= NOW() AND p.status = '1' AND r.status = '1'");
			$reviews_data = $query->row['total'];
			$this->cache->set('unishop.reviews.total', $reviews_data);
		}
		
		return $reviews_data;
    }

    public function getLatestReviews($limit = 5, $category_id = 0) {
		$reviews_data = $this->cache->get('unishop.reviews.latest.'.(int)$category_id);
		
		if(!$reviews_data) {
			$reviews_data = $this->getReviews($limit, $category_id, FALSE);
			$this->cache->set('unishop.reviews.latest.'.(int)$category_id, $reviews_data);
		}
		
		return $reviews_data;
    }

    public function getRandomReviews($limit = 5, $category_id = 0) {
        $reviews_data = $this->cache->get('unishop.reviews.random.'.(int)$category_id);

		if(!$reviews_data) {
			$reviews_data = $this->getReviews($limit, $category_id, TRUE);
			$this->cache->set('unishop.reviews.random.'.(int)$category_id, $reviews_data);
		}
		
		return $reviews_data;
    }

    private function getReviews($limit, $category_id, $random) {	
	
		$sql = "SELECT DISTINCT r.author, r.rating, r.text, r.date_added, p.product_id, pd.name, p.price, p.image FROM ".DB_PREFIX."review r LEFT JOIN ".DB_PREFIX."product p ON (r.product_id = p.product_id) LEFT JOIN ".DB_PREFIX."product_description pd ON (p.product_id = pd.product_id) LEFT JOIN ".DB_PREFIX."product_to_store p2s ON (p.product_id = p2s.product_id)";
		$sql .= $category_id != 0 ? " LEFT JOIN ".DB_PREFIX."product_to_category p2c ON (p.product_id = p2c.product_id)" : "";
		$sql .= " WHERE p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND p.date_available <= NOW() AND p.status = '1' AND r.status = '1' AND pd.language_id = '".(int)$this->config->get('config_language_id')."' ";
		$sql .= $category_id != 0 ? " AND p2c.category_id = '".(int)$category_id."'" : "";
        $sql .= $random ? " ORDER BY RAND() " : " ORDER BY date_added DESC";
        $sql .= " LIMIT ".(int)$limit;

		$query = $this->db->query($sql);

        return $query->rows;
    }
	
	public function getReviewById($review_id) {
		$query = $this->db->query("SELECT * FROM `".DB_PREFIX."review` WHERE review_id = '".(int)$review_id."' LIMIT 1");
		
		return $query->row;
	}
	
	public function getMostPopularReviewbyProductId($product_id) {
		$query = $this->db->query("SELECT * FROM `".DB_PREFIX."review` WHERE product_id = '".(int)$product_id."' AND votes_plus > 0 ORDER BY votes_plus DESC LIMIT 1");
		
		return $query->row;
	}
	
	public function setReviewsVotes($review_id, $vote) {
		if($vote == 'plus' || $vote == 'minus') {
			$sql = "UPDATE `".DB_PREFIX."review` SET";
		
			if($vote == 'plus') {
				$sql .= " votes_plus = (votes_plus + 1)";
			} else if ($vote == 'minus') {
				$sql .= " votes_minus = (votes_minus + 1)";
			}
		
			$sql .= " WHERE review_id = '".(int)$review_id."'";
		
			$this->db->query($sql);
		}
	}
}
?>