Вход Регистрация
Файл: apwa/stk/includes/database_cleaner/database_cleaner_data.php
Строк: 150
<?php
/**
*
* @package Support Toolkit - Database Cleaner
* @version $Id$
* @copyright (c) 2009 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
    exit;
}

/**
* Data class containing all data for the cleaner
*/
class database_cleaner_data
{
    
/**
    * @var Array The bots
    */
    
var $bots = array();

    
/**
    * @var Array The config array for this version
    */
    
var $config = array();

    
/**
     * Instance of the phpBB DB tools
     * @var phpbb_db_tools
     */
    
var $db_tools null;

    
/**
    * @var Array Config entries that were removed by this version
    */
    
var $removed_config = array();

    
/**
    * @var Array The permissions array for this version
    */
    
var $acl_options = array();

    
/**
    * @var Array The roles array for this version
    */
    
var $acl_roles = array();

    
/**
    * @var Array The role data array for this version
    * This array contains the data needed to build the queries as
    * found in `schemas/schema_data.sql`
    */
    
var $acl_role_data = array();

    
/**
    * @var Array All default extension groups
    */
    
var $extension_groups = array();

    
/**
    * @var Array All default extensions
    */
    
var $extensions = array();

    
/**
    * @var Array array holding the module categorie structure
    */
    
var $module_categories = array();

    
/**
    * @var Array Module extra data
    */
    
var $module_extras = array();

    
/**
    * @var Array The groups array for this version
    */
    
var $groups = array();

    
/**
    * @var Array The schema struct
    */
    
var $schema_data = array();

    
/**
    * @var Array An array containing all tables that are included in a vanilla phpBB install of this version
    */
    
var $tables = array();
    
    
/**
    * @var Array An array containing all report reasons
    */
    
var $report_reasons = array();

    
/**
     * Setup the data container
     *
     * @param phpbb_db_tools $db_tools The phpBB phpbb_db_tools object
     */
    
function database_cleaner_data($db_tools null)
    {
        
$this->db_tools $db_tools;
    }

    
/**
    * Some data needs to be adjusted in certain cases
    */
    
function init()
    {
        
// Extract tables
        
global $table_prefix;

        
$this->tables $this->schema_data;

        
// Get the right table prefix!
        
if ($table_prefix != 'phpbb_')
        {
            foreach (
$this->tables as $table_name => $table_data)
            {
                
$this->tables[str_replace('phpbb_'$table_prefixstr_replace($table_prefix'phpbb_'$table_name))] = $table_data;

                unset(
$this->tables[$table_name]);
            }
        }

        
// Since phpBB 3.0.8 the module extensions are translatable,
        // for earlier versions we'll have to figure out which language
        // was used while installing and hope that this language is still
        // available
        
if (version_compare(PHPBB_VERSION'3.0.8''<'))
        {
            global 
$db$user;

            
$sql 'SELECT group_name
                FROM ' 
EXTENSION_GROUPS_TABLE;
            
$result    $db->sql_query_limit($sql10);
            
$test    $db->sql_fetchfield('group_name'false$result);
            
$db->sql_freeresult($result);

            
$ext_group_trans = array();

            
// Be nice and be the users language ^^
            
$user->add_lang('install');
            if (
in_array($test$user->lang))
            {
                
$ext_group_trans $user->lang;
            }
            else
            {
                
// Loop through all available language packs
                
$d dir(PHPBB_ROOT_PATH 'language/');
                while (
false !== ($entry $d->read()))
                {
                    if (
strpos($entry'.') !== false)
                    {
                        continue;
                    }
                    
                    include (
PHPBB_ROOT_PATH "language/{$entry}/install." PHP_EXT);

                    if (
in_array($test$lang))
                    {
                        
$ext_group_trans $lang;
                        break;
                    }
                    
$lang = array();
                }
            }

            
// Now translate it
            
foreach ($this->extension_groups as $name => $data)
            {
                
$this->extension_groups[$ext_group_trans[$name]] = $data;
                unset(
$this->extension_groups[$name]);
            }

            
// And the extensions have the same issue :/
            
foreach ($this->extensions as $name => $data)
            {
                
$this->extensions[$ext_group_trans[$name]] = $data;
                unset(
$this->extensions[$name]);
            }
        }

        
// Firebird and Oracle, need the table and column names in 
        // UPPERCASE. #62821
        
switch ($this->db_tools->sql_layer)
        {
            case 
'firebird'    :
            case 
'oracle'    :
                
// Uppercase the table names
                
stk_array_walk_keys($this->tables'strtoupper');

                
// Loop into the data structure to alter the columns
                
foreach ($this->tables as $table => $null)
                {
                    
stk_array_walk_keys($this->tables[$table]['COLUMNS'], 'strtoupper');
                }
            break;
        }
    }
}
Онлайн: 1
Реклама