alecpl
2010-12-22 7c9850da45f207824dc6d2f672de6caa25e400f5
- Improve handling of whitespace characters after closing PHP tag in localization and config files


3 files modified
23 ■■■■■ changed files
program/include/rcmail.php 5 ●●●●● patch | view | raw | blame | history
program/include/rcube_config.php 11 ●●●●● patch | view | raw | blame | history
program/include/rcube_plugin.php 7 ●●●● patch | view | raw | blame | history
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;
    }
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;
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();