Open Journal Systems  3.3.0
DBConnection.inc.php
1 <?php
2 
17 define('ADODB_OUTP', array('DBConnection', 'logAdodbMessage'));
18 
19 class DBConnection {
20 
22  var $dbconn;
23 
25  var $driver;
26  var $host;
27  var $username;
28  var $password;
32  var $forceNew; // Only applicable if non-persistent
33 
35  var $connectOnInit;
36 
37  /* @var boolean enable debugging output */
38  var $debug;
39 
41  var $connected;
42 
49  function __construct() {
50  $this->connected = false;
51 
52  if (func_num_args() == 0) {
53  $this->initDefaultDBConnection();
54  } else {
55  $args = func_get_args();
56  call_user_func_array(array($this, 'initCustomDBConnection'), $args);
57  }
58  }
59 
66  static function logAdodbMessage($msg, $newline=true) {
67  error_log('PKP-Database-Logger ' . Registry::get('system.debug.startTime') . ': ' . PKPString::html2text($msg));
68  }
69 
76  $this->driver = Config::getVar('database', 'driver');
77  $this->host = Config::getVar('database', 'host');
78  $socket = Config::getVar('database', 'unix_socket');
79  $port = Config::getVar('database', 'port');
80  if ($socket) {
81  $this->host .= ':' . $socket;
82  } elseif ($port) {
83  $this->host .= ':' . $port;
84  }
85  $this->username = Config::getVar('database', 'username');
86  $this->password = Config::getVar('database', 'password');
87  $this->databaseName = Config::getVar('database', 'name');
88  $this->persistent = Config::getVar('database', 'persistent') ? true : false;
89  $this->connectionCharset = Config::getVar('i18n', 'connection_charset');
90  $this->debug = Config::getVar('database', 'debug') ? true : false;
91  $this->connectOnInit = true;
92  $this->forceNew = false;
93 
94  return $this->initConn();
95  }
96 
112  function initCustomDBConnection($driver, $host, $username, $password, $databaseName, $persistent = false, $connectionCharset = false, $connectOnInit = true, $debug = false, $forceNew = false) {
113  $this->driver = $driver;
114  $this->host = $host;
115  $this->username = $username;
116  $this->password = $password;
117  $this->databaseName = $databaseName;
118  $this->persistent = $persistent;
119  $this->connectionCharset = $connectionCharset;
120  $this->connectOnInit = $connectOnInit;
121  $this->debug = $debug;
122  $this->forceNew = $forceNew;
123 
124  return $this->initConn();
125  }
126 
131  function initConn() {
132  require_once('lib/pkp/lib/vendor/adodb/adodb-php/adodb.inc.php');
133 
134  $this->dbconn = ADONewConnection($this->driver);
135 
136  if ($this->connectOnInit) {
137  return $this->connect();
138  } else {
139  return true;
140  }
141  }
142 
147  function connect() {
148  if ($this->persistent) {
149  $this->connected = @$this->dbconn->PConnect(
150  $this->host,
151  $this->username,
152  $this->password,
153  $this->databaseName
154  );
155 
156  } else {
157  $this->connected = @$this->dbconn->Connect(
158  $this->host,
159  $this->username,
160  $this->password,
161  $this->databaseName,
162  $this->forceNew
163  );
164  }
165 
166  if ($this->debug) {
167  // Enable verbose database debugging (prints all SQL statements as they're executed)
168  $this->dbconn->debug = true;
169  }
170 
171  if ($this->connected && $this->connectionCharset) {
172  // Set client/connection character set
173  // NOTE: Only supported on some database servers and versions
174  $this->dbconn->SetCharSet($this->connectionCharset);
175  }
176 
177  return $this->connected;
178  }
179 
183  function disconnect() {
184  if ($this->connected) {
185  $this->dbconn->Disconnect();
186  $this->connected = false;
187  }
188  }
189 
194  function reconnect($forceNew = false) {
195  $this->disconnect();
196  if ($forceNew) {
197  $this->persistent = false;
198  }
199  $this->forceNew = $forceNew;
200  return $this->connect();
201  }
202 
207  function &getDBConn() {
208  return $this->dbconn;
209  }
210 
215  function isConnected() {
217  }
218 
223  function getNumQueries() {
224  return isset($this->dbconn) ? $this->dbconn->numQueries : 0;
225  }
226 
232  static function getInstance($setInstance = null) {
233  $instance =& Registry::get('dbInstance', true, null);
234 
235  if (isset($setInstance)) {
236  $instance = $setInstance;
237  } else if ($instance === null) {
238  $instance = new DBConnection();
239  }
240 
241  return $instance;
242  }
243 
248  static function &getConn() {
249  $conn = DBConnection::getInstance();
250  return $conn->getDBConn();
251  }
252 
257  function getDriver() {
258  return $this->driver;
259  }
260 }
261 
262 
DBConnection
Class for accessing the low-level database connection. Currently integrated with ADOdb (from http://a...
Definition: DBConnection.inc.php:19
DBConnection\$persistent
$persistent
Definition: DBConnection.inc.php:30
DBConnection\$dbconn
$dbconn
Definition: DBConnection.inc.php:22
DBConnection\__construct
__construct()
Definition: DBConnection.inc.php:58
DBConnection\$connectionCharset
$connectionCharset
Definition: DBConnection.inc.php:31
DBConnection\$driver
$driver
Definition: DBConnection.inc.php:25
DBConnection\$connected
$connected
Definition: DBConnection.inc.php:50
DBConnection\initConn
initConn()
Definition: DBConnection.inc.php:140
DBConnection\$forceNew
$forceNew
Definition: DBConnection.inc.php:32
DBConnection\getDBConn
& getDBConn()
Definition: DBConnection.inc.php:216
DBConnection\$databaseName
$databaseName
Definition: DBConnection.inc.php:29
DBConnection\getNumQueries
getNumQueries()
Definition: DBConnection.inc.php:232
PKPString\html2text
static html2text($html)
Definition: PKPString.inc.php:395
DBConnection\disconnect
disconnect()
Definition: DBConnection.inc.php:192
Registry\get
static & get($key, $createIfEmpty=false, $createWithDefault=null)
Definition: Registry.inc.php:35
DBConnection\$connectOnInit
$connectOnInit
Definition: DBConnection.inc.php:38
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
DBConnection\$debug
$debug
Definition: DBConnection.inc.php:44
DBConnection\getConn
static & getConn()
Definition: DBConnection.inc.php:257
DBConnection\$username
$username
Definition: DBConnection.inc.php:27
DBConnection\logAdodbMessage
static logAdodbMessage($msg, $newline=true)
Definition: DBConnection.inc.php:75
DBConnection\connect
connect()
Definition: DBConnection.inc.php:156
DBConnection\$host
$host
Definition: DBConnection.inc.php:26
DBConnection\initDefaultDBConnection
initDefaultDBConnection()
Definition: DBConnection.inc.php:84
DBConnection\$password
$password
Definition: DBConnection.inc.php:28
DBConnection\isConnected
isConnected()
Definition: DBConnection.inc.php:224
DBConnection\getDriver
getDriver()
Definition: DBConnection.inc.php:266
DBConnection\initCustomDBConnection
initCustomDBConnection($driver, $host, $username, $password, $databaseName, $persistent=false, $connectionCharset=false, $connectOnInit=true, $debug=false, $forceNew=false)
Definition: DBConnection.inc.php:121
DBConnection\getInstance
static getInstance($setInstance=null)
Definition: DBConnection.inc.php:241
DBConnection\reconnect
reconnect($forceNew=false)
Definition: DBConnection.inc.php:203