Îðëà
Îáëàñòè
Êîìïàíèé
Ïîëüçîâàòåëè
Ãàëåðåÿ
Ôèêñèðîâàííûå íîâîñòè
Îðëà
Îòçûâû î ôèðìàõ
Òàðèôû
Ïîëüçîâàòåëè
Îáëàñòè
Áàíêîìàòû
Òîðãîâûå òî÷êè
Äîñêà îáúÿâëåíèé
Êóðñû âàëþò
Ñêèäêè
îðãàíèçàöèè Îðëà
îðãàíèçàöèè îáëàñòè
òîâàðû
ñàéòû
ñàéòû Îðåë
Äàííûå
Ðàçäåëû
Ïîèñê
Ïîèñê çàïðîñû
Ñòàòèñòèêà
Ïîêàçû êàòàëîãà îðãàíèçàöèé
Ñòàòèñòèêà êëèåíòû
Ïîëüçîâàòåëè
Ñàéòû
Óïðàâëåíèå ñàéòîì
Àíêåòà
Àïòåêè
Àôèøà
Àôèøà íîâàÿ
Áàííåðû
Áèçíåñ >
Âèêòîðèíà
Ãîëîñîâàíèå
Ãîñòü íà ñàéòå
Èñòîðèè
Êàëåíäàðü ñîáûòèé
Êàòàëîãè >
Êîíêóðñ êðàñîòû
Êîíêóðñ àóäèî
Êîíñóëüòàöèè
Ìåíþ
Íîâîå íà ñàéòå
Íîâîñòè >
Îðãàíèçàöèè >
Ïðîãðàììà ÒÂ
Ïóáëèêàöèè
Ðàçäåëû ñàéòà
Ðàññûëêà
Ðåñòîðàíû
Ñåêðåò ôèðìû >
Ñåðâèñû >
Ññûëêè
Òåñòû
Ôàéëîâûé ìåíåäæåð
Ôîðóì
Ôîòîãàëåðåÿ
Îáðàòíàÿ ñâÿçü
Íåäâèæèìîñòü
Íîâûé ãîä
Òåêñòû
Ïîëüçîâàòåëè
Þðèäè÷åñêèé ðåéòèíã
Îòçûâû íà òîâàðû
Áàí ïîëüçîâàòåëåé
Æàëîáû
Íîâûå òåñòû
Êîðîíàâèðóñ
Ôàéëîâûé ìåíåäæåð
Èìÿ ôàéëà
RealtyReader.php
Ñîäåðæèìîå
<?php namespace app\realty; use App; /** * ФункциÑ� ищет недвижимоÑ�ть. * Class RealtyReader * @package app\realty */ class RealtyReader { /** * Районы, по которым мы ищем недвижимоÑ�ть * @var array */ private $_areaWhere = []; /** * От какой Ñ�тоимоÑ�ти иÑ�кать * @var int|null */ private $_priceStart; /** * До какой Ñ�тоимоÑ�ти иÑ�кать * @var int|null */ private $_priceEnd; /** * Тип цены, цена за вÑ�ÑŽ квартиру, цена за квадратный метр или цена в меÑ�Ñ�ц * @see RealtyTypePrice * @var array */ private $_priceTypes = []; /** * Тип Ñ�делки - покупка, продажа, Ñ�дать жилье и так далее * @var array */ private $_transactionTypes = []; /** * Тип объекта - бизнеÑ�, вторичное жилье... * @var array */ private $_realtyTypes = []; /** * Тип количеÑ�тво комнат, которые можно передать. * Ðлемент Ñ�одержит Ñ�ледующий тип: * [ * 'condition' => '=/</>', * 'value' => int * ] * @var array */ private $_roomCounts = []; /** * ОбщаÑ� площадь в квадратных метрах (от) * @var int|null */ private $_totalAreaStart; /** * ОбщаÑ� площадь до в квадратных метрах * @var int|null */ private $_totalAreaEnd; /** * Площадь учаÑ�тка от квадратных метров. * ВыбираетÑ�Ñ� только в том Ñ�лучае, еÑ�ли тип объекта коттедж * @var int|null */ private $_totalLandAreaStart; /** * Площадь учаÑ�тка в квадратных метрах до * @var int|null */ private $_totalLandAreaEnd; /** * С какого Ñ�тажа * @var int|null */ private $_floorStart; /** * По какой Ñ�таж * @var int|null */ private $_floorEnd; /** * Тип дома - маÑ�Ñ�ив чиÑ�ел * @var array */ private $_homeTypes = []; /** * Тип бизнеÑ�ов * @var array */ private $_businessTypes = []; /** * Типы коммерчеÑ�кой недвижимоÑ�ти. * ИÑ�пользуетÑ�Ñ� только в том Ñ�лучае, еÑ�ли тип объекта коммерчеÑ�каÑ� недвижимоÑ�ть. * @var array */ private $_commerceTypes= []; /** * Показывать только Ñ� фото. По умолчанию показывать вÑ�е * @var */ private $_withOnlyPhoto = false; /** * Сколько запиÑ�ей выводить за один раз * @var int */ private $_limit = 10; /** * Скольо запиÑ�ей пропуÑ�кать * @var int */ private $_offset = 0; /** * ID запиÑ�и в базе * @var int */ private $_id = null; public function __construct() { $this->_limit = App::$config['realty']['totalPerPage']; } /** * ФункциÑ� уÑ�танавливает в каком районе или горде иÑ�кать объект * недвижимоÑ�ти * @param $value - ID города или района * @return $this */ public function setAreaWhere($value) { if ($value == null) { return $this; } $this->_areaWhere[] = (int)$value; return $this; } /** * ФункциÑ� уÑ�танавливает Ñ�тартовую цену на недвижимоÑ�ть * @param float $value * @return $this */ public function setPriceStart($value) { if ($value === null) { return $this; } $this->_priceStart = (float)$value; return $this; } /** * ФункциÑ� уÑ�танавливает конечную Ñ�тоимоÑ�ть на недвижимоÑ�ть. * @param $value * @return $this; */ public function setPriceEnd($value) { if ($value === null) { return $this; } $this->_priceEnd = (float)$value; return $this; } /** * ФункциÑ� проверÑ�ет тип Ñ�тоимоÑ�ти - цена за квадратный метр, цена за вÑ�ÑŽ квартиру и так далее * @param $value * @return $this */ public function setPriceType($value) { if ($value == null) { return $this; } if (RealtyTypePrice::isExist($value) == false) { return $this; } $this->_priceTypes[] = (int)$value; return $this; } /** * ФункциÑ� уÑ�танавливает тип Ñ�делки - купить, продать и так далее. * @param $value * @return $this */ public function setTransactionType($value) { if ($value == null) { return $this; } if (RealtyTransactionTypes::isExist($value) == false) { return $this; } $this->_transactionTypes[] = $value; return $this; } /** * ФункциÑ� уÑ�танавливает тип объекта недвижимоÑ�ти, коммерчеÑ�каÑ� недвижимоÑ�ть, бизнеÑ�, гаражи и так далее * @param $value * @return $this */ public function setRealtyType($value) { if ($value == null) { return $this; } if (RealtyTypes::isExist($value) == false) { return $this; } $this->_realtyTypes[] = $value; return $this; } /** * ФункциÑ� уÑ�танавливает количеÑ�тво * @param $condition * @param $value * @return $this */ public function setRoom($condition, $value) { if ($value == null) { return $this; } $this->_roomCounts[] = [ 'condition' => $condition, 'value' => (int)$value ]; return $this; } /** * Ð’ Ñ�ту функцию приходÑ�Ñ‚ значениÑ� из $_GET. * 1,2,3 мы еще Ñ�читаем, а вот 4,5,6 и далее игнорируем * при Ñ�том пишем больше 3 * @param mixed $rooms * @return $this */ public function setRooms($rooms) { if (is_array($rooms) == false) { return $this; } $isExistNext3 = false; foreach ($rooms as $room) { if ($room > 3) { if ($isExistNext3 == true) { continue; } else { $this->setRoom('>', $room); } } else { $this->setRoom('=', $room); } } return $this; } /** * ФункциÑ� уÑ�танавливает начальное значение площади помещениÑ� в квадратных метрах * @param $value * @return $this */ public function setTotalAreaStart($value) { if ($value === null) { return $this; } $this->_totalAreaStart = (float)$value; return $this; } /** * ФункциÑ� уÑ�танавливает конечное значение площади помещениÑ� в квадратных метрах * @param $value * @return $this */ public function setTotalAreaEnd($value) { if ($value == null) { return $this; } $this->_totalAreaEnd = $value; return $this; } /** * ФункциÑ� уÑ�танавливает начальное значение площади земельного учаÑ�тка * @param $value * @return $this */ public function setTotalLandAreaStart($value) { if ($value == null) { return $this; } $this->_totalLandAreaStart = (float)$value; return $this; } /** * ФункциÑ� уÑ�танавливает конечное значение площади земельного учаÑ�тка * @param $value * @return $this */ public function setTotalLandAreaEnd($value) { if ($value == null) { return $this; } $this->_totalLandAreaEnd = (float)$value; return $this; } /** * ФункциÑ� уÑ�танавливает Ñ� какого Ñ�тажа делать выборку * @param $value * @return $this */ public function setFloorStart($value) { if ($value == null) { return $this; } $this->_floorStart = (int)$value; return $this; } /** * ФункциÑ� уÑ�танавливает по который Ñ�таж делать выборку * @param $value * @return $this */ public function setFloorEnd($value) { if ($value == null) { return $this; } $this->_floorEnd = (int)$value; return $this; } /** * ФункциÑ� уÑ�танавливает тип дома - кирпичный дом, деревÑ�нный дом и так далее * @param $value * @return $this */ public function setHomeType($value) { if ($value == null) { return $this; } if (RealtyHomeTypes::isExist($value) == false) { return $this; } $this->_homeTypes[] = $value; return $this; } /** * ФункциÑ� уÑ�танавливает тип бизнеÑ�а. * @see RealtyBusinessTypes * @param $value * @return $this */ public function setBusinessType($value) { if ($value == null) { return $this; } if (RealtyBusinessTypes::isExist($value) == false) { return $this; } $this->_businessTypes[] = $value; return $this; } /** * ФункциÑ� уÑ�танавливает типы коммерчеÑ�кой недвижимоÑ�ти * @param $value * @return $this */ public function setCommerceType($value) { if ($value == null) { return $this; } if (RealtyCommerceTypes::isExist($value) == false) { return $this; } $this->_commerceTypes[] = $value; return $this; } /** * ФункциÑ� уÑ�танавливает, показывать ли только объÑ�влениÑ� Ñ� фотографиÑ�ми * или не показывать. * @param $value * @return $this */ public function setWithOnlyPhoto($value) { if ($value == true || $value == "On" || $value == "yes") { $this->_withOnlyPhoto = true; } else { $this->_withOnlyPhoto = false; } return $this; } /** * ФункциÑ� уÑ�танавливает, Ñ�колько значений выводить на Ñ�кране * @param $limit * @return $this */ public function setLimit($limit) { if ($limit > 0) { $this->_limit = (int)$limit; } return $this; } /** * ФункциÑ� уÑ�танавливает, Ñ�колько запиÑ�ей пропуÑ�кать * @param $offset * @return $this */ public function setOffset($offset) { $this->_offset = (int)$offset; return $this; } /** * ФункциÑ� уÑ�танавливает, какую Ñ�траницу показывать (Ñ�мулируетÑ�Ñ� через setOffset) * @param $page * @return RealtyReader */ public function setPage($page) { return $this->setOffset(($page-1) * $this->_limit); } /** * ФункциÑ� уÑ�танавливает ID запиÑ�и. * @param $id * @return $this */ public function setId($id) { if ($id == null) { return $this; } $this->_id = (int)$id; return $this; } /** * ФункциÑ� возвращает базовый запроÑ� к базе данных, по которому делаем выборку * @return string */ private function getBaseSql() { return ' SELECT realty.*, directory.name as rayon_name, object_type.name as object_type_name, transaction_type.name as transaction_type_name, realty_type.name as realty_type_name, realty_photo.photo FROM realty LEFT JOIN `directory` ON directory.id = realty.region_id LEFT JOIN `directory` as object_type ON object_type.id = realty.object_type_id LEFT JOIN `directory` as transaction_type ON transaction_type.id = realty.deal_type_id LEFT JOIN `directory` as realty_type ON realty_type.id = realty.price_type LEFT JOIN `realty_photo` ON realty_photo.realty_id = realty.id '; } /** * ФункциÑ� возвращает базовый запроÑ� к базе данных, чтобы узнать общее количлеÑ�тво запиÑ�ей * @return array */ private function getBaseTotalSql() { return ' SELECT COUNT(realty.id) as total FROM `realty` '; } /** * ФункциÑ� возвращает WHERE ЗапроÑ�, еÑ�ли такой имеетÑ�Ñ� */ private function getWhereFragment() { $whereFragmentArray = []; if (count($this->_areaWhere) > 0) { $whereFragmentArray[] = 'realty.region_id IN (' . implode(',', $this->_areaWhere) . ')'; } if ($this->_priceStart != null) { $whereFragmentArray[] = 'realty.price >= ' . $this->_priceStart; } if ($this->_priceEnd != null) { $whereFragmentArray[] = 'realty.price <= ' . $this->_priceEnd; } if (count($this->_priceTypes) > 0) { $whereFragmentArray[] = 'realty.price_type IN (' . implode(',', $this->_priceTypes) . ')'; } if (count($this->_transactionTypes) > 0) { $whereFragmentArray[] = 'realty.deal_type_id IN (' . implode(',', $this->_transactionTypes) . ')'; } if (count($this->_realtyTypes) > 0) { $whereFragmentArray[] = 'realty.object_type_id IN (' . implode(',', $this->_realtyTypes) . ')'; } if (count($this->_roomCounts) > 0) { $roomsFragmentArray = []; foreach ($this->_roomCounts as $roomCount) { $roomsFragmentArray[] = "realty.room_count {$roomCount['condition']} {$roomCount['value']}"; } $whereFragmentArray[] = '(' . implode(' OR ', $roomsFragmentArray) . ')'; } if ($this->_totalAreaStart != null) { $whereFragmentArray[] = 'realty.square >= ' . $this->_totalAreaStart; } if ($this->_totalAreaEnd != null) { $whereFragmentArray[] = 'realty.square <= ' . $this->_totalAreaEnd; } if ($this->_totalLandAreaStart != null) { $whereFragmentArray[] = 'realty.square_all >= ' . $this->_totalLandAreaStart; } if ($this->_totalLandAreaEnd != null) { $whereFragmentArray[] = 'realty.square_all <= ' . $this->_totalLandAreaEnd; } if ($this->_floorStart != null) { $whereFragmentArray[] = 'realty.floor >= ' . $this->_floorStart; } if ($this->_floorEnd != null) { $whereFragmentArray[] = 'realty.floor <= ' . $this->_floorEnd; } if (count($this->_homeTypes) > 0) { $whereFragmentArray[] = 'realty.home_type_id IN (' . implode(',', $this->_homeTypes) . ')'; } if (count($this->_businessTypes) > 0) { $whereFragmentArray[] = 'realty.business_type_id IN (' . implode(',', $this->_businessTypes) . ')'; } if (count($this->_commerceTypes) > 0) { $whereFragmentArray[] = 'realty.com_type_id IN (' . implode(',', $this->_commerceTypes) . ')'; } if ($this->_id > 0) { $whereFragmentArray[] = 'realty.id = ' . $this->_id; } $whereFragmentArray[] = 'realty.status = 3'; if ($this->_withOnlyPhoto == true) { $whereFragmentArray[] = ' (SELECT COUNT(id) FROM `realty_photo` WHERE realty_id = realty.id) > 0 '; } if (count($whereFragmentArray) > 0) { return ' WHERE ' . implode(' AND ', $whereFragmentArray); } return ''; } public function getTotalItems() { $baseSql = $this->getBaseTotalSql() . $this->getWhereFragment(); return App::$command ->createCommand($baseSql) ->queryOne('total', 0); } public function all() { $baseSql = $this->getBaseSql() . $this->getWhereFragment(); $baseSql .= ' GROUP BY realty.id ORDER BY `id` DESC LIMIT '.$this->_offset.','.$this->_limit.' '; return App::$command ->createCommand($baseSql) ->queryAll(); } }
/app/realty/
Èìÿ
Äàòà
Ðàçìåð
..
2026-10-01
activerecord
2016-12-12
forms
2017-03-15
Realty.php
2017-03-15
10 êá.
RealtyArea.php
2016-12-22
2 êá.
RealtyBusinessTypes.php
2016-12-22
1 êá.
RealtyCommerceTypes.php
2016-12-22
1 êá.
RealtyHomeTypes.php
2017-03-13
3 êá.
RealtyMessages.php
2017-01-10
829 áàéò
RealtyPeriod.php
2016-12-22
1 êá.
RealtyPhoto.php
2017-03-14
3 êá.
RealtyReader.php
2017-03-15
17 êá.
RealtyRoomCount.php
2016-12-22
914 áàéò
RealtyTransactionTypes.php
2016-12-22
2 êá.
RealtyTypePrice.php
2017-01-10
3 êá.
RealtyTypes.php
2017-01-10
2 êá.
/app/realty
Çàãðóçèòü ôàéëû
Ôàéë 1
Ôàéë 2
Ôàéë 3