database; $schemaName = trim($dbInfos['schema']); $className = self::getSchemaClassName($schemaName); $this->schema = new $className(); } /** * Returns an instance that subclasses Schema * * @return \Piwik\Db\SchemaInterface */ private function getSchema() { if ($this->schema === null) { $this->loadSchema(); } return $this->schema; } /** * Get the SQL to create a specific Piwik table * * @param string $tableName name of the table to create * @return string SQL */ public function getTableCreateSql($tableName) { return $this->getSchema()->getTableCreateSql($tableName); } /** * Get the SQL to create Piwik tables * * @return array array of strings containing SQL */ public function getTablesCreateSql() { return $this->getSchema()->getTablesCreateSql(); } /** * Creates a new table in the database. * * @param string $nameWithoutPrefix The name of the table without any piwik prefix. * @param string $createDefinition The table create definition */ public function createTable($nameWithoutPrefix, $createDefinition) { $this->getSchema()->createTable($nameWithoutPrefix, $createDefinition); } /** * Create database * * @param null|string $dbName database name to create */ public function createDatabase($dbName = null) { $this->getSchema()->createDatabase($dbName); } /** * Drop database */ public function dropDatabase($dbName = null) { $this->getSchema()->dropDatabase($dbName); } /** * Create all tables */ public function createTables() { $this->getSchema()->createTables(); } /** * Creates an entry in the User table for the "anonymous" user. */ public function createAnonymousUser() { $this->getSchema()->createAnonymousUser(); } /** * Records the Matomo version a user used when installing this Matomo for the first time */ public function recordInstallVersion() { $this->getSchema()->recordInstallVersion(); } /** * Returns which Matomo version was used to install this Matomo for the first time. */ public function getInstallVersion() { return $this->getSchema()->getInstallVersion(); } /** * Truncate all tables */ public function truncateAllTables() { $this->getSchema()->truncateAllTables(); } /** * Names of all the prefixed tables in piwik * Doesn't use the DB * * @return array Table names */ public function getTablesNames() { return $this->getSchema()->getTablesNames(); } /** * Get list of tables installed * * @param bool $forceReload Invalidate cache * @return array installed tables */ public function getTablesInstalled($forceReload = true) { return $this->getSchema()->getTablesInstalled($forceReload); } /** * Get list of installed columns in a table * * @param string $tableName The name of a table. * * @return array Installed columns indexed by the column name. */ public function getTableColumns($tableName) { return $this->getSchema()->getTableColumns($tableName); } /** * Returns true if Piwik tables exist * * @return bool True if tables exist; false otherwise */ public function hasTables() { return $this->getSchema()->hasTables(); } }