From: Michael M Slusarz Date: Wed, 26 May 2010 17:34:06 +0000 (-0600) Subject: Refactor Horde_Db injectors. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=e433901b802136256a094ae1f870853e7f512e02;p=horde.git Refactor Horde_Db injectors. Forgot that individual subsystems could potentially define a custom SQL configuration. Therefore, we need a Horde_Db injector with a factory/singleton to override the base DB for these subsystems (and reuse the base DB object if no custom config is given). Rename Horde_Db_Adapter_Base to Horde_Db_Base and change to a shortcut to return the base Horde DB object. --- diff --git a/content/test/Tags/TaggerTest.php b/content/test/Tags/TaggerTest.php index 0e89786ad..de3b83b0b 100644 --- a/content/test/Tags/TaggerTest.php +++ b/content/test/Tags/TaggerTest.php @@ -21,7 +21,7 @@ class Content_Tags_TaggerTest extends PHPUnit_Framework_TestCase $injector = new Horde_Injector(new Horde_Injector_TopLevel()); $db = new Horde_Db_Adapter_Pdo_Sqlite(array('dbname' => ':memory:')); - $injector->setInstance('Horde_Db_Adapter_Base', $db); + $injector->setInstance('Horde_Db_Base', $db); $this->tagger = $injector->getInstance('Content_Tagger'); diff --git a/framework/Core/lib/Horde.php b/framework/Core/lib/Horde.php index 85bf10da2..3796f9874 100644 --- a/framework/Core/lib/Horde.php +++ b/framework/Core/lib/Horde.php @@ -787,7 +787,8 @@ HTML; * The used configuration array will be * $conf[$backend]. If an array gets passed, it will * be $conf[$key1][$key2]. - * @param string $type The type of driver. + * @param string $type The type of driver. If null, will not merge with + * base config. * * @return array The connection parameters. */ @@ -795,25 +796,28 @@ HTML; { global $conf; - $type = Horde_String::lower($type); + if (is_null($type)) { + $type = Horde_String::lower($type); + } - $c = null; if (is_array($backend)) { $c = Horde_Array::getElement($conf, $backend); } elseif (isset($conf[$backend])) { $c = $conf[$backend]; + } else { + $c = null; } if (!is_null($c) && isset($c['params'])) { $c['params']['umask'] = $conf['umask']; - if (isset($conf[$type])) { - return array_merge($conf[$type], $c['params']); - } else { - return $c['params']; - } + return (!is_null($type) && isset($conf[$type])) + ? array_merge($conf[$type], $c['params']) + : $c['params']; } - return isset($conf[$type]) ? $conf[$type] : array(); + return (!is_null($type) && isset($conf[$type])) + ? $conf[$type] + : array(); } /** diff --git a/framework/Core/lib/Horde/Core/Auth/Signup/Sql.php b/framework/Core/lib/Horde/Core/Auth/Signup/Sql.php index 63c834962..1339149f9 100644 --- a/framework/Core/lib/Horde/Core/Auth/Signup/Sql.php +++ b/framework/Core/lib/Horde/Core/Auth/Signup/Sql.php @@ -49,7 +49,7 @@ class Horde_Core_Auth_Signup_Sql extends Horde_Core_Auth_Signup_Base serialize($signup->getData()) ); - $GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base')->insert($query, $values); + $GLOBALS['injector']->getInstance('Horde_Db')->getOb('horde', 'signup')->insert($query, $values); } /** @@ -70,7 +70,7 @@ class Horde_Core_Auth_Signup_Sql extends Horde_Core_Auth_Signup_Base ' WHERE user_name = ?'; $values = array($user); - return (bool)$GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base')->selectValue($query, $values); + return (bool)$GLOBALS['injector']->getInstance('Horde_Db')->getOb('horde', 'signup')->selectValue($query, $values); } /** @@ -89,7 +89,7 @@ class Horde_Core_Auth_Signup_Sql extends Horde_Core_Auth_Signup_Base ' WHERE user_name = ?'; $values = array($username); - $result = $GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base')->selectOne($query, $values); + $result = $GLOBALS['injector']->getInstance('Horde_Db')->getOb('horde', 'signup')->selectOne($query, $values); if (empty($result)) { throw new Horde_Exception(sprintf(_("User \"%s\" does not exist."), $username)); } @@ -111,7 +111,7 @@ class Horde_Core_Auth_Signup_Sql extends Horde_Core_Auth_Signup_Base $query = 'SELECT * FROM ' . $this->_params['table'] . ' ORDER BY signup_date'; - $result = $GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base')->selectAll($query); + $result = $GLOBALS['injector']->getInstance('Horde_Db')->getOb('horde', 'signup')->selectAll($query); if (empty($result)) { return array(); } @@ -139,7 +139,7 @@ class Horde_Core_Auth_Signup_Sql extends Horde_Core_Auth_Signup_Base ' WHERE user_name = ?'; $values = array($username); - $GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base')->delete($query, $values); + $GLOBALS['injector']->getInstance('Horde_Db')->getOb('horde', 'signup')->delete($query, $values); } /** diff --git a/framework/Core/lib/Horde/Core/Binder/Alarm.php b/framework/Core/lib/Horde/Core/Binder/Alarm.php index dd31aeb01..2f0eb16e9 100644 --- a/framework/Core/lib/Horde/Core/Binder/Alarm.php +++ b/framework/Core/lib/Horde/Core/Binder/Alarm.php @@ -13,7 +13,7 @@ class Horde_Core_Binder_Alarm implements Horde_Injector_Binder $params = Horde::getDriverConfig('alarms', $driver); if (strcasecmp($driver, 'Sql') === 0) { - $params['db'] = $injector->getInstance('Horde_Db_Adapter_Base'); + $params['db'] = $injector->getInstance('Horde_Db')->getOb('horde', 'alarm'); } $params['logger'] = $injector->getInstance('Horde_Log_Logger'); diff --git a/framework/Core/lib/Horde/Core/Binder/Cache.php b/framework/Core/lib/Horde/Core/Binder/Cache.php index a7e385042..17a1589b9 100644 --- a/framework/Core/lib/Horde/Core/Binder/Cache.php +++ b/framework/Core/lib/Horde/Core/Binder/Cache.php @@ -27,7 +27,7 @@ class Horde_Core_Binder_Cache implements Horde_Injector_Binder if (strcasecmp($driver, 'Memcache') === 0) { $params['memcache'] = $injector->getInstance('Horde_Memcache'); } elseif (strcasecmp($driver, 'Sql') === 0) { - $params['db'] = $injector->getInstance('Horde_Db_Adapter_Base'); + $params['db'] = $injector->getInstance('Horde_Db')->getOb('horde', 'cache'); } if (!empty($GLOBALS['conf']['cache']['use_memorycache']) && diff --git a/framework/Core/lib/Horde/Core/Binder/Db.php b/framework/Core/lib/Horde/Core/Binder/Db.php index 2a5aba440..a581eaf60 100644 --- a/framework/Core/lib/Horde/Core/Binder/Db.php +++ b/framework/Core/lib/Horde/Core/Binder/Db.php @@ -5,61 +5,14 @@ */ class Horde_Core_Binder_Db implements Horde_Injector_Binder { - /** - * Handle Horde-style configuration arrays, PEAR DB/MDB2 arrays or DSNs, or - * PDO DSNS. - * - * @return Horde_Db_Adapter_Base - * @throws Horde_Exception - */ public function create(Horde_Injector $injector) { - return $this->_createDb($GLOBALS['conf']['sql'], $injector); - } - - protected function _createDb($config, $injector) - { - if (!empty($config['splitread'])) { - unset($config['splitread']); - $config['write_db'] = $this->_createDb($config, $injector); - $config = array_merge($config, $config['read']); - } - - if (!isset($config['adapter'])) { - if ($config['phptype'] == 'oci8') { - $config['phptype'] = 'oci'; - } - $config['adapter'] = ($config['phptype'] == 'mysqli') - ? 'mysqli' - : 'pdo_' . $config['phptype']; - } - - if (!empty($config['hostspec'])) { - $config['host'] = $config['hostspec']; - } - - $adapter = str_replace(' ', '_' , ucwords(str_replace('_', ' ', basename($config['adapter'])))); - $class = 'Horde_Db_Adapter_' . $adapter; - - if (class_exists($class)) { - $ob = new $class($config); - - if (!isset($config['cache'])) { - $ob->setCache($injector->getInstance('Horde_Cache')); - } - - if (!isset($config['logger'])) { - $ob->setLogger($injector->getInstance('Horde_Log_Logger')); - } - - return $ob; - } - - throw new Horde_Exception('Adapter class "' . $class . '" not found'); + return new Horde_Core_Factory_Db($injector); } public function equals(Horde_Injector_Binder $binder) { return false; } + } diff --git a/framework/Core/lib/Horde/Core/Binder/DbBase.php b/framework/Core/lib/Horde/Core/Binder/DbBase.php new file mode 100644 index 000000000..0219789ad --- /dev/null +++ b/framework/Core/lib/Horde/Core/Binder/DbBase.php @@ -0,0 +1,23 @@ +getOb('horde'); + } + + public function equals(Horde_Injector_Binder $binder) + { + return false; + } + +} diff --git a/framework/Core/lib/Horde/Core/Binder/Lock.php b/framework/Core/lib/Horde/Core/Binder/Lock.php index d79ab58ba..ed82f00b5 100644 --- a/framework/Core/lib/Horde/Core/Binder/Lock.php +++ b/framework/Core/lib/Horde/Core/Binder/Lock.php @@ -19,7 +19,7 @@ class Horde_Core_Binder_Lock implements Horde_Injector_Binder $params['logger'] = $injector->getInstance('Horde_Log_Logger'); if (strcasecmp($driver, 'Sql') === 0) { - $params['db'] = $injector->getInstance('Horde_Db_Adapter_Base'); + $params['db'] = $injector->getInstance('Horde_Db')->getOb('horde', 'lock'); } return Horde_Lock::factory($driver, $params); diff --git a/framework/Core/lib/Horde/Core/Binder/Perms.php b/framework/Core/lib/Horde/Core/Binder/Perms.php index 1a91d7396..20ae3dc23 100644 --- a/framework/Core/lib/Horde/Core/Binder/Perms.php +++ b/framework/Core/lib/Horde/Core/Binder/Perms.php @@ -21,7 +21,7 @@ class Horde_Core_Binder_Perms implements Horde_Injector_Binder array_merge(Horde::getDriverConfig('datatree', $dt_driver), array('group' => 'horde.perms')) ); } elseif (strcasecmp($driver, 'Sql') === 0) { - $params['db'] = $injector->getInstance('Horde_Db_Adapter_Base'); + $params['db'] = $injector->getInstance('Horde_Db')->getOb('horde', 'perms'); } $params['cache'] = $injector->getInstance('Horde_Cache'); diff --git a/framework/Core/lib/Horde/Core/Binder/SessionHandler.php b/framework/Core/lib/Horde/Core/Binder/SessionHandler.php index fe49be14c..f1005584c 100644 --- a/framework/Core/lib/Horde/Core/Binder/SessionHandler.php +++ b/framework/Core/lib/Horde/Core/Binder/SessionHandler.php @@ -20,7 +20,7 @@ class Horde_Core_Binder_SessionHandler implements Horde_Injector_Binder $params = Horde::getDriverConfig('sessionhandler', $driver); if (strcasecmp($driver, 'Sql') === 0) { - $params['db'] = $injector->getInstance('Horde_Db_Adapter_Base'); + $params['db'] = $injector->getInstance('Horde_Db')->getOb('horde', 'sessionhandler'); } elseif (strcasecmp($driver, 'Memcache') === 0) { $params['memcache'] = $injector->getInstance('Horde_Memcache'); } diff --git a/framework/Core/lib/Horde/Core/Binder/Token.php b/framework/Core/lib/Horde/Core/Binder/Token.php index 9624ac8e8..7b8e5b5a6 100644 --- a/framework/Core/lib/Horde/Core/Binder/Token.php +++ b/framework/Core/lib/Horde/Core/Binder/Token.php @@ -15,7 +15,7 @@ class Horde_Core_Binder_Token implements Horde_Injector_Binder : array(); if (strcasecmp($driver, 'Sql') === 0) { - $params['db'] = $injector->getInstance('Horde_Db_Adapter_Base'); + $params['db'] = $injector->getInstance('Horde_Db')->getOb('horde', 'token'); } elseif (strcasecmp($driver, 'None') === 0) { $driver = 'Null'; } diff --git a/framework/Core/lib/Horde/Core/Factory/Db.php b/framework/Core/lib/Horde/Core/Factory/Db.php new file mode 100644 index 000000000..3c4281d45 --- /dev/null +++ b/framework/Core/lib/Horde/Core/Factory/Db.php @@ -0,0 +1,146 @@ + + * @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 Horde_Db_Adapter_Base + * 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 + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Core + */ +class Horde_Core_Factory_Db +{ + /** + * 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 $app The application. + * @param string $type The type. + * + * @return Horde_Db_Adapter_Base The singleton instance. + * @throws Horde_Exception + * @throws Horde_Db_Exception + */ + public function getOb($app = 'horde', $type = null) + { + $sig = $app . '|' . $type; + + if (isset($this->_instances[$sig])) { + return $this->_instances[$sig]; + } + + $pushed = ($app == 'horde') + ? false + : $GLOBALS['registry']->pushApp($app); + + $config = Horde::getDriverConfig($type, 'sql'); + + /* Determine if we are using the base SQL config. */ + if (isset($config['driverconfig']) && + ($config['driverconfig'] == 'horde')) { + $this->_instances[$sig] = $this->getOb(); + return $this->_instances[$sig]; + } + + try { + $this->_instances[$sig] = $this->_createDb($config); + } catch (Horde_Exception $e) { + if ($pushed) { + $GLOBALS['registry']->popApp(); + } + throw $e; + } + + if ($pushed) { + $GLOBALS['registry']->popApp(); + } + + return $this->_instances[$sig]; + } + + /** + */ + protected function _createDb($config) + { + if (!empty($config['splitread'])) { + unset($config['splitread']); + $config['write_db'] = $this->_createDb($config); + $config = array_merge($config, $config['read']); + } + + if (!isset($config['adapter'])) { + if ($config['phptype'] == 'oci8') { + $config['phptype'] = 'oci'; + } + $config['adapter'] = ($config['phptype'] == 'mysqli') + ? 'mysqli' + : 'pdo_' . $config['phptype']; + } + + if (!empty($config['hostspec'])) { + $config['host'] = $config['hostspec']; + } + + $adapter = str_replace(' ', '_' , ucwords(str_replace('_', ' ', basename($config['adapter'])))); + $class = 'Horde_Db_Adapter_' . $adapter; + + if (class_exists($class)) { + $ob = new $class($config); + + if (!isset($config['cache'])) { + $ob->setCache($this->_injector->getInstance('Horde_Cache')); + } + + if (!isset($config['logger'])) { + $ob->setLogger($this->_injector->getInstance('Horde_Log_Logger')); + } + + return $ob; + } + + throw new Horde_Exception('Adapter class "' . $class . '" not found'); + } + +} diff --git a/framework/Core/lib/Horde/Registry.php b/framework/Core/lib/Horde/Registry.php index 879fd218f..26b8d3736 100644 --- a/framework/Core/lib/Horde/Registry.php +++ b/framework/Core/lib/Horde/Registry.php @@ -235,7 +235,8 @@ class Horde_Registry 'Horde_Cache' => new Horde_Core_Binder_Cache(), 'Horde_Core_Auth_Signup' => new Horde_Core_Binder_AuthSignup(), 'Horde_Data' => new Horde_Core_Binder_Data(), - 'Horde_Db_Adapter_Base' => new Horde_Core_Binder_Db(), + 'Horde_Db' => new Horde_Core_Binder_Db(), + 'Horde_Db_Base' => new Horde_Core_Binder_DbBase(), 'Horde_Db_Pear' => new Horde_Core_Binder_DbPear(), 'Horde_Editor' => new Horde_Core_Binder_Editor(), 'Horde_History' => new Horde_Core_Binder_History(), diff --git a/framework/Core/package.xml b/framework/Core/package.xml index 55c38f9aa..3fa61bfed 100644 --- a/framework/Core/package.xml +++ b/framework/Core/package.xml @@ -83,6 +83,7 @@ Application Framework. + @@ -105,6 +106,7 @@ Application Framework. + @@ -271,6 +273,7 @@ Application Framework. + @@ -291,6 +294,7 @@ Application Framework. + diff --git a/framework/Image/tests/im.php b/framework/Image/tests/im.php index 175ecad56..741f3788c 100644 --- a/framework/Image/tests/im.php +++ b/framework/Image/tests/im.php @@ -7,9 +7,9 @@ * * @package Horde_Image */ + require_once dirname(__FILE__) . '/../../../horde/lib/Application.php'; Horde_Registry::appInit('horde', array('authentication' => 'none')); -$db = $GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base'); // Putting these here so they don't interfere with timing/memory data when // profiling. @@ -471,7 +471,8 @@ function logThis($effect, $time, $memory) $logger->debug("$driver, $effect, $time, $memory"); -// global $driver, $logger, $db; +// global $driver, $logger; +// $db = $GLOBALS['injector']->getInstance('Horde_Db_Base'); // $sql = "INSERT INTO image_tests (test, driver, peak_memory, execution_time) VALUES (?, ?, ?, ?);"; // $db->insert($sql, array('test' => $effect, // 'driver' => $driver, diff --git a/framework/Rdo/examples/Horde/Rdo/Clotho.php b/framework/Rdo/examples/Horde/Rdo/Clotho.php index e9f70674b..f14cb886e 100644 --- a/framework/Rdo/examples/Horde/Rdo/Clotho.php +++ b/framework/Rdo/examples/Horde/Rdo/Clotho.php @@ -31,7 +31,7 @@ class Clotho_Mapper extends Horde_Rdo_Mapper { public function getAdapter() { - return $GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base'); + return $GLOBALS['injector']->getInstance('Horde_Db_Base'); } } diff --git a/framework/Rdo/examples/Horde/Rdo/User.php b/framework/Rdo/examples/Horde/Rdo/User.php index 517781074..31ad59635 100644 --- a/framework/Rdo/examples/Horde/Rdo/User.php +++ b/framework/Rdo/examples/Horde/Rdo/User.php @@ -21,7 +21,7 @@ class UserMapper extends Horde_Rdo_Mapper { public function getAdapter() { - return $GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base'); + return $GLOBALS['injector']->getInstance('Horde_Db_Base'); } } diff --git a/framework/admintools/horde-sql-shell.php b/framework/admintools/horde-sql-shell.php index 2522b66f0..fe72c2df0 100755 --- a/framework/admintools/horde-sql-shell.php +++ b/framework/admintools/horde-sql-shell.php @@ -16,7 +16,7 @@ Horde_Registry::appInit('horde', array( 'cli' => true )); -$dbh = $injector->getInstance('Horde_Db_Adapter_Base'); +$dbh = $injector->getInstance('Horde_Db_Base'); // read sql file for statements to run $statements = new Horde_Db_StatementParser($_SERVER['argv'][1]); diff --git a/horde/admin/activesync.php b/horde/admin/activesync.php index 9a206ae12..38cbb9354 100644 --- a/horde/admin/activesync.php +++ b/horde/admin/activesync.php @@ -19,10 +19,10 @@ if ($actionID) { $deviceID = Horde_Util::getPost('deviceID'); /* Get the state machine */ - $state_params = $GLOBALS['conf']['activesync']['state']['params']; - $state_params['db'] = $GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base'); + $state_params = $conf['activesync']['state']['params']; + $state_params['db'] = $injector->getInstance('Horde_Db_Base'); $stateMachine = new Horde_ActiveSync_State_History($state_params); - $stateMachine->setLogger($GLOBALS['injector']->getInstance('Horde_Log_Logger')); + $stateMachine->setLogger($injector->getInstance('Horde_Log_Logger')); switch ($actionID) { case 'wipe': @@ -42,9 +42,9 @@ if ($actionID) { } Horde::addScriptFile('activesyncadmin.js'); -if (!empty($GLOBALS['conf']['activesync']['enabled'])) { - $state_params = $GLOBALS['conf']['activesync']['state']['params']; - $state_params['db'] = $GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base'); +if (!empty($conf['activesync']['enabled'])) { + $state_params = $conf['activesync']['state']['params']; + $state_params['db'] = $injector->getInstance('Horde_Db_Base'); $stateMachine = new Horde_ActiveSync_State_History($state_params); } else { throw new Horde_Exception_PermissionDenied(_("ActiveSync not activated.")); diff --git a/horde/bin/db_migrate b/horde/bin/db_migrate index 1451e3d94..ce314901d 100755 --- a/horde/bin/db_migrate +++ b/horde/bin/db_migrate @@ -27,7 +27,7 @@ if (empty($args[0])) { } $app = $args[0]; -if (!in_array($app, $GLOBALS['registry']->listApps(array('inactive', 'hidden', 'notoolbar', 'admin', 'active')))) { +if (!in_array($app, $registry->listApps(array('inactive', 'hidden', 'notoolbar', 'admin', 'active')))) { $cli->fatal("$app is not a configured Horde application"); } @@ -49,7 +49,7 @@ if (!empty($args[1])) { // Run $dir = $registry->get('fileroot', $app) . '/migration/'; -$db = $injector->getInstance('Horde_Db_Adapter_Base'); +$db = $injector->getInstance('Horde_Db_Base'); $logger = new Horde_Log_Logger(new Horde_Log_Handler_Stream(STDOUT)); $migrator = new Horde_Db_Migration_Migrator($db, $logger, array('migrationsPath' => $dir, 'schemaTableName' => $app . '_schema_info')); diff --git a/horde/lib/Prefs/Ui.php b/horde/lib/Prefs/Ui.php index 3346dd3fb..6bc978569 100644 --- a/horde/lib/Prefs/Ui.php +++ b/horde/lib/Prefs/Ui.php @@ -406,7 +406,7 @@ class Horde_Prefs_Ui { if (!empty($GLOBALS['conf']['activesync']['enabled'])) { $state_params = $GLOBALS['conf']['activesync']['state']['params']; - $state_params['db'] = $GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base'); + $state_params['db'] = $GLOBALS['injector']->getInstance('Horde_Db_Base'); $stateMachine = new Horde_ActiveSync_State_History($state_params); } else { return _("ActiveSync not activated."); @@ -691,7 +691,7 @@ class Horde_Prefs_Ui protected function _updateActiveSyncManagement($ui) { $state_params = $GLOBALS['conf']['activesync']['state']['params']; - $state_params['db'] = $GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base'); + $state_params['db'] = $GLOBALS['injector']->getInstance('Horde_Db_Base'); $stateMachine = new Horde_ActiveSync_State_History($state_params); $stateMachine->setLogger($GLOBALS['injector']->getInstance('Horde_Log_Logger')); if ($ui->vars->wipeid) { diff --git a/horde/rpc.php b/horde/rpc.php index 5068914c3..7d8e75f9e 100644 --- a/horde/rpc.php +++ b/horde/rpc.php @@ -42,35 +42,35 @@ if ((!empty($_SERVER['CONTENT_TYPE']) && Horde_Registry::appInit('horde', array('authentication' => 'none', 'nocompress' => $nocompress, 'session_control' => $session_control)); /* Check if we are even enabled for AS */ - if (!empty($GLOBALS['conf']['activesync']['enabled'])) { + if (!empty($conf['activesync']['enabled'])) { $request = new Horde_Controller_Request_Http(array('session_control' => $session_control)); - if ($GLOBALS['conf']['activesync']['logging']['type'] == 'custom') { + if ($conf['activesync']['logging']['type'] == 'custom') { $params['logger'] = new Horde_Log_Logger(new Horde_Log_Handler_Stream(fopen($conf['activesync']['logging']['path'], 'a'))); } else { - $params['logger'] = $GLOBALS['injector']->getInstance('Horde_Log_Logger'); + $params['logger'] = $injector->getInstance('Horde_Log_Logger'); } - $mailer = $GLOBALS['injector']->getInstance('Horde_Mail'); + $mailer = $injector->getInstance('Horde_Mail'); /* TODO: Probably want to bind a factory to injector for this? */ - $params['registry'] = $GLOBALS['registry']; + $params['registry'] = $registry; $connector = new Horde_ActiveSync_Driver_Horde_Connector_Registry($params); - switch ($GLOBALS['conf']['activesync']['state']['driver']) { + switch ($conf['activesync']['state']['driver']) { case 'file': - $stateMachine = new Horde_ActiveSync_State_File($GLOBALS['conf']['activesync']['state']['params']); + $stateMachine = new Horde_ActiveSync_State_File($conf['activesync']['state']['params']); break; case 'history': - $state_params = $GLOBALS['conf']['activesync']['state']['params']; - $state_params['db'] = $GLOBALS['injector']->getInstance('Horde_Db_Adapter_Base'); + $state_params = $conf['activesync']['state']['params']; + $state_params['db'] = $injector->getInstance('Horde_Db_Base'); $stateMachine = new Horde_ActiveSync_State_History($state_params); } - + $driver_params = array('connector' => $connector, 'state_basic' => $stateMachine, 'mail' => $mailer, - 'ping' => $GLOBALS['conf']['activesync']['ping']); + 'ping' => $conf['activesync']['ping']); - if ($params['provisioning'] = $GLOBALS['conf']['activesync']['securitypolicies']['provisioning']) { - $driver_params['policies'] = $GLOBALS['conf']['activesync']['securitypolicies']; + if ($params['provisioning'] = $conf['activesync']['securitypolicies']['provisioning']) { + $driver_params['policies'] = $conf['activesync']['securitypolicies']; } $params['backend'] = new Horde_ActiveSync_Driver_Horde($driver_params); $params['server'] = new Horde_ActiveSync($params['backend'], @@ -139,7 +139,7 @@ if (($ra = Horde_Util::getGet('requestMissingAuthorization')) !== null) { /* Make sure we have a logger */ if (empty($params['logger'])) { - $params['logger'] = $GLOBALS['injector']->getInstance('Horde_Log_Logger'); + $params['logger'] = $injector->getInstance('Horde_Log_Logger'); } /* Load the RPC backend based on $serverType. */ diff --git a/imp/lib/Injector/Binder/Sentmail.php b/imp/lib/Injector/Binder/Sentmail.php index e2a21805d..460119b3e 100644 --- a/imp/lib/Injector/Binder/Sentmail.php +++ b/imp/lib/Injector/Binder/Sentmail.php @@ -24,7 +24,7 @@ class IMP_Injector_Binder_Sentmail implements Horde_Injector_Binder $params = Horde::getDriverConfig('sentmail', $driver); if (strcasecmp($driver, 'Sql') === 0) { - $params['db'] = $injector->getInstance('Horde_Db_Adapter_Base'); + $params['db'] = $injector->getInstance('Horde_Db')->getOb('imp', 'sentmail'); } elseif (strcasecmp($driver, 'None') === 0) { $driver = 'Null'; }