コード例 #1
0
 public function ProcessSMS()
 {
     require_once "Twilio.php";
     $sms_sender_id = Yii::app()->functions->getOptionAdmin('sms_sender_id');
     $sms_account_id = Yii::app()->functions->getOptionAdmin('sms_account_id');
     $sms_token = Yii::app()->functions->getOptionAdmin('sms_token');
     $nexmo_sender_id = Yii::app()->functions->getOptionAdmin('nexmo_sender_id');
     $nexmo_key = Yii::app()->functions->getOptionAdmin('nexmo_key');
     $nexmo_secret = Yii::app()->functions->getOptionAdmin('nexmo_secret');
     $nexmo_use_curl = Yii::app()->functions->getOptionAdmin('nexmo_use_curl');
     $sms_provider = Yii::app()->functions->getOptionAdmin('sms_provider');
     $clickatel_user = Yii::app()->functions->getOptionAdmin('clickatel_user');
     $clickatel_password = Yii::app()->functions->getOptionAdmin('clickatel_password');
     $clickatel_api_id = Yii::app()->functions->getOptionAdmin('clickatel_api_id');
     $clickatel_use_curl = Yii::app()->functions->getOptionAdmin('clickatel_use_curl');
     $nexmo_use_unicode = Yii::app()->functions->getOptionAdmin('nexmo_use_unicode');
     $clickatel_use_unicode = Yii::app()->functions->getOptionAdmin('clickatel_use_unicode');
     $clickatel_sender = Yii::app()->functions->getOptionAdmin('clickatel_sender');
     $privatesms_username = Yii::app()->functions->getOptionAdmin('privatesms_username');
     $privatesms_password = Yii::app()->functions->getOptionAdmin('privatesms_password');
     $privatesms_sender = Yii::app()->functions->getOptionAdmin('privatesms_sender');
     /*dump($sms_sender_id);
     		dump($sms_account_id);
     		dump($sms_token);*/
     $db_ext = new DbExt();
     $stmt = "\n\t\tSELECT * FROM\n\t\t{{sms_broadcast_details}}\n\t\tWHERE\n\t\tstatus IN ('pending')\n\t\tORDER BY id ASC\n\t\tLIMIT 0,50\n\t\t";
     if ($res = $db_ext->rst($stmt)) {
         foreach ($res as $val) {
             dump($val);
             //$available_credit=Yii::app()->functions->getMerchantSMSCredit(Yii::app()->functions->getMerchantID());
             $available_credit = Yii::app()->functions->getMerchantSMSCredit($val['merchant_id']);
             dump($available_credit);
             if ($available_credit >= 1) {
                 //if ( !empty($sms_sender_id) && !empty($sms_account_id) && !empty($sms_token)){
                 $raw = '';
                 $msg = '';
                 if ($sms_provider == "nexmo") {
                     $Nexmo = new Nexmo();
                     $Nexmo->key = $nexmo_key;
                     $Nexmo->secret = $nexmo_secret;
                     $Nexmo->sender = $nexmo_sender_id;
                     $Nexmo->to = $val['contact_phone'];
                     $Nexmo->message = $val['sms_message'];
                     $Nexmo->is_curl = $nexmo_use_curl;
                     if ($nexmo_use_unicode == 1) {
                         $Nexmo->unicode = true;
                     }
                     try {
                         $raw = $resp = $Nexmo->sendSMS();
                         $msg = "process";
                     } catch (Exception $e) {
                         $msg = $e->getMessage();
                     }
                 } elseif ($sms_provider == "clickatell") {
                     $Clickatell = new Clickatell();
                     $Clickatell->user = $clickatel_user;
                     $Clickatell->password = $clickatel_password;
                     $Clickatell->api_id = $clickatel_api_id;
                     $Clickatell->is_curl = $clickatel_use_curl;
                     $Clickatell->to = $val['contact_phone'];
                     $Clickatell->message = $val['sms_message'];
                     if ($clickatel_use_unicode == 1) {
                         $Clickatell->unicode = true;
                     }
                     $Clickatell->sender = $clickatel_sender;
                     try {
                         $raw = $resp = $Clickatell->sendSMS();
                         $msg = "process";
                     } catch (Exception $e) {
                         $msg = $e->getMessage();
                     }
                 } elseif ($sms_provider == "private") {
                     $obj = new Sender("103.16.101.52", "80", $privatesms_username, $privatesms_password, $privatesms_sender, $val['sms_message'], $val['contact_phone'], "0", "1");
                     $resp = $obj->Submit();
                     if (preg_match("/1701/i", $resp)) {
                         $raw = $resp;
                         $msg = "process";
                     } else {
                         $errors['1702'] = "Invalid URL Error, This means that one of the parameters was not\n\t\t\tprovided or left blank";
                         $errors['1703'] = "Invalid value in username or password field";
                         $errors['1704'] = 'Invalid value in "type" field';
                         $errors['1705'] = "Invalid Message";
                         $errors['1706'] = "Invalid Destination";
                         $errors['1707'] = "Invalid Source (Sender)";
                         $errors['1708'] = 'Invalid value for "dlr" field';
                         $errors['1709'] = "User validation failed";
                         $errors['1710'] = "Internal Error";
                         $errors['1025'] = "Insufficient Credit";
                         $resp_temp = explode("|", $resp);
                         if (is_array($resp_temp) && count($resp_temp) >= 1) {
                             $code_error = $resp_temp[0];
                         } else {
                             $code_error = $resp;
                         }
                         $raw = $resp;
                         if (array_key_exists($code_error, $errors)) {
                             $msg = $errors[$code_error];
                         } else {
                             $msg = "Undefined response from api.";
                         }
                     }
                 } else {
                     $twilio = new Twilio();
                     $twilio->_debug = false;
                     $twilio->sid = $sms_account_id;
                     $twilio->auth = $sms_token;
                     $twilio->data['From'] = $sms_sender_id;
                     $twilio->data['To'] = $val['contact_phone'];
                     $twilio->data['Body'] = $val['sms_message'];
                     if ($resp = $twilio->sendSMS()) {
                         $raw = $twilio->getSuccessXML();
                         $msg = "process";
                     } else {
                         $msg = $twilio->getError();
                     }
                 }
                 //} else $msg=Yii::t("default","Admin SMS Settings Invalid");
             } else {
                 $msg = Yii::t("default", "No SMS Credit");
             }
             $params = array('status' => $msg, 'gateway_response' => $raw, 'date_executed' => date('c'), 'gateway' => $sms_provider);
             $db_ext->updateData("{{sms_broadcast_details}}", $params, 'id', $val['id']);
         }
     } else {
         echo "<p>No records to process</p>";
     }
 }
コード例 #2
-1
ファイル: Functions.php プロジェクト: ashishvazirani/food
 public function sendSMS($to = '', $message = '')
 {
     $to = trim($to);
     $message = trim($message);
     $msg = '';
     $raw = '';
     $sms_provider = Yii::app()->functions->getOptionAdmin('sms_provider');
     //if ($sms_provider=="nexmo"){
     $sms_provider = strtolower($sms_provider);
     //dump($sms_provider);
     switch ($sms_provider) {
         case "clickatell":
             $Clickatell = new Clickatell();
             $Clickatell->user = Yii::app()->functions->getOptionAdmin('clickatel_user');
             $Clickatell->password = Yii::app()->functions->getOptionAdmin('clickatel_password');
             $Clickatell->api_id = Yii::app()->functions->getOptionAdmin('clickatel_api_id');
             $Clickatell->is_curl = Yii::app()->functions->getOptionAdmin('clickatel_use_curl');
             $Clickatell->to = $to;
             $Clickatell->message = $message;
             $clickatel_use_unicode = Yii::app()->functions->getOptionAdmin('clickatel_use_unicode');
             if ($clickatel_use_unicode == 1) {
                 $Clickatell->unicode = true;
             }
             $clickatel_sender = Yii::app()->functions->getOptionAdmin('clickatel_sender');
             $Clickatell->sender = $clickatel_sender;
             try {
                 $raw = $Clickatell->sendSMS();
                 $msg = "process";
             } catch (Exception $e) {
                 $msg = $e->getMessage();
                 $raw = $e->getMessage();
             }
             break;
         case "nexmo":
             $nexmo_sender_id = Yii::app()->functions->getOptionAdmin('nexmo_sender_id');
             $nexmo_key = Yii::app()->functions->getOptionAdmin('nexmo_key');
             $nexmo_secret = Yii::app()->functions->getOptionAdmin('nexmo_secret');
             $nexmo_use_curl = Yii::app()->functions->getOptionAdmin('nexmo_use_curl');
             $Nexmo = new Nexmo();
             $Nexmo->key = $nexmo_key;
             $Nexmo->secret = $nexmo_secret;
             $Nexmo->sender = $nexmo_sender_id;
             $Nexmo->to = $to;
             $Nexmo->message = $message;
             $Nexmo->is_curl = $nexmo_use_curl;
             $nexmo_use_unicode = Yii::app()->functions->getOptionAdmin('nexmo_use_unicode');
             if ($nexmo_use_unicode == 1) {
                 $Nexmo->unicode = true;
             }
             try {
                 $raw = $Nexmo->sendSMS();
                 $msg = "process";
             } catch (Exception $e) {
                 $msg = $e->getMessage();
             }
             break;
         case "private":
             $privatesms_username = Yii::app()->functions->getOptionAdmin('privatesms_username');
             $privatesms_password = Yii::app()->functions->getOptionAdmin('privatesms_password');
             $privatesms_sender = Yii::app()->functions->getOptionAdmin('privatesms_sender');
             /*dump($privatesms_username);
             	 dump($privatesms_password);
             	 dump($privatesms_sender);*/
             $obj = new Sender("103.16.101.52", "80", $privatesms_username, $privatesms_password, $privatesms_sender, $message, $to, "0", "1");
             $resp = $obj->Submit();
             if (preg_match("/1701/i", $resp)) {
                 $raw = $resp;
                 $msg = "process";
             } else {
                 $errors['1702'] = "Invalid URL Error, This means that one of the parameters was not\r\n\t\t\tprovided or left blank";
                 $errors['1703'] = "Invalid value in username or password field";
                 $errors['1704'] = 'Invalid value in "type" field';
                 $errors['1705'] = "Invalid Message";
                 $errors['1706'] = "Invalid Destination";
                 $errors['1707'] = "Invalid Source (Sender)";
                 $errors['1708'] = 'Invalid value for "dlr" field';
                 $errors['1709'] = "User validation failed";
                 $errors['1710'] = "Internal Error";
                 $errors['1025'] = "Insufficient Credit";
                 $resp_temp = explode("|", $resp);
                 if (is_array($resp_temp) && count($resp_temp) >= 1) {
                     $code_error = $resp_temp[0];
                 } else {
                     $code_error = $resp;
                 }
                 if (array_key_exists($code_error, $errors)) {
                     $msg = $errors[$code_error];
                 } else {
                     $msg = "Undefined response from api.";
                 }
             }
             break;
         case "bhashsms":
             $bhashsms_user = Yii::app()->functions->getOptionAdmin('bhashsms_user');
             $bhashsms_pass = Yii::app()->functions->getOptionAdmin('bhashsms_pass');
             $bhashsms_senderid = Yii::app()->functions->getOptionAdmin('bhashsms_senderid');
             $bhashsms_smstype = Yii::app()->functions->getOptionAdmin('bhashsms_smstype');
             $bhashsms_priority = Yii::app()->functions->getOptionAdmin('bhashsms_priority');
             $bhashsms_use_curl = Yii::app()->functions->getOptionAdmin('bhashsms_use_curl');
             $Bhashsms = new Bhashsms();
             $Bhashsms->user = $bhashsms_user;
             $Bhashsms->password = $bhashsms_pass;
             $Bhashsms->sender = $bhashsms_senderid;
             $Bhashsms->sms_type = $bhashsms_smstype;
             $Bhashsms->priority = $bhashsms_priority;
             $Bhashsms->to = $to;
             $Bhashsms->message = $message;
             $Bhashsms->is_curl = $bhashsms_use_curl == 1 ? true : false;
             try {
                 $raw = $Bhashsms->sendSMS();
                 $msg = "process";
             } catch (Exception $e) {
                 $msg = $e->getMessage();
             }
             break;
         default:
             require_once "Twilio.php";
             $sms_sender_id = Yii::app()->functions->getOptionAdmin('sms_sender_id');
             $sms_account_id = Yii::app()->functions->getOptionAdmin('sms_account_id');
             $sms_token = Yii::app()->functions->getOptionAdmin('sms_token');
             $twilio = new Twilio();
             $twilio->_debug = false;
             $twilio->sid = $sms_account_id;
             $twilio->auth = $sms_token;
             $twilio->data['From'] = $sms_sender_id;
             $twilio->data['To'] = $to;
             $twilio->data['Body'] = $message;
             if ($resp = $twilio->sendSMS()) {
                 $raw = $twilio->getSuccessXML();
                 $msg = "process";
             } else {
                 $msg = $twilio->getError();
             }
             break;
     }
     return array('msg' => $msg, 'raw' => $raw, 'sms_provider' => $sms_provider);
 }