This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
phptsmadmin/lib/config_default.php
2011-01-14 01:45:19 +11:00

338 lines
9.1 KiB
PHP

<?php
// $Header: /cvsroot/phptsmadmin/phpTSMadmin/lib/config_default.php,v 1.16 2009/04/19 05:44:55 wurley Exp $
/**
* Configuration processing and defaults.
*
* @author The phpTSMadmin development team
* @package phpTSMadmin
*
* @todo Add validation of set variables to enforce limits or particular values.
*/
/** The minimum version of PHP required to run this application. */
define('REQUIRED_PHP_VERSION','5.0.0');
/**
* The config class contains all our configuration settings for a session.
*
* An instance of this class should be stored in $_SESSION to maintain state, and to avoid
* rebuilding/rereading it at the state of each page output.
*
* @package phpTSMadmin
*
* @author The phpTSMadmin development team
* @author Deon George
*/
class Config {
public $custom;
protected $default;
public $servers = array();
public $hooks = array();
public function __construct() {
$this->custom = new stdClass;
$this->default = new stdClass;
$this->default->app['name'] = array(
'desc'=>'Application Name',
'default'=>'phpTSMadmin');
$this->default->appearance['compress'] = array(
'desc'=>'Compress Output',
'default'=>false);
$this->default->appearance['control_icons'] = array(
'desc'=>'Show the control as icons or text',
'default'=>false);
$this->default->appearance['menu'] = array(
'desc'=>'Class name which inherits from Menu class and implements the draw() method',
'default'=>'menu_html');
/** Language
* The language setting. If you set this to 'auto', This application will
* attempt to determine your language automatically. Otherwise, set
* this to your applicable language in xx_XX format.
*/
$this->default->appearance['language'] = array(
'desc'=>'Language',
'default'=>'auto');
$this->default->appearance['page_title'] = array(
'desc'=>'Change the page title to this text',
'default'=>'');
$this->default->appearance['stylesheet'] = array(
'desc'=>'Style sheet to use',
'default'=>'style.css');
$this->default->appearance['timezone'] = array(
'desc'=>'Define our timezone, if not defined in php.ini',
'default'=>null);
$this->default->appearance['logged_in_chars'] = array(
'desc'=>'Number of chars of loggin name to show',
'default'=>15);
/** Caching
*/
$this->default->cache['menu'] = array(
'desc'=>'Cache the Menu',
'default'=>false);
$this->default->cache['time'] = array(
'desc'=>'How long to cache our TSM queries',
'default'=>600);
/** Commands
* Define which high level commands are available.
*/
$this->default->commands['all'] = array(
'desc'=>'Define command availability',
'default'=> array(
'home' => true,
'login' => true,
'logout' => true,
'purge' => true,
'showcache' => true,
'register' => true
));
/** Debug Attributes
* Attributes that control debugging
*/
$this->default->debug['level'] = array(
'desc'=>'Debug level verbosity',
'default'=>0);
$this->default->debug['syslog'] = array(
'desc'=>'Whether to send debug messages to syslog',
'default'=>false);
$this->default->debug['file'] = array(
'desc'=>'Name of file to send debug output to',
'default'=>null);
$this->default->debug['addr'] = array(
'desc'=>'IP address of client to provide debugging info.',
'default'=>null);
$this->default->debug['append'] = array(
'desc'=>'Whether to append to the debug file, or create it fresh each time',
'default'=>true);
$this->default->debug['show_cache'] = array(
'desc'=>'Show the tool that shows debugging information.',
'default'=>false);
/** Session Attributes
* Session related attributes.
*/
$this->default->session['blowfish'] = array(
'desc'=>'Blowfish key to encrypt cookie details',
'default'=>null);
$this->default->session['memorylimit'] = array(
'desc'=>'Set the PHP memorylimit warning threshold.',
'default'=>24);
$this->default->session['timelimit'] = array(
'desc'=>'Set the PHP timelimit.',
'default'=>30);
/** Cookie Time
* If you used auth_type 'form' in the servers list, you can adjust how long the cookie will last
* (default is 0 seconds, which expires when you close the browser)
*/
$this->default->session['cookie_time'] = array(
'desc'=>'Time in seconds for the life of cookies',
'default'=>0);
/** Session Menu
*/
$this->default->menu['session'] = array(
'desc'=>'Menu items when logged in.',
'default'=>array(
'info'=>array('php'=>'info.php','icon'=>'info.png','text'=>'Server Info')
));
/** Available Commands
*/
}
/**
* Access the configuration, taking into account the defaults and the customisations
*/
private function getConfigArray($usecache=true) {
static $CACHE = array();
if ($usecache && count($CACHE))
return $CACHE;
foreach ($this->default as $key => $vals)
$CACHE[$key] = $vals;
foreach ($this->custom as $key => $vals)
foreach ($vals as $index => $val)
$CACHE[$key][$index]['value'] = $val;
return $CACHE;
}
/**
* Get a configuration value.
*/
public function getValue($key,$index,$fatal=true) {
$config = $this->getConfigArray();
if (! isset($config[$key]))
if ($fatal)
error(sprintf('A call was made in [%s] to getValue requesting [%s] that isnt predefined.',
basename($_SERVER['PHP_SELF']),$key),'error',null,true);
else
return null;
if (! isset($config[$key][$index]))
if ($fatal)
error(sprintf('Requesting an index [%s] in key [%s] that isnt predefined.',$index,$key),'error',null,true);
else
return null;
return isset($config[$key][$index]['value']) ? $config[$key][$index]['value'] : $config[$key][$index]['default'];
}
/**
* Return the untested config items
*/
public function untested() {
$result = array();
foreach ($this->default as $option => $details)
foreach ($details as $param => $values)
if (isset($values['untested']) && $values['untested'])
array_push($result,sprintf('%s.%s',$option,$param));
return $result;
}
/**
* Function to check and warn about any unusual defined variables.
*/
public function CheckCustom() {
if (isset($this->custom)) {
foreach ($this->custom as $masterkey => $masterdetails) {
if (isset($this->default->$masterkey)) {
if (! is_array($masterdetails))
error(sprintf('Error in configuration file, [%s] should be an ARRAY.',$masterdetails),'error',null,true);
foreach ($masterdetails as $key => $value) {
# Test that the key is correct.
if (! in_array($key,array_keys($this->default->$masterkey)))
error(sprintf('Error in configuration file, [%s] has not been defined as a configurable variable.',$key),'error',null,true);
# Test if its should be an array or not.
if (is_array($this->default->{$masterkey}[$key]['default']) && ! is_array($value))
error(sprintf('Error in configuration file, %s[\'%s\'] SHOULD be an array of values.',$masterkey,$key),'error',null,true);
if (! is_array($this->default->{$masterkey}[$key]['default']) && is_array($value))
error(sprintf('Error in configuration file, %s[\'%s\'] should NOT be an array of values.',$masterkey,$key),'error',null,true);
}
} else {
error(sprintf('Error in configuration file, [%s] has not been defined as a MASTER configurable variable.',$masterkey),'error',null,true);
}
}
}
}
/**
* Get a list of available commands.
*/
public function getCommandList() {
$config = $this->getConfigArray(false);
masort($config['command'],'summary');
if (isset($config['command']) && is_array($config['command']))
return $config['command'];
else
return array();
}
/**
* The parameter number is variable.
* For example : isCommandAvailable('search','simple_search')
*/
public function isCommandAvailable($index='all') {
$a = func_get_args();
if (! in_array($index,array('all','script')))
$index = 'all';
else
array_shift($a);
if (count($a) == 1 && is_array($a[0]))
$a = $a[0];
$i = 0;
# Command availability list
$cmd = $this->getValue('commands',$index);
# Search for the command
while ($i < count($a)) {
if (! is_array($cmd))
return $cmd;
if (! isset($cmd[$a[$i]]))
return false;
$cmd = $cmd[$a[$i]];
$i++;
}
# If this is a leaf command, return its availability
if (! is_array($cmd))
return $cmd;
# Else the command is available, if one of its sub-command is available
$a[] = '';
foreach ($cmd as $c => $v) {
$a[$i] = $c;
if ($this->isCommandAvailable($a))
return true;
}
return false;
}
public function configDefinition($key,$index,$config) {
if (! is_array($config) || ! array_key_exists('desc',$config) || ! array_key_exists('default',$config))
return;
if (isset($this->default->$key))
$definition = $this->default->$key;
$definition[$index] = $config;
$this->default->$key = $definition;
}
public function setServers($servers) {
$this->servers = $servers;
}
public function getServer($index=null) {
return $this->servers->Instance($index);
}
/**
* Return a list of our servers
* @param boolean $visible - Only return visible servers
*/
public function getServerList($visible=true) {
return $this->servers->getServerList($visible);
}
}
?>