public function process() { list($success, $form) = $this->process_form(array('nux_pass', 'nux_service', 'nux_email', 'nux_name')); if ($success) { if (Nux_Quick_Services::exists($form['nux_service'])) { $details = Nux_Quick_Services::details($form['nux_service']); $details['name'] = $form['nux_name']; Hm_IMAP_List::add(array('name' => $details['name'], 'server' => $details['server'], 'port' => $details['port'], 'tls' => $details['tls'], 'user' => $form['nux_email'], 'pass' => $form['nux_pass'])); $servers = Hm_IMAP_List::dump(false, true); $ids = array_keys($servers); $new_id = array_pop($ids); $imap = Hm_IMAP_List::connect($new_id, false); if ($imap && $imap->get_state() == 'authenticated') { if (isset($details['smtp'])) { Hm_SMTP_List::add(array('name' => $details['name'], 'server' => $details['smtp']['server'], 'port' => $details['smtp']['port'], 'tls' => $details['smtp']['tls'], 'user' => $form['nux_email'], 'pass' => $form['nux_pass'])); $this->session->record_unsaved('SMTP server added'); $smtp_servers = Hm_SMTP_List::dump(false, true); $this->user_config->set('smtp_servers', $smtp_servers); } $this->user_config->set('imap_servers', $servers); Hm_IMAP_List::clean_up(); $user_data = $this->user_config->dump(); if (!empty($user_data)) { $this->session->set('user_data', $user_data); } $this->session->record_unsaved('IMAP server added'); $this->session->record_unsaved('SMTP server added'); $this->session->secure_cookie($this->request, 'hm_reload_folders', '1'); Hm_Msgs::add('E-mail account successfully added'); $msgs = Hm_Msgs::get(); if (!empty($msgs)) { $this->session->secure_cookie($this->request, 'hm_msgs', base64_encode(serialize($msgs)), 0); } $this->session->close_early(); $this->out('nux_account_added', true); } else { Hm_IMAP_List::del($new_id); Hm_Msgs::add('ERRAuthentication failed'); } } } }
/** * This list is cached in the session between page loads by Hm_Handler_save_imap_servers */ public function process() { $servers = $this->user_config->get('imap_servers', array()); $added = false; $updated = false; $new_servers = array(); foreach ($servers as $index => $server) { if ($this->session->loaded) { if (array_key_exists('expiration', $server)) { $updated = true; $server['expiration'] = 1; } } $new_servers[] = $server; Hm_IMAP_List::add($server, $index); if ($server['name'] == 'Default-Auth-Server') { $added = true; } } if ($updated) { $this->user_config->set('imap_servers', $new_servers); } if (!$added) { $auth_server = $this->session->get('imap_auth_server_settings', array()); if (!empty($auth_server)) { Hm_IMAP_List::add(array('name' => 'Default-Auth-Server', 'server' => $auth_server['server'], 'port' => $auth_server['port'], 'tls' => $auth_server['tls'], 'user' => $auth_server['username'], 'pass' => $auth_server['password']), count($servers)); } } }