【php开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学会员整理了php开源代码-Config.class.php的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
<?php
/* $Id: Config.class.php,v 1.21.2.18 2006/06/30 13:46:11 lem9 Exp $ */
// vim: expandtab sw=4 ts=4 sts=4:
class PMA_Config
{
/**
* @var string default config source
*/
var $default_source = './libraries/config.default.php';
/**
* @var array configuration settings
*/
var $settings = array();
/**
* @var string config source
*/
var $source = '';
/**
* @var int source modification time
*/
var $source_mtime = 0;
var $default_source_mtime = 0;
/**
* @var boolean
*/
var $error_config_file = false;
/**
* @var boolean
*/
var $error_config_default_file = false;
/**
* @var boolean
*/
var $error_pma_uri = false;
/**
* @var array
*/
var $default_server = array();
/**
* @var boolean wether init is done or mot
* set this to false to force some initial checks
* like checking for required functions
*/
var $done = false;
/**
* constructor
*
* @param string source to read config from
*/
function __construct($source = null)
{
$this->settings = array();
// functions need to refresh in case of config file changed goes in
// PMA_Config::load()
$this->load($source);
// other settings, independant from config file, comes in
$this->checkSystem();
$this->checkIsHttps();
}
/**
* sets system and application settings
*/
function checkSystem()
{
$this->set('PMA_VERSION', '2.8.2');
/**
* @deprecated
*/
$this->set('PMA_THEME_VERSION', 2);
/**
* @deprecated
*/
$this->set('PMA_THEME_GENERATION', 2);
$this->checkPhpVersion();
$this->checkWebServerOs();
$this->checkWebServer();
$this->checkGd2();
$this->checkClient();
$this->checkUpload();
$this->checkUploadSize();
$this->checkOutputCompression();
}
/**
* wether to use gzip output compression or not
*/
function checkOutputCompression()
{
// If zlib output compression is set in the php configuration file, no
// output buffering should be run
if ( @ini_get('zlib.output_compression') ) {
$this->set('OBGzip', false);
}
// disable output-buffering (if set to 'auto') for IE6, else enable it.
if ( strtolower($this->get('OBGzip')) == 'auto' ) {
if ( $this->get('PMA_USR_BROWSER_AGENT') == 'IE'
&& $this->get('PMA_USR_BROWSER_VER') >= 6
&& $this->get('PMA_USR_BROWSER_VER') < 7 ) {
$this->set('OBGzip', false);
} else {
$this->set('OBGzip', true);
}
}
}
/**
* Determines platform (OS), browser and version of the user
* Based on a phpBuilder article:
* @see http://www.phpbuilder.net/columns/tim20000821.php
*/
function checkClient()
{
if (PMA_getenv('HTTP_USER_AGENT')) {
$HTTP_USER_AGENT = PMA_getenv('HTTP_USER_AGENT');
} elseif (!isset($HTTP_USER_AGENT)) {
$HTTP_USER_AGENT = '';
}
// 1. Platform
if (strstr($HTTP_USER_AGENT, 'Win')) {
$this->set('PMA_USR_OS', 'Win');
} elseif (strstr($HTTP_USER_AGENT, 'Mac')) {
$this->set('PMA_USR_OS', 'Mac');
} elseif (strstr($HTTP_USER_AGENT, 'Linux')) {
$this->set('PMA_USR_OS', 'Linux');
} elseif (strstr($HTTP_USER_AGENT, 'Unix')) {
$this->set('PMA_USR_OS', 'Unix');
} elseif (strstr($HTTP_USER_AGENT, 'OS/2')) {
$this->set('PMA_USR_OS', 'OS/2');
} else {
$this->set('PMA_USR_OS', 'Other');
}
// 2. browser and version
// (must check everything else before Mozilla)
if (preg_match('@Opera(/| )([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
$this->set('PMA_USR_BROWSER_VER', $log_version[2]);
$this->set('PMA_USR_BROWSER_AGENT', 'OPERA');
} elseif (preg_match('@MSIE ([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
$this->set('PMA_USR_BROWSER_VER', $log_version[1]);
$this->set('PMA_USR_BROWSER_AGENT', 'IE');
} elseif (preg_match('@OmniWeb/([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)) {
$this->set('PMA_USR_BROWSER_VER', $log_version[1]);
$this->set('PMA_USR_BROWSER_AGENT', 'OMNIWEB');
//} elseif (ereg('Konqueror/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) {
// Konqueror 2.2.2 says Konqueror/2.2.2
// Konqueror 3.0.3 says Konqueror/3
} elseif (preg_match('@(Konqueror/)(.*)(;)@', $HTTP_USER_AGENT, $log_version)) {
$this->set('PMA_USR_BROWSER_VER', $log_version[2]);
$this->set('PMA_USR_BROWSER_AGENT', 'KONQUEROR');
} elseif (preg_match('@Mozilla/([0-9].[0-9]{1,2})@', $HTTP_USER_AGENT, $log_version)
&& preg_match('@Safari/([0-9]*)@', $HTTP_USER_AGENT, $log_version2)) {
$this->set('PMA_USR_BROWSER_VER', $log_version[1] . '.' . $log_version2[1]);
$this->s