Skip to content
Extraits de code Groupes Projets
ArchiveTableCreator.php 2,95 ko
Newer Older
  • Learn to ignore specific revisions
  • mattab's avatar
    mattab a validé
    <?php
    /**
    
     * Piwik - free/libre analytics platform
    
    mattab's avatar
    mattab a validé
     *
     * @link http://piwik.org
     * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
     *
     */
    
    
    namespace Piwik\DataAccess;
    
    use Piwik\Common;
    use Piwik\Date;
    
    mattab's avatar
    mattab a validé
    {
    
        const BLOB_TABLE    = "blob";
    
        public static $tablesAlreadyInstalled = null;
    
    Christian Raue's avatar
    Christian Raue a validé
        public static function getNumericTable(Date $date)
    
    mattab's avatar
    mattab a validé
        {
    
            return self::getTable($date, self::NUMERIC_TABLE);
    
    mattab's avatar
    mattab a validé
        }
    
    mattab's avatar
    mattab a validé
    
    
    Christian Raue's avatar
    Christian Raue a validé
        public static function getBlobTable(Date $date)
    
    mattab's avatar
    mattab a validé
        {
    
            return self::getTable($date, self::BLOB_TABLE);
    
    mattab's avatar
    mattab a validé
        }
    
    
    Christian Raue's avatar
    Christian Raue a validé
        protected static function getTable(Date $date, $type)
    
    mattab's avatar
    mattab a validé
        {
    
            $tableName = $tableNamePrefix . "_" . self::getTableMonthFromDate($date);
    
            $tableName = Common::prefixTable($tableName);
    
            self::createArchiveTablesIfAbsent($tableName, $tableNamePrefix);
    
    Christian Raue's avatar
    Christian Raue a validé
        protected static function createArchiveTablesIfAbsent($tableName, $tableNamePrefix)
    
        {
            if (is_null(self::$tablesAlreadyInstalled)) {
                self::refreshTableList();
            }
    
    mattab's avatar
    mattab a validé
    
    
            if (!in_array($tableName, self::$tablesAlreadyInstalled)) {
    
                self::getModel()->createArchiveTable($tableName, $tableNamePrefix);
    
        private static function getModel()
        {
            return new Model();
        }
    
    
    Christian Raue's avatar
    Christian Raue a validé
        public static function clear()
    
    Christian Raue's avatar
    Christian Raue a validé
        public static function refreshTableList($forceReload = false)
    
            self::$tablesAlreadyInstalled = DbHelper::getTablesInstalled($forceReload);
    
    mattab's avatar
    mattab a validé
        }
    
    
        /**
         * Returns all table names archive_*
         *
         * @return array
         */
    
    Christian Raue's avatar
    Christian Raue a validé
        public static function getTablesArchivesInstalled()
    
        {
            if (is_null(self::$tablesAlreadyInstalled)) {
                self::refreshTableList();
            }
    
            $archiveTables = array();
    
            foreach (self::$tablesAlreadyInstalled as $table) {
                if (strpos($table, 'archive_numeric_') !== false
    
                    || strpos($table, 'archive_blob_') !== false
                ) {
    
                    $archiveTables[] = $table;
                }
            }
    
    Christian Raue's avatar
    Christian Raue a validé
        public static function getDateFromTableName($tableName)
    
            $tableName = Common::unprefixTable($tableName);
    
            $date      = str_replace(array('archive_numeric_', 'archive_blob_'), '', $tableName);
    
    
        public static function getTableMonthFromDate(Date $date)
        {
            return $date->toString('Y_m');
        }
    
    
    Christian Raue's avatar
    Christian Raue a validé
        public static function getTypeFromTableName($tableName)
    
            if (strpos($tableName, 'archive_numeric_') !== false) {
    
                return self::NUMERIC_TABLE;
            }
    
            if (strpos($tableName, 'archive_blob_') !== false) {
    
                return self::BLOB_TABLE;
            }