コード例 #1
0
ファイル: class-rt-mailbox.php プロジェクト: nekulin/rt-lib
 /**
  * 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;
 }