Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorBenaka Moorthi <benaka.moorthi@gmail.com>2013-09-24 06:58:51 +0400
committerBenaka Moorthi <benaka.moorthi@gmail.com>2013-09-24 06:58:51 +0400
commit48681dd582fbc9f840183cad28cc3e4dd3418d05 (patch)
tree88008786b75c8a3a342f6e784413430a9c0779e2 /core
parentae5fc3786a19f67202e2e83fd83e9e67657e8173 (diff)
Remove use of Zend_Registry to hold DB connections.
Diffstat (limited to 'core')
-rw-r--r--core/API/Proxy.php15
-rw-r--r--core/ArchiveProcessor.php4
-rw-r--r--core/DataAccess/ArchiveTableCreator.php4
-rw-r--r--core/DataAccess/ArchiveWriter.php4
-rw-r--r--core/DataAccess/LogAggregator.php4
-rw-r--r--core/Db.php52
-rw-r--r--core/Db/BatchInsert.php5
-rw-r--r--core/Db/Schema/Myisam.php11
-rw-r--r--core/DbHelper.php31
-rw-r--r--core/FrontController.php2
-rw-r--r--core/Log.php2
-rw-r--r--core/Profiler.php6
-rw-r--r--core/Session.php3
-rw-r--r--core/Tracker.php4
-rw-r--r--core/Updater.php4
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);