diff options
author | Benaka Moorthi <benaka.moorthi@gmail.com> | 2013-09-24 06:58:51 +0400 |
---|---|---|
committer | Benaka Moorthi <benaka.moorthi@gmail.com> | 2013-09-24 06:58:51 +0400 |
commit | 48681dd582fbc9f840183cad28cc3e4dd3418d05 (patch) | |
tree | 88008786b75c8a3a342f6e784413430a9c0779e2 /core | |
parent | ae5fc3786a19f67202e2e83fd83e9e67657e8173 (diff) |
Remove use of Zend_Registry to hold DB connections.
Diffstat (limited to 'core')
-rw-r--r-- | core/API/Proxy.php | 15 | ||||
-rw-r--r-- | core/ArchiveProcessor.php | 4 | ||||
-rw-r--r-- | core/DataAccess/ArchiveTableCreator.php | 4 | ||||
-rw-r--r-- | core/DataAccess/ArchiveWriter.php | 4 | ||||
-rw-r--r-- | core/DataAccess/LogAggregator.php | 4 | ||||
-rw-r--r-- | core/Db.php | 52 | ||||
-rw-r--r-- | core/Db/BatchInsert.php | 5 | ||||
-rw-r--r-- | core/Db/Schema/Myisam.php | 11 | ||||
-rw-r--r-- | core/DbHelper.php | 31 | ||||
-rw-r--r-- | core/FrontController.php | 2 | ||||
-rw-r--r-- | core/Log.php | 2 | ||||
-rw-r--r-- | core/Profiler.php | 6 | ||||
-rw-r--r-- | core/Session.php | 3 | ||||
-rw-r--r-- | core/Tracker.php | 4 | ||||
-rw-r--r-- | core/Updater.php | 4 |
15 files changed, 69 insertions, 82 deletions
diff --git a/core/API/Proxy.php b/core/API/Proxy.php index 981452f41f..bfaf1fdac4 100644 --- a/core/API/Proxy.php +++ b/core/API/Proxy.php @@ -15,7 +15,6 @@ use Piwik\Common; use Piwik\Timer; use ReflectionClass; use ReflectionMethod; -use Zend_Registry; /** * Proxy is a singleton that has the knowledge of every method available, their parameters @@ -198,20 +197,6 @@ class Proxy // Restore the request $_GET = $saveGET; $_SERVER['QUERY_STRING'] = $saveQUERY_STRING; - - // log the API Call - try { - \Zend_Registry::get('logger_api_call')->logEvent( - $className, - $methodName, - $parameterNamesDefaultValues, - $finalParameters, - $timer->getTimeMs(), - $returnedValue - ); - } catch (Exception $e) { - // logger can fail (eg. Tracker request) - } } catch (Exception $e) { $_GET = $saveGET; throw $e; diff --git a/core/ArchiveProcessor.php b/core/ArchiveProcessor.php index a9b689e468..74ec976335 100644 --- a/core/ArchiveProcessor.php +++ b/core/ArchiveProcessor.php @@ -17,10 +17,10 @@ use Piwik\Piwik; use Piwik\Date; use Piwik\Segment; use Piwik\Site; +use Piwik\Db; use Piwik\DataAccess\ArchiveSelector; use Piwik\DataAccess\ArchiveWriter; use Piwik\DataAccess\LogAggregator; -use Zend_Registry; /** * The ArchiveProcessor class is used by the Archive object to make sure the given Archive is processed and available in the DB. @@ -424,7 +424,7 @@ abstract class ArchiveProcessor protected function compress($data) { - if (Zend_Registry::get('db')->hasBlobDataType()) { + if (Db::get()->hasBlobDataType()) { return gzcompress($data); } return $data; diff --git a/core/DataAccess/ArchiveTableCreator.php b/core/DataAccess/ArchiveTableCreator.php index 16fe7d2a23..d6681fa5ae 100644 --- a/core/DataAccess/ArchiveTableCreator.php +++ b/core/DataAccess/ArchiveTableCreator.php @@ -15,7 +15,7 @@ use Exception; use Piwik\Common; use Piwik\Date; use Piwik\DbHelper; -use Zend_Registry; +use Piwik\Db; class ArchiveTableCreator { @@ -51,7 +51,7 @@ class ArchiveTableCreator } if (!in_array($tableName, self::$tablesAlreadyInstalled)) { - $db = \Zend_Registry::get('db'); + $db = Db::get(); $sql = DbHelper::getTableCreateSql($tableNamePrefix); // replace table name template by real name diff --git a/core/DataAccess/ArchiveWriter.php b/core/DataAccess/ArchiveWriter.php index e6070ae958..a3a11a68f5 100644 --- a/core/DataAccess/ArchiveWriter.php +++ b/core/DataAccess/ArchiveWriter.php @@ -87,7 +87,7 @@ class ArchiveWriter $numericTable = $this->getTableNumeric(); $idSite = $this->idSite; - $db = \Zend_Registry::get('db'); + $db = Db::get(); $locked = self::PREFIX_SQL_LOCK . Common::generateUniqId(); $date = date("Y-m-d H:i:s"); $dbLockName = "allocateNewArchiveId.$numericTable"; @@ -108,7 +108,7 @@ class ArchiveWriter try { // TODO: this is temporary, remove when deadlocking issue is fixed $db->exec($insertSql); } catch (Exception $ex) { - if (\Zend_Registry::get('db')->isErrNo($ex, 1213)) { + if (Db::get()->isErrNo($ex, 1213)) { $deadlockInfo = \Piwik\Db::fetchAll("SHOW ENGINE INNODB STATUS"); Piwik::log("DEADLOCK INFO: " . print_r($deadlockInfo)); } diff --git a/core/DataAccess/LogAggregator.php b/core/DataAccess/LogAggregator.php index afc262529f..d2aa52f014 100644 --- a/core/DataAccess/LogAggregator.php +++ b/core/DataAccess/LogAggregator.php @@ -17,8 +17,8 @@ use Piwik\Date; use Piwik\Segment; use Piwik\Site; use Piwik\RankingQuery; +use Piwik\Db; use Piwik\Tracker\GoalManager; -use Zend_Registry; /** * This class queries the Visitor logs tables (visits, actions, conversions, ecommerce) @@ -518,6 +518,6 @@ class LogAggregator public function getDb() { - return \Zend_Registry::get('db'); + return Db::get(); } } diff --git a/core/Db.php b/core/Db.php index 223a2a6639..ef2f756f9d 100644 --- a/core/Db.php +++ b/core/Db.php @@ -9,8 +9,11 @@ * @package PluginsFunctions */ namespace Piwik; + use Exception; +use Piwik\Db\Adapter; use Piwik\Tracker; +use Piwik\Config; /** * SQL wrapper @@ -19,24 +22,51 @@ use Piwik\Tracker; */ class Db { + private static $connection = null; + /** * Returns the database adapter to use * * @return \Piwik\Tracker\Db|\Piwik\Db\AdapterInterface */ - static private function getDb() + static public function get() { $db = null; if (!empty($GLOBALS['PIWIK_TRACKER_MODE'])) { $db = Tracker::getDatabase(); } if ($db === null) { - $db = \Zend_Registry::get('db'); + $db = self::$connection; } return $db; } /** + * Create database object and connect to database + * @param array|null $dbInfos + */ + public static function createDatabaseObject($dbInfos = null) + { + $config = Config::getInstance(); + + if (is_null($dbInfos)) { + $dbInfos = $config->database; + } + + Piwik_PostEvent('Reporting.getDatabaseConfig', array(&$dbInfos)); + + $dbInfos['profiler'] = $config->Debug['enable_sql_profiler']; + + $db = null; + Piwik_PostEvent('Reporting.createDatabase', array(&$db)); + if (is_null($db)) { + $adapter = $dbInfos['adapter']; + $db = @Adapter::factory($adapter, $dbInfos); + } + self::$connection = $db; + } + + /** * Executes an unprepared SQL query on the DB. Recommended for DDL statements, e.g., CREATE/DROP/ALTER. * The return result is DBMS-specific. For MySQLI, it returns the number of rows affected. For PDO, it returns the Zend_Db_Statement object * If you want to fetch data from the DB you should use the function Db::fetchAll() @@ -47,10 +77,10 @@ class Db static public function exec($sql) { /** @var \Zend_Db_Adapter_Abstract $db */ - $db = \Zend_Registry::get('db'); + $db = self::get(); $profiler = $db->getProfiler(); $q = $profiler->queryStart($sql, \Zend_Db_Profiler::INSERT); - $return = self::getDb()->exec($sql); + $return = self::get()->exec($sql); $profiler->queryEnd($q); return $return; } @@ -67,7 +97,7 @@ class Db */ static public function query($sql, $parameters = array()) { - return self::getDb()->query($sql, $parameters); + return self::get()->query($sql, $parameters); } /** @@ -79,7 +109,7 @@ class Db */ static public function fetchAll($sql, $parameters = array()) { - return self::getDb()->fetchAll($sql, $parameters); + return self::get()->fetchAll($sql, $parameters); } /** @@ -91,7 +121,7 @@ class Db */ static public function fetchRow($sql, $parameters = array()) { - return self::getDb()->fetchRow($sql, $parameters); + return self::get()->fetchRow($sql, $parameters); } /** @@ -103,7 +133,7 @@ class Db */ static public function fetchOne($sql, $parameters = array()) { - return self::getDb()->fetchOne($sql, $parameters); + return self::get()->fetchOne($sql, $parameters); } /** @@ -115,7 +145,7 @@ class Db */ static public function fetchAssoc($sql, $parameters = array()) { - return self::getDb()->fetchAssoc($sql, $parameters); + return self::get()->fetchAssoc($sql, $parameters); } /** @@ -379,7 +409,7 @@ class Db */ $sql = 'SELECT GET_LOCK(?, 1)'; - $db = \Zend_Registry::get('db'); + $db = self::get(); while ($maxRetries > 0) { if ($db->fetchOne($sql, array($lockName)) == '1') { @@ -400,7 +430,7 @@ class Db { $sql = 'SELECT RELEASE_LOCK(?)'; - $db = \Zend_Registry::get('db'); + $db = self::get(); return $db->fetchOne($sql, array($lockName)) == '1'; } diff --git a/core/Db/BatchInsert.php b/core/Db/BatchInsert.php index 78a05546c9..019cd4d51c 100644 --- a/core/Db/BatchInsert.php +++ b/core/Db/BatchInsert.php @@ -18,7 +18,6 @@ use Piwik\Db; use Piwik\DbHelper; use Piwik\Piwik; use Piwik\SettingsServer; -use Zend_Registry; class BatchInsert { @@ -62,7 +61,7 @@ class BatchInsert { $filePath = PIWIK_USER_PATH . '/' . AssetManager::MERGED_FILE_DIR . $tableName . '-' . Common::generateUniqId() . '.csv'; - if (Zend_Registry::get('db')->hasBulkLoader()) { + if (Db::get()->hasBulkLoader()) { try { $fileSpec = array( 'delim' => "\t", @@ -185,7 +184,7 @@ class BatchInsert // echo $sql . ' ---- ' . $e->getMessage(); $code = $e->getCode(); $message = $e->getMessage() . ($code ? "[$code]" : ''); - if (!Zend_Registry::get('db')->isErrNo($e, '1148')) { + if (!Db::get()->isErrNo($e, '1148')) { Piwik::log(sprintf("LOAD DATA INFILE failed... Error was: %s", $message)); } $exceptions[] = "\n Try #" . (count($exceptions) + 1) . ': ' . $queryStart . ": " . $message; diff --git a/core/Db/Schema/Myisam.php b/core/Db/Schema/Myisam.php index 5f0a81c92f..58430ff071 100644 --- a/core/Db/Schema/Myisam.php +++ b/core/Db/Schema/Myisam.php @@ -17,7 +17,6 @@ use Piwik\Date; use Piwik\Db\SchemaInterface; use Piwik\Db; use Piwik\DbHelper; -use Zend_Registry; /** * MySQL schema @@ -35,7 +34,7 @@ class Myisam implements SchemaInterface */ static private function hasStorageEngine($engineName) { - $db = \Zend_Registry::get('db'); + $db = Db::get(); $allEngines = $db->fetchAssoc('SHOW ENGINES'); if (array_key_exists($engineName, $allEngines)) { $support = $allEngines[$engineName]['Support']; @@ -453,7 +452,7 @@ class Myisam implements SchemaInterface if (is_null($this->tablesInstalled) || $forceReload === true ) { - $db = \Zend_Registry::get('db'); + $db = Db::get(); $config = Config::getInstance(); $prefixTables = $config->database['tables_prefix']; @@ -516,7 +515,7 @@ class Myisam implements SchemaInterface */ public function createTables() { - $db = \Zend_Registry::get('db'); + $db = Db::get(); $config = Config::getInstance(); $prefixTables = $config->database['tables_prefix']; @@ -540,7 +539,7 @@ class Myisam implements SchemaInterface { // The anonymous user is the user that is assigned by default // note that the token_auth value is anonymous, which is assigned by default as well in the Login plugin - $db = \Zend_Registry::get('db'); + $db = Db::get(); $db->query("INSERT INTO " . Common::prefixTable("user") . " VALUES ( 'anonymous', '', 'anonymous', 'anonymous@example.org', 'anonymous', '" . Date::factory('now')->getDatetime() . "' );"); } @@ -564,7 +563,7 @@ class Myisam implements SchemaInterface public function dropTables($doNotDelete = array()) { $tablesAlreadyInstalled = $this->getTablesInstalled(); - $db = \Zend_Registry::get('db'); + $db = Db::get(); $doNotDeletePattern = '/(' . implode('|', $doNotDelete) . ')/'; diff --git a/core/DbHelper.php b/core/DbHelper.php index 67f4560192..91c6065e2b 100644 --- a/core/DbHelper.php +++ b/core/DbHelper.php @@ -94,7 +94,7 @@ class DbHelper */ public static function isDatabaseConnectionUTF8() { - return \Zend_Registry::get('db')->isConnectionUTF8(); + return Db::get()->isConnectionUTF8(); } /** @@ -107,7 +107,7 @@ class DbHelper */ public static function checkDatabaseVersion() { - \Zend_Registry::get('db')->checkServerVersion(); + Db::get()->checkServerVersion(); } /** @@ -115,32 +115,7 @@ class DbHelper */ public static function disconnectDatabase() { - \Zend_Registry::get('db')->closeConnection(); - } - - /** - * Create database object and connect to database - * @param array|null $dbInfos - */ - public static function createDatabaseObject($dbInfos = null) - { - $config = Config::getInstance(); - - if (is_null($dbInfos)) { - $dbInfos = $config->database; - } - - Piwik_PostEvent('Reporting.getDatabaseConfig', array(&$dbInfos)); - - $dbInfos['profiler'] = $config->Debug['enable_sql_profiler']; - - $db = null; - Piwik_PostEvent('Reporting.createDatabase', array(&$db)); - if (is_null($db)) { - $adapter = $dbInfos['adapter']; - $db = @Adapter::factory($adapter, $dbInfos); - } - \Zend_Registry::set('db', $db); + Db::get()->closeConnection(); } /** diff --git a/core/FrontController.php b/core/FrontController.php index c98c5e5005..89aaefd9ef 100644 --- a/core/FrontController.php +++ b/core/FrontController.php @@ -259,7 +259,7 @@ class FrontController } try { - DbHelper::createDatabaseObject(); + Db::createDatabaseObject(); } catch (Exception $e) { if (self::shouldRethrowException()) { throw $e; diff --git a/core/Log.php b/core/Log.php index a2720098dd..bb2b624ee3 100644 --- a/core/Log.php +++ b/core/Log.php @@ -76,7 +76,7 @@ abstract class Log extends \Zend_Log function addWriteToDatabase() { $writerDb = new \Zend_Log_Writer_Db( - \Zend_Registry::get('db'), + Db::get(), $this->logToDatabaseTableName, $this->logToDatabaseColumnMapping); diff --git a/core/Profiler.php b/core/Profiler.php index 76acd914e7..b959e3990c 100644 --- a/core/Profiler.php +++ b/core/Profiler.php @@ -50,7 +50,7 @@ class Profiler */ public static function displayDbProfileReport() { - $profiler = \Zend_Registry::get('db')->getProfiler(); + $profiler = Db::get()->getProfiler(); if (!$profiler->getEnabled()) { throw new \Exception("To display the profiler you should enable enable_sql_profiler on your config/config.ini.php file"); @@ -144,7 +144,7 @@ class Profiler */ public static function getDbElapsedSecs() { - $profiler = \Zend_Registry::get('db')->getProfiler(); + $profiler = Db::get()->getProfiler(); return $profiler->getTotalElapsedSecs(); } @@ -155,7 +155,7 @@ class Profiler */ public static function getQueryCount() { - $profiler = \Zend_Registry::get('db')->getProfiler(); + $profiler = Db::get()->getProfiler(); return $profiler->getTotalNumQueries(); } diff --git a/core/Session.php b/core/Session.php index 6cf0ee21a8..221c62bac2 100644 --- a/core/Session.php +++ b/core/Session.php @@ -12,7 +12,6 @@ namespace Piwik; use Exception; use Piwik\Session\SaveHandler\DbTable; -use Zend_Registry; use Zend_Session; /** @@ -95,7 +94,7 @@ class Session extends Zend_Session // - user - we can't verify that user-defined session handler functions have already been set via session_set_save_handler() // - mm - this handler is not recommended, unsupported, not available for Windows, and has a potential concurrency issue - $db = \Zend_Registry::get('db'); + $db = Db::get(); $config = array( 'name' => Common::prefixTable('session'), diff --git a/core/Tracker.php b/core/Tracker.php index e4c819ae55..ad1f40e736 100644 --- a/core/Tracker.php +++ b/core/Tracker.php @@ -398,9 +398,9 @@ class Tracker $config = Config::getInstance(); try { - $db = \Zend_Registry::get('db'); + $db = Db::get(); } catch (Exception $e) { - DbHelper::createDatabaseObject(); + Db::createDatabaseObject(); } $pluginsManager = PluginsManager::getInstance(); diff --git a/core/Updater.php b/core/Updater.php index 9fef7ff41f..0783b964f3 100644 --- a/core/Updater.php +++ b/core/Updater.php @@ -249,7 +249,7 @@ class Updater $currentVersion = Piwik_GetOption('version_' . $name); } catch (\Exception $e) { // mysql error 1146: table doesn't exist - if (\Zend_Registry::get('db')->isErrNo($e, '1146')) { + if (Db::get()->isErrNo($e, '1146')) { // case when the option table is not yet created (before 0.2.10) $currentVersion = false; } else { @@ -294,7 +294,7 @@ class Updater Db::exec($update); } catch (\Exception $e) { if (($ignoreError === false) - || !\Zend_Registry::get('db')->isErrNo($e, $ignoreError) + || !Db::get()->isErrNo($e, $ignoreError) ) { $message = $file . ":\nError trying to execute the query '" . $update . "'.\nThe error was: " . $e->getMessage(); throw new Updater_UpdateErrorException($message); |