Esempio n. 1
0
File: ORM.php Progetto: techart/tao
 public function schema_fields($data = false)
 {
     if ($data) {
         if (is_callable($data)) {
             $this->fields_data = call_user_func($data);
         } elseif (is_array($data)) {
             $this->fields_data = array_replace_recursive($this->fields_data, $data);
         } elseif (is_string($data)) {
             $module = $data;
             $method = 'fields';
             if ($m = Core_Regexps::match_with_results('{^(.+)::(.+)$}', $data)) {
                 $module = trim($m[1]);
                 $method = trim($m[2]);
             }
             $this->schema_module = $module;
             if (strpos($module, '.') > 0) {
                 Core::load($module);
                 $module = str_replace('.', '_', $module);
             }
             $this->fields_data = call_user_func(array($module, $method));
         }
         foreach ($this->fields_data as $field => $data) {
             if (isset($data['type']) && $data['type'] == 'serial' || isset($data['sqltype']) && $data['sqltype'] == 'serial') {
                 $this->key($field);
                 break;
             }
         }
         $this->columns(CMS_Fields::fields_to_columns($this->fields_data));
         return $this;
     } else {
         if ($this->fields_data === false) {
             $this->fields_data = array();
         }
         return $this->fields_data;
     }
 }