Esempio n. 1
0
 /**
  * Проверяет попадает ли область указанная в параметре в область самого объекта
  *
  * @param Place $place область для проверки
  *
  * @return boolean
  * true - попадает
  * false - не попадает
  * если типы объектов одинаковые то сравнение происходит по id
  * если область в параметре имеет более широкий диапазон чем в объекте то возвращается false (например ищем регион а в объекте город)
  */
 public function isContains($place)
 {
     $thisPlaceArea = $this->getPlaceArea();
     $placePlaceArea = $place->getPlaceArea();
     switch ($thisPlaceArea->getType()) {
         case PlaceArea::TYPE_COUNTRY:
             switch ($placePlaceArea->getType()) {
                 case PlaceArea::TYPE_COUNTRY:
                     return $thisPlaceArea->getId() == $placePlaceArea->getId();
                 case PlaceArea::TYPE_REGION:
                     return $this->getCountry()->inRegions($placePlaceArea->getId());
                 case PlaceArea::TYPE_TOWN:
                     return $this->getCountry()->inRegions($place->getRegion()->getId());
                 default:
                     return false;
             }
             break;
         case PlaceArea::TYPE_REGION:
             switch ($placePlaceArea->getType()) {
                 case PlaceArea::TYPE_COUNTRY:
                     return false;
                 case PlaceArea::TYPE_REGION:
                     return $thisPlaceArea->getId() == $placePlaceArea->getId();
                 case PlaceArea::TYPE_TOWN:
                     return $this->getRegion()->inTowns($placePlaceArea->getId());
                 default:
                     return false;
             }
             break;
         case PlaceArea::TYPE_TOWN:
             switch ($placePlaceArea->getType()) {
                 case PlaceArea::TYPE_COUNTRY:
                     return false;
                 case PlaceArea::TYPE_REGION:
                     return false;
                 case PlaceArea::TYPE_TOWN:
                     return $thisPlaceArea->getId() == $placePlaceArea->getId();
                 default:
                     return false;
             }
             break;
     }
 }