/** * Create new IMAP server * * @param $obj_data * * @return mixed */ function rtmailbox_create_imap_server($obj_data) { global $rt_imap_server_model; $result = array(); $result['status'] = false; if (empty($obj_data['provider_name']) || empty($obj_data['incoming_server']) || empty($obj_data['outgoing_server'])) { $result['error'] = 'Error: Required server field missing.'; return $result; } $incoming_enc = isset($obj_data['incoming_ssl']) && 'enable' == $obj_data['incoming_ssl'] ? 'ssl' : 'tls'; $outgoing_enc = isset($obj_data['outgoing_ssl']) && 'enable' == $obj_data['outgoing_ssl'] ? 'ssl' : 'tls'; // if port empty set default if (!isset($obj_data['incoming_port']) || empty($obj_data['incoming_port'])) { $obj_data['incoming_port'] = 'ssl' == $incoming_enc ? $this->incoming_ssl_port : $this->incoming_tls_port; } if (!isset($obj_data['outgoing_port']) || empty($obj_data['outgoing_port'])) { $obj_data['outgoing_port'] = 'ssl' == $outgoing_enc ? $this->outgoing_ssl_port : $this->outgoing_tls_port; } try { $hdZendEmail = new Rt_Zend_Mail(); $ssl = isset($incoming_enc) && !is_null($incoming_enc) ? $incoming_enc : false; $hdZendEmail->try_imap_connect($obj_data['incoming_server'], (int) $obj_data['incoming_port'], $ssl); $args = array('server_name' => $obj_data['provider_name'], 'incoming_imap_server' => $obj_data['incoming_server'], 'incoming_imap_port' => $obj_data['incoming_port'], 'incoming_imap_enc' => $incoming_enc, 'outgoing_smtp_server' => $obj_data['outgoing_server'], 'outgoing_smtp_port' => $obj_data['outgoing_port'], 'outgoing_smtp_enc' => $outgoing_enc); if (!empty($obj_data['serverid'])) { $where = array('id' => $obj_data['serverid']); $server_id = $rt_imap_server_model->update_server($args, $where); if ($server_id) { $server_id = $obj_data['serverid']; } } else { $server_id = $rt_imap_server_model->add_server($args); } if (!empty($server_id)) { $result['server_id'] = $server_id; $result['status'] = true; } else { $result['error'] = 'Error: problem occurs while adding/updating server'; } } catch (Exception $e) { $result['error'] = 'Caught exception: ' . $e->getMessage(); } return $result; }