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}; } } } }
/** * Проверяет попадает ли область указанная в параметре в область самого объекта * * @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; } }