Exemple #1
0
 /**
  * Get the current database connection
  *
  * @return rcube_db Database object
  */
 public function get_dbh()
 {
     if (!$this->db) {
         $config_all = $this->config->all();
         $this->db = rcube_db::factory($config_all['db_dsnw'], $config_all['db_dsnr'], $config_all['db_persistent']);
         $this->db->set_debug((bool) $config_all['sql_debug']);
     }
     return $this->db;
 }
Exemple #2
0
 /**
  * Get the current database connection
  *
  * @return rcube_mdb2  Database connection object
  */
 public function get_dbh()
 {
     if (!$this->db) {
         $config_all = $this->config->all();
         $this->db = new rcube_mdb2($config_all['db_dsnw'], $config_all['db_dsnr'], $config_all['db_persistent']);
         $this->db->sqlite_initials = INSTALL_PATH . 'SQL/sqlite.initial.sql';
         $this->db->set_debug((bool) $config_all['sql_debug']);
     }
     return $this->db;
 }
Exemple #3
0
 /**
  * Do server side actions on logout
  */
 public function logout_actions()
 {
     $config = $this->config->all();
     // on logout action we're not connected to imap server
     if ($config['logout_purge'] && !empty($config['trash_mbox']) || $config['logout_expunge']) {
         if (!$this->authenticate_session()) {
             return;
         }
         $this->imap_connect();
     }
     if ($config['logout_purge'] && !empty($config['trash_mbox'])) {
         $this->imap->clear_mailbox($config['trash_mbox']);
     }
     if ($config['logout_expunge']) {
         $this->imap->expunge('INBOX');
     }
 }
Exemple #4
0
 /**
  * Fixes some user preferences according to namespace handling change.
  * Old Roundcube versions were using folder names with removed namespace prefix.
  * Now we need to add the prefix on servers where personal namespace has prefix.
  *
  * @param rcube_user $user User object
  */
 private function fix_namespace_settings($user)
 {
     $prefix = $this->imap->get_namespace('prefix');
     $prefix_len = strlen($prefix);
     if (!$prefix_len) {
         return;
     }
     $prefs = $this->config->all();
     if (!empty($prefs['namespace_fixed'])) {
         return;
     }
     // Build namespace prefix regexp
     $ns = $this->imap->get_namespace();
     $regexp = array();
     foreach ($ns as $entry) {
         if (!empty($entry)) {
             foreach ($entry as $item) {
                 if (strlen($item[0])) {
                     $regexp[] = preg_quote($item[0], '/');
                 }
             }
         }
     }
     $regexp = '/^(' . implode('|', $regexp) . ')/';
     // Fix preferences
     $opts = array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox', 'archive_mbox');
     foreach ($opts as $opt) {
         if ($value = $prefs[$opt]) {
             if ($value != 'INBOX' && !preg_match($regexp, $value)) {
                 $prefs[$opt] = $prefix . $value;
             }
         }
     }
     if (!empty($prefs['default_imap_folders'])) {
         foreach ($prefs['default_imap_folders'] as $idx => $name) {
             if ($name != 'INBOX' && !preg_match($regexp, $name)) {
                 $prefs['default_imap_folders'][$idx] = $prefix . $name;
             }
         }
     }
     if (!empty($prefs['search_mods'])) {
         $folders = array();
         foreach ($prefs['search_mods'] as $idx => $value) {
             if ($idx != 'INBOX' && $idx != '*' && !preg_match($regexp, $idx)) {
                 $idx = $prefix . $idx;
             }
             $folders[$idx] = $value;
         }
         $prefs['search_mods'] = $folders;
     }
     if (!empty($prefs['message_threading'])) {
         $folders = array();
         foreach ($prefs['message_threading'] as $idx => $value) {
             if ($idx != 'INBOX' && !preg_match($regexp, $idx)) {
                 $idx = $prefix . $idx;
             }
             $folders[$prefix . $idx] = $value;
         }
         $prefs['message_threading'] = $folders;
     }
     if (!empty($prefs['collapsed_folders'])) {
         $folders = explode('&&', $prefs['collapsed_folders']);
         $count = count($folders);
         $folders_str = '';
         if ($count) {
             $folders[0] = substr($folders[0], 1);
             $folders[$count - 1] = substr($folders[$count - 1], 0, -1);
         }
         foreach ($folders as $value) {
             if ($value != 'INBOX' && !preg_match($regexp, $value)) {
                 $value = $prefix . $value;
             }
             $folders_str .= '&' . $value . '&';
         }
         $prefs['collapsed_folders'] = $folders_str;
     }
     $prefs['namespace_fixed'] = true;
     // save updated preferences and reset imap settings (default folders)
     $user->save_prefs($prefs);
     $this->set_imap_prop();
 }