From f707fec0001d7dc7d46be114c42b37e49a052660 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Wed, 21 Nov 2012 19:27:40 +0100 Subject: [PATCH] Create Roundcube Framework initialization script (bootstrap) --- .../{rcube_shared.inc => bootstrap.php} | 93 ++++++++++--------- program/include/iniset.php | 30 +----- program/include/rcube_bc.inc | 5 + program/include/rcube_output_html.php | 4 +- program/include/rcube_utils.php | 16 ++++ 5 files changed, 76 insertions(+), 72 deletions(-) rename program/include/{rcube_shared.inc => bootstrap.php} (84%) diff --git a/program/include/rcube_shared.inc b/program/include/bootstrap.php similarity index 84% rename from program/include/rcube_shared.inc rename to program/include/bootstrap.php index 5105fe22f..9541f7e65 100644 --- a/program/include/rcube_shared.inc +++ b/program/include/bootstrap.php @@ -2,7 +2,7 @@ /* +-----------------------------------------------------------------------+ - | program/include/rcube_shared.inc | + | program/include/bootstrap.php | | | | This file is part of the Roundcube PHP suite | | Copyright (C) 2005-2012, The Roundcube Dev Team | @@ -12,21 +12,67 @@ | See the README file for a full license statement. | | | | CONTENTS: | - | Shared functions used by Roundcube Framework | + | Roundcube Framework Initialization | | | +-----------------------------------------------------------------------+ | Author: Thomas Bruederli | + | Author: Aleksander Machniak | +-----------------------------------------------------------------------+ */ /** - * Roundcube shared functions + * Roundcube Framework Initialization * * @package Framework * @subpackage Core */ +$config = array( + '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 +); +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)."); + } +} + +// application constants +define('RCMAIL_VERSION', '0.9-git'); +define('RCMAIL_CHARSET', 'UTF-8'); +define('RCMAIL_START', microtime(true)); + +if (!defined('INSTALL_PATH')) { + define('INSTALL_PATH', dirname($_SERVER['SCRIPT_FILENAME']).'/'); +} + +if (!defined('RCMAIL_CONFIG_DIR')) { + define('RCMAIL_CONFIG_DIR', INSTALL_PATH . 'config'); +} + +// set internal encoding for mbstring extension +if (extension_loaded('mbstring')) { + mb_internal_encoding(RCMAIL_CHARSET); + @mb_regex_encoding(RCMAIL_CHARSET); +} + +// Register autoloader +spl_autoload_register('rcube_autoload'); + +// set PEAR error handling (will also load the PEAR main class) +PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'rcube_pear_error'); + + /** * Similar function as in_array() but case-insensitive @@ -49,21 +95,6 @@ function in_array_nocase($needle, $haystack) } -/** - * Find out if the string content means true or false - * - * @param string $str Input value - * - * @return boolean Boolean value - */ -function get_boolean($str) -{ - $str = strtolower($str); - - return !in_array($str, array('false', '0', 'no', 'off', 'nein', ''), true); -} - - /** * Parse a human readable string for a number of bytes. * @@ -117,32 +148,6 @@ function unslashify($str) } -/** - * Delete all files within a folder - * - * @param string Path to directory - * - * @return boolean True on success, False if directory was not found - */ -function clear_directory($dir_path) -{ - $dir = @opendir($dir_path); - if (!$dir) { - return false; - } - - while ($file = readdir($dir)) { - if (strlen($file) > 2) { - unlink("$dir_path/$file"); - } - } - - closedir($dir); - - return true; -} - - /** * Returns number of seconds for a specified offset string. * diff --git a/program/include/iniset.php b/program/include/iniset.php index 82278c9f8..d01376bb1 100644 --- a/program/include/iniset.php +++ b/program/include/iniset.php @@ -12,7 +12,7 @@ | See the README file for a full license statement. | | | | PURPOSE: | - | Setup the application envoronment required to process | + | Setup the application environment required to process | | any request. | +-----------------------------------------------------------------------+ | Author: Till Klampaeckel | @@ -21,30 +21,20 @@ */ $config = array( - '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 ); 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).\n" - ."Read REQUIREMENTS section in INSTALL file or use Roundcube Installer!"); + ."Check your PHP configuration (including php_admin_flag)."); } } -// application constants -define('RCMAIL_VERSION', '0.9-git'); -define('RCMAIL_CHARSET', 'UTF-8'); -define('RCMAIL_START', microtime(true)); - if (!defined('INSTALL_PATH')) { define('INSTALL_PATH', dirname($_SERVER['SCRIPT_FILENAME']).'/'); } @@ -67,20 +57,8 @@ if (set_include_path($include_path) === false) { // (does not work in safe mode) @set_time_limit(120); -// set internal encoding for mbstring extension -if (extension_loaded('mbstring')) { - mb_internal_encoding(RCMAIL_CHARSET); - @mb_regex_encoding(RCMAIL_CHARSET); -} - -// include global functions -require_once INSTALL_PATH . 'program/include/rcube_shared.inc'; - -// Register autoloader -spl_autoload_register('rcube_autoload'); - -// set PEAR error handling (will also load the PEAR main class) -PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'rcube_pear_error'); +// include Roundcube Framework +require_once INSTALL_PATH . 'program/include/bootstrap.php'; // backward compatybility (to be removed) require_once INSTALL_PATH . 'program/include/rcube_bc.inc'; diff --git a/program/include/rcube_bc.inc b/program/include/rcube_bc.inc index c6620e0db..80ca7b907 100644 --- a/program/include/rcube_bc.inc +++ b/program/include/rcube_bc.inc @@ -392,3 +392,8 @@ function prompt_silent($prompt = 'Password:') { return rcube_utils::prompt_silent($prompt); } + +function get_boolean($str) +{ + return rcube_utils::get_boolean($str); +} diff --git a/program/include/rcube_output_html.php b/program/include/rcube_output_html.php index 6dd58fd36..d751eb294 100644 --- a/program/include/rcube_output_html.php +++ b/program/include/rcube_output_html.php @@ -763,7 +763,7 @@ class rcube_output_html extends rcube_output ), array( "\$_SESSION['\\1']", - "\$this->app->config->get('\\1',get_boolean('\\3'))", + "\$this->app->config->get('\\1',rcube_utils::get_boolean('\\3'))", "\$this->env['\\1']", "rcube_utils::get_input_value('\\1', rcube_utils::INPUT_GPC)", "\$_COOKIE['\\1']", @@ -835,7 +835,7 @@ class rcube_output_html extends rcube_output unset($vars['name'], $vars['command']); $label = $this->app->gettext($attrib + array('vars' => $vars)); - $quoting = !empty($attrib['quoting']) ? strtolower($attrib['quoting']) : (get_boolean((string)$attrib['html']) ? 'no' : ''); + $quoting = !empty($attrib['quoting']) ? strtolower($attrib['quoting']) : (rcube_utils::get_boolean((string)$attrib['html']) ? 'no' : ''); switch ($quoting) { case 'no': diff --git a/program/include/rcube_utils.php b/program/include/rcube_utils.php index 2b48e7c97..df77dfe42 100644 --- a/program/include/rcube_utils.php +++ b/program/include/rcube_utils.php @@ -958,4 +958,20 @@ class rcube_utils return $password; } } + + + /** + * Find out if the string content means true or false + * + * @param string $str Input value + * + * @return boolean Boolean value + */ + public static function get_boolean($str) + { + $str = strtolower($str); + + return !in_array($str, array('false', '0', 'no', 'off', 'nein', ''), true); + } + }