public function actionRusRoomNames($query, $return = false) { $currentLimit = appParams('autocompleteLimit'); $items = Yii::app()->cache->get('autocompleteRusRoomNames' . $query); $items = array(); if (!$items) { $items = array(); $roomNames = array(); $criteria = new CDbCriteria(); $criteria->limit = $currentLimit; $criteria->params[':roomNameRus'] = '%' . $query . '%'; //$criteria->params[':localEn'] = $query.'%'; $criteria->addCondition('t.roomNameRus LIKE :roomNameRus'); /** @var RusNamesRus[] $roomNamesRus */ $roomNamesRus = RoomNamesRus::model()->findAll($criteria); if ($roomNamesRus) { foreach ($roomNamesRus as $roomNameRus) { $items[] = array('id' => $roomNameRus->primaryKey, 'label' => $this->parseTemplate('{roomNameRus}, {id}', $roomNameRus), 'value' => $this->parseTemplate('{roomNameRus}', $roomNameRus)); $roomNames[$roomNameRus->id] = $roomNameRus->id; } } $currentLimit -= count($items); Yii::app()->cache->set('autocompleteRusRoomNames' . $query, $items, appParams('autocompleteCacheTime')); } if ($return) { return $items; } else { $this->send($items); } }
/** * @static * @param $roomNameRusId * @return RoomNamesRus */ public static function getRoomNameRusByPk($roomNameRusId) { if (isset(RoomNamesRus::$roomNamesRus[$roomNameRusId])) { return RoomNamesRus::$roomNamesRus[$roomNameRusId]; } else { $roomNameRus = RoomNamesRus::model()->findByPk($roomNameRusId); } if ($roomNameRus) { RoomNamesRus::$roomNamesRus[$roomNameRusId] = $roomNameRus; return RoomNamesRus::$roomNamesRus[$roomNameRusId]; } else { return false; } }
public function actionRusRoomNames($query, $return = false) { $currentLimit = appParams('autocompleteLimit'); $currentLimit = 100; $cacheKey = md5($query); $items = Yii::app()->cache->get('autocompleteRusRoomNames' . $cacheKey); //$query = str_replace(' ','%',$query); $words = explode(' ', $query); $words = array_map('trim', $words); $aWords = array(); $i = 0; foreach ($words as $word) { if ($word) { $aWords[] = $word; $i++; if ($i > 6) { $aWords = array($query); break; } } } $queries = array(); $combWords = self::recombineArray($aWords); foreach ($combWords as $comb) { $queries[] = '%' . implode('%', $comb) . '%'; } $items = array(); if (!$items) { $items = array(); $roomNames = array(); $criteria = new CDbCriteria(); $criteria->limit = $currentLimit; foreach ($queries as $key => $query1) { $criteria->params[':roomNameRus' . $key] = $query1; $criteria->addCondition('t.roomNameRus LIKE :roomNameRus' . $key, 'OR'); } /** @var RusNamesRus[] $roomNamesRus */ $roomNamesRus = RoomNamesRus::model()->findAll($criteria); if ($roomNamesRus) { foreach ($roomNamesRus as $roomNameRus) { $items[] = array('id' => $roomNameRus->primaryKey, 'label' => $roomNameRus->roomNameRus . ', ' . $roomNameRus->id, 'value' => $roomNameRus->roomNameRus); $roomNames[$roomNameRus->id] = $roomNameRus->id; } } $currentLimit -= count($items); Yii::app()->cache->set('autocompleteRusRoomNames' . $cacheKey, $items, appParams('autocompleteCacheTime')); } header('Content-type: application/json'); echo json_encode($items); die; }
/** * @return string */ public function getRusName() { if ($this->roomNameRusId) { $roomRus = RoomNamesRus::getRoomNameRusByPk($this->roomNameRusId); return $roomRus->roomNameRus; } else { return ''; } }