Esempio n. 1
0
 private function drawDetailView_processField($field)
 {
     if (ArrayHelper::keyExists('widget', $field)) {
         $className = ArrayHelper::getValue($field, 'widget.0', '');
         if ($className != '') {
             if (method_exists($className, 'onDraw')) {
                 return $className::onDraw($field, $this);
             }
         }
     }
     if (isset($field['drawDetailView'])) {
         $method = $field['drawDetailView'];
         return call_user_func($method, $this, $field);
     }
     if (ArrayHelper::keyExists('type', $field)) {
         $options = [];
         if (is_array($field['type'])) {
             $name = $field['type'][0];
             if (isset($field['type'][1])) {
                 $options = $field['type'][1];
             }
         } else {
             $name = $field['type'];
         }
         $fieldName = $field[self::POS_DB_NAME];
         switch ($name) {
             case 'place':
                 return \cs\models\Place::initFromModel($this, $fieldName);
             case 'radioList':
                 $value = $this->{$fieldName};
                 return $options[$value];
             case 'file':
                 return \cs\Widget\FileUpload2\FileUpload::drawDetailView($this, $field);
             case 'checkbox':
                 $value = $this->{$fieldName};
                 if (is_null($value)) {
                     return '';
                 }
                 if ($value == 0) {
                     return 'Нет';
                 }
                 if ($value == 1) {
                     return 'Да';
                 }
         }
     }
     if (isset($field[self::POS_RULE])) {
         if ($field[self::POS_RULE] != '') {
             $dbName = $field[self::POS_DB_NAME];
             switch ($field[self::POS_RULE]) {
                 case 'string':
                     return $this->{$dbName};
                 case 'url':
                     return Html::a($this->{$dbName}, $this->{$dbName});
                 case 'integer':
                     return $this->{$dbName};
                 case 'date':
                     return $this->{$dbName};
             }
         }
     }
 }
Esempio n. 2
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;
     }
 }