/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/database/DB_forge.php

  • Committer: galaxyAbstractor
  • Date: 2013-04-10 15:49:32 UTC
  • mto: (19.1.5 lenasys)
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: galaxyabstractor@gmail.com-20130410154932-4vizlzk0ar5gykvi
* Added an simple admin panel to the codeviewer-cmssy stuff
* Redesigned a bit like the mockups - still stuff to come
* Implemented the codeviewer + admin panel again using the Framework CodeIgniter instead 

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
 * 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 =& 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 */
 
 
b'\\ No newline at end of file'