123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <?php
- class redsms extends SendDogProto {
- /**
- * Loads RED-sms service config
- *
- * @return void
- */
- public function loadRedsmsConfig() {
- $smsgateway = zb_StorageGet('SENDDOG_REDSMS_GATEWAY');
- if (empty($smsgateway)) {
- $smsgateway = 'https://lk.redsms.ru/get/send.php';
- zb_StorageSet('SENDDOG_REDSMS_GATEWAY', $smsgateway);
- }
- $smsbilgateway = zb_StorageGet('SENDDOG_REDSMS_BILGATEWAY');
- if (empty($smsbilgateway)) {
- $smsbilgateway = 'https://lk.redsms.ru/get/balance.php';
- zb_StorageSet('SENDDOG_REDSMS_BILGATEWAY', $smsbilgateway);
- }
- $smslogin = zb_StorageGet('SENDDOG_REDSMS_LOGIN');
- if (empty($smslogin)) {
- $smslogin = 'Login';
- zb_StorageSet('SENDDOG_REDSMS_LOGIN', $smslogin);
- }
- $smsapikey = zb_StorageGet('SENDDOG_REDSMS_APIKEY');
- if (empty($smsapikey)) {
- $smsapikey = 'MyAPIKey';
- zb_StorageSet('SENDDOG_REDSMS_APIKEY', $smsapikey);
- }
- $smssign = zb_StorageGet('SENDDOG_REDSMS_SIGN');
- if (empty($smssign)) {
- $smssign = 'InfoCentr';
- zb_StorageSet('SENDDOG_REDSMS_SIGN', $smssign);
- }
- $this->settings['REDSMS_GATEWAY'] = $smsgateway;
- $this->settings['REDSMS_BILGATEWAY'] = $smsbilgateway;
- $this->settings['REDSMS_LOGIN'] = $smslogin;
- $this->settings['REDSMS_APIKEY'] = $smsapikey;
- $this->settings['REDSMS_SIGN'] = $smssign;
- }
- /**
- * Sends all sms storage via redsms.ru service
- *
- * @return void
- */
- public function redsmsPushMessages() {
- $result = '';
- $timestamp = file_get_contents('https://lk.redsms.ru/get/timestamp.php');
- $api_key = $this->settings['REDSMS_APIKEY'];
- $login = $this->settings['REDSMS_LOGIN'];
- $return = 'xml';
- $sender = $this->settings['REDSMS_SIGN'];
- $allSmsQueue = $this->smsQueue->getQueueData();
- if (!empty($allSmsQueue)) {
- foreach ($allSmsQueue as $io => $eachsms) {
- $phone = str_replace('+', '', $eachsms['number']); //numbers in international format without +
- $text = $eachsms['message'];
- $params = array(
- 'timestamp' => $timestamp,
- 'login' => $login,
- 'phone' => $phone,
- 'text' => $text,
- 'sender' => $sender,
- 'return' => $return);
- ksort($params);
- reset($params);
- $signature = md5(implode($params) . $api_key);
- $query = $this->settings['REDSMS_GATEWAY'] . "?login=" . $login . "&signature=" . $signature . "&phone=" . $phone . "&sender=" . $sender . "&return=" . $return . "×tamp=" . $timestamp . "&text=" . urlencode($text);
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $query);
- curl_setopt($curl, CURLOPT_ENCODING, "utf-8");
- curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 120);
- curl_setopt($curl, CURLOPT_TIMEOUT, 120);
- curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
- $response = curl_exec($curl);
- curl_close($curl);
- //remove old sent message
- $this->smsQueue->deleteSms($eachsms['filename']);
- }
- }
- }
- /**
- * Renders current RED-Sms service user balance
- *
- * @return string
- */
- public function renderRedsmsBalance() {
- $result = '';
- $timestamp = file_get_contents('https://lk.redsms.ru/get/timestamp.php');
- $api_key = $this->settings['REDSMS_APIKEY'];
- $login = $this->settings['REDSMS_LOGIN'];
- $return = 'xml';
- $params = array(
- 'timestamp' => $timestamp,
- 'login' => $login,
- 'return' => $return
- );
- ksort($params);
- reset($params);
- $signature = md5(implode($params) . $api_key);
- $query = $this->settings['REDSMS_BILGATEWAY'] . "?login=" . $login . "&signature=" . $signature . "×tamp=" . $timestamp . "&return=" . $return;
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $query);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
- $response = curl_exec($curl);
- curl_close($curl);
- $result .= wf_BackLink(self::URL_ME, '', true);
- $result .= $this->messages->getStyledMessage(__('Current account balance') . ': ' . $response . ' RUR', 'info');
- return ($result);
- }
- /**
- * Returns set of inputs, required for RED-Sms service configuration
- *
- * @return string
- */
- public function renderRedsmsConfigInputs() {
- $inputs = wf_tag('h2') . __('RED-Sms') . ' ' . wf_Link(self::URL_ME . '&showmisc=redsms', wf_img_sized('skins/icon_dollar.gif', __('Balance'), '10', '10'), true) . wf_tag('h2', true);
- $inputs .= wf_TextInput('editredsmsgateway', __('RED-Sms API address'), $this->settings['REDSMS_GATEWAY'], true, 30);
- $inputs .= wf_TextInput('editredsmsbilgateway', __('RED-Sms Balance API address'), $this->settings['REDSMS_BILGATEWAY'], true, 30);
- $inputs .= wf_TextInput('editredsmslogin', __('User login to access RED-Sms API'), $this->settings['REDSMS_LOGIN'], true, 20);
- $inputs .= wf_TextInput('editredsmsapikey', __('User API key for access RED-Sms API'), $this->settings['REDSMS_APIKEY'], true, 20);
- $inputs .= wf_TextInput('editredsmssign', __('RED-Sms') . ' ' . __('Sign') . ' (' . __('Alphaname') . ')', $this->settings['REDSMS_SIGN'], true, 20);
- $smsServiceFlag = ($this->settings['SMS_SERVICE'] == 'redsms') ? true : false;
- $inputs .= wf_RadioInput('defaultsmsservice', __('Use RED-Sms as default SMS service'), 'redsms', true, $smsServiceFlag);
- return ($inputs);
- }
- /**
- * Saves service settings to database
- *
- * @return void
- */
- public function saveSettings() {
- //RED-Sms configuration
- if ($_POST['editredsmsgateway'] != $this->settings['REDSMS_GATEWAY']) {
- zb_StorageSet('SENDDOG_REDSMS_GATEWAY', $_POST['editredsmsgateway']);
- log_register('SENDDOG CONFIG SET REDSMSGATEWAY `' . $_POST['editredsmsgateway'] . '`');
- }
- if ($_POST['editredsmsbilgateway'] != $this->settings['REDSMS_BILGATEWAY']) {
- zb_StorageSet('SENDDOG_REDSMS_BILGATEWAY', $_POST['editredsmsbilgateway']);
- log_register('SENDDOG CONFIG SET REDSMSBILGATEWAY `' . $_POST['editredsmsbilgateway'] . '`');
- }
- if ($_POST['editredsmslogin'] != $this->settings['REDSMS_LOGIN']) {
- zb_StorageSet('SENDDOG_REDSMS_LOGIN', $_POST['editredsmslogin']);
- log_register('SENDDOG CONFIG SET REDSMSLOGIN `' . $_POST['editredsmslogin'] . '`');
- }
- if ($_POST['editredsmsapikey'] != $this->settings['REDSMS_APIKEY']) {
- zb_StorageSet('SENDDOG_REDSMS_APIKEY', $_POST['editredsmsapikey']);
- log_register('SENDDOG CONFIG SET REDSMSAPIKEY `' . $_POST['editredsmsapikey'] . '`');
- }
- if ($_POST['editredsmssign'] != $this->settings['REDSMS_SIGN']) {
- zb_StorageSet('SENDDOG_REDSMS_SIGN', $_POST['editredsmssign']);
- log_register('SENDDOG CONFIG SET REDSMSSIGN `' . $_POST['editredsmssign'] . '`');
- }
- }
- }
|