예제 #1
0
 /**
  * Метод для поиска родителей объекта
  *
  * @param array $arCodes Массив кодов объекта
  * @param string $cityOwnerId ID города-родителя объекта / временный хак
  * @return array Массив родителей объекта
  */
 public static function findParents($arCodes, $cityOwnerId = null)
 {
     if (!$arCodes) {
         return array();
     }
     $arCodes = array_slice($arCodes, 0, count($arCodes) - 1);
     $arReturn = array();
     $object = array();
     foreach ($arCodes as $field => $code) {
         $contentType = '';
         switch ($field) {
             case KladrFields::CodeRegion:
                 $object = Regions::findFirst(array(array(KladrFields::CodeRegion => $arCodes[KladrFields::CodeRegion], KladrFields::Bad => false)));
                 $contentType = Regions::ContentType;
                 break;
             case KladrFields::CodeDistrict:
                 $object = Districts::findFirst(array(array(KladrFields::CodeRegion => $arCodes[KladrFields::CodeRegion], KladrFields::CodeDistrict => $arCodes[KladrFields::CodeDistrict], KladrFields::Bad => false)));
                 $contentType = Districts::ContentType;
                 break;
             case KladrFields::CodeLocality:
                 $object = Cities::findFirst(array(array(KladrFields::CodeRegion => $arCodes[KladrFields::CodeRegion], KladrFields::CodeDistrict => $arCodes[KladrFields::CodeDistrict], KladrFields::CodeLocality => $arCodes[KladrFields::CodeLocality], KladrFields::Bad => false)));
                 $contentType = Cities::ContentType;
                 break;
             case KladrFields::CodeStreet:
                 $object = Streets::findFirst(array(array(KladrFields::CodeRegion => $arCodes[KladrFields::CodeRegion], KladrFields::CodeDistrict => $arCodes[KladrFields::CodeDistrict], KladrFields::CodeLocality => $arCodes[KladrFields::CodeLocality], KladrFields::CodeStreet => $arCodes[KladrFields::CodeStreet], KladrFields::Bad => false)));
                 $contentType = Streets::ContentType;
                 break;
         }
         if ($object) {
             $arReturn[] = 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' => $contentType);
         }
     }
     if ($cityOwnerId) {
         $owner = Cities::findByQuery(null, $cityOwnerId);
         if ($owner && is_array($owner) && count($owner) > 0) {
             $owner = $owner[0];
             $owner['contentType'] = 'cityOwner';
             $arReturn[] = $owner;
         }
     }
     return $arReturn;
 }