Beispiel #1
0
 private function composeCheckData()
 {
     $data = array();
     if ($this->method == \core\RuleBase::$methodPost) {
         $data = $this->request->getPost();
     } else {
         $data = $this->request->getQuery();
     }
     $this->formData = $data;
 }
Beispiel #2
0
 public function getQuery($name = null, $filters = null, $defaultValue = null)
 {
     $query = parent::getQuery($name, $filters, $defaultValue);
     if (isset($query['_url'])) {
         unset($query['_url']);
     }
     return $query;
 }
 /**
  * Preenche os registros a serem exibidos na pagina solicitada
  * 
  * @return \wsGerProj\Http\GetResponse
  */
 private function setResults()
 {
     if ($this->request->getQuery(DefaultParams::SKIP_PAGINATION)) {
         $this->retorno->results = $this->data;
     } else {
         $startRow = ($this->currentPage - 1) * Settings::RECORDS;
         $this->retorno->results = array_slice($this->data, $startRow, Settings::RECORDS);
     }
     return $this;
 }
 /**
  * Выполняет обработку запроса
  * 
  * @param \Phalcon\Http\Request $request
  * @param \Kladr\Core\Plugins\Base\PluginResult $prevResult
  * @return \Kladr\Core\Plugins\Base\PluginResult
  */
 public function process(Request $request, PluginResult $prevResult)
 {
     if ($prevResult->error) {
         return $prevResult;
     }
     $userKey = $request->getQuery('token');
     $user = $this->userService->getUserByKey($userKey);
     $this->userService->logUser($user);
     $prevResult->user = $user;
     return $prevResult;
 }
 /**
  * Выполняет обработку запроса
  * 
  * @param \Phalcon\Http\Request $request
  * @param \Kladr\Core\Plugins\Base\PluginResult $prevResult
  * @return \Kladr\Core\Plugins\Base\PluginResult
  */
 public function process(Request $request, PluginResult $prevResult)
 {
     if ($prevResult->error) {
         return $prevResult;
     }
     $userKey = $request->getQuery('token');
     $tokens = array();
     include __DIR__ . '/../../config/enabled_tokens.php';
     if (trim($userKey) == '' || !in_array($userKey, $tokens)) {
         $prevResult->error = true;
         $prevResult->errorCode = 403;
         $prevResult->errorMessage = 'Неверный token';
         return $prevResult;
     }
     return $prevResult;
 }
 /**
  * Выполняет обработку запроса
  *
  * @param \Phalcon\Http\Request $request
  * @param \Kladr\Core\Plugins\Base\PluginResult $prevResult
  * @return \Kladr\Core\Plugins\Base\PluginResult
  */
 public function process(Request $request, PluginResult $prevResult)
 {
     if ($prevResult->error) {
         return $prevResult;
     }
     if (!$request->getQuery('withParent')) {
         return $prevResult;
     }
     $objects = $this->cache->get('FindParentsPlugin', $request);
     $result = $prevResult;
     if ($objects === null) {
         $objects = $result->result;
         switch ($request->getQuery('contentType')) {
             case Regions::ContentType:
                 foreach ($objects as $key => $object) {
                     $objects[$key]['parents'] = self::findParents(Regions::getCodes($object['id']));
                 }
                 break;
             case Districts::ContentType:
                 foreach ($objects as $key => $object) {
                     $objects[$key]['parents'] = self::findParents(Districts::getCodes($object['id']));
                 }
                 break;
             case Cities::ContentType:
                 foreach ($objects as $key => $object) {
                     $objects[$key]['parents'] = self::findParents(Cities::getCodes($object['id']));
                 }
                 break;
             case Streets::ContentType:
                 foreach ($objects as $key => $object) {
                     $objects[$key]['parents'] = self::findParents(Streets::getCodes($object['id']));
                 }
                 break;
             case Buildings::ContentType:
                 foreach ($objects as $key => $object) {
                     $objects[$key]['parents'] = self::findParents(Buildings::getCodes($object['id']));
                 }
                 break;
         }
         $this->cache->set('FindParentsPlugin', $request, $objects);
     }
     $result->result = $objects;
     return $result;
 }
 /**
  * Выполняет обработку запроса
  * 
  * @param \Phalcon\Http\Request $request
  * @param \Kladr\Core\Plugins\Base\PluginResult $prevResult
  * @return \Kladr\Core\Plugins\Base\PluginResult
  */
 public function process(Request $request, PluginResult $prevResult)
 {
     if ($prevResult->error) {
         return $prevResult;
     }
     if (!$request->getQuery('withParent')) {
         return $prevResult;
     }
     $arSpecialCases = array('7700000000000', '7800000000000', '7800000000001', '9900000000000');
     $objects = array();
     $result = $prevResult;
     foreach ($prevResult->result as $key => $obj) {
         if (in_array($obj['id'], $arSpecialCases)) {
             $obj['parents'] = array();
         }
         $objects[] = $obj;
     }
     $result = $prevResult;
     $result->result = $objects;
     return $result;
 }
Beispiel #8
0
 /**
  * Выполняет обработку запроса
  *
  * @param \Phalcon\Http\Request $request
  * @param \Kladr\Core\Plugins\Base\PluginResult $prevResult
  * @return \Kladr\Core\Plugins\Base\PluginResult
  */
 public function process(Request $request, PluginResult $prevResult)
 {
     if ($prevResult->error) {
         return $prevResult;
     }
     if (!$request->getQuery('oneString')) {
         return $prevResult;
     }
     $arReturn = $this->cache->get('OneStringPlugin', $request);
     if ($arReturn === null) {
         $objects = array();
         $query = $request->getQuery('query');
         //разбиваем строку запроса на слова
         $arWords = preg_split('/(\\ |\\.|\\;|\\,)+/', $query, -1, PREG_SPLIT_NO_EMPTY);
         //нормализуем
         foreach ($arWords as $key => $word) {
             $arWords[$key] = preg_replace('/"/u', '', $arWords[$key]);
             //Tools::Normalize($word);
             if (mb_strlen($arWords[$key], mb_detect_encoding($arWords[$key])) < 4) {
                 $arWords[$key] = preg_replace('/-/u', '', $arWords[$key]);
             }
         }
         //$arExceptionWords = array('рн', 'бр');
         $arExceptionWords = array();
         for ($i = 0; $i < count($arWords); $i++) {
             if ($i === count($arWords) - 1 || mb_strlen($arWords[$i], mb_detect_encoding($arWords[$i])) <= 3 && !in_array($arWords[$i], $arExceptionWords)) {
                 $arWords[$i] = $arWords[$i] . '*';
             }
         }
         $houseForMongo = null;
         //строка для поиска номера дома в монго
         $possibleBuildingName = end($arWords);
         $houseForMongo = Tools::Normalize($possibleBuildingName);
         //array_pop($arWords);
         //$houseForMongo = str_replace('*', '', $houseForMongo);
         $searchString = implode(" ", $arWords);
         $sphinxClient = $this->sphinxClient;
         $limit = $request->getQuery('limit') ? (int) $request->getQuery('limit') >= 50 ? 50 : (int) $request->getQuery('limit') : 50;
         $sphinxClient->SetLimits(0, $limit);
         $sphinxClient->SetMatchMode(SPH_MATCH_EXTENDED2);
         $sphinxClient->SetSortMode(SPH_SORT_ATTR_ASC, 'sort');
         $regionForSphinx = (string) $request->getQuery('regionId');
         $districtForSphinx = (string) $request->getQuery('districtId');
         $cityForSphinx = (string) $request->getQuery('cityId');
         $sphinxRes = null;
         //echo "@fullname \"$searchString\"";
         if ($cityForSphinx) {
             $sphinxRes = $sphinxClient->Query("@fullname \"{$searchString}\" @cityid {$cityForSphinx}");
         } elseif ($districtForSphinx) {
             $sphinxRes = $sphinxClient->Query("@fullname \"{$searchString}\" @districtid {$districtForSphinx}");
         } elseif ($regionForSphinx) {
             $sphinxRes = $sphinxClient->Query("@fullname \"{$searchString}\" @regionid {$regionForSphinx}");
         } else {
             $sphinxRes = $sphinxClient->Query("@fullname \"{$searchString}\"");
         }
         if ($sphinxRes === false) {
             $result = $prevResult;
             $result->terminate = true;
             $result->error = true;
             $result->errorMessage = $sphinxClient->GetLastError();
             return $result;
         }
         if (empty($sphinxRes['matches'])) {
             array_pop($arWords);
             $searchString = implode(" ", $arWords);
             $sphinxRes = $sphinxClient->Query($searchString);
             //подумать о повторном запросе при разных заданных областях
         }
         //ID в сфинксе числовые, поэтому мы теряем нули в начале
         //0100000000000 — 13
         //01000001000000300 — 17
         //0100000100000030001 — 19
         if (!empty($sphinxRes['matches'])) {
             $sphinxIds = array();
             $sphinxIds = array_keys($sphinxRes['matches']);
             foreach ($sphinxIds as &$id) {
                 $id = "{$id}";
                 $len = strlen($id);
                 if ($len == 13 || $len == 17 || $len == 19) {
                     continue;
                 }
                 if ($len > 19) {
                     continue;
                 }
                 while ($len != 13 && $len != 17 && $len != 19) {
                     $id = '0' . $id;
                     $len = strlen($id);
                 }
             }
             $objects = Complex::find(array(array('Id' => array('$in' => $sphinxIds))));
         }
         if ($houseForMongo) {
             $streets = array();
             foreach ($objects as $object) {
                 if ($object->readAttribute(KladrFields::ContentType) == 'street') {
                     $streets[] = $object;
                 }
             }
             if (count($streets) > 0) {
                 $retBuildings = array();
                 $mainBuilding = null;
                 foreach ($streets as $street) {
                     $buildingsOfStr = Complex::find(array(array(KladrFields::StreetId => $street->readAttribute(KladrFields::StreetId), KladrFields::ContentType => 'building')));
                     foreach ($buildingsOfStr as $buildingOfStr) {
                         foreach ($buildingOfStr->readAttribute(KladrFields::NormalizedBuildingName) as $buildName) {
                             if ($buildName === $houseForMongo) {
                                 $mainBuilding = $buildingOfStr;
                                 //находим точное совпадение
                                 $mainBuilding->NormalizedBuildingName = $buildName;
                             }
                             $reg = '#^' . $houseForMongo . '#';
                             $match = preg_match($reg, $buildName) ? $buildName : null;
                             //убираем длинные строки из домов
                             $match = preg_match('/\\,/', $match) ? null : $match;
                             if ($match) {
                                 $building = clone $buildingOfStr;
                                 $building->NormalizedBuildingName = $match;
                                 $retBuildings[] = $building;
                             }
                         }
                     }
                     //убираем повторное точное вхождение, ставим его на первое место
                     if ($mainBuilding) {
                         foreach ($retBuildings as $key => $retBuilding) {
                             if ($mainBuilding->NormalizedBuildingName == $retBuilding->NormalizedBuildingName) {
                                 unset($retBuildings[$key]);
                             }
                         }
                         $retBuildings = array_merge(array($mainBuilding), $retBuildings);
                     }
                     if (count($objects) > floor($limit / 2)) {
                         if (count($retBuildings) >= ceil($limit / 2)) {
                             break;
                         }
                     } elseif (count($retBuildings) >= $limit - count($objects)) {
                         break;
                     }
                 }
                 //заполянем лимит по максимуму
                 if (count($objects) > floor($limit / 2)) {
                     if ($retBuildings > ceil($limit / 2)) {
                         $retBuildings = array_slice($retBuildings, 0, ceil($limit / 2));
                     }
                 } else {
                     $retBuildings = array_slice($retBuildings, 0, $limit - count($objects));
                 }
                 //сливаем массивы домов и остальных совпадений
                 $objects = array_merge($retBuildings, $objects);
                 //финальная обрезка массива
                 if ($objects > $limit) {
                     $objects = array_slice($objects, 0, $limit, true);
                 }
             }
         }
         $withParent = $request->getQuery('withParent') != '';
         $ids = array();
         foreach ($objects as $object) {
             $key = $object->readAttribute(KladrFields::Id) . '_' . $object->readAttribute(KladrFields::NormalizedBuildingName);
             if (in_array($key, $ids)) {
                 continue;
             }
             $ids[] = $key;
             if ($object) {
                 $retObj = array('id' => $object->readAttribute(KladrFields::Id), 'name' => $object->readAttribute(KladrFields::Name), 'zip' => $object->readAttribute(KladrFields::ZipCode), 'type' => $object->readAttribute(KladrFields::Type), 'typeShort' => $object->readAttribute(KladrFields::TypeShort), 'okato' => $object->readAttribute(KladrFields::Okato), 'contentType' => $object->readAttribute(KladrFields::ContentType), 'fullName' => $object->readAttribute(KladrFields::FullName));
                 $ownerId = \Kladr\Core\Models\Cities::getCityOwnerId($retObj['id']);
                 switch ($retObj['contentType']) {
                     case 'district':
                         if ($withParent) {
                             $retObj['parents'] = FindParentsPlugin::findParents(\Kladr\Core\Models\Districts::getCodes($retObj['id']));
                         }
                         //$retObj['districtId'] = $object->readAttribute(KladrFields::DistrictId);
                         break;
                     case 'city':
                         if ($withParent) {
                             $retObj['parents'] = FindParentsPlugin::findParents(\Kladr\Core\Models\Cities::getCodes($retObj['id']), $ownerId);
                         }
                         //$retObj['districtId'] = $object->readAttribute(KladrFields::DistrictId);
                         //$retObj['cityId'] = $object->readAttribute(KladrFields::CityId);
                         break;
                     case 'street':
                         if ($withParent) {
                             $retObj['parents'] = FindParentsPlugin::findParents(\Kladr\Core\Models\Streets::getCodes($retObj['id']), $ownerId);
                         }
                         //$retObj['districtId'] = $object->readAttribute(KladrFields::DistrictId);
                         //$retObj['cityId'] = $object->readAttribute(KladrFields::CityId);
                         //$retObj['streetId'] = $object->readAttribute(KladrFields::StreetId);
                         break;
                     case 'building':
                         if ($withParent) {
                             $retObj['parents'] = FindParentsPlugin::findParents(\Kladr\Core\Models\Buildings::getCodes($retObj['id']), $ownerId);
                         }
                         //$retObj['districtId'] = $object->readAttribute(KladrFields::DistrictId);
                         //$retObj['cityId'] = $object->readAttribute(KladrFields::CityId);
                         //$retObj['streetId'] = $object->readAttribute(KladrFields::StreetId);
                         //$retObj['buildingId'] = $object->readAttribute(KladrFields::BuildingId);
                         break;
                     default:
                         break;
                 }
             }
             if ($retObj['contentType'] == 'building') {
                 $name = $object->readAttribute(KladrFields::NormalizedBuildingName);
                 $retObj['fullName'] .= ', ' . $name;
                 $retObj['name'] = $name;
                 $arReturn[] = $retObj;
             } else {
                 $arReturn[] = $retObj;
             }
         }
         $this->cache->set('OneStringPlugin', $request, $arReturn);
     }
     $result = $prevResult;
     $result->result = $arReturn;
     $result->terminate = true;
     return $result;
 }
Beispiel #9
0
 /**
  * Проверяет, надо ли включать данный плагин
  * @param \Phalcon\Http\Request $request
  * @return bool 
  */
 private function check(Request $request)
 {
     return $request->getQuery('cmd') && $request->getQuery('cmd') == self::COMMAND;
 }
 public function index(Request $request)
 {
     return $request->getQuery();
 }
Beispiel #11
0
 /**
  * Generate cache key pair (for response header / body) by Host + Uri + Allowed Queries
  * @param Request $request
  * @param array $ignores
  * @return array
  */
 public function generateCacheKeys(Request $request, array $ignores = array())
 {
     list($urlPath) = explode('?', $request->getURI());
     $urlQuery = $request->getQuery();
     //NOTE: remove Phalcon default url rewrite param here
     unset($urlQuery['_url']);
     if ($ignores) {
         foreach ($ignores as $ignoreKey) {
             unset($urlQuery[$ignoreKey]);
         }
     }
     $cacheKeyPrefix = $request->getHttpHost() . $urlPath . json_encode($urlQuery);
     $cacheKeyPrefix = md5($cacheKeyPrefix);
     $bodyKey = $cacheKeyPrefix . '_b';
     $headersKey = $cacheKeyPrefix . '_h';
     $this->cacheHeadersKey = $headersKey;
     $this->cacheBodyKey = $bodyKey;
     return array($headersKey, $bodyKey);
 }
Beispiel #12
0
 /**
  * Возвращает ключ кэша для плагина
  * 
  * @param string $plugin Имя плагина
  * @param \Phalcon\Http\Request $request
  * @return string
  */
 private function getCacheKey($plugin, Request $request)
 {
     $key = $plugin;
     $key .= 'contentType=' . $request->getQuery('contentType');
     $key .= 'oneString=' . $request->getQuery('oneString');
     $key .= 'regionId=' . $request->getQuery('regionId');
     $key .= 'districtId=' . $request->getQuery('districtId');
     $key .= 'cityId=' . $request->getQuery('cityId');
     $key .= 'streetId=' . $request->getQuery('streetId');
     $key .= 'buildingId=' . $request->getQuery('buildingId');
     $key .= 'zip=' . $request->getQuery('zip');
     $query = $request->getQuery('query');
     $query = Tools::Key($query);
     $query = Tools::Normalize($query);
     $key .= 'query=' . $query;
     $key .= 'withParent=' . $request->getQuery('withParent');
     $key .= 'limit=' . $request->getQuery('limit');
     $key .= 'offset=' . $request->getQuery('offset');
     $key .= 'typeCode=' . $request->getQuery('typeCode');
     return sha1($key);
 }
Beispiel #13
0
 /**
  * Reads the parameters passed to the script, and selects the authorization key ULogin
  *
  * @return bool|mixed
  */
 public function getToken()
 {
     $request = new Request();
     if ($request->isPost() === true) {
         $this->token = $request->getPost('token', null, false);
     } else {
         $this->token = $request->getQuery('token', null, false);
     }
     return $this->token;
 }
Beispiel #14
0
 public function getQuery($name = null, $filters = null, $defaultValue = null, $notAllowEmpty = false, $noRecursive = false)
 {
     return parent::getQuery($name, $filters, $defaultValue, $notAllowEmpty, $noRecursive);
 }
Beispiel #15
0
 /**
  * Выполняет обработку запроса
  * 
  * @param \Phalcon\Http\Request $request
  * @param \Kladr\Core\Plugins\Base\PluginResult $prevResult
  * @return \Kladr\Core\Plugins\Base\PluginResult
  */
 public function process(Request $request, PluginResult $prevResult)
 {
     if ($prevResult->error) {
         return $prevResult;
     }
     $arSearchContext = array();
     $errorMessage = '';
     //поиск одной строкой
     if ($request->getQuery('oneString')) {
         $arSearchContext['oneString'] = $request->getQuery('oneString');
     }
     // contentType
     if ($request->getQuery('contentType')) {
         $arSearchContext['contentType'] = $request->getQuery('contentType');
         if (!in_array($arSearchContext['contentType'], array(Regions::ContentType, Districts::ContentType, Cities::ContentType, Streets::ContentType, Buildings::ContentType))) {
             $errorMessage = 'contentType incorrect';
         }
     } elseif (!$request->getQuery('oneString')) {
         $errorMessage = 'contentType required parameter';
     }
     // regionId
     if ($request->getQuery('regionId')) {
         $arSearchContext['regionId'] = $request->getQuery('regionId');
         if (preg_match('/[^0-9]+/u', $arSearchContext['regionId'])) {
             $errorMessage = 'regionId incorrect';
         }
     }
     // districtId
     if ($request->getQuery('districtId')) {
         $arSearchContext['districtId'] = $request->getQuery('districtId');
         if (preg_match('/[^0-9]+/u', $arSearchContext['districtId'])) {
             $errorMessage = 'districtId incorrect';
         }
     }
     // cityId
     if ($request->getQuery('cityId')) {
         $arSearchContext['cityId'] = $request->getQuery('cityId');
         if (preg_match('/[^0-9]+/u', $arSearchContext['cityId'])) {
             $errorMessage = 'cityId incorrect';
         }
     }
     // streetId
     if ($request->getQuery('streetId')) {
         $arSearchContext['streetId'] = $request->getQuery('streetId');
         if (preg_match('/[^0-9]+/u', $arSearchContext['streetId'])) {
             $errorMessage = 'streetId incorrect';
         }
     }
     // buildingId
     if ($request->getQuery('buildingId')) {
         $arSearchContext['buildingId'] = $request->getQuery('buildingId');
         if (preg_match('/[^0-9]+/u', $arSearchContext['buildingId'])) {
             $errorMessage = 'buildingId incorrect';
         }
     }
     // query
     $arSearchContext['query'] = $request->getQuery('query');
     //contentType
     if ($request->getQuery('query') && !$request->getQuery('oneString')) {
         if (array_key_exists('contentType', $arSearchContext)) {
             switch ($arSearchContext['contentType']) {
                 case 'street':
                     if (empty($arSearchContext['cityId'])) {
                         $errorMessage = 'cityId parameter required';
                     }
                     break;
                 case 'building':
                     if (empty($arSearchContext['streetId']) && empty($arSearchContext['cityId'])) {
                         $errorMessage = 'streetId or cityId parameters required';
                     }
                     break;
             }
         }
     }
     // withParent
     if ($request->getQuery('withParent')) {
         $arSearchContext['withParent'] = $request->getQuery('withParent');
     }
     // limit
     if ($request->getQuery('limit')) {
         $arSearchContext['limit'] = (int) $request->getQuery('limit');
         if ($arSearchContext['limit'] == 0) {
             $errorMessage = 'limit is incorrect. Should be numerable, greater than 0';
         }
         if ($arSearchContext['limit'] > 400) {
             $errorMessage = 'limit > 400. Should be less than 400';
         }
     }
     //offset
     if ($request->getQuery('offset')) {
         $arSearchContext['offset'] = (int) $request->getQuery('offset');
         if ($arSearchContext['limit'] == 0) {
             $errorMessage = 'offset incorrect. Should be numerable, greater than 0';
         }
     }
     // callback
     if ($request->getQuery('callback')) {
         $arSearchContext['callback'] = $request->getQuery('callback');
     }
     $result = new PluginResult();
     if ($errorMessage) {
         $result->error = true;
         $result->errorCode = 400;
         $result->errorMessage = $errorMessage;
     }
     $result->searchContext = $arSearchContext;
     return $result;
 }
 /**
  * Выполняет обработку запроса
  * 
  * @param \Phalcon\Http\Request $request
  * @param \Kladr\Core\Plugins\Base\PluginResult $prevResult
  * @return \Kladr\Core\Plugins\Base\PluginResult
  */
 public function process(Request $request, PluginResult $prevResult)
 {
     if ($prevResult->error) {
         return $prevResult;
     }
     // Проверяем, что ищем город
     // с принадлежностью региону
     if ($request->getQuery('contentType') != 'city') {
         return $prevResult;
     }
     if (!$request->getQuery('regionId')) {
         return $prevResult;
     }
     // добавляем к результату поиск в другом регионе
     $arRegionCodeSpecialCases = array(50 => 77, 47 => 78);
     $objects = $this->cache->get('SpecialCasesPlugin', $request);
     if ($objects === null) {
         $objects = array();
         $arCodes = array();
         // regionId
         $regionId = $request->getQuery('regionId');
         if ($regionId) {
             $arCodes = Regions::getCodes($regionId);
         }
         // districtId
         $districtId = $request->getQuery('districtId');
         if ($districtId) {
             $arCodes = Districts::getCodes($districtId);
         }
         // cityId
         $cityId = $request->getQuery('cityId');
         if ($cityId) {
             $arCodes = Cities::getCodes($cityId);
         }
         // streetId
         $streetId = $request->getQuery('streetId');
         if ($streetId) {
             $arCodes = Streets::getCodes($streetId);
         }
         // buildingId
         $buildingId = $request->getQuery('buildingId');
         if ($buildingId) {
             $arCodes = Buildings::getCodes($buildingId);
         }
         if (!isset($arCodes[KladrFields::CodeRegion]) && !isset($arRegionCodeSpecialCases[$arCodes[KladrFields::CodeRegion]])) {
             return $prevResult;
         }
         $arCodes[KladrFields::CodeRegion] = $arRegionCodeSpecialCases[$arCodes[KladrFields::CodeRegion]];
         // query
         $query = $request->getQuery('query');
         $query = Tools::Key($query);
         $query = Tools::Normalize($query);
         // limit
         $limit = $request->getQuery('limit');
         $limit = intval($limit);
         $limit = $limit ? $limit : 5000;
         if ($limit > 400) {
             $limit = 400;
         }
         switch ($request->getQuery('contentType')) {
             case Regions::ContentType:
                 $objects = Regions::findByQuery($query, $arCodes, $limit);
                 break;
             case Districts::ContentType:
                 $objects = Districts::findByQuery($query, $arCodes, $limit);
                 break;
             case Cities::ContentType:
                 $objects = Cities::findByQuery($query, $arCodes, $limit);
                 break;
             case Streets::ContentType:
                 $objects = Streets::findByQuery($query, $arCodes, $limit);
                 break;
             case Buildings::ContentType:
                 $objects = Buildings::findByQuery($query, $arCodes, $limit);
                 break;
         }
         $this->cache->set('SpecialCasesPlugin', $request, $objects);
     }
     $result = $prevResult;
     $result->result = array_merge($prevResult->result, $objects);
     return $result;
 }
Beispiel #17
0
 /**
  * I fetch a value from pathparams and request
  * @todo wrap pathparams and request in a composite
  * @param $pathParams
  * @param Request $Request
  * @return bool
  * @throws \Exception
  */
 public function fetch($pathParams, Request $Request)
 {
     $this->value = null;
     $this->_hasFetched = false;
     $filters = [];
     $name = $this->_data->name;
     switch ($this->_data->in) {
         case 'path':
             if (array_key_exists($name, $pathParams)) {
                 $this->_hasFetched = true;
                 $this->setValue($pathParams[$name]);
             }
             break;
         case 'query':
             $this->_hasFetched = $Request->hasQuery($name);
             $this->setValue($Request->getQuery($name, $filters, null));
             break;
         case 'header':
             // this syntax won't work... yet???
             //$value = $Request->getHeader($name, $filters, null);
             $nameWithHttpPrefix = strtoupper(str_replace('-', '_', $name));
             if ($Request->hasServer($name) || $Request->hasServer($nameWithHttpPrefix)) {
                 $this->setValue($Request->getHeader($name));
                 $this->_hasFetched = true;
             }
             break;
         case 'formData':
             switch (strtolower($Request->getMethod())) {
                 case 'post':
                     if ($Request->hasPost($name)) {
                         $this->_hasFetched = true;
                         $this->setValue($Request->getPost($name, $filters, null));
                     }
                     break;
                 case 'put':
                     if ($Request->hasPut($name)) {
                         $this->_hasFetched = true;
                         $this->setValue($Request->getPut($name, $filters, null));
                     }
                     break;
                     // parameters on delete request not supported yet
                 // parameters on delete request not supported yet
                 case 'delete':
                 default:
                     throw new \Exception('TBI: ' . $Request->getMethod());
             }
             break;
         case 'body':
             throw new \Exception('TBI');
             break;
         default:
             throw new \Exception('invalid or not implemented "in" value: ' . $this->_data->in);
     }
     return $this->_hasFetched;
 }