diff --git a/Application/Models/model.example.php b/Application/Models/model.example.php index faa50eb..a9ac8ad 100644 --- a/Application/Models/model.example.php +++ b/Application/Models/model.example.php @@ -1,10 +1,11 @@ setType('techfuze/databasemodel', 'DatabaseModel'); $this->fields = array('id', 'key', 'value'); $this->table = 'example'; } diff --git a/Core/Mods/model/class.model.php b/Core/Mods/databasemodel/class.model.php similarity index 99% rename from Core/Mods/model/class.model.php rename to Core/Mods/databasemodel/class.model.php index aa727e0..06dd053 100644 --- a/Core/Mods/model/class.model.php +++ b/Core/Mods/databasemodel/class.model.php @@ -1,7 +1,5 @@ 'DatabaseModel', + 'module_file' => 'class.model.php', + 'module_name' => 'databasemodel', + + 'abstract' => true, + + 'name' => 'DatabaseModel', + 'description' => 'Abstract type for easy database queries', + 'author' => 'TechFuze', + 'version' => '1.0.0', + 'website' => 'http://fuzeworks.techfuze.net/', + + 'date_created' => '26-02-2015', + 'date_updated' => '26-02-2015', +); diff --git a/Core/System/Models/fz-model-interpret.php b/Core/System/Models/model.interpret.php similarity index 88% rename from Core/System/Models/fz-model-interpret.php rename to Core/System/Models/model.interpret.php index 917d821..3dc6cbc 100644 --- a/Core/System/Models/fz-model-interpret.php +++ b/Core/System/Models/model.interpret.php @@ -1,10 +1,11 @@ setType('techfuze/databasemodel', 'DatabaseModel'); $this->fields = array(); $this->table = ''; } diff --git a/Core/System/class.abstract.model.php b/Core/System/class.abstract.model.php new file mode 100644 index 0000000..6630c79 --- /dev/null +++ b/Core/System/class.abstract.model.php @@ -0,0 +1,68 @@ +core->loadMod($module_name); + $this->parentClass = new $class_name($this->core); + } + + /** + * Retrieves a value from the model class + * @access public + * @param Any key + * @return Any value from the model class + */ + public function __get($name) { + return $this->parentClass->$name; + } + + /** + * Sets a value in the model class + * @access public + * @param Any key + * @param Any value + */ + public function __set($name, $value) { + $this->parentClass->$name = $value; + } + + /** + * Calls a function in the model class + * @access public + * @param String function_name + * @param Array values + * @return Function return + */ + public function __call($name, $params) { + return call_user_func_array(array($this->parentClass, $name), $params); + } +} \ No newline at end of file diff --git a/Core/System/class.core.php b/Core/System/class.core.php index 171452c..3eecd90 100644 --- a/Core/System/class.core.php +++ b/Core/System/class.core.php @@ -40,6 +40,7 @@ class Core { require_once(FUZESYSPATH . "/class.abstract.bus.php"); require_once(FUZESYSPATH . "/class.abstract.event.php"); require_once(FUZESYSPATH . "/class.abstract.module.php"); + require_once(FUZESYSPATH . "/class.abstract.model.php"); require_once(FUZESYSPATH . "/class.abstract.eventPriority.php"); // Load the core classes @@ -151,7 +152,15 @@ class Core { return false; } - // Create class object + // If it is an abstract module, return an StdClass for the memory address + if (isset($cfg->abstract)) { + if ($cfg->abstract) { + $c = new stdClass(); + return array($c, $cfg->module_name); + } + } + + // Otherwise create the class object $CLASS = new $class_name($this); if (method_exists($CLASS, 'setModulePath')) { $CLASS->setModulePath($cfg->directory); diff --git a/Core/System/class.models.php b/Core/System/class.models.php index acadf22..0abf1e0 100644 --- a/Core/System/class.models.php +++ b/Core/System/class.models.php @@ -7,42 +7,36 @@ class Models extends Bus{ private $models_array = array(); private $model_types = array(); + private $models_loaded = false; public function __construct(&$core){ parent::__construct($core); } public function loadModel($name, $directory = null){ - $this->core->loadMod('model'); if($directory === null){ $directory = FUZEPATH . "/Application/Models"; } $file = $directory.'/model.'.$name.'.php'; if (isset($this->model_types[$name])) { - $this->logger->logInfo('MODEL LOAD: '.get_class($this->model_types[$name]), get_class($this->model_types[$name]), __FILE__, __LINE__); + $this->logger->logInfo('Loading Model: '.get_class($this->model_types[$name]), get_class($this->model_types[$name])); $this->models_array[$name] = $this->model_types[$name]; } elseif (file_exists($file)){ require_once($file); $model = ucfirst($name); - $this->logger->logInfo('MODEL LOAD: '.$model, $model, __FILE__, __LINE__); + $this->logger->logInfo('Loading Model: '.$model, $model); $this->models_array[$name] = new $model($this->core); } else{ - $this->logger->logWarning('The requested model: \''.$name.'\' could not be found. Loading empty model', 'FuzeWorks->Model'); - require_once(FUZEPATH . "/Core/System/Models/fz-model-interpret.php"); - $this->logger->logInfo('MODEL LOAD: interprated model', 'FuzeWorks->Model', __FILE__, __LINE__); + $this->logger->logWarning('The requested model: \''.$name.'\' could not be found. Loading empty model', 'Models'); + require_once(FUZEPATH . "/Core/System/Models/model.interpret.php"); + $this->logger->logInfo('Loading Model: interprated databasemodel', 'Models'); $model = new Interpret($this->core); $model->table($name); $this->models_array[$name] = $model; } } - public function register($NAME, $MODEL_OBJECT) { - if (!isset($this->model_types[strtolower($NAME)])) { - $this->model_types[strtolower($NAME)] = $MODEL_OBJECT; - } - } - public function __get($name){ if (isset($this->models_array[strtolower($name)])) { return $this->models_array[strtolower($name)]; @@ -51,10 +45,6 @@ class Models extends Bus{ return $this->models_array[strtolower($name)]; } } - - public function getEmptyModel() { - return new \FuzeWorks\V100\DatabaseModel($this->core); - } } ?> \ No newline at end of file