From 7c9850da45f207824dc6d2f672de6caa25e400f5 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 22 Dec 2010 14:17:47 -0500
Subject: [PATCH] - Improve handling of whitespace characters after closing PHP tag in localization and config files
---
program/include/rcube_plugin.php | 7 ++++++-
program/include/rcmail.php | 5 +++++
program/include/rcube_config.php | 11 ++++-------
3 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 0eecd8d..f72b33e 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -929,6 +929,9 @@
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 @@
$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 a7e1d9e..76cf183 100644
--- a/program/include/rcube_config.php
+++ b/program/include/rcube_config.php
@@ -47,10 +47,6 @@
*/
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 @@
ini_set('display_errors', 0);
}
- // clear output buffer
- ob_end_clean();
-
// export config data
$GLOBALS['CONFIG'] = &$this->prop;
}
@@ -136,7 +129,11 @@
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 c7ec019..1c3a8f6 100644
--- a/program/include/rcube_plugin.php
+++ b/program/include/rcube_plugin.php
@@ -129,12 +129,17 @@
$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();
--
Gitblit v1.9.1