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

  • Committer: galaxyAbstractor
  • Date: 2013-04-10 15:58:59 UTC
  • mfrom: (20.1.1 lenasys)
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: galaxyabstractor@gmail.com-20130410155859-cih60kaz5es8savt
CodeIgniter implementation of basic CMS system

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