public function run() { if (is_null($this->model)) { return; } $model = $this->model; // Условия выборки $criteria = new CDbCriteria(); if ($this->limit > 0) { $criteria->limit = (int) $this->limit; } $criteria->order = 'RAND()'; $criteria->scopes['type'] = $model->type->id; $criteria->compare('t.id', '<>' . $model->id); if ($model->category->id == RealtyCategory::ELITE_CATEGORY_ID) { $criteria->compare('::rooms_number::', $model->rooms_number); $criteria->addInCondition('::district::', $model->district); } elseif ($model->category->id == RealtyCategory::COUNTRY_CATEGORY_ID) { $criteria->addInCondition('::direction::', $model->direction); } if ($model->category->id == RealtyCategory::COMMERCIAL_CATEGORY_ID) { $criteria->addInCondition('::district::', $model->district); } // Выборка объектов $models = RealtyItem::model()->withEavAttributes(true)->active()->with(['category', 'type', 'currency'])->findAll($criteria); if (empty($models)) { return; } $this->render($this->view, ['models' => $models]); }
public function actionCreate() { $model = $this->createModel(); $modelName = get_class($model); $realtyItem = null; // Если указан объект недвижимости, для которого создается галерея изображений if (isset($_GET['realty_item_id'])) { if (($realtyItem = RealtyItem::model()->findByPk((int) $_GET['realty_item_id'])) === null) { throw new CHttpException(404, Yii::t('RealtyModule.realty', 'Page was not found!')); } $model->title = $realtyItem->name; } if (isset($_POST[$modelName])) { $model->attributes = $_POST[$modelName]; if ($model->save()) { // Привязка галереи к объекту недвижимости if (!is_null($realtyItem)) { $realtyItem->gallery_id = $model->id; $realtyItem->update(['gallery_id']); } // Редирект на страницу управления изображениями галереи Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, 'Галерея создана!'); $this->redirect(['/realty/realtyGalleryImageBackend/index/', 'item_id' => $model->id]); } } $this->render('create', ['model' => $model]); }
public function actionIndex() { $dirPath = Yii::app()->uploadManager->getBasePath() . DIRECTORY_SEPARATOR . Yii::app()->getModule('realty')->uploadPath . DIRECTORY_SEPARATOR . 'cian'; $realtyTypes = ['flats_for_sale' => ['criteria' => ['order' => 't.sort ASC', 'condition' => 't.type_id IN (1,2)'], 'generator' => 'realty\\components\\cian\\FlatsForSaleCianXMLGenerator'], 'flats_rent' => ['criteria' => ['order' => 't.sort ASC', 'condition' => 't.type_id = 2'], 'generator' => 'realty\\components\\cian\\FlatsRentCianXMLGenerator']]; // Просматриваем все категории foreach ($realtyTypes as $key => &$type) { $cianXMLGeneragor = new $type['generator']($dirPath); $models = RealtyItem::model()->withEavAttributes(true)->active()->with(['category', 'type', 'currency'])->findAll($type['criteria']); if (empty($models)) { continue; } foreach ($models as $model) { $cianXMLGeneragor->addItem($model); } $cianXMLGeneragor->write(); } }
public function actionFavorite() { $ids = array_reverse(Yii::app()->favorite->getPositions()); $criteria = new CDbCriteria(); $criteria->addInCondition('t.id', $ids); if (!empty($ids)) { $criteria->order = 'FIELD(t.id, ' . implode(',', $ids) . ')'; } $categories = RealtyCategory::model()->published()->findAll(['order' => 't.sort ASC']); // Просматриваем все категории foreach ($categories as $key => &$category) { $category->items = RealtyItem::model()->withEavAttributes(true)->active()->category($category->id)->with(['category', 'type', 'currency'])->findAll($criteria); if (empty($category->items)) { unset($categories[$key]); } } $this->render('favorite', ['categories' => $categories]); }
public function run() { if ($this->title === false) { $this->title = Yii::t('RealtyModule.realty', 'Special offers'); } $criteria = new CDbCriteria(); $criteria->order = 't.update_time DESC'; if ($this->limit > 0) { $criteria->limit = (int) $this->limit; } if (!is_null($this->category)) { $criteria->scopes['category'] = $this->category->id; } if (!is_null($this->type)) { $criteria->scopes['type'] = $this->type->id; } $models = RealtyItem::model()->withEavAttributes(true)->active()->specialOffer()->with(['category', 'type', 'currency'])->findAll($criteria); if (empty($models)) { return; } $this->render($this->view, ['models' => $models, 'title' => $this->title, 'category' => $this->category, 'type' => $this->type]); }
/** * Action для получения описаний объектов, входящих в кластер, на карте * * @param string $id * @throws CHttpException */ public function actionGetClusterDescription() { if (!Yii::app()->request->isAjaxRequest) { throw new CHttpException(403, 'Invalid request'); } $ids = explode(',', Yii::app()->getRequest()->getParam('ids', '')); if (empty($ids)) { Yii::app()->ajax->rawText(''); } array_walk($ids, function ($item) { return (int) $item; }); // Находим объекты недвижимости по ID $criteria = new CDbCriteria(); $criteria->addInCondition('t.id', $ids); $models = RealtyItem::model()->withEavAttributes(true)->active()->with(['currency', 'category', 'type'])->findAll($criteria); if (empty($models)) { Yii::app()->ajax->rawText(''); } // Генерируем ответ $currency = Yii::app()->getRequest()->getParam('currency', $this->getModule()->defaultCurrency); $result = []; foreach ($models as $model) { $model->setCurrentCurrency((int) $currency); $result[$model->id] = $this->renderPartial('catalog/_map_short_property_box', ['data' => $model], true); } Yii::app()->ajax->raw($result); }
public function actionUpdate() { exit; $prefix = $_GET['prefix']; // prepare logger to dump logs every time one comes in Yii::getLogger()->autoFlush = 1; Yii::getLogger()->autoDump = true; $begin = getmicrotime(); // Начало $parsePath = Yii::app()->uploadManager->getBasePath() . DIRECTORY_SEPARATOR . $this->module->uploadPath . DIRECTORY_SEPARATOR . 'parse'; $csvFile = $parsePath . DIRECTORY_SEPARATOR . "realty_{$prefix}.csv"; $csvData = file_get_contents($csvFile); $csvData = mb_convert_encoding($csvData, 'utf-8', 'windows-1251'); $csvData = explode("\r\n", $csvData); foreach ($csvData as $key => $row) { //if($key >= 20) // break; $fields = str_getcsv($row, ";", '"'); //var_dump($fields); // Номер $num = (int) $fields[0]; $description = trim($fields[17], '"'); if (empty($num)) { continue; } /* if(mb_strpos($description, ';', 0, 'utf-8') === false) { continue; } * */ $realtyItem = RealtyItem::model()->findByAttributes(['xls_id' => $num]); if (is_null($realtyItem)) { continue; } echo $num . '<br />'; $realtyItem->full_text = $description; /* if(!$realtyItem->update(['full_text'])) { echo $realtyItem->title . ' - '. $num . ' - error<br />'; var_dump($realtyItem->getErrors()); } * */ $realtyItem->year_built = (int) $fields[18]; $realtyItem->number_of_apartments = (int) $fields[19]; $realtyItem->apartment_number = (int) $fields[20]; $realtyItem->housing = trim($fields[21], '"'); if (!$realtyItem->saveWithEavAttributes()) { echo $realtyItem->title . ' - ' . $num . ' - error<br />'; var_dump($realtyItem->getErrors()); } echo '<hr>'; } $end = getmicrotime(); $time = $end - $begin; echo "Время выполнения скрипта: " . $time . "с."; echo '<hr>'; }
public function getItemsTotalList($onlyIds = false) { if ($this->_itemsTotalList == null) { $criteria = $this->_searchCriteria !== null ? $this->_constructSearchCriteria(true) : new CDbCriteria(); $this->_itemsTotalList = RealtyItem::model()->findAll($criteria); } return $onlyIds ? array_keys(CHtml::listData($this->_itemsTotalList, 'id', 'id')) : $this->_itemsTotalList; }
public function loadModel($id) { if (($model = RealtyItem::model()->findByPk($id)) === null) { throw new CHttpException(404, Yii::t('RealtyModule.realty', 'Page was not found!')); } return $model; }