예제 #1
0
 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);
     }
 }
예제 #2
0
 /**
  * @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;
     }
 }
예제 #3
0
 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;
 }
예제 #4
0
 /**
  * @return string
  */
 public function getRusName()
 {
     if ($this->roomNameRusId) {
         $roomRus = RoomNamesRus::getRoomNameRusByPk($this->roomNameRusId);
         return $roomRus->roomNameRus;
     } else {
         return '';
     }
 }