PluginProbe
ShiftController Employee Shift Scheduling / 2.1.0
ShiftController Employee Shift Scheduling v2.1.0
4.9.97 4.9.96 4.9.95 4.9.74 4.9.75 4.9.76 4.9.77 4.9.78 4.9.84 4.9.85 4.9.87 4.9.91 4.9.92 trunk 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 3.2.4 All 38 releases
shiftcontroller / happ / system / database / DB_forge.php

DB_forge.php in ShiftController Employee Shift Scheduling 2.1.0, at happ/system/database/DB_forge.php

382 lines 7.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2 /**
3 * Code Igniter
4 *
5 * An open source application development framework for PHP 5.1.6 or newer
6 *
7 * @package CodeIgniter
8 * @author ExpressionEngine Dev Team
9 * @copyright Copyright (c) 2008 - 2011, 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 * Database Utility Class
20 *
21 * @category Database
22 * @author ExpressionEngine Dev Team
23 * @link http://codeigniter.com/user_guide/database/
24 */
25 class CI_DB_forge {
26
27 var $fields = array();
28 var $keys = array();
29 var $primary_keys = array();
30 var $db_char_set = '';
31
32 /**
33 * Constructor
34 *
35 * Grabs the CI super object instance so we can access it.
36 *
37 */
38 function __construct()
39 {
40 // Assign the main database object to $this->db
41 $CI =& ci_get_instance();
42 $this->db =& $CI->db;
43 log_message('debug', "Database Forge Class Initialized");
44 }
45
46 // --------------------------------------------------------------------
47
48 /**
49 * Create database
50 *
51 * @access public
52 * @param string the database name
53 * @return bool
54 */
55 function create_database($db_name)
56 {
57 $sql = $this->_create_database($db_name);
58
59 if (is_bool($sql))
60 {
61 return $sql;
62 }
63
64 return $this->db->query($sql);
65 }
66
67 // --------------------------------------------------------------------
68
69 /**
70 * Drop database
71 *
72 * @access public
73 * @param string the database name
74 * @return bool
75 */
76 function drop_database($db_name)
77 {
78 $sql = $this->_drop_database($db_name);
79
80 if (is_bool($sql))
81 {
82 return $sql;
83 }
84
85 return $this->db->query($sql);
86 }
87
88 // --------------------------------------------------------------------
89
90 /**
91 * Add Key
92 *
93 * @access public
94 * @param string key
95 * @param string type
96 * @return void
97 */
98 function add_key($key = '', $primary = FALSE)
99 {
100 if (is_array($key))
101 {
102 foreach ($key as $one)
103 {
104 $this->add_key($one, $primary);
105 }
106
107 return;
108 }
109
110 if ($key == '')
111 {
112 show_error('Key information is required for that operation.');
113 }
114
115 if ($primary === TRUE)
116 {
117 $this->primary_keys[] = $key;
118 }
119 else
120 {
121 $this->keys[] = $key;
122 }
123 }
124
125 // --------------------------------------------------------------------
126
127 /**
128 * Add Field
129 *
130 * @access public
131 * @param string collation
132 * @return void
133 */
134 function add_field($field = '')
135 {
136 if ($field == '')
137 {
138 show_error('Field information is required.');
139 }
140
141 if (is_string($field))
142 {
143 if ($field == 'id')
144 {
145 $this->add_field(array(
146 'id' => array(
147 'type' => 'INT',
148 'constraint' => 9,
149 'auto_increment' => TRUE
150 )
151 ));
152 $this->add_key('id', TRUE);
153 }
154 else
155 {
156 if (strpos($field, ' ') === FALSE)
157 {
158 show_error('Field information is required for that operation.');
159 }
160
161 $this->fields[] = $field;
162 }
163 }
164
165 if (is_array($field))
166 {
167 $this->fields = array_merge($this->fields, $field);
168 }
169
170 }
171
172 // --------------------------------------------------------------------
173
174 /**
175 * Create Table
176 *
177 * @access public
178 * @param string the table name
179 * @return bool
180 */
181 function create_table($table = '', $if_not_exists = FALSE)
182 {
183 if ($table == '')
184 {
185 show_error('A table name is required for that operation.');
186 }
187
188 if (count($this->fields) == 0)
189 {
190 show_error('Field information is required.');
191 }
192
193 $sql = $this->_create_table($this->db->dbprefix.$table, $this->fields, $this->primary_keys, $this->keys, $if_not_exists);
194
195 $this->_reset();
196 return $this->db->query($sql);
197 }
198
199 // --------------------------------------------------------------------
200
201 /**
202 * Drop Table
203 *
204 * @access public
205 * @param string the table name
206 * @return bool
207 */
208 function drop_table($table_name)
209 {
210 $sql = $this->_drop_table($this->db->dbprefix.$table_name);
211
212 if (is_bool($sql))
213 {
214 return $sql;
215 }
216
217 return $this->db->query($sql);
218 }
219
220 // --------------------------------------------------------------------
221
222 /**
223 * Rename Table
224 *
225 * @access public
226 * @param string the old table name
227 * @param string the new table name
228 * @return bool
229 */
230 function rename_table($table_name, $new_table_name)
231 {
232 if ($table_name == '' OR $new_table_name == '')
233 {
234 show_error('A table name is required for that operation.');
235 }
236
237 $sql = $this->_rename_table($this->db->dbprefix.$table_name, $this->db->dbprefix.$new_table_name);
238 return $this->db->query($sql);
239 }
240
241 // --------------------------------------------------------------------
242
243 /**
244 * Column Add
245 *
246 * @access public
247 * @param string the table name
248 * @param string the column name
249 * @param string the column definition
250 * @return bool
251 */
252 function add_column($table = '', $field = array(), $after_field = '')
253 {
254 if ($table == '')
255 {
256 show_error('A table name is required for that operation.');
257 }
258
259 // add field info into field array, but we can only do one at a time
260 // so we cycle through
261
262 foreach ($field as $k => $v)
263 {
264 $this->add_field(array($k => $field[$k]));
265
266 if (count($this->fields) == 0)
267 {
268 show_error('Field information is required.');
269 }
270
271 $sql = $this->_alter_table('ADD', $this->db->dbprefix.$table, $this->fields, $after_field);
272
273 $this->_reset();
274
275 if ($this->db->query($sql) === FALSE)
276 {
277 return FALSE;
278 }
279 }
280
281 return TRUE;
282
283 }
284
285 // --------------------------------------------------------------------
286
287 /**
288 * Column Drop
289 *
290 * @access public
291 * @param string the table name
292 * @param string the column name
293 * @return bool
294 */
295 function drop_column($table = '', $column_name = '')
296 {
297
298 if ($table == '')
299 {
300 show_error('A table name is required for that operation.');
301 }
302
303 if ($column_name == '')
304 {
305 show_error('A column name is required for that operation.');
306 }
307
308 $sql = $this->_alter_table('DROP', $this->db->dbprefix.$table, $column_name);
309
310 return $this->db->query($sql);
311 }
312
313 // --------------------------------------------------------------------
314
315 /**
316 * Column Modify
317 *
318 * @access public
319 * @param string the table name
320 * @param string the column name
321 * @param string the column definition
322 * @return bool
323 */
324 function modify_column($table = '', $field = array())
325 {
326 if ($table == '')
327 {
328 show_error('A table name is required for that operation.');
329 }
330
331 // add field info into field array, but we can only do one at a time
332 // so we cycle through
333
334 foreach ($field as $k => $v)
335 {
336 // If no name provided, use the current name
337 if ( ! isset($field[$k]['name']))
338 {
339 $field[$k]['name'] = $k;
340 }
341
342 $this->add_field(array($k => $field[$k]));
343
344 if (count($this->fields) == 0)
345 {
346 show_error('Field information is required.');
347 }
348
349 $sql = $this->_alter_table('CHANGE', $this->db->dbprefix.$table, $this->fields);
350
351 $this->_reset();
352
353 if ($this->db->query($sql) === FALSE)
354 {
355 return FALSE;
356 }
357 }
358
359 return TRUE;
360 }
361
362 // --------------------------------------------------------------------
363
364 /**
365 * Reset
366 *
367 * Resets table creation vars
368 *
369 * @access private
370 * @return void
371 */
372 function _reset()
373 {
374 $this->fields = array();
375 $this->keys = array();
376 $this->primary_keys = array();
377 }
378
379 }
380
381 /* End of file DB_forge.php */
382 /* Location: ./system/database/DB_forge.php */