/** * 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; }
/** * 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; }
/** * 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'); } }
/** * 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(); }