| | |
| | | |
| | | /* |
| | | +-----------------------------------------------------------------------+ |
| | | | program/include/bootstrap.php | |
| | | | | |
| | | | This file is part of the Roundcube PHP suite | |
| | | | Copyright (C) 2005-2012, The Roundcube Dev Team | |
| | | | Copyright (C) 2005-2013, The Roundcube Dev Team | |
| | | | | |
| | | | Licensed under the GNU General Public License version 3 or | |
| | | | any later version with exceptions for skins & plugins. | |
| | |
| | | | | |
| | | | CONTENTS: | |
| | | | Roundcube Framework Initialization | |
| | | | | |
| | | +-----------------------------------------------------------------------+ |
| | | | Author: Thomas Bruederli <roundcube@gmail.com> | |
| | | | Author: Aleksander Machniak <alec@alec.pl> | |
| | |
| | | */ |
| | | |
| | | $config = array( |
| | | 'error_reporting' => E_ALL &~ (E_NOTICE | E_STRICT), |
| | | 'error_reporting' => E_ALL & ~E_NOTICE & ~E_STRICT, |
| | | // Some users are not using Installer, so we'll check some |
| | | // critical PHP settings here. Only these, which doesn't provide |
| | | // an error/warning in the logs later. See (#1486307). |
| | | 'mbstring.func_overload' => 0, |
| | | 'suhosin.session.encrypt' => 0, |
| | | 'session.auto_start' => 0, |
| | | 'file_uploads' => 1, |
| | | 'magic_quotes_runtime' => 0, |
| | | 'magic_quotes_sybase' => 0, // #1488506 |
| | | 'magic_quotes_runtime' => false, |
| | | 'magic_quotes_sybase' => false, // #1488506 |
| | | ); |
| | | |
| | | // check these additional ini settings if not called via CLI |
| | | if (php_sapi_name() != 'cli') { |
| | | $config += array( |
| | | 'suhosin.session.encrypt' => false, |
| | | 'file_uploads' => true, |
| | | ); |
| | | } |
| | | |
| | | foreach ($config as $optname => $optval) { |
| | | if ($optval != ini_get($optname) && @ini_set($optname, $optval) === false) { |
| | | die("ERROR: Wrong '$optname' option value and it wasn't possible to set it to required value ($optval).\n" |
| | | ."Check your PHP configuration (including php_admin_flag)."); |
| | | $ini_optval = filter_var(ini_get($optname), is_bool($optval) ? FILTER_VALIDATE_BOOLEAN : FILTER_VALIDATE_INT); |
| | | if ($optval != $ini_optval && @ini_set($optname, $optval) === false) { |
| | | $error = "ERROR: Wrong '$optname' option value and it wasn't possible to set it to required value ($optval).\n" |
| | | . "Check your PHP configuration (including php_admin_flag)."; |
| | | if (defined('STDERR')) fwrite(STDERR, $error); else echo $error; |
| | | exit(1); |
| | | } |
| | | } |
| | | |
| | | // application constants |
| | | define('RCMAIL_VERSION', '0.9-git'); |
| | | define('RCMAIL_CHARSET', 'UTF-8'); |
| | | define('RCMAIL_START', microtime(true)); |
| | | // framework constants |
| | | define('RCUBE_VERSION', '1.0.4'); |
| | | define('RCUBE_CHARSET', 'UTF-8'); |
| | | |
| | | if (!defined('RCUBE_LIB_DIR')) { |
| | | define('RCUBE_LIB_DIR', dirname(__FILE__).'/'); |
| | | define('RCUBE_LIB_DIR', dirname(__FILE__).DIRECTORY_SEPARATOR); |
| | | } |
| | | |
| | | if (!defined('RCUBE_INSTALL_PATH')) { |
| | |
| | | } |
| | | |
| | | if (!defined('RCUBE_CONFIG_DIR')) { |
| | | define('RCUBE_CONFIG_DIR', RCUBE_INSTALL_PATH . 'config'); |
| | | define('RCUBE_CONFIG_DIR', RCUBE_INSTALL_PATH . 'config/'); |
| | | } |
| | | |
| | | if (!defined('RCUBE_PLUGINS_DIR')) { |
| | |
| | | |
| | | // set internal encoding for mbstring extension |
| | | if (extension_loaded('mbstring')) { |
| | | mb_internal_encoding(RCMAIL_CHARSET); |
| | | @mb_regex_encoding(RCMAIL_CHARSET); |
| | | mb_internal_encoding(RCUBE_CHARSET); |
| | | @mb_regex_encoding(RCUBE_CHARSET); |
| | | } |
| | | |
| | | // make sure the Roundcube lib directory is in the include_path |
| | | $rcube_path = realpath(RCUBE_LIB_DIR . '..'); |
| | | $sep = PATH_SEPARATOR; |
| | | $regexp = "!(^|$sep)" . preg_quote($rcube_path, '!') . "($sep|\$)!"; |
| | | $path = ini_get('include_path'); |
| | | |
| | | if (!preg_match($regexp, $path)) { |
| | | set_include_path($path . PATH_SEPARATOR . $rcube_path); |
| | | } |
| | | |
| | | // Register autoloader |
| | |
| | | |
| | | |
| | | /** |
| | | * Remove single and double quotes from a given string |
| | | * |
| | | * @param string Input value |
| | | * |
| | | * @return string Dequoted string |
| | | */ |
| | | function strip_quotes($str) |
| | | { |
| | | return str_replace(array("'", '"'), '', $str); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Remove new lines characters from given string |
| | | * |
| | | * @param string $str Input value |
| | | * |
| | | * @return string Stripped string |
| | | */ |
| | | function strip_newlines($str) |
| | | { |
| | | return preg_replace('/[\r\n]/', '', $str); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Compose a valid representation of name and e-mail address |
| | | * |
| | | * @param string $email E-mail address |
| | |
| | | |
| | | |
| | | /** |
| | | * Fix version number so it can be used correctly in version_compare() |
| | | * |
| | | * @param string $version Version number string |
| | | * |
| | | * @param return Version number string |
| | | */ |
| | | function version_parse($version) |
| | | { |
| | | return str_replace( |
| | | array('-stable', '-git'), |
| | | array('.0', '.99'), |
| | | $version); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * mbstring replacement functions |
| | | */ |
| | | if (!extension_loaded('mbstring')) |