Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }