blob: e0335bf4514d763220c47e361c4a194571ba4568 [file] [log] [blame]
adminb0dd10f2006-08-25 17:25:49 +00001<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
2/**
3 * Code Igniter
4 *
5 * An open source application development framework for PHP 4.3.2 or newer
6 *
7 * @package CodeIgniter
8 * @author Rick Ellis
9 * @copyright Copyright (c) 2006, pMachine, Inc.
admine334c472006-10-21 19:44:22 +000010 * @license http://www.codeignitor.com/user_guide/license.html
adminb0dd10f2006-08-25 17:25:49 +000011 * @link http://www.codeigniter.com
12 * @since Version 1.0
13 * @filesource
14 */
admine334c472006-10-21 19:44:22 +000015
adminb0dd10f2006-08-25 17:25:49 +000016// ------------------------------------------------------------------------
17
18/**
19 * Code Igniter Model Class
20 *
21 * @package CodeIgniter
22 * @subpackage Libraries
23 * @category Libraries
24 * @author Rick Ellis
25 * @link http://www.codeigniter.com/user_guide/libraries/config.html
26 */
27class Model {
28
adminc75b09f2006-10-24 00:14:28 +000029 var $_parent_name = '';
30
adminb0dd10f2006-08-25 17:25:49 +000031 /**
32 * Constructor
33 *
34 * @access public
35 */
36 function Model()
37 {
admin1716cb82006-10-25 05:12:34 +000038 // If the magic __get() or __set() methods are used in a Model references can't be used.
39 $this->_assign_libraries( (method_exists($this, '__get') OR method_exists('__set')) ? FALSE : TRUE );
adminc75b09f2006-10-24 00:14:28 +000040
41 // We don't want to assign the model object to itself when using the
42 // assign_libraries function below so we'll grab the name of the model parent
43 $methods = get_class_methods($this);
admin1716cb82006-10-25 05:12:34 +000044
adminc75b09f2006-10-24 00:14:28 +000045 if (isset($methods[0]))
46 {
47 $this->_parent_name = $methods[0];
48 }
49
adminb0dd10f2006-08-25 17:25:49 +000050 log_message('debug', "Model Class Initialized");
51 }
adminb0dd10f2006-08-25 17:25:49 +000052
53 /**
54 * Assign Libraries
55 *
56 * Creates local references to all currently instantiated objects
admine334c472006-10-21 19:44:22 +000057 * so that any syntax that can be legally used in a controller
adminc75b09f2006-10-24 00:14:28 +000058 * can be used within models.
adminb0dd10f2006-08-25 17:25:49 +000059 *
60 * @access private
61 */
adminc75b09f2006-10-24 00:14:28 +000062 function _assign_libraries($use_reference = TRUE)
adminb0dd10f2006-08-25 17:25:49 +000063 {
adminc75b09f2006-10-24 00:14:28 +000064 $CI =& get_instance();
admin0aef2222006-10-12 18:00:22 +000065 foreach (array_keys(get_object_vars($CI)) as $key)
66 {
adminc75b09f2006-10-24 00:14:28 +000067 if ( ! isset($this->$key) AND $key != $this->_parent_name)
68 {
69 // In some cases using references can cause
70 // problems so we'll conditionally use them
71 if ($use_reference == TRUE)
72 {
73 // Needed to prevent reference errors with some configurations
74 $this->$key = '';
75 $this->$key =& $CI->$key;
76 }
77 else
78 {
79 $this->$key = $CI->$key;
80 }
81 }
admin0aef2222006-10-12 18:00:22 +000082 }
adminb0dd10f2006-08-25 17:25:49 +000083 }
adminb0dd10f2006-08-25 17:25:49 +000084
85}
86// END Model Class
87?>