Îðëà
Îáëàñòè
Êîìïàíèé
Ïîëüçîâàòåëè
Ãàëåðåÿ
Ôèêñèðîâàííûå íîâîñòè
Îðëà
Îòçûâû î ôèðìàõ
Òàðèôû
Ïîëüçîâàòåëè
Îáëàñòè
Áàíêîìàòû
Òîðãîâûå òî÷êè
Äîñêà îáúÿâëåíèé
Êóðñû âàëþò
Ñêèäêè
îðãàíèçàöèè Îðëà
îðãàíèçàöèè îáëàñòè
òîâàðû
ñàéòû
ñàéòû Îðåë
Äàííûå
Ðàçäåëû
Ïîèñê
Ïîèñê çàïðîñû
Ñòàòèñòèêà
Ïîêàçû êàòàëîãà îðãàíèçàöèé
Ñòàòèñòèêà êëèåíòû
Ïîëüçîâàòåëè
Ñàéòû
Óïðàâëåíèå ñàéòîì
Àíêåòà
Àïòåêè
Àôèøà
Àôèøà íîâàÿ
Áàííåðû
Áèçíåñ >
Âèêòîðèíà
Ãîëîñîâàíèå
Ãîñòü íà ñàéòå
Èñòîðèè
Êàëåíäàðü ñîáûòèé
Êàòàëîãè >
Êîíêóðñ êðàñîòû
Êîíêóðñ àóäèî
Êîíñóëüòàöèè
Ìåíþ
Íîâîå íà ñàéòå
Íîâîñòè >
Îðãàíèçàöèè >
Ïðîãðàììà ÒÂ
Ïóáëèêàöèè
Ðàçäåëû ñàéòà
Ðàññûëêà
Ðåñòîðàíû
Ñåêðåò ôèðìû >
Ñåðâèñû >
Ññûëêè
Òåñòû
Ôàéëîâûé ìåíåäæåð
Ôîðóì
Ôîòîãàëåðåÿ
Îáðàòíàÿ ñâÿçü
Íåäâèæèìîñòü
Íîâûé ãîä
Òåêñòû
Ïîëüçîâàòåëè
Þðèäè÷åñêèé ðåéòèíã
Îòçûâû íà òîâàðû
Áàí ïîëüçîâàòåëåé
Æàëîáû
Íîâûå òåñòû
Êîðîíàâèðóñ
Ôàéëîâûé ìåíåäæåð
Èìÿ ôàéëà
RestoranReader.php
Ñîäåðæèìîå
<?php namespace app\restoran; use app\restoran\filters\Entertainment; use app\restoran\filters\Interes; use app\restoran\filters\Kitchen; use app\restoran\filters\Music; /** * Ридер дл� ре�торана. * Class RestoranReader * @package app\restoran */ class RestoranReader { /** * Ма��ив � ID районами. * @var array */ private $_area = []; /** * Ма��ив развлечений * @var array */ private $_entertainment = []; /** * Интере�ы. * @var array */ private $_interes = []; /** * Кухн�. * @var array */ private $_kitchen = []; /** * Музыка * @var array */ private $_music = []; /** * Ма��ив � ID рейтингами. * @var array */ private $_rating = []; /** * Спи�ок в�ех кухонь. * @var array */ private $_kitchenItems = []; private $_interesItems = []; private $_restoranClass = null; /** * С какой �траницы выводить данные * @var int */ private $_page = 1; /** * Количе�тво запи�ей на �траницу. * @var */ private $_limit; /** * В�его найдено запи�ей (без учета лимита) * @var int */ private $_total = 0; /** * В�его найдено запи�ей * @var array */ private $_items = []; private $_random = false; private $_noAlcoholAndSmoke; public function __construct() { $this->_kitchenItems = (new Kitchen())->getItems(); $this->_interesItems = (new Interes())->getItems(); $this->_restoranClass = new Restoran(); } public function setArea($area) { if ($area == "") { return $this; } $this->_area[] = $area; return $this; } public function noAlcoholAndSmoke() { $this->_noAlcoholAndSmoke = true; return $this; } public function setEntertainment($entertainment) { $this->_entertainment[] = $entertainment; return $this; } public function setInteres($interes) { $this->_interes[] = $interes; return $this; } public function setKitchen($kitchen) { $this->_kitchen[] = $kitchen; return $this; } public function setMusic($music) { $this->_music[] = $music; return $this; } public function setRating($rating) { $this->_rating[] = $rating; return $this; } public function setPage($page) { $this->_page = (int)$page; return $this; } public function setLimit($limit) { $this->_limit = (int)$limit; return $this; } public function getKitchenArray($kitchenString) { $kitchenString = explode(';', $kitchenString); $array = []; foreach ($kitchenString as $item) { foreach ($this->_kitchenItems as $kitchenItem) { if ($kitchenItem['name'] == $item) { $array[] = $kitchenItem; } } } return $array; } public function getInteresArray($interesString) { $interesString = explode(';', $interesString); $array = []; foreach ($interesString as $item) { foreach ($this->_interesItems as $interesItem) { if ($interesItem['name'] == $item) { $array[] = $interesItem; } } } return $array; } private function generateWhereFragment() { $whereFragment = []; // район if (count($this->_area) > 0) { $whereFragment[] = 'restoran.id_area IN (' . implode(',', $this->_area) . ')'; } // кухн� if (count($this->_kitchen) > 0) { $kitchenFragment = []; foreach ((new Kitchen())->getNamesByIds($this->_kitchen) as $kitchen) { $kitchenFragment[] = 'restoran.kitchen LIKE "%' . $kitchen . '%"'; } if (count($kitchenFragment) > 0) { $whereFragment[] = '(' . implode(' OR ', $kitchenFragment) . ')'; } } // тип if (count($this->_interes) > 0) { $interesFragment = []; foreach ((new Interes())->getNamesByIds($this->_interes) as $interes) { $interesFragment[] = 'restoran.type LIKE "%'.$interes.'%"'; } if (count($interesFragment) > 0) { $whereFragment[] = '(' . implode(' OR ', $interesFragment) . ')'; } } // музыка if (count($this->_music) > 0) { $musicFragment = []; foreach ((new Music())->getNamesByIds($this->_music) as $music) { $musicFragment[] = 'restoran.music LIKE "%'.$music.'%"'; } if (count($musicFragment) > 0) { $whereFragment[] = '(' . implode(' OR ', $musicFragment) . ')'; } } // развлечени� if (count($this->_entertainment) > 0) { $entertainment = []; foreach ((new Entertainment())->getNamesByIds($this->_entertainment) as $item) { $entertainment[] = 'restoran.entertainment LIKE "%'.$item.'%"'; } if (count($entertainment) > 0) { $whereFragment[] = '(' . implode(' OR ', $entertainment) . ')'; } } if ($this->_noAlcoholAndSmoke) { $whereFragment[] = '(`type` NOT LIKE "%Каль�нна�%" AND `type` NOT LIKE "%Бар%" AND `type` NOT LIKE "%Пивной%")'; } $whereString = ''; if (count($whereFragment) > 0) { $whereString = ' AND ' . implode(' AND ', $whereFragment); } return $whereString; } public function getTotal() { return $this->_total; } public function random() { $this->_random = true; return $this; } public function query() { $whereString = $this->generateWhereFragment(); if ($this->_limit == null) { $this->_limit = 10; } $offset = ($this->_page-1) * $this->_limit; $defaultOrder =' `restoran`.`position` DESC '; if ($this->_random == true) { $defaultOrder = ' rand() '; } $sql = " SELECT `restoran`.`id`, registr, `restoran`.`name` as name, `phone`, restoran.work_hours, restoran.cost, `kitchen`, `address`, logo, foto_485, `x`, `y`, `type`, `restoran`.`restoran_area`.in_city, COUNT(comment.id) as total_comments, restoran.restoran_url FROM `restoran`.`restoran` LEFT JOIN `infoorel`.`map_home` ON `restoran`.`id_home`=`infoorel`.`map_home`.`id` LEFT JOIN `restoran`.`restoran_area` ON restoran.restoran.id_area = `restoran`.`restoran_area`.id LEFT JOIN `restoran`.`restoran_comment` comment ON comment.id_restoran = restoran.id AND comment.status = 3 WHERE (restoran.restoran.status='3' or restoran.restoran.status='4') {$whereString} GROUP BY restoran.restoran.id ORDER BY {$defaultOrder} LIMIT {$offset}, {$this->_limit} "; $pdo = \App::getRestoranPdo(); $sth = $pdo->prepare($sql); $sth->execute(); $items = $sth->fetchAll(); foreach ($items as $key => $item) { $items[$key]['kitchen_items'] = $this->getKitchenArray($item['kitchen']); $items[$key]['interes_items'] = $this->getInteresArray($item['type']); $items[$key]['rating'] = $this->_restoranClass->getRating($item['id']); $items[$key]['registr'] = 1;//$this->_restoranClass->getRating($item['id']); } $this->_items = $items; // под�чет общего количе�тва �трок $sth = $pdo->prepare(" SELECT COUNT(id) as total FROM `restoran`.`restoran` WHERE (status='3' or status='4') {$whereString} "); $sth->execute(); $this->_total = $sth->fetch()['total']; return $this; } public function all() { return $this->_items; } }
/app/restoran/
Èìÿ
Äàòà
Ðàçìåð
..
2026-10-01
entity
2019-01-18
filters
2019-01-18
forms
2017-01-30
repository
2019-01-18
request
2019-01-18
utils
2019-01-18
CommentImages.php
2017-08-17
2 êá.
Comments.php
2018-07-10
7 êá.
Entertainment.php
2016-12-22
1 êá.
Interes.php
2016-12-22
1 êá.
Kitchen.php
2016-12-22
1 êá.
Music.php
2016-12-22
982 áàéò
Panorams.php
2017-01-18
484 áàéò
Photos.php
2017-03-24
2 êá.
Restoran.php
2018-07-12
10 êá.
RestoranMenu.php
2017-07-20
3 êá.
RestoranNews.php
2017-09-11
6 êá.
RestoranReader.php
2022-02-25
8 êá.
RestoranReader.php~
2018-07-11
8 êá.
RestoranViews.php
2017-03-21
2 êá.
RestoranVote.php
2017-09-11
2 êá.
Video.php
2017-01-30
889 áàéò
/app/restoran
Çàãðóçèòü ôàéëû
Ôàéë 1
Ôàéë 2
Ôàéë 3