Ejemplo n.º 1
0
 /**
  * Initialize storage object
  */
 public function storage_init()
 {
     // already initialized
     if (is_object($this->storage)) {
         return;
     }
     $driver = $this->config->get('storage_driver', 'imap');
     $driver_class = "rcube_{$driver}";
     if (!class_exists($driver_class)) {
         self::raise_error(array('code' => 700, 'type' => 'php', 'file' => __FILE__, 'line' => __LINE__, 'message' => "Storage driver class ({$driver}) not found!"), true, true);
     }
     // Initialize storage object
     $this->storage = new $driver_class();
     // for backward compat. (deprecated, will be removed)
     $this->imap = $this->storage;
     // enable caching of mail data
     $storage_cache = $this->config->get("{$driver}_cache");
     $messages_cache = $this->config->get('messages_cache');
     // for backward compatybility
     if ($storage_cache === null && $messages_cache === null && $this->config->get('enable_caching')) {
         $storage_cache = 'db';
         $messages_cache = true;
     }
     if ($storage_cache) {
         $this->storage->set_caching($storage_cache);
     }
     if ($messages_cache) {
         $this->storage->set_messages_caching(true);
     }
     // set pagesize from config
     $pagesize = $this->config->get('mail_pagesize');
     if (!$pagesize) {
         $pagesize = $this->config->get('pagesize', 50);
     }
     $this->storage->set_pagesize($pagesize);
     // set class options
     $options = array('auth_type' => $this->config->get("{$driver}_auth_type", 'check'), 'auth_cid' => $this->config->get("{$driver}_auth_cid"), 'auth_pw' => $this->config->get("{$driver}_auth_pw"), 'debug' => (bool) $this->config->get("{$driver}_debug"), 'force_caps' => (bool) $this->config->get("{$driver}_force_caps"), 'timeout' => (int) $this->config->get("{$driver}_timeout"), 'skip_deleted' => (bool) $this->config->get('skip_deleted'), 'driver' => $driver);
     if (!empty($_SESSION['storage_host'])) {
         $options['host'] = $_SESSION['storage_host'];
         $options['user'] = $_SESSION['username'];
         $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);
     // for backward compat. (deprecated, to be removed)
     $options = $this->plugins->exec_hook("imap_init", $options);
     $this->storage->set_options($options);
     $this->set_storage_prop();
 }