| | |
| | | /** |
| | | * Initial startup function |
| | | * to register session, create database and imap connections |
| | | * |
| | | * @todo Remove global vars $DB, $USER |
| | | */ |
| | | private function startup() |
| | | { |
| | |
| | | } |
| | | |
| | | // connect to database |
| | | $GLOBALS['DB'] = $this->get_dbh(); |
| | | $this->get_dbh(); |
| | | |
| | | // set global object for backward compatibility |
| | | $GLOBALS['DB'] = $this->db; |
| | | |
| | | // start session |
| | | $this->session_init(); |
| | |
| | | { |
| | | if (is_object($user)) { |
| | | $this->user = $user; |
| | | |
| | | // set global object for backward compatibility |
| | | $GLOBALS['USER'] = $this->user; |
| | | |
| | | // overwrite config with user preferences |
| | |
| | | |
| | | return $this->db; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * Get global handle for memcache access |
| | | * |
| | |
| | | } |
| | | |
| | | // add to the 'books' array for shutdown function |
| | | if (!isset($this->address_books[$id])) |
| | | $this->address_books[$id] = $contacts; |
| | | $this->address_books[$id] = $contacts; |
| | | |
| | | return $contacts; |
| | | } |
| | |
| | | * Create global IMAP object and connect to server |
| | | * |
| | | * @param boolean True if connection should be established |
| | | * @todo Remove global $IMAP |
| | | */ |
| | | public function imap_init($connect = false) |
| | | { |
| | |
| | | if (session_id()) |
| | | return; |
| | | |
| | | $sess_name = $this->config->get('session_name'); |
| | | $sess_domain = $this->config->get('session_domain'); |
| | | $lifetime = $this->config->get('session_lifetime', 0) * 60; |
| | | |
| | | // set session domain |
| | | if ($domain = $this->config->get('session_domain')) { |
| | | ini_set('session.cookie_domain', $domain); |
| | | if ($sess_domain) { |
| | | ini_set('session.cookie_domain', $sess_domain); |
| | | } |
| | | // set session garbage collecting time according to session_lifetime |
| | | $lifetime = $this->config->get('session_lifetime', 0) * 60; |
| | | if ($lifetime) { |
| | | ini_set('session.gc_maxlifetime', $lifetime * 2); |
| | | } |
| | | |
| | | ini_set('session.cookie_secure', rcube_https_check()); |
| | | ini_set('session.name', 'roundcube_sessid'); |
| | | ini_set('session.name', $sess_name ? $sess_name : 'roundcube_sessid'); |
| | | ini_set('session.use_cookies', 1); |
| | | ini_set('session.use_only_cookies', 1); |
| | | ini_set('session.serialize_handler', 'php'); |
| | |
| | | if (is_string($attrib)) |
| | | $attrib = array('name' => $attrib); |
| | | |
| | | $nr = is_numeric($attrib['nr']) ? $attrib['nr'] : 1; |
| | | $name = $attrib['name'] ? $attrib['name'] : ''; |
| | | |
| | | // attrib contain text values: use them from now |
| | |
| | | $this->texts[$name] = $setval; |
| | | |
| | | // check for text with domain |
| | | if ($domain && ($text_item = $this->texts[$domain.'.'.$name])) |
| | | if ($domain && ($text = $this->texts[$domain.'.'.$name])) |
| | | ; |
| | | // text does not exist |
| | | else if (!($text_item = $this->texts[$name])) { |
| | | else if (!($text = $this->texts[$name])) { |
| | | return "[$name]"; |
| | | } |
| | | |
| | | // make text item array |
| | | $a_text_item = is_array($text_item) ? $text_item : array('single' => $text_item); |
| | | |
| | | // decide which text to use |
| | | if ($nr == 1) { |
| | | $text = $a_text_item['single']; |
| | | } |
| | | else if ($nr > 0) { |
| | | $text = $a_text_item['multiple']; |
| | | } |
| | | else if ($nr == 0) { |
| | | if ($a_text_item['none']) |
| | | $text = $a_text_item['none']; |
| | | else if ($a_text_item['single']) |
| | | $text = $a_text_item['single']; |
| | | else if ($a_text_item['multiple']) |
| | | $text = $a_text_item['multiple']; |
| | | } |
| | | |
| | | // default text is single |
| | | if ($text == '') { |
| | | $text = $a_text_item['single']; |
| | | } |
| | | |
| | | // replace vars in text |
| | |
| | | else if ($attrib['lowercase']) |
| | | return mb_strtolower($text); |
| | | |
| | | return $text; |
| | | return strtr($text, array('\n' => "\n")); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | // before closing the database connection, write session data |
| | | if ($_SERVER['REMOTE_ADDR'] && is_object($this->session)) { |
| | | $this->session->cleanup(); |
| | | session_write_close(); |
| | | } |
| | | |