}
if (strcasecmp($driver, 'Sql') === 0) {
- $write_db = Horde_Core_Binder_Common::createDb($params, 'alarm SQL');
+ $write_db = $injector->getInstance('Horde_Db_Pear')->getOb();
/* Check if we need to set up the read DB connection
* separately. */
$params['db'] = $write_db;
} else {
$params['write_db'] = $write_db;
- $params['db'] = Horde_Core_Binder_Common::createDb(array_merge($params, $params['read']), 'alarm SQL');
+ $params['db'] = $injector->getInstance('Horde_Db_Pear')->getOb('read');
}
}
if (strcasecmp($driver, 'Memcache') === 0) {
$params['memcache'] = $injector->getInstance('Horde_Memcache');
} elseif (strcasecmp($driver, 'Sql') === 0) {
- $write_db = Horde_Core_Binder_Common::createDb($params, 'cache SQL');
+ $write_db = $injector->getInstance('Horde_Db_Pear')->getOb();
/* Check if we need to set up the read DB connection
- * * separately. */
+ * separately. */
if (empty($params['splitread'])) {
$params['db'] = $write_db;
} else {
$params['write_db'] = $write_db;
- $params['db'] = Horde_Core_Binder_Common::createDb(array_merge($params, $params['read']), 'cache SQL');
+ $params['db'] = $injector->getInstance('Horde_Db_Pear')->getOb('read');
}
if (!empty($params['use_memorycache'])) {
+++ /dev/null
-<?php
-/**
- * @category Horde
- * @package Core
- */
-class Horde_Core_Binder_Common
-{
- /* Utility function to use until code is transferred to new DB code. */
- public function createDb($params, $ident)
- {
- Horde::assertDriverConfig($params, 'sql', array('charset', 'phptype'), $ident);
-
- $params = array_merge(array(
- 'database' => '',
- 'hostspec' => '',
- 'password' => '',
- 'username' => ''
- ), $params);
-
- /* Connect to the SQL server using the supplied parameters. */
- $db = DB::connect($params, array(
- 'persistent' => !empty($params['persistent']),
- 'ssl' => !empty($params['ssl'])
- ));
-
- if ($db instanceof PEAR_Error) {
- throw new Horde_Exception($db);
- }
-
- // Set DB portability options.
- switch ($db->phptype) {
- case 'mssql':
- $db->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS | DB_PORTABILITY_RTRIM);
- break;
-
- default:
- $db->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS);
- break;
- }
-
- return $db;
- }
-
-}
--- /dev/null
+<?php
+/**
+ * @category Horde
+ * @package Core
+ */
+class Horde_Core_Binder_DbPear implements Horde_Injector_Binder
+{
+ public function create(Horde_Injector $injector)
+ {
+ return new Horde_Core_Factory_DbPear($injector);
+ }
+
+ public function equals(Horde_Injector_Binder $binder)
+ {
+ return false;
+ }
+}
$params['logger'] = $injector->getInstance('Horde_Log_Logger');
if (strcasecmp($driver, 'Sql') === 0) {
- $write_db = Horde_Core_Binder_Common::createDb($params, 'lock SQL');
+ $write_db = $injector->getInstance('Horde_Db_Pear')->getOb();
/* Check if we need to set up the read DB connection
* separately. */
$params['db'] = $write_db;
} else {
$params['write_db'] = $write_db;
- $params['db'] = Horde_Core_Binder_Common::createDb(array_merge($params, $params['read']), 'lock SQL');
+ $params['db'] = $injector->getInstance('Horde_Db_Pear')->getOb('read');
}
}
array_merge(Horde::getDriverConfig('datatree', $dt_driver), array('group' => 'horde.perms'))
);
} elseif (strcasecmp($driver, 'Sql') === 0) {
- $write_db = Horde_Core_Binder_Common::createDb($params, 'perms SQL');
+ $write_db = $injector->getInstance('Horde_Db_Pear')->getOb();
/* Check if we need to set up the read DB connection
* separately. */
$params['db'] = $write_db;
} else {
$params['write_db'] = $write_db;
- $params['db'] = Horde_Core_Binder_Common::createDb(array_merge($params, $params['read']), 'perms SQL');
+ $params['db'] = $injector->getInstance('Horde_Db_Pear')->getOb('read');
}
}
$params = Horde::getDriverConfig('sessionhandler', $driver);
if (strcasecmp($driver, 'Sql') === 0) {
- $write_db = Horde_Core_Binder_Common::createDb($params, 'sessionhandler SQL');
+ $write_db = $injector->getInstance('Horde_Db_Pear')->getOb();
/* Check if we need to set up the read DB connection
- * * separately. */
+ * separately. */
if (empty($params['splitread'])) {
$params['db'] = $write_db;
} else {
$params['write_db'] = $write_db;
- $params['db'] = Horde_Core_Binder_Common::createDb(array_merge($params, $params['read']), 'sessionhandler SQL');
+ $params['db'] = $injector->getInstance('Horde_Db_Pear')->getOb('read');
}
}
: array();
if (strcasecmp($driver, 'Sql') === 0) {
- $write_db = Horde_Core_Binder_Common::createDb($params, 'token SQL');
+ $write_db = $injector->getInstance('Horde_Db_Pear')->getOb();
/* Check if we need to set up the read DB connection
* separately. */
$params['db'] = $write_db;
} else {
$params['write_db'] = $write_db;
- $params['db'] = Horde_Core_Binder_Common::createDb(array_merge($params, $params['read']), 'token SQL');
+ $params['db'] = $injector->getInstance('Horde_Db_Pear')->getOb('read');
}
} elseif (strcasecmp($driver, 'None') === 0) {
$driver = 'Null';
--- /dev/null
+<?php
+/**
+ * A Horde_Injector:: based factory for creating PEAR DB objects..
+ *
+ * PHP version 5
+ *
+ * @category Horde
+ * @package Core
+ * @author Michael Slusarz <slusarz@horde.org>
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Core
+ */
+
+/**
+ * A Horde_Injector:: based factory for creating PEAR DB objects..
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @category Horde
+ * @package Core
+ * @author Michael Slusarz <slusarz@horde.org>
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Core
+ */
+class Horde_Core_Factory_DbPear
+{
+ /**
+ * Instances.
+ *
+ * @var array
+ */
+ private $_instances = array();
+
+ /**
+ * The injector.
+ *
+ * @var Horde_Injector
+ */
+ private $_injector;
+
+ /**
+ * Constructor.
+ *
+ * @param Horde_Injector $injector The injector to use.
+ */
+ public function __construct(Horde_Injector $injector)
+ {
+ $this->_injector = $injector;
+ }
+
+ /**
+ * Return the DB instance.
+ *
+ * @param string $type Either 'read' or 'rw'.
+ *
+ * @return DB The singleton DB instance.
+ * @throws Horde_Exception
+ */
+ public function getOb($type = 'rw')
+ {
+ if (isset($this->_instances[$type])) {
+ return $this->_instances[$type];
+ }
+
+ $params = array_merge(array(
+ 'database' => '',
+ 'hostspec' => '',
+ 'password' => '',
+ 'username' => ''
+ ), $GLOBALS['conf']['sql']);
+ if ($type == 'read') {
+ $params = array_merge($params, $params['read']);
+ }
+
+ Horde::assertDriverConfig($params, 'sql', array('charset', 'phptype'), $ident, 'SQL');
+
+ /* Connect to the SQL server using the supplied parameters. */
+ $db = DB::connect($params, array(
+ 'persistent' => !empty($params['persistent']),
+ 'ssl' => !empty($params['ssl'])
+ ));
+
+ if ($db instanceof PEAR_Error) {
+ throw new Horde_Exception($db);
+ }
+
+ // Set DB portability options.
+ switch ($db->phptype) {
+ case 'mssql':
+ $db->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS | DB_PORTABILITY_RTRIM);
+ break;
+
+ default:
+ $db->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS);
+ break;
+ }
+
+ $this->_instances[$type] = $db;
+
+ return $db;
+ }
+
+}
// 'Horde_Browser' - initialized below
'Horde_Cache' => new Horde_Core_Binder_Cache(),
'Horde_Db_Adapter_Base' => new Horde_Core_Binder_Db(),
+ 'Horde_Db_Pear' => new Horde_Core_Binder_DbPear(),
'Horde_Editor' => new Horde_Core_Binder_Editor(),
'Horde_History' => new Horde_Core_Binder_History(),
'Horde_Lock' => new Horde_Core_Binder_Lock(),
<dir name="Binder">
<file name="Alarm.php" role="php" />
<file name="Cache.php" role="php" />
- <file name="Common.php" role="php" />
<file name="Db.php" role="php" />
+ <file name="DbPear.php" role="php" />
<file name="Dns.php" role="php" />
<file name="Editor.php" role="php" />
<file name="History.php" role="php" />
<file name="Facebook.php" role="php" />
</dir> <!-- /lib/Horde/Core/Binder -->
<dir name="Factory">
+ <file name="DbPear.php" role="php" />
<file name="Editor.php" role="php" />
<file name="Identity.php" role="php" />
<file name="KolabServer.php" role="php" />
<channel>pear.horde.org</channel>
</package>
<package>
+ <name>DB</name>
+ <channel>pear.php.net</channel>
+ </package>
+ <package>
<name>Editor</name>
<channel>pear.horde.org</channel>
</package>
<install name="lib/Horde/Core/Autoloader/Callback/Mime.php" as="Horde/Core/Autoloader/Callback/Mime.php" />
<install name="lib/Horde/Core/Binder/Alarm.php" as="Horde/Core/Binder/Alarm.php" />
<install name="lib/Horde/Core/Binder/Cache.php" as="Horde/Core/Binder/Cache.php" />
- <install name="lib/Horde/Core/Binder/Common.php" as="Horde/Core/Binder/Common.php" />
<install name="lib/Horde/Core/Binder/Db.php" as="Horde/Core/Binder/Db.php" />
+ <install name="lib/Horde/Core/Binder/DbPear.php" as="Horde/Core/Binder/DbPear.php" />
<install name="lib/Horde/Core/Binder/Dns.php" as="Horde/Core/Binder/Dns.php" />
<install name="lib/Horde/Core/Binder/Editor.php" as="Horde/Core/Binder/Editor.php" />
<install name="lib/Horde/Core/Binder/History.php" as="Horde/Core/Binder/History.php" />
<install name="lib/Horde/Core/Binder/Token.php" as="Horde/Core/Binder/Token.php" />
<install name="lib/Horde/Core/Binder/Vfs.php" as="Horde/Core/Binder/Vfs.php" />
<install name="lib/Horde/Core/Binder/Facebook.php" as="Horde/Core/Binder/Facebook.php" />
+ <install name="lib/Horde/Core/Factory/DbPear.php" as="Horde/Core/Factory/DbPear.php" />
<install name="lib/Horde/Core/Factory/Editor.php" as="Horde/Core/Factory/Editor.php" />
<install name="lib/Horde/Core/Factory/Identity.php" as="Horde/Core/Factory/Identity.php" />
<install name="lib/Horde/Core/Factory/KolabServer.php" as="Horde/Core/Factory/KolabServer.php" />