/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk
20.1.1 by galaxyAbstractor
* Added an simple admin panel to the codeviewer-cmssy stuff
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		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
 * Initialize the database
20
 *
21
 * @category	Database
22
 * @author		ExpressionEngine Dev Team
23
 * @link		http://codeigniter.com/user_guide/database/
24
 * @param 	string
25
 * @param 	bool	Determines if active record should be used or not
26
 */
27
function &DB($params = '', $active_record_override = NULL)
28
{
29
	// Load the DB config file if a DSN string wasn't passed
30
	if (is_string($params) AND strpos($params, '://') === FALSE)
31
	{
32
		// Is the config file in the environment folder?
33
		if ( ! defined('ENVIRONMENT') OR ! file_exists($file_path = APPPATH.'config/'.ENVIRONMENT.'/database.php'))
34
		{
35
			if ( ! file_exists($file_path = APPPATH.'config/database.php'))
36
			{
37
				show_error('The configuration file database.php does not exist.');
38
			}
39
		}
40
41
		include($file_path);
42
43
		if ( ! isset($db) OR count($db) == 0)
44
		{
45
			show_error('No database connection settings were found in the database config file.');
46
		}
47
48
		if ($params != '')
49
		{
50
			$active_group = $params;
51
		}
52
53
		if ( ! isset($active_group) OR ! isset($db[$active_group]))
54
		{
55
			show_error('You have specified an invalid database connection group.');
56
		}
57
58
		$params = $db[$active_group];
59
	}
60
	elseif (is_string($params))
61
	{
62
63
		/* parse the URL from the DSN string
64
		 *  Database settings can be passed as discreet
65
		 *  parameters or as a data source name in the first
66
		 *  parameter. DSNs must have this prototype:
67
		 *  $dsn = 'driver://username:password@hostname/database';
68
		 */
69
70
		if (($dns = @parse_url($params)) === FALSE)
71
		{
72
			show_error('Invalid DB Connection String');
73
		}
74
75
		$params = array(
76
							'dbdriver'	=> $dns['scheme'],
77
							'hostname'	=> (isset($dns['host'])) ? rawurldecode($dns['host']) : '',
78
							'username'	=> (isset($dns['user'])) ? rawurldecode($dns['user']) : '',
79
							'password'	=> (isset($dns['pass'])) ? rawurldecode($dns['pass']) : '',
80
							'database'	=> (isset($dns['path'])) ? rawurldecode(substr($dns['path'], 1)) : ''
81
						);
82
83
		// were additional config items set?
84
		if (isset($dns['query']))
85
		{
86
			parse_str($dns['query'], $extra);
87
88
			foreach ($extra as $key => $val)
89
			{
90
				// booleans please
91
				if (strtoupper($val) == "TRUE")
92
				{
93
					$val = TRUE;
94
				}
95
				elseif (strtoupper($val) == "FALSE")
96
				{
97
					$val = FALSE;
98
				}
99
100
				$params[$key] = $val;
101
			}
102
		}
103
	}
104
105
	// No DB specified yet?  Beat them senseless...
106
	if ( ! isset($params['dbdriver']) OR $params['dbdriver'] == '')
107
	{
108
		show_error('You have not selected a database type to connect to.');
109
	}
110
111
	// Load the DB classes.  Note: Since the active record class is optional
112
	// we need to dynamically create a class that extends proper parent class
113
	// based on whether we're using the active record class or not.
114
	// Kudos to Paul for discovering this clever use of eval()
115
116
	if ($active_record_override !== NULL)
117
	{
118
		$active_record = $active_record_override;
119
	}
120
121
	require_once(BASEPATH.'database/DB_driver.php');
122
123
	if ( ! isset($active_record) OR $active_record == TRUE)
124
	{
125
		require_once(BASEPATH.'database/DB_active_rec.php');
126
127
		if ( ! class_exists('CI_DB'))
128
		{
129
			eval('class CI_DB extends CI_DB_active_record { }');
130
		}
131
	}
132
	else
133
	{
134
		if ( ! class_exists('CI_DB'))
135
		{
136
			eval('class CI_DB extends CI_DB_driver { }');
137
		}
138
	}
139
140
	require_once(BASEPATH.'database/drivers/'.$params['dbdriver'].'/'.$params['dbdriver'].'_driver.php');
141
142
	// Instantiate the DB adapter
143
	$driver = 'CI_DB_'.$params['dbdriver'].'_driver';
144
	$DB = new $driver($params);
145
146
	if ($DB->autoinit == TRUE)
147
	{
148
		$DB->initialize();
149
	}
150
151
	if (isset($params['stricton']) && $params['stricton'] == TRUE)
152
	{
153
		$DB->query('SET SESSION sql_mode="STRICT_ALL_TABLES"');
154
	}
155
156
	return $DB;
157
}
158
159
160
161
/* End of file DB.php */
162
/* Location: ./system/database/DB.php */