/** * Property select controller, starting from a given root class * * @param $parameters Parameters * - first : the root reference class name (ie a business object) * - second : if set, the selected property path into the root reference class name * @param $form array not used * @param $files array not used * @return mixed */ public function run(Parameters $parameters, $form, $files) { $class_name = Set::elementClassNameOf($parameters->shiftUnnamed()); $property_path = $parameters->shiftUnnamed(); if (empty($property_path)) { $top_property = new Property(); $top_property->class = $class_name; $properties = $this->getProperties(new Reflection_Class($class_name)); foreach ($properties as $property) { $property->path = $property->name; } } else { $top_property = new Reflection_Property($class_name, $property_path); $properties = $this->getProperties(new Reflection_Class($top_property->getType()->getElementTypeAsString()), $top_property->final_class); foreach ($properties as $property) { $property->path = $property_path . DOT . $property->name; } if (!$parameters->getRawParameter(Parameter::CONTAINER)) { $parameters->set(Parameter::CONTAINER, 'subtree'); } } $objects = $parameters->getObjects(); array_unshift($objects, $top_property); $objects['properties'] = $properties; $objects['class_name'] = $class_name; $objects['display_full_path'] = false; /** * Objects for the view : * first Property the property object (with selected property name, or not) * 'properties' Reflection_Property[] all properties from the reference class */ return View::run($objects, $form, $files, Property::class, 'select'); }
/** * @param $value string * @param $class Reflection_Class */ public function __construct($value, Reflection_Class $class) { parent::__construct($value); if (!$this->value) { $class_name = $class->getName(); $this->value = Set::defaultSetClassNameOf($class_name); } }
/** * @param $parameters Parameters * @param $form array * @param $files array * @param $class_name string * @return mixed */ public function run(Parameters $parameters, $form, $files, $class_name) { $element_class_name = Set::elementClassNameOf($class_name); $parameters = $parameters->getObjects(); $list_controller = new Data_List_Controller(); $data_list_settings = Data_List_Settings::current($element_class_name); $list_controller->applyParametersToListSettings($data_list_settings, $parameters, $form); return View::run($parameters, $form, $files, $class_name, 'dataListSetting'); }
/** * @param $parameters mixed[] * @return mixed */ private function parseAndRun($parameters) { $first_parameter = array_shift($parameters); if (is_object($first_parameter)) { $context_class_name = get_class($first_parameter); } else { $context_class_name = Set::elementClassNameOf($first_parameter); } $context_feature = array_shift($parameters); $third_parameter = reset($parameters); if (is_object($third_parameter)) { return $this->deleteObject($parameters); } else { $class_name = array_shift($parameters); return $this->removeElement($class_name, $context_class_name, $context_feature, $parameters); } }
/** * @param $row List_Row a row element * @param $element null The element should always be null, we only need the row */ public function add($row, $element = null) { parent::add($row, null); }
/** * Gets the main object from the parameters * * If no main object is set (eq first parameter is not an object), create it using class name. * Beware : the created object will then automatically be added to the beginning * of the parameters list. * * @param $class_name string|object * @param $search_by_properties string[] * @return object */ public function getMainObject($class_name = null, $search_by_properties = []) { if (is_object($class_name)) { $default_object = $class_name; $class_name = get_class($class_name); } reset($this->parameters); $object = $this->getObject(key($this->parameters)); if (!$object || !is_object($object)) { if ($search_by_properties) { $object = $this->searchMainObject($class_name, $search_by_properties); } if ((!$object || !is_object($object)) && !$class_name) { $class_name = $this->uri->controller_name; } } if (!$object || !is_object($object) || isset($class_name) && !is_a($object, $class_name)) { $object = isset($default_object) ? $default_object : (isset($class_name) && @class_exists($class_name) ? Builder::create($class_name) : Set::instantiate($class_name)); $this->parameters = array_merge([get_class($object) => $object], $this->parameters); } return $object; }
/** * @return string */ public function getSetClassName() { $expr = '%' . '\\n\\s+\\*\\s+' . '@set' . '\\s+([\\\\\\w]+)' . '%'; preg_match($expr, $this->getDocComment(), $match); return $match ? Namespaces::defaultFullClassName($match[1], $this->name) : Set::defaultSetClassNameOf($this->name); }
/** * @param string $code * @return Setting */ public function get($code) { return parent::get($code); }