/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk

« back to all changes in this revision

Viewing changes to codeigniter/system/libraries/Driver.php

  • Committer: Gustav Hatvigsson
  • Date: 2013-05-30 12:02:31 UTC
  • mfrom: (85.1.28 lenasys)
  • Revision ID: gustav.hartvigsson@gmail.com-20130530120231-ttqgqjqw2w8enn7g
Merged Ohlsons changes:
added function to get ssn and name for the registrationspages in the user model.
added the registrationpage for students.
edited the registration page for instructors
edited the css for both the registrationpages
minor fix to registration css

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
2
/**
 
3
 * CodeIgniter
 
4
 *
 
5
 * An open source application development framework for PHP 5.1.6 or newer
 
6
 *
 
7
 * @package             CodeIgniter
 
8
 * @author              EllisLab Dev Team
 
9
 * @copyright   Copyright (c) 2006 - 2012, EllisLab, Inc.
 
10
 * @license             http://codeigniter.com/user_guide/license.html
 
11
 * @link                http://codeigniter.com
 
12
 * @since               Version 1.0
 
13
 * @filesource
 
14
 */
 
15
 
 
16
// ------------------------------------------------------------------------
 
17
 
 
18
/**
 
19
 * CodeIgniter Driver Library Class
 
20
 *
 
21
 * This class enables you to create "Driver" libraries that add runtime ability
 
22
 * to extend the capabilities of a class via additional driver objects
 
23
 *
 
24
 * @package             CodeIgniter
 
25
 * @subpackage  Libraries
 
26
 * @category    Libraries
 
27
 * @author              EllisLab Dev Team
 
28
 * @link
 
29
 */
 
30
class CI_Driver_Library {
 
31
 
 
32
        protected $valid_drivers        = array();
 
33
        protected $lib_name;
 
34
 
 
35
        // The first time a child is used it won't exist, so we instantiate it
 
36
        // subsequents calls will go straight to the proper child.
 
37
        function __get($child)
 
38
        {
 
39
                if ( ! isset($this->lib_name))
 
40
                {
 
41
                        $this->lib_name = get_class($this);
 
42
                }
 
43
 
 
44
                // The class will be prefixed with the parent lib
 
45
                $child_class = $this->lib_name.'_'.$child;
 
46
        
 
47
                // Remove the CI_ prefix and lowercase
 
48
                $lib_name = ucfirst(strtolower(str_replace('CI_', '', $this->lib_name)));
 
49
                $driver_name = strtolower(str_replace('CI_', '', $child_class));
 
50
                
 
51
                if (in_array($driver_name, array_map('strtolower', $this->valid_drivers)))
 
52
                {
 
53
                        // check and see if the driver is in a separate file
 
54
                        if ( ! class_exists($child_class))
 
55
                        {
 
56
                                // check application path first
 
57
                                foreach (get_instance()->load->get_package_paths(TRUE) as $path)
 
58
                                {
 
59
                                        // loves me some nesting!
 
60
                                        foreach (array(ucfirst($driver_name), $driver_name) as $class)
 
61
                                        {
 
62
                                                $filepath = $path.'libraries/'.$lib_name.'/drivers/'.$class.'.php';
 
63
 
 
64
                                                if (file_exists($filepath))
 
65
                                                {
 
66
                                                        include_once $filepath;
 
67
                                                        break;
 
68
                                                }
 
69
                                        }
 
70
                                }
 
71
 
 
72
                                // it's a valid driver, but the file simply can't be found
 
73
                                if ( ! class_exists($child_class))
 
74
                                {
 
75
                                        log_message('error', "Unable to load the requested driver: ".$child_class);
 
76
                                        show_error("Unable to load the requested driver: ".$child_class);
 
77
                                }
 
78
                        }
 
79
 
 
80
                        $obj = new $child_class;
 
81
                        $obj->decorate($this);
 
82
                        $this->$child = $obj;
 
83
                        return $this->$child;
 
84
                }
 
85
 
 
86
                // The requested driver isn't valid!
 
87
                log_message('error', "Invalid driver requested: ".$child_class);
 
88
                show_error("Invalid driver requested: ".$child_class);
 
89
        }
 
90
 
 
91
        // --------------------------------------------------------------------
 
92
 
 
93
}
 
94
// END CI_Driver_Library CLASS
 
95
 
 
96
 
 
97
/**
 
98
 * CodeIgniter Driver Class
 
99
 *
 
100
 * This class enables you to create drivers for a Library based on the Driver Library.
 
101
 * It handles the drivers' access to the parent library
 
102
 *
 
103
 * @package             CodeIgniter
 
104
 * @subpackage  Libraries
 
105
 * @category    Libraries
 
106
 * @author              EllisLab Dev Team
 
107
 * @link
 
108
 */
 
109
class CI_Driver {
 
110
        protected $parent;
 
111
 
 
112
        private $methods = array();
 
113
        private $properties = array();
 
114
 
 
115
        private static $reflections = array();
 
116
 
 
117
        /**
 
118
         * Decorate
 
119
         *
 
120
         * Decorates the child with the parent driver lib's methods and properties
 
121
         *
 
122
         * @param       object
 
123
         * @return      void
 
124
         */
 
125
        public function decorate($parent)
 
126
        {
 
127
                $this->parent = $parent;
 
128
 
 
129
                // Lock down attributes to what is defined in the class
 
130
                // and speed up references in magic methods
 
131
 
 
132
                $class_name = get_class($parent);
 
133
 
 
134
                if ( ! isset(self::$reflections[$class_name]))
 
135
                {
 
136
                        $r = new ReflectionObject($parent);
 
137
 
 
138
                        foreach ($r->getMethods() as $method)
 
139
                        {
 
140
                                if ($method->isPublic())
 
141
                                {
 
142
                                        $this->methods[] = $method->getName();
 
143
                                }
 
144
                        }
 
145
 
 
146
                        foreach ($r->getProperties() as $prop)
 
147
                        {
 
148
                                if ($prop->isPublic())
 
149
                                {
 
150
                                        $this->properties[] = $prop->getName();
 
151
                                }
 
152
                        }
 
153
 
 
154
                        self::$reflections[$class_name] = array($this->methods, $this->properties);
 
155
                }
 
156
                else
 
157
                {
 
158
                        list($this->methods, $this->properties) = self::$reflections[$class_name];
 
159
                }
 
160
        }
 
161
 
 
162
        // --------------------------------------------------------------------
 
163
 
 
164
        /**
 
165
         * __call magic method
 
166
         *
 
167
         * Handles access to the parent driver library's methods
 
168
         *
 
169
         * @access      public
 
170
         * @param       string
 
171
         * @param       array
 
172
         * @return      mixed
 
173
         */
 
174
        public function __call($method, $args = array())
 
175
        {
 
176
                if (in_array($method, $this->methods))
 
177
                {
 
178
                        return call_user_func_array(array($this->parent, $method), $args);
 
179
                }
 
180
 
 
181
                $trace = debug_backtrace();
 
182
                _exception_handler(E_ERROR, "No such method '{$method}'", $trace[1]['file'], $trace[1]['line']);
 
183
                exit;
 
184
        }
 
185
 
 
186
        // --------------------------------------------------------------------
 
187
 
 
188
        /**
 
189
         * __get magic method
 
190
         *
 
191
         * Handles reading of the parent driver library's properties
 
192
         *
 
193
         * @param       string
 
194
         * @return      mixed
 
195
         */
 
196
        public function __get($var)
 
197
        {
 
198
                if (in_array($var, $this->properties))
 
199
                {
 
200
                        return $this->parent->$var;
 
201
                }
 
202
        }
 
203
 
 
204
        // --------------------------------------------------------------------
 
205
 
 
206
        /**
 
207
         * __set magic method
 
208
         *
 
209
         * Handles writing to the parent driver library's properties
 
210
         *
 
211
         * @param       string
 
212
         * @param       array
 
213
         * @return      mixed
 
214
         */
 
215
        public function __set($var, $val)
 
216
        {
 
217
                if (in_array($var, $this->properties))
 
218
                {
 
219
                        $this->parent->$var = $val;
 
220
                }
 
221
        }
 
222
 
 
223
        // --------------------------------------------------------------------
 
224
 
 
225
}
 
226
// END CI_Driver CLASS
 
227
 
 
228
/* End of file Driver.php */
 
229
/* Location: ./system/libraries/Driver.php */
 
 
b'\\ No newline at end of file'