Aleksander Machniak
2012-05-22 041c93ce0bc00cb6417ce2e4bdce2ed84d37f50a
program/include/rcube.php
@@ -18,9 +18,6 @@
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
 $Id$
*/
@@ -236,7 +233,7 @@
   *
   * @param string $name   Cache identifier
   * @param string $type   Cache type ('db', 'apc' or 'memcache')
   * @param int    $ttl    Expiration time for cache items in seconds
   * @param string $ttl    Expiration time for cache items
   * @param bool   $packed Enables/disables data serialization
   *
   * @return rcube_cache Cache object
@@ -244,7 +241,8 @@
  public function get_cache($name, $type='db', $ttl=0, $packed=true)
  {
    if (!isset($this->caches[$name])) {
      $this->caches[$name] = new rcube_cache($type, $_SESSION['user_id'], $name, $ttl, $packed);
      $userid = $this->get_user_id();
      $this->caches[$name] = new rcube_cache($type, $userid, $name, $ttl, $packed);
    }
    return $this->caches[$name];
@@ -347,6 +345,7 @@
      $options['port']     = $_SESSION['storage_port'];
      $options['ssl']      = $_SESSION['storage_ssl'];
      $options['password'] = $this->decrypt($_SESSION['password']);
      $_SESSION[$driver.'_host'] = $_SESSION['storage_host'];
    }
    $options = $this->plugins->exec_hook("storage_init", $options);
@@ -358,35 +357,6 @@
    $this->set_storage_prop();
  }
  /**
   * Connect to the mail storage server with stored session data
   *
   * @return bool True on success, False on error
   */
  public function storage_connect()
  {
    $storage = $this->get_storage();
    if ($_SESSION['storage_host'] && !$storage->is_connected()) {
      $host = $_SESSION['storage_host'];
      $user = $_SESSION['username'];
      $port = $_SESSION['storage_port'];
      $ssl  = $_SESSION['storage_ssl'];
      $pass = $this->decrypt($_SESSION['password']);
      if (!$storage->connect($host, $user, $pass, $port, $ssl)) {
        if (is_object($this->output))
          $this->output->show_message($storage->get_error_code() == -1 ? 'storageerror' : 'sessionerror', 'error');
      }
      else {
        $this->set_storage_prop();
        return $storage->is_connected();
      }
    }
    return false;
  }
  /**
   * Set storage parameters.
@@ -474,7 +444,7 @@
            $this->session->set_keep_alive($keep_alive);
        }
        $this->session->set_secret($this->config->get('des_key') . $_SERVER['HTTP_USER_AGENT']);
        $this->session->set_secret($this->config->get('des_key') . dirname($_SERVER['SCRIPT_NAME']));
        $this->session->set_ip_check($this->config->get('ip_check'));
    }
@@ -486,7 +456,7 @@
    public function temp_gc()
    {
        $tmp = unslashify($this->config->get('temp_dir'));
        $expire = mktime() - 172800;  // expire in 48 hours
        $expire = time() - 172800;  // expire in 48 hours
        if ($tmp && ($dir = opendir($tmp))) {
            while (($fname = readdir($dir)) !== false) {
@@ -629,7 +599,7 @@
        $this->texts = array_merge($this->texts, $messages);
      // include user language files
      if ($lang != 'en' && is_dir(INSTALL_PATH . 'program/localization/' . $lang)) {
      if ($lang != 'en' && $lang != 'en_US' && is_dir(INSTALL_PATH . 'program/localization/' . $lang)) {
        include_once(INSTALL_PATH . 'program/localization/' . $lang . '/labels.inc');
        include_once(INSTALL_PATH . 'program/localization/' . $lang . '/messages.inc');
@@ -1048,6 +1018,18 @@
     */
    public static function raise_error($arg = array(), $log = false, $terminate = false)
    {
        // handle PHP exceptions
        if (is_object($arg) && is_a($arg, 'Exception')) {
            $err = array(
                'type' => 'php',
                'code' => $arg->getCode(),
                'line' => $arg->getLine(),
                'file' => $arg->getFile(),
                'message' => $arg->getMessage(),
            );
            $arg = $err;
        }
        // installer
        if (class_exists('rcube_install', false)) {
            $rci = rcube_install::get_instance();
@@ -1055,7 +1037,8 @@
            return;
        }
        if ($log && $arg['type'] && $arg['message']) {
        if (($log || $terminate) && $arg['type'] && $arg['message']) {
            $arg['fatal'] = $terminate;
            self::log_bug($arg);
        }
@@ -1083,7 +1066,7 @@
        }
        // write error to local log file
        if ($level & 1) {
        if (($level & 1) || !empty($arg_arr['fatal'])) {
            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                $post_query = '?_task='.urlencode($_POST['_task']).'&_action='.urlencode($_POST['_action']);
            }
@@ -1171,6 +1154,9 @@
        if (is_object($this->user)) {
            return $this->user->ID;
        }
        else if (isset($_SESSION['user_id'])) {
            return $_SESSION['user_id'];
        }
        return null;
    }