Skip to content
Extraits de code Groupes Projets
Valider 614d0e82 rédigé par mattab's avatar mattab
Parcourir les fichiers

The long awaited DbHelper

parent ff93ec55
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -12,9 +12,10 @@
namespace Piwik\DataAccess;
use Exception;
use Piwik\Piwik;
use Piwik\Common;
use Piwik\Date;
use Piwik\DbHelper;
use Piwik\Piwik;
use Zend_Registry;
class ArchiveTableCreator
......@@ -52,7 +53,7 @@ class ArchiveTableCreator
if (!in_array($tableName, self::$tablesAlreadyInstalled)) {
$db = \Zend_Registry::get('db');
$sql = Piwik::getTableCreateSql($tableNamePrefix);
$sql = DbHelper::getTableCreateSql($tableNamePrefix);
// replace table name template by real name
$tableNamePrefix = Common::prefixTable($tableNamePrefix);
......
......@@ -15,6 +15,7 @@ use Piwik\AssetManager;
use Piwik\Common;
use Piwik\Config;
use Piwik\Db;
use Piwik\DbHelper;
use Piwik\Piwik;
use Piwik\SettingsServer;
use Zend_Registry;
......@@ -75,7 +76,7 @@ class BatchInsert
);
// hack for charset mismatch
if (!Piwik::isDatabaseConnectionUTF8() && !isset(Config::getInstance()->database['charset'])) {
if (!DbHelper::isDatabaseConnectionUTF8() && !isset(Config::getInstance()->database['charset'])) {
$fileSpec['charset'] = 'latin1';
}
......
......@@ -11,15 +11,14 @@
namespace Piwik\Db\Schema;
use Exception;
use Piwik\Config;
use Piwik\Db\SchemaInterface;
use Piwik\Piwik;
use Piwik\Common;
use Piwik\Config;
use Piwik\Date;
use Piwik\Db\SchemaInterface;
use Piwik\Db;
use Piwik\DbHelper;
use Zend_Registry;
/**
* MySQL schema
*
......@@ -414,7 +413,7 @@ class Myisam implements SchemaInterface
*/
public function getTableCreateSql($tableName)
{
$tables = Piwik::getTablesCreateSql();
$tables = DbHelper::getTablesCreateSql();
if (!isset($tables[$tableName])) {
throw new Exception("The table '$tableName' SQL creation code couldn't be found.");
......
......@@ -260,7 +260,7 @@ class FrontController
}
try {
Piwik::createDatabaseObject();
DbHelper::createDatabaseObject();
} catch (Exception $e) {
if (self::shouldRethrowException()) {
throw $e;
......
......@@ -553,70 +553,6 @@ class Piwik
Url::redirectToUrl($newUrl);
}
/*
* Global database object
*/
/**
* Create database object and connect to database
* @param array|null $dbInfos
*/
static public 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);
}
/**
* Disconnect from database
*/
static public function disconnectDatabase()
{
\Zend_Registry::get('db')->closeConnection();
}
/**
* Checks the database server version against the required minimum
* version.
*
* @see config/global.ini.php
* @since 0.4.4
* @throws Exception if server version is less than the required version
*/
static public function checkDatabaseVersion()
{
\Zend_Registry::get('db')->checkServerVersion();
}
/**
* Check database connection character set is utf8.
*
* @return bool True if it is (or doesn't matter); false otherwise
*/
static public function isDatabaseConnectionUTF8()
{
return \Zend_Registry::get('db')->isConnectionUTF8();
}
/*
* Global log object
*/
/*
* User input validation
*/
......@@ -662,63 +598,6 @@ class Piwik
* Database and table definition methods
*/
/**
* Is the schema available?
*
* @return bool True if schema is available; false otherwise
*/
static public function isAvailable()
{
return Schema::getInstance()->isAvailable();
}
/**
* Get the SQL to create a specific Piwik table
*
* @param string $tableName
* @return string SQL
*/
static public function getTableCreateSql($tableName)
{
return Schema::getInstance()->getTableCreateSql($tableName);
}
/**
* Get the SQL to create Piwik tables
*
* @return array array of strings containing SQL
*/
static public function getTablesCreateSql()
{
return Schema::getInstance()->getTablesCreateSql();
}
/**
* Create database
*
* @param string|null $dbName
*/
static public function createDatabase($dbName = null)
{
Schema::getInstance()->createDatabase($dbName);
}
/**
* Drop database
*/
static public function dropDatabase()
{
Schema::getInstance()->dropDatabase();
}
/**
* Create all tables
*/
static public function createTables()
{
Schema::getInstance()->createTables();
}
/**
* Creates an entry in the User table for the "anonymous" user.
*/
......
......@@ -370,7 +370,7 @@ class Tracker
try {
$db = \Zend_Registry::get('db');
} catch (Exception $e) {
Piwik::createDatabaseObject();
DbHelper::createDatabaseObject();
}
$pluginsManager = PluginsManager::getInstance();
......
......@@ -50,3 +50,4 @@ if (!defined('PIWIK_ENABLE_DISPATCH') || PIWIK_ENABLE_DISPATCH) {
$controller->init();
$controller->dispatch();
}
\Piwik\DbHelper::dropDatabase();
\ No newline at end of file
......@@ -18,6 +18,7 @@ use Piwik\Config;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Db\Adapter;
use Piwik\Db;
use Piwik\DbHelper;
use Piwik\Filechecks;
use Piwik\Filesystem;
use Piwik\Http;
......@@ -185,7 +186,7 @@ class Controller extends \Piwik\Controller\Admin
$dbInfos = $form->createDatabaseObject();
$this->session->databaseCreated = true;
Piwik::checkDatabaseVersion();
DbHelper::checkDatabaseVersion();
$this->session->databaseVersionOk = true;
$this->session->db_infos = $dbInfos;
......@@ -242,7 +243,7 @@ class Controller extends \Piwik\Controller\Admin
$error = true;
}
if (!Piwik::isDatabaseConnectionUTF8()) {
if (!DbHelper::isDatabaseConnectionUTF8()) {
$dbInfos = $this->session->db_infos;
$dbInfos['charset'] = 'utf8';
$this->session->db_infos = $dbInfos;
......@@ -311,7 +312,7 @@ class Controller extends \Piwik\Controller\Admin
$this->session->skipThisStep = $tmp;
}
} else {
Piwik::createTables();
DbHelper::createTables();
Piwik::createAnonymousUser();
$updater = new Updater();
......@@ -543,7 +544,7 @@ class Controller extends \Piwik\Controller\Admin
{
$dbInfos = $this->session->db_infos;
Config::getInstance()->database = $dbInfos;
Piwik::createDatabaseObject($dbInfos);
DbHelper::createDatabaseObject($dbInfos);
}
/**
......
......@@ -15,8 +15,8 @@ use HTML_QuickForm2_DataSource_Array;
use HTML_QuickForm2_Factory;
use HTML_QuickForm2_Rule;
use Piwik\Db\Adapter;
use Piwik\DbHelper;
use Piwik\Filesystem;
use Piwik\Piwik;
use Piwik\QuickForm2;
use Zend_Db_Adapter_Exception;
......@@ -120,7 +120,7 @@ class FormDatabaseSetup extends QuickForm2
}
try {
@Piwik::createDatabaseObject($dbInfos);
@DbHelper::createDatabaseObject($dbInfos);
} catch (Zend_Db_Adapter_Exception $e) {
$db = Adapter::factory($adapter, $dbInfos, $connect = false);
......@@ -128,11 +128,11 @@ class FormDatabaseSetup extends QuickForm2
if ($db->isErrNo($e, '1049')) {
$dbInfosConnectOnly = $dbInfos;
$dbInfosConnectOnly['dbname'] = null;
@Piwik::createDatabaseObject($dbInfosConnectOnly);
@Piwik::createDatabase($dbInfos['dbname']);
@DbHelper::createDatabaseObject($dbInfosConnectOnly);
@DbHelper::createDatabase($dbInfos['dbname']);
// select the newly created database
@Piwik::createDatabaseObject($dbInfos);
@DbHelper::createDatabaseObject($dbInfos);
} else {
throw $e;
}
......
Subproject commit 7d4f2ea0d63886eda79087ef5884be12bf63b318
......@@ -8,7 +8,7 @@
use Piwik\Config;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\DataTable\Manager;
use Piwik\Piwik;
use Piwik\DbHelper;
use Piwik\Option;
use Piwik\Plugins\PDFReports\API;
use Piwik\Site;
......@@ -38,14 +38,14 @@ class DatabaseTestCase extends PHPUnit_Framework_TestCase
$dbName = $dbConfig['dbname'];
$dbConfig['dbname'] = null;
Piwik::createDatabaseObject($dbConfig);
DbHelper::createDatabaseObject($dbConfig);
Piwik::dropDatabase();
Piwik::createDatabase($dbName);
Piwik::disconnectDatabase();
DbHelper::dropDatabase();
DbHelper::createDatabase($dbName);
DbHelper::disconnectDatabase();
Piwik::createDatabaseObject();
Piwik::createTables();
DbHelper::createDatabaseObject();
DbHelper::createTables();
\Piwik\Log::make();
// \Piwik\PluginsManager::getInstance()->loadPlugins(array());
......@@ -69,7 +69,7 @@ class DatabaseTestCase extends PHPUnit_Framework_TestCase
{
parent::tearDown();
IntegrationTestCase::unloadAllPlugins();
Piwik::dropDatabase();
DbHelper::dropDatabase();
Manager::getInstance()->deleteAll();
Option::getInstance()->clearCache();
API::$cache = array();
......
......@@ -15,6 +15,7 @@ use Piwik\Config;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\DataTable\Manager;
use Piwik\Db;
use Piwik\DbHelper;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugins\LanguagesManager\API;
......@@ -68,7 +69,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
$oldDbName = $dbConfig['dbname'];
$dbConfig['dbname'] = null;
Piwik::createDatabaseObject($dbConfig);
DbHelper::createDatabaseObject($dbConfig);
$dbConfig['dbname'] = $oldDbName;
}
......@@ -157,16 +158,16 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
self::connectWithoutDatabase();
if ($createEmptyDatabase) {
Piwik::dropDatabase();
DbHelper::dropDatabase();
}
Piwik::createDatabase($dbName);
Piwik::disconnectDatabase();
DbHelper::createDatabase($dbName);
DbHelper::disconnectDatabase();
// reconnect once we're sure the database exists
Config::getInstance()->database['dbname'] = $dbName;
Piwik::createDatabaseObject();
DbHelper::createDatabaseObject();
Piwik::createTables();
DbHelper::createTables();
\Piwik\Log::make();
\Piwik\PluginsManager::getInstance()->loadPlugins(array());
......@@ -230,7 +231,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
}
\Piwik\PluginsManager::getInstance()->unloadPlugins();*/
if ($dropDatabase) {
Piwik::dropDatabase();
DbHelper::dropDatabase();
}
Manager::getInstance()->deleteAll();
Option::getInstance()->clearCache();
......@@ -1103,7 +1104,7 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
if (strpos($table, 'archive_') !== false && !in_array($table, $existingTables)) {
$tableType = strpos($table, 'archive_numeric') !== false ? 'archive_numeric' : 'archive_blob';
$createSql = Piwik::getTableCreateSql($tableType);
$createSql = DbHelper::getTableCreateSql($tableType);
$createSql = str_replace(Common::prefixTable($tableType), $table, $createSql);
Db::query($createSql);
}
......
......@@ -5,10 +5,10 @@
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
use Piwik\Date;
use Piwik\Piwik;
use Piwik\Access;
use Piwik\AssetManager;
use Piwik\Date;
use Piwik\DbHelper;
use Piwik\Plugins\VisitsSummary\API;
abstract class UITest extends IntegrationTestCase
......@@ -79,7 +79,7 @@ abstract class UITest extends IntegrationTestCase
self::removeRecursiveLinks();
if (!Zend_Registry::get('db')) {
Piwik::createDatabaseObject();
DbHelper::createDatabaseObject();
}
parent::tearDownAfterClass();
......@@ -90,7 +90,7 @@ abstract class UITest extends IntegrationTestCase
parent::setUp();
if (!Zend_Registry::get('db')) {
Piwik::createDatabaseObject();
DbHelper::createDatabaseObject();
}
}
......
......@@ -6,6 +6,8 @@
use Piwik\Http;
define('PIWIK_TEST_MODE', true);
if (!defined("PIWIK_PATH_TEST_TO_ROOT")) {
define('PIWIK_PATH_TEST_TO_ROOT', realpath(dirname(__FILE__) . '/../..'));
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter