| | |
| | | */ |
| | | class rcmail |
| | | { |
| | | /** |
| | | * Main tasks. |
| | | * |
| | | * @var array |
| | | */ |
| | | static public $main_tasks = array('mail','settings','addressbook','login','logout','utils','dummy'); |
| | | |
| | | /** |
| | | * Singleton instace of rcmail |
| | | * |
| | | * @var rcmail |
| | | */ |
| | | static private $instance; |
| | | |
| | | /** |
| | | * Stores instance of rcube_config. |
| | | * |
| | | * @var rcube_config |
| | | */ |
| | | public $config; |
| | | |
| | | /** |
| | | * Stores rcube_user instance. |
| | | * |
| | | * @var rcube_user |
| | | */ |
| | | public $user; |
| | | |
| | | /** |
| | | * Instace of database class. |
| | | * |
| | | * @var rcube_mdb2 |
| | | */ |
| | | public $db; |
| | | |
| | | /** |
| | | * Instace of rcube_session class. |
| | | * |
| | | * @var rcube_session |
| | | */ |
| | | public $session; |
| | | |
| | | /** |
| | | * Instance of rcube_smtp class. |
| | | * |
| | | * @var rcube_smtp |
| | | */ |
| | | public $smtp; |
| | | |
| | | /** |
| | | * Instance of rcube_imap class. |
| | | * |
| | | * @var rcube_imap |
| | | */ |
| | | public $imap; |
| | | |
| | | /** |
| | | * Instance of rcube_template class. |
| | | * |
| | | * @var rcube_template |
| | | */ |
| | | public $output; |
| | | |
| | | /** |
| | | * Instance of rcube_plugin_api. |
| | | * |
| | | * @var rcube_plugin_api |
| | | */ |
| | | public $plugins; |
| | | |
| | | /** |
| | | * Current task. |
| | | * |
| | | * @var string |
| | | */ |
| | | public $task; |
| | | |
| | | /** |
| | | * Current action. |
| | | * |
| | | * @var string |
| | | */ |
| | | public $action = ''; |
| | | public $comm_path = './'; |
| | | |
| | |
| | | /** |
| | | * This implements the 'singleton' design pattern |
| | | * |
| | | * @return object rcmail The one and only instance |
| | | * @return rcmail The one and only instance |
| | | */ |
| | | static function get_instance() |
| | | { |
| | |
| | | /** |
| | | * Setter for system user object |
| | | * |
| | | * @param object rcube_user Current user instance |
| | | * @param rcube_user Current user instance |
| | | */ |
| | | public function set_user($user) |
| | | { |
| | |
| | | /** |
| | | * Get the current database connection |
| | | * |
| | | * @return object rcube_mdb2 Database connection object |
| | | * @return rcube_mdb2 Database connection object |
| | | */ |
| | | public function get_dbh() |
| | | { |
| | |
| | | * |
| | | * @param string Address book identifier |
| | | * @param boolean True if the address book needs to be writeable |
| | | * @return object rcube_contacts Address book object |
| | | * @return rcube_contacts Address book object |
| | | */ |
| | | public function get_address_book($id, $writeable = false) |
| | | { |
| | |
| | | * environment vars according to the current session and configuration |
| | | * |
| | | * @param boolean True if this request is loaded in a (i)frame |
| | | * @return object rcube_template Reference to HTML output object |
| | | * @return rcube_template Reference to HTML output object |
| | | */ |
| | | public function load_gui($framed = false) |
| | | { |
| | |
| | | /** |
| | | * Create an output object for JSON responses |
| | | * |
| | | * @return object rcube_json_output Reference to JSON output object |
| | | * @return rcube_json_output Reference to JSON output object |
| | | */ |
| | | public function json_init() |
| | | { |
| | |
| | | // support this parameter for backward compatibility but log warning |
| | | if ($connect) { |
| | | $this->imap_connect(); |
| | | raise_error(array('code' => 800, 'type' => 'imap', 'file' => __FILE__, |
| | | 'message' => "rcube::imap_init(true) is deprecated, use rcube::imap_connect() instead"), true, false); |
| | | raise_error(array( |
| | | 'code' => 800, 'type' => 'imap', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "rcube::imap_init(true) is deprecated, use rcube::imap_connect() instead"), |
| | | true, false); |
| | | } |
| | | } |
| | | |
| | |
| | | if ($a_host['host']) { |
| | | $host = $a_host['host']; |
| | | $imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? $a_host['scheme'] : null; |
| | | if(!empty($a_host['port'])) |
| | | if (!empty($a_host['port'])) |
| | | $imap_port = $a_host['port']; |
| | | else if ($imap_ssl && $imap_ssl != 'tls' && (!$config['default_port'] || $config['default_port'] == 143)) |
| | | $imap_port = 993; |
| | |
| | | if (!$this->imap) |
| | | $this->imap_init(); |
| | | |
| | | // Here we need IDNA ASCII |
| | | // Only rcube_contacts class is using domain names in Unicode |
| | | $host = idn_to_ascii($host); |
| | | if (strpos($username, '@')) |
| | | $username = idn_to_ascii($username); |
| | | |
| | | // try IMAP login |
| | | if (!($imap_login = $this->imap->connect($host, $username, $pass, $imap_port, $imap_ssl))) { |
| | | // lowercase username if it's an e-mail address (#1484473) |