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