Subversion Repositories Applications.papyrus

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2005 Aurelien 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 4.3.2 or newer
6
 *
7
 * @package		CodeIgniter
8
 * @author		ExpressionEngine Dev Team
9
 * @copyright	Copyright (c) 2008, 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 CI_DB_forge()
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($table_name, $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 only grab the first field in the event there are more then one
261
		$this->add_field(array_slice($field, 0, 1));
262
263
		if (count($this->fields) == 0)
264
		{
265
			show_error('Field information is required.');
266
		}
267
268
		$sql = $this->_alter_table('ADD', $this->db->dbprefix.$table, $this->fields, $after_field);
269
270
		$this->_reset();
271
		return $this->db->query($sql);
272
	}
273
274
	// --------------------------------------------------------------------
275
276
	/**
277
	 * Column Drop
278
	 *
279
	 * @access	public
280
	 * @param	string	the table name
281
	 * @param	string	the column name
282
	 * @return	bool
283
	 */
284
	function drop_column($table = '', $column_name = '')
285
	{
286
287
		if ($table == '')
288
		{
289
			show_error('A table name is required for that operation.');
290
		}
291
292
		if ($column_name == '')
293
		{
294
			show_error('A column name is required for that operation.');
295
		}
296
297
		$sql = $this->_alter_table('DROP', $this->db->dbprefix.$table, $column_name);
298
299
		return $this->db->query($sql);
300
	}
301
302
	// --------------------------------------------------------------------
303
304
	/**
305
	 * Column Modify
306
	 *
307
	 * @access	public
308
	 * @param	string	the table name
309
	 * @param	string	the column name
310
	 * @param	string	the column definition
311
	 * @return	bool
312
	 */
313
	function modify_column($table = '', $field = array())
314
	{
315
		if ($table == '')
316
		{
317
			show_error('A table name is required for that operation.');
318
		}
319
320
		// add field info into field array, but we can only do one at a time
321
		// so only grab the first field in the event there are more then one
322
		$this->add_field(array_slice($field, 0, 1));
323
324
		if (count($this->fields) == 0)
325
		{
326
			show_error('Field information is required.');
327
		}
328
329
		$sql = $this->_alter_table('CHANGE', $this->db->dbprefix.$table, $this->fields);
330
331
		$this->_reset();
332
		return $this->db->query($sql);
333
	}
334
335
	// --------------------------------------------------------------------
336
337
	/**
338
	 * Reset
339
	 *
340
	 * Resets table creation vars
341
	 *
342
	 * @access	private
343
	 * @return	void
344
	 */
345
	function _reset()
346
	{
347
		$this->fields 		= array();
348
		$this->keys			= array();
349
		$this->primary_keys 	= array();
350
	}
351
352
}
353
354
/* End of file DB_forge.php */
355
/* Location: ./system/database/DB_forge.php */