From 7c9850da45f207824dc6d2f672de6caa25e400f5 Mon Sep 17 00:00:00 2001 From: alecpl Date: Wed, 22 Dec 2010 19:17:47 +0000 Subject: - Improve handling of whitespace characters after closing PHP tag in localization and config files --- program/include/rcmail.php | 5 +++++ program/include/rcube_config.php | 11 ++++------- program/include/rcube_plugin.php | 7 ++++++- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/program/include/rcmail.php b/program/include/rcmail.php index 0eecd8ddb..f72b33e95 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -929,6 +929,9 @@ class rcmail if (empty($this->texts) || $lang != $_SESSION['language']) { $this->texts = array(); + // handle empty lines after closing PHP tag in localization files + ob_start(); + // get english labels (these should be complete) @include(INSTALL_PATH . 'program/localization/en_US/labels.inc'); @include(INSTALL_PATH . 'program/localization/en_US/messages.inc'); @@ -949,6 +952,8 @@ class rcmail $this->texts = array_merge($this->texts, $messages); } + ob_end_clean(); + $_SESSION['language'] = $lang; } diff --git a/program/include/rcube_config.php b/program/include/rcube_config.php index a7e1d9ef5..76cf18307 100644 --- a/program/include/rcube_config.php +++ b/program/include/rcube_config.php @@ -47,10 +47,6 @@ class rcube_config */ private function load() { - // start output buffering, we don't need any output yet, - // it'll be cleared after reading of config files, etc. - ob_start(); - // load main config file if (!$this->load_from_file(RCMAIL_CONFIG_DIR . '/main.inc.php')) $this->errors[] = 'main.inc.php was not found.'; @@ -98,9 +94,6 @@ class rcube_config ini_set('display_errors', 0); } - // clear output buffer - ob_end_clean(); - // export config data $GLOBALS['CONFIG'] = &$this->prop; } @@ -136,7 +129,11 @@ class rcube_config public function load_from_file($fpath) { if (is_file($fpath) && is_readable($fpath)) { + // use output buffering, we don't need any output here + ob_start(); include($fpath); + ob_end_clean(); + if (is_array($rcmail_config)) { $this->prop = array_merge($this->prop, $rcmail_config, $this->userprefs); return true; diff --git a/program/include/rcube_plugin.php b/program/include/rcube_plugin.php index c7ec01943..1c3a8f602 100644 --- a/program/include/rcube_plugin.php +++ b/program/include/rcube_plugin.php @@ -129,12 +129,17 @@ abstract class rcube_plugin $lang = $_SESSION['language']; $locdir = slashify(realpath(slashify($this->home) . $dir)); $texts = array(); - + + // use buffering to handle empty lines/spaces after closing PHP tag + ob_start(); + foreach (array('en_US', $lang) as $lng) { @include($locdir . $lng . '.inc'); $texts = (array)$labels + (array)$messages + (array)$texts; } + ob_end_clean(); + // prepend domain to text keys and add to the application texts repository if (!empty($texts)) { $add = array(); -- cgit v1.2.3