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>"; } }
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); }