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
diff options
context:
space:
mode:
Diffstat (limited to 'core/Db/Schema/Myisam.php')
-rw-r--r--core/Db/Schema/Myisam.php484
1 files changed, 0 insertions, 484 deletions
diff --git a/core/Db/Schema/Myisam.php b/core/Db/Schema/Myisam.php
deleted file mode 100644
index 790e07db38..0000000000
--- a/core/Db/Schema/Myisam.php
+++ /dev/null
@@ -1,484 +0,0 @@
-<?php
-/**
- * Piwik - Open source web analytics
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
- * @version $Id$
- *
- * @category Piwik
- * @package Piwik
- */
-
-/**
- * MySQL schema
- *
- * @package Piwik
- * @subpackage Piwik_Db
- */
-class Piwik_Db_Schema_Myisam implements Piwik_Db_Schema_Interface
-{
- /**
- * Is this MySQL storage engine available?
- *
- * @param string $engineName
- * @return bool True if available and enabled; false otherwise
- */
- static private function hasStorageEngine($engineName)
- {
- $db = Zend_Registry::get('db');
- $allEngines = $db->fetchAssoc('SHOW ENGINES');
- if(key_exists($engineName, $allEngines))
- {
- $support = $allEngines[$engineName]['Support'];
- return $support == 'DEFAULT' || $support == 'YES';
- }
- return false;
- }
-
- /**
- * Is this schema available?
- *
- * @return bool True if schema is available; false otherwise
- */
- static public function isAvailable()
- {
- return self::hasStorageEngine('MyISAM');
- }
-
- /**
- * Get the SQL to create Piwik tables
- *
- * @return array of strings containing SQL
- */
- public function getTablesCreateSql()
- {
- $config = Zend_Registry::get('config');
- $prefixTables = $config->database->tables_prefix;
- $tables = array(
- 'user' => "CREATE TABLE {$prefixTables}user (
- login VARCHAR(100) NOT NULL,
- password CHAR(32) NOT NULL,
- alias VARCHAR(45) NOT NULL,
- email VARCHAR(100) NOT NULL,
- token_auth CHAR(32) NOT NULL,
- date_registered TIMESTAMP NULL,
- PRIMARY KEY(login),
- UNIQUE KEY uniq_keytoken(token_auth)
- ) DEFAULT CHARSET=utf8
- ",
-
- 'access' => "CREATE TABLE {$prefixTables}access (
- login VARCHAR(100) NOT NULL,
- idsite INTEGER UNSIGNED NOT NULL,
- access VARCHAR(10) NULL,
- PRIMARY KEY(login, idsite)
- ) DEFAULT CHARSET=utf8
- ",
-
- 'site' => "CREATE TABLE {$prefixTables}site (
- idsite INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT,
- name VARCHAR(90) NOT NULL,
- main_url VARCHAR(255) NOT NULL,
- ts_created TIMESTAMP NULL,
- timezone VARCHAR( 50 ) NOT NULL,
- currency CHAR( 3 ) NOT NULL,
- excluded_ips TEXT NOT NULL,
- excluded_parameters VARCHAR ( 255 ) NOT NULL,
- PRIMARY KEY(idsite)
- ) DEFAULT CHARSET=utf8
- ",
-
- 'site_url' => "CREATE TABLE {$prefixTables}site_url (
- idsite INTEGER(10) UNSIGNED NOT NULL,
- url VARCHAR(255) NOT NULL,
- PRIMARY KEY(idsite, url)
- ) DEFAULT CHARSET=utf8
- ",
-
- 'goal' => " CREATE TABLE `{$prefixTables}goal` (
- `idsite` int(11) NOT NULL,
- `idgoal` int(11) NOT NULL,
- `name` varchar(50) NOT NULL,
- `match_attribute` varchar(20) NOT NULL,
- `pattern` varchar(255) NOT NULL,
- `pattern_type` varchar(10) NOT NULL,
- `case_sensitive` tinyint(4) NOT NULL,
- `revenue` float NOT NULL,
- `deleted` tinyint(4) NOT NULL default '0',
- PRIMARY KEY (`idsite`,`idgoal`)
- ) DEFAULT CHARSET=utf8
- ",
-
- 'logger_message' => "CREATE TABLE {$prefixTables}logger_message (
- idlogger_message INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- timestamp TIMESTAMP NULL,
- message TEXT NULL,
- PRIMARY KEY(idlogger_message)
- ) DEFAULT CHARSET=utf8
- ",
-
- 'logger_api_call' => "CREATE TABLE {$prefixTables}logger_api_call (
- idlogger_api_call INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- class_name VARCHAR(255) NULL,
- method_name VARCHAR(255) NULL,
- parameter_names_default_values TEXT NULL,
- parameter_values TEXT NULL,
- execution_time FLOAT NULL,
- caller_ip INT UNSIGNED NULL,
- timestamp TIMESTAMP NULL,
- returned_value TEXT NULL,
- PRIMARY KEY(idlogger_api_call)
- ) DEFAULT CHARSET=utf8
- ",
-
- 'logger_error' => "CREATE TABLE {$prefixTables}logger_error (
- idlogger_error INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- timestamp TIMESTAMP NULL,
- message TEXT NULL,
- errno INTEGER UNSIGNED NULL,
- errline INTEGER UNSIGNED NULL,
- errfile VARCHAR(255) NULL,
- backtrace TEXT NULL,
- PRIMARY KEY(idlogger_error)
- ) DEFAULT CHARSET=utf8
- ",
-
- 'logger_exception' => "CREATE TABLE {$prefixTables}logger_exception (
- idlogger_exception INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- timestamp TIMESTAMP NULL,
- message TEXT NULL,
- errno INTEGER UNSIGNED NULL,
- errline INTEGER UNSIGNED NULL,
- errfile VARCHAR(255) NULL,
- backtrace TEXT NULL,
- PRIMARY KEY(idlogger_exception)
- ) DEFAULT CHARSET=utf8
- ",
-
- 'log_action' => "CREATE TABLE {$prefixTables}log_action (
- idaction INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT,
- name TEXT,
- hash INTEGER(10) UNSIGNED NOT NULL,
- type TINYINT UNSIGNED NULL,
- PRIMARY KEY(idaction),
- INDEX index_type_hash (type, hash)
- ) DEFAULT CHARSET=utf8
- ",
-
- 'log_visit' => "CREATE TABLE {$prefixTables}log_visit (
- idvisit INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT,
- idsite INTEGER(10) UNSIGNED NOT NULL,
- visitor_localtime TIME NOT NULL,
- visitor_idcookie CHAR(32) NOT NULL,
- visitor_returning TINYINT(1) NOT NULL,
- visit_first_action_time DATETIME NOT NULL,
- visit_last_action_time DATETIME NOT NULL,
- visit_server_date DATE NOT NULL,
- visit_exit_idaction_url INTEGER(11) NOT NULL,
- visit_entry_idaction_url INTEGER(11) NOT NULL,
- visit_total_actions SMALLINT(5) UNSIGNED NOT NULL,
- visit_total_time SMALLINT(5) UNSIGNED NOT NULL,
- visit_goal_converted TINYINT(1) NOT NULL,
- referer_type INTEGER UNSIGNED NULL,
- referer_name VARCHAR(70) NULL,
- referer_url TEXT NOT NULL,
- referer_keyword VARCHAR(255) NULL,
- config_md5config CHAR(32) NOT NULL,
- config_os CHAR(3) NOT NULL,
- config_browser_name VARCHAR(10) NOT NULL,
- config_browser_version VARCHAR(20) NOT NULL,
- config_resolution VARCHAR(9) NOT NULL,
- config_pdf TINYINT(1) NOT NULL,
- config_flash TINYINT(1) NOT NULL,
- config_java TINYINT(1) NOT NULL,
- config_director TINYINT(1) NOT NULL,
- config_quicktime TINYINT(1) NOT NULL,
- config_realplayer TINYINT(1) NOT NULL,
- config_windowsmedia TINYINT(1) NOT NULL,
- config_gears TINYINT(1) NOT NULL,
- config_silverlight TINYINT(1) NOT NULL,
- config_cookie TINYINT(1) NOT NULL,
- location_ip INT UNSIGNED NOT NULL,
- location_browser_lang VARCHAR(20) NOT NULL,
- location_country CHAR(3) NOT NULL,
- location_continent CHAR(3) NOT NULL,
- PRIMARY KEY(idvisit),
- INDEX index_idsite_idvisit (idsite, idvisit),
- INDEX index_idsite_date_config (idsite, visit_server_date, config_md5config(8)),
- INDEX index_idsite_datetime_config (idsite, visit_last_action_time, config_md5config(8))
- ) DEFAULT CHARSET=utf8
- ",
-
- 'log_conversion' => "CREATE TABLE `{$prefixTables}log_conversion` (
- idvisit int(10) unsigned NOT NULL,
- idsite int(10) unsigned NOT NULL,
- visitor_idcookie char(32) NOT NULL,
- server_time datetime NOT NULL,
- idaction_url int(11) default NULL,
- idlink_va int(11) default NULL,
- referer_idvisit int(10) unsigned default NULL,
- referer_visit_server_date date default NULL,
- referer_type int(10) unsigned default NULL,
- referer_name varchar(70) default NULL,
- referer_keyword varchar(255) default NULL,
- visitor_returning tinyint(1) NOT NULL,
- location_country char(3) NOT NULL,
- location_continent char(3) NOT NULL,
- url text NOT NULL,
- idgoal int(10) unsigned NOT NULL,
- revenue float default NULL,
- PRIMARY KEY (idvisit, idgoal),
- INDEX index_idsite_datetime ( idsite, server_time )
- ) DEFAULT CHARSET=utf8
- ",
-
- 'log_link_visit_action' => "CREATE TABLE {$prefixTables}log_link_visit_action (
- idlink_va INTEGER(11) NOT NULL AUTO_INCREMENT,
- idvisit INTEGER(10) UNSIGNED NOT NULL,
- idaction_url INTEGER(10) UNSIGNED NOT NULL,
- idaction_url_ref INTEGER(10) UNSIGNED NOT NULL,
- idaction_name INTEGER(10) UNSIGNED,
- time_spent_ref_action INTEGER(10) UNSIGNED NOT NULL,
- PRIMARY KEY(idlink_va),
- INDEX index_idvisit(idvisit)
- ) DEFAULT CHARSET=utf8
- ",
-
- 'log_profiling' => "CREATE TABLE {$prefixTables}log_profiling (
- query TEXT NOT NULL,
- count INTEGER UNSIGNED NULL,
- sum_time_ms FLOAT NULL,
- UNIQUE KEY query(query(100))
- ) DEFAULT CHARSET=utf8
- ",
-
- 'option' => "CREATE TABLE `{$prefixTables}option` (
- option_name VARCHAR( 64 ) NOT NULL,
- option_value LONGTEXT NOT NULL,
- autoload TINYINT NOT NULL DEFAULT '1',
- PRIMARY KEY ( option_name )
- ) DEFAULT CHARSET=utf8
- ",
-
- 'archive_numeric' => "CREATE TABLE {$prefixTables}archive_numeric (
- idarchive INTEGER UNSIGNED NOT NULL,
- name VARCHAR(255) NOT NULL,
- idsite INTEGER UNSIGNED NULL,
- date1 DATE NULL,
- date2 DATE NULL,
- period TINYINT UNSIGNED NULL,
- ts_archived DATETIME NULL,
- value FLOAT NULL,
- PRIMARY KEY(idarchive, name),
- INDEX index_idsite_dates_period(idsite, date1, date2, period, ts_archived),
- INDEX index_period_archived(period, ts_archived)
- ) DEFAULT CHARSET=utf8
- ",
-
- 'archive_blob' => "CREATE TABLE {$prefixTables}archive_blob (
- idarchive INTEGER UNSIGNED NOT NULL,
- name VARCHAR(255) NOT NULL,
- idsite INTEGER UNSIGNED NULL,
- date1 DATE NULL,
- date2 DATE NULL,
- period TINYINT UNSIGNED NULL,
- ts_archived DATETIME NULL,
- value MEDIUMBLOB NULL,
- PRIMARY KEY(idarchive, name),
- INDEX index_period_archived(period, ts_archived)
- ) DEFAULT CHARSET=utf8
- ",
- );
- return $tables;
- }
-
- /**
- * Get the SQL to create a specific Piwik table
- *
- * @param string $tableName
- * @return string SQL
- */
- public function getTableCreateSql( $tableName )
- {
- $tables = Piwik::getTablesCreateSql();
-
- if(!isset($tables[$tableName]))
- {
- throw new Exception("The table '$tableName' SQL creation code couldn't be found.");
- }
-
- return $tables[$tableName];
- }
-
- /**
- * Names of all the prefixed tables in piwik
- * Doesn't use the DB
- *
- * @return array Table names
- */
- public function getTablesNames()
- {
- $aTables = array_keys($this->getTablesCreateSql());
- $config = Zend_Registry::get('config');
- $prefixTables = $config->database->tables_prefix;
- $return = array();
- foreach($aTables as $table)
- {
- $return[] = $prefixTables.$table;
- }
- return $return;
- }
-
- private $tablesInstalled = null;
-
- /**
- * Get list of tables installed
- *
- * @param bool $forceReload Invalidate cache
- * @param string $idSite
- * @return array Tables installed
- */
- public function getTablesInstalled($forceReload = true, $idSite = null)
- {
- if(is_null($this->tablesInstalled)
- || $forceReload === true)
- {
- $db = Zend_Registry::get('db');
- $config = Zend_Registry::get('config');
- $prefixTables = $config->database->tables_prefix;
-
- $allTables = $db->fetchCol("SHOW TABLES");
-
- // all the tables to be installed
- $allMyTables = $this->getTablesNames();
-
- // we get the intersection between all the tables in the DB and the tables to be installed
- $tablesInstalled = array_intersect($allMyTables, $allTables);
-
- // at this point we have only the piwik tables which is good
- // but we still miss the piwik generated tables (using the class Piwik_TablePartitioning)
- $idSiteInSql = "no";
- if(!is_null($idSite))
- {
- $idSiteInSql = $idSite;
- }
- $allArchiveNumeric = $db->fetchCol("/* SHARDING_ID_SITE = ".$idSiteInSql." */
- SHOW TABLES LIKE '".$prefixTables."archive_numeric%'");
- $allArchiveBlob = $db->fetchCol("/* SHARDING_ID_SITE = ".$idSiteInSql." */
- SHOW TABLES LIKE '".$prefixTables."archive_blob%'");
-
- $allTablesReallyInstalled = array_merge($tablesInstalled, $allArchiveNumeric, $allArchiveBlob);
-
- $this->tablesInstalled = $allTablesReallyInstalled;
- }
- return $this->tablesInstalled;
- }
-
- /**
- * Do tables exist?
- *
- * @return bool True if tables exist; false otherwise
- */
- public function hasTables()
- {
- return count($this->getTablesInstalled()) != 0;
- }
-
- /**
- * Create database
- *
- * @param string $dbName
- */
- public function createDatabase( $dbName = null )
- {
- if(is_null($dbName))
- {
- $dbName = Zend_Registry::get('config')->database->dbname;
- }
- Piwik_Exec("CREATE DATABASE IF NOT EXISTS ".$dbName);
- }
-
- /**
- * Drop database
- */
- public function dropDatabase()
- {
- $dbName = Zend_Registry::get('config')->database->dbname;
- Piwik_Exec("DROP DATABASE IF EXISTS " . $dbName);
-
- }
-
- /**
- * Create all tables
- */
- public function createTables()
- {
- $db = Zend_Registry::get('db');
- $config = Zend_Registry::get('config');
- $prefixTables = $config->database->tables_prefix;
-
- $tablesAlreadyInstalled = $this->getTablesInstalled();
- $tablesToCreate = $this->getTablesCreateSql();
- unset($tablesToCreate['archive_blob']);
- unset($tablesToCreate['archive_numeric']);
-
- foreach($tablesToCreate as $tableName => $tableSql)
- {
- $tableName = $prefixTables . $tableName;
- if(!in_array($tableName, $tablesAlreadyInstalled))
- {
- $db->query( $tableSql );
- }
- }
- }
-
- /**
- * Creates an entry in the User table for the "anonymous" user.
- */
- public function createAnonymousUser()
- {
- // 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->query("INSERT INTO ". Piwik_Common::prefixTable("user") . "
- VALUES ( 'anonymous', '', 'anonymous', 'anonymous@example.org', 'anonymous', '".Piwik_Date::factory('now')->getDatetime()."' );" );
- }
-
- /**
- * Truncate all tables
- */
- public function truncateAllTables()
- {
- $tablesAlreadyInstalled = $this->getTablesInstalled($forceReload = true);
- foreach($tablesAlreadyInstalled as $table)
- {
- Piwik_Query("TRUNCATE `$table`");
- }
- }
-
- /**
- * Drop specific tables
- *
- * @param array $doNotDelete Names of tables to not delete
- */
- public function dropTables( $doNotDelete = array() )
- {
- $tablesAlreadyInstalled = $this->getTablesInstalled();
- $db = Zend_Registry::get('db');
-
- $doNotDeletePattern = '/('.implode('|',$doNotDelete).')/';
-
- foreach($tablesAlreadyInstalled as $tableName)
- {
- if( count($doNotDelete) == 0
- || (!in_array($tableName,$doNotDelete)
- && !preg_match($doNotDeletePattern,$tableName)
- )
- )
- {
- $db->query("DROP TABLE `$tableName`");
- }
- }
- }
-}