/** * Loads information from a config file * * $config_name maps to TO_ROOT/configs/models/{class_name}_{config_name}.ini by default * * @param string $config_name * @param boolean $use_class_name selects if the class_name prefix should be added. */ public function loadConfig($config_name = 'default', $use_class_name = true, $vars = array()) { $DbConnection = DbConnection::getInstance(); if ($use_class_name) { $prefix = strtolower(get_class($this->_Row)); $file_name = TO_ROOT . "/configs/models/{$prefix}_{$config_name}.yaml"; } else { $file_name = TO_ROOT . "/configs/models/{$config_name}.yaml"; } if (!file_exists($file_name)) { Logger::log("Couldn't find config file", $file_name, LOGGER_ERROR); return false; } $config = @ConfigParser::parsea_mesta($file_name, $vars); //echo "<pre>Processed:\n".print_r($config,1)."</pre>"; if (isset($config['__general']['form_id'])) { $this->setFormId($config['__general']['form_id']); } if (isset($config['__general']['action'])) { $this->setAction($config['__general']['action']); } if (isset($config['__general']['type'])) { $this->setType($config['__general']['type']); } if (isset($config['__general']['method'])) { $this->setMethod($config['__general']['method']); } unset($config['__general']); if (isset($config['__pattern']['add'])) { if ($this->_Row->getId() == 0) { foreach ($config['__pattern']['add'] as $field => $value) { $this->setPatternVariable($field, $value); } } } if (isset($config['__pattern']['edit'])) { if ($this->_Row->getId() != 0) { foreach ($config['__pattern']['edit'] as $field => $value) { $this->setPatternVariable($field, $value); } } } unset($config['__pattern']); $commands = $config['__commands']; unset($config['__commands']); if (isset($config['__generalAction'])) { $new = $this->_Row->getId() == 0 ? true : false; foreach ($config['__generalAction'] as $action => $properties) { $appears_in = isset($properties['appears_in']) ? $properties['appears_in'] : 'both'; if ($appears_in == 'both' || $new && $appears_in == 'add' || !$new && $appears_in == 'edit') { $this->AddGeneralAction($action, $properties['action'], $properties['title'], $properties['icon'], $properties['ajax']); } } } unset($config['__generalAction']); foreach ($config as $field => $properties) { if (strpos($field, ':') !== false) { list($field, $action) = explode(':', $field); if ($action == 'parameters') { foreach ($properties as $parameter => $value) { $this->setFieldParameter($field, $parameter, $value); } } else { if ($action == 'input_parameters') { foreach ($properties as $parameter => $value) { $this->setFieldInputParameter($field, $parameter, $value); } } else { if ($action == 'action') { $this->addAction($field, $properties['action'], $properties['title'], $properties['icon'], $properties['ajax']); } else { if ($action == 'splitter') { $id = empty($properties['id']) ? $field : $properties['id']; $position = empty($properties['position']) ? 'before' : $properties['position']; $this->insertSplitter($field, $properties['content'], $position, $id); } else { if ($action == 'linked') { $this->setAsLinked($field, $properties['table_name'], $DbConnection, $properties['table_id'], $properties['name_field'], $properties['condition']); } else { if ($action == 'dependent') { $this->setFieldDependents($field, $properties['condition'], $properties['value'], $properties['dependants']); } else { if ($action == 'add') { $data = array('label' => ucwords(str_replace('_', ' ', $field)), 'type' => 'text', 'input_parameters' => array('maxlength' => 45)); $this->insertField($field, $data, $properties['target'], $properties['position']); } else { if ($action == 'move') { $this->moveField($field, $properties['position'], $properties['target']); } } } } } } } } } else { if (is_array($properties)) { foreach ($properties as $property => $value) { $this->setFieldProperty($field, $property, $value); } } } } if (isset($commands['delete'])) { foreach ($commands['delete'] as $delete) { $this->deleteField($delete); } } if (isset($commands['hide'])) { foreach ($commands['hide'] as $hide) { $this->hideField($hide); } } if (isset($commands['disable'])) { foreach ($commands['disable'] as $disable) { $this->disableField($disable); } } return true; }
/** * Loads information from a config file * * $config_name maps to TO_ROOT/configs/models/{class_name}_{config_name}.ini by default * * @param string $config_name * @param boolean $use_class_name selects if the class_name prefix should be added. */ public function loadConfig($config_name = 'default', $vars = array()) { $DbConnection = DbConnection::getInstance(); $file_name = TO_ROOT . "/configs/models/{$config_name}_list.yaml"; if (!file_exists($file_name)) { Logger::log("Couldn't find config file", $file_name, LOGGER_ERROR); return false; } $config = ConfigParser::parsea_mesta($file_name, $vars); if (isset($config['__general']['page_name'])) { $this->setPageName($config['__general']['page_name']); } unset($config['__general']); if (isset($config['__row_id'])) { $this->setRowId($config['__row_id']['prefix'], $config['__row_id']['field']); } unset($config['__row_id']); if (isset($config['__links'])) { foreach ($config['__links'] as $field => $properties) { $this->addLink($field, $properties['value'], $properties['action'], $properties['title']); } } unset($config['__links']); if (isset($config['__filters'])) { foreach ($config['__filters'] as $field => $properties) { if ($properties['delete'] != true) { if ($properties['type'] == 'hidden') { $this->addHiddenFilter($field, $properties['value'], $properties['condition']); } else { if (isset($properties['prefix'])) { $this->addFilter($field, $properties['label'], $properties['type'], array('prefix' => $properties['prefix'])); } else { $this->addFilter($field, $properties['label'], $properties['type']); } if ($properties['add_all']) { $this->addFilterOption($field, 'all', 'All', false, '1'); } if (isset($properties['default'])) { $this->setFilterDefault($field, $properties['default']); } if ($properties['type'] == 'active' && $properties['type'] == 'yes_no') { } else { if ($properties['type'] == 'custom') { if (isset($properties['options_query'])) { $DbConnection == DbConnection::getInstance(); $options = $DbConnection->getArrayPair($properties['options_query']); $this->addFilterOptions($field, $options, $properties['condition']); } else { if (isset($properties['options'])) { $this->addFilterOptions($field, $properties['options'], $properties['condition']); } } } } } } } } unset($config['__filters']); if (isset($config['__commands']['order_by'])) { $this->orderBy($config['__commands']['order_by']); } if (isset($config['__query']['sql'])) { $paginate = isset($config['__query']['paginate']) ? $config['__query']['paginate'] : false; $this->setQuery($config['__query']['sql'], DbConnection::getInstance(), $paginate); } unset($config['__query']); if (isset($config['__pattern'])) { foreach ($config['__pattern'] as $field => $value) { $this->setPatternVariable($field, $value); } } unset($config['__pattern']); if (isset($config['__commands']['hide'])) { foreach ($config['__commands']['hide'] as $hide) { $this->hideField($hide); } } unset($config['__commands']); if (isset($config['__generalAction'])) { foreach ($config['__generalAction'] as $properties) { $this->AddGeneralAction($properties['action'], $properties['title'], $properties['icon'], $properties['ajax'], $properties['show_in'], $properties['keybinding']); } } unset($config['__generalAction']); if (isset($config['__action'])) { foreach ($config['__action'] as $properties) { $this->addAction($properties['value'], $properties['action'], $properties['title'], $properties['icon'], $properties['ajax']); } } unset($config['__action']); foreach ($config as $field => $properties) { if (is_array($properties)) { foreach ($properties as $property => $value) { if ($property == 'format') { $this->setFormat($field, $value); } else { if ($property == 'name') { $this->setName($field, $value); } else { if ($property == 'class') { $this->setClass($field, $value); } } } } } } return true; }