|
|
|
@ -3,7 +3,7 @@
|
|
|
|
|
/*
|
|
|
|
|
+-----------------------------------------------------------------------+
|
|
|
|
|
| This file is part of the Roundcube Webmail client |
|
|
|
|
|
| Copyright (C) 2008-2013, The Roundcube Dev Team |
|
|
|
|
|
| Copyright (C) 2008-2014, The Roundcube Dev Team |
|
|
|
|
|
| |
|
|
|
|
|
| Licensed under the GNU General Public License version 3 or |
|
|
|
|
|
| any later version with exceptions for skins & plugins. |
|
|
|
|
@ -26,12 +26,13 @@ class rcube_config
|
|
|
|
|
{
|
|
|
|
|
const DEFAULT_SKIN = 'larry';
|
|
|
|
|
|
|
|
|
|
private $env = '';
|
|
|
|
|
private $paths = array();
|
|
|
|
|
private $prop = array();
|
|
|
|
|
private $errors = array();
|
|
|
|
|
private $env = '';
|
|
|
|
|
private $paths = array();
|
|
|
|
|
private $prop = array();
|
|
|
|
|
private $errors = array();
|
|
|
|
|
private $userprefs = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Renamed options
|
|
|
|
|
*
|
|
|
|
@ -48,7 +49,6 @@ class rcube_config
|
|
|
|
|
'redundant_attachments_cache_ttl' => 'redundant_attachments_memcache_ttl',
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Object constructor
|
|
|
|
|
*
|
|
|
|
@ -92,7 +92,6 @@ class rcube_config
|
|
|
|
|
$this->set('contactlist_fields', array('name', 'firstname', 'surname', 'email'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Guess the type the string may fit into.
|
|
|
|
|
*
|
|
|
|
@ -121,7 +120,6 @@ class rcube_config
|
|
|
|
|
return $_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Parse environment variable into PHP type.
|
|
|
|
|
*
|
|
|
|
@ -159,11 +157,10 @@ class rcube_config
|
|
|
|
|
default:
|
|
|
|
|
$_ = $this->parse_env($_, $this->guess_type($_));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Get environment variable value.
|
|
|
|
|
*
|
|
|
|
@ -179,7 +176,7 @@ class rcube_config
|
|
|
|
|
private function getenv_default($varname, $default_value, $type = null)
|
|
|
|
|
{
|
|
|
|
|
$_ = getenv($varname);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($_ === false) {
|
|
|
|
|
$_ = $default_value;
|
|
|
|
|
}
|
|
|
|
@ -187,13 +184,13 @@ class rcube_config
|
|
|
|
|
if (is_null($type)) {
|
|
|
|
|
$type = gettype($default_value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$_ = $this->parse_env($_, $type);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Load config from local config file
|
|
|
|
|
*
|
|
|
|
@ -240,8 +237,9 @@ class rcube_config
|
|
|
|
|
$this->prop['temp_dir'] = $this->prop['temp_dir'] ? realpath(unslashify($this->prop['temp_dir'])) : RCUBE_INSTALL_PATH . 'temp';
|
|
|
|
|
|
|
|
|
|
// fix default imap folders encoding
|
|
|
|
|
foreach (array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox') as $folder)
|
|
|
|
|
foreach (array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox') as $folder) {
|
|
|
|
|
$this->prop[$folder] = rcube_charset::convert($this->prop[$folder], RCUBE_CHARSET, 'UTF7-IMAP');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// set PHP error logging according to config
|
|
|
|
|
if ($this->prop['debug_level'] & 1) {
|
|
|
|
@ -403,7 +401,6 @@ class rcube_config
|
|
|
|
|
return $plugin['result'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Setter for a config parameter
|
|
|
|
|
*
|
|
|
|
@ -415,7 +412,6 @@ class rcube_config
|
|
|
|
|
$this->prop[$name] = $value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Override config options with the given values (eg. user prefs)
|
|
|
|
|
*
|
|
|
|
@ -427,7 +423,6 @@ class rcube_config
|
|
|
|
|
$this->prop = array_merge($this->prop, $prefs, $this->userprefs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Merge the given prefs over the current config
|
|
|
|
|
* and make sure that they survive further merging.
|
|
|
|
@ -455,7 +450,6 @@ class rcube_config
|
|
|
|
|
$this->prop = array_merge($this->prop, $prefs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Getter for all config options
|
|
|
|
|
*
|
|
|
|
@ -465,8 +459,9 @@ class rcube_config
|
|
|
|
|
{
|
|
|
|
|
$props = $this->prop;
|
|
|
|
|
|
|
|
|
|
foreach ($props as $prop_name => $prop_value)
|
|
|
|
|
foreach ($props as $prop_name => $prop_value) {
|
|
|
|
|
$props[$prop_name] = $this->getenv_default('ROUNDCUBE_' . strtoupper($prop_name), $prop_value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$rcube = rcube::get_instance();
|
|
|
|
|
$plugin = $rcube->plugins->exec_hook('config_get', array(
|
|
|
|
@ -483,16 +478,16 @@ class rcube_config
|
|
|
|
|
*/
|
|
|
|
|
public function get_timezone()
|
|
|
|
|
{
|
|
|
|
|
if ($tz = $this->get('timezone')) {
|
|
|
|
|
try {
|
|
|
|
|
$tz = new DateTimeZone($tz);
|
|
|
|
|
return $tz->getOffset(new DateTime('now')) / 3600;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception $e) {
|
|
|
|
|
if ($tz = $this->get('timezone')) {
|
|
|
|
|
try {
|
|
|
|
|
$tz = new DateTimeZone($tz);
|
|
|
|
|
return $tz->getOffset(new DateTime('now')) / 3600;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception $e) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -526,7 +521,6 @@ class rcube_config
|
|
|
|
|
return $key;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Try to autodetect operating system and find the correct line endings
|
|
|
|
|
*
|
|
|
|
@ -537,14 +531,16 @@ class rcube_config
|
|
|
|
|
// use the configured delimiter for headers
|
|
|
|
|
if (!empty($this->prop['mail_header_delimiter'])) {
|
|
|
|
|
$delim = $this->prop['mail_header_delimiter'];
|
|
|
|
|
if ($delim == "\n" || $delim == "\r\n")
|
|
|
|
|
if ($delim == "\n" || $delim == "\r\n") {
|
|
|
|
|
return $delim;
|
|
|
|
|
else
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
rcube::raise_error(array(
|
|
|
|
|
'code' => 500, 'type' => 'php',
|
|
|
|
|
'file' => __FILE__, 'line' => __LINE__,
|
|
|
|
|
'message' => "Invalid mail_header_delimiter setting"
|
|
|
|
|
), true, false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$php_os = strtolower(substr(PHP_OS, 0, 3));
|
|
|
|
@ -558,7 +554,6 @@ class rcube_config
|
|
|
|
|
return "\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return the mail domain configured for the given host
|
|
|
|
|
*
|
|
|
|
@ -585,7 +580,6 @@ class rcube_config
|
|
|
|
|
return $domain;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Getter for error state
|
|
|
|
|
*
|
|
|
|
@ -596,7 +590,6 @@ class rcube_config
|
|
|
|
|
return empty($this->errors) ? false : join("\n", $this->errors);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Internal getter for client's (browser) timezone identifier
|
|
|
|
|
*/
|
|
|
|
|