Files
crm.clientright.ru/modules/SMSNotifier/providers/streamsms/StreamClass.php

237 lines
14 KiB
PHP
Raw Normal View History

<?php
class STREAM
{
/*------------------------------------------------------------------------------------------------*/
/* Функция получения идентификатора сессии */
/* $login (string) - логин пользователя */
/* $password (string) - пароль пользователя */
/*------------------------------------------------------------------------------------------------*/
function GetSessionId($server,$login,$password)
{
$href = $server.'Session/?login='.$login.'&password='.$password;
$result = $this -> GetConnect($href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция получения баланса пользователя */
/* $session (string 32 символа) - идентификатор пользователя */
/*------------------------------------------------------------------------------------------------*/
function GetBalance($server,$session)
{
$href = $server.'Balance/?sessionId='.$session;
$result = $this -> GetConnect($href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция получения статистики по отправленным сообщениям */
/* $session (string 32 символа) - идентификатор пользователя */
/* $startDateTime (DateTime ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС) - начало периода для запроса статистики */
/* $endDateTime (DateTime ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС) - конец периода для запроса статистики */
/*------------------------------------------------------------------------------------------------*/
function GetStatistic($server,$session,$startDateTime,$endDateTime)
{
$href = $server.'Statistic/?sessionId='.$session.'&startDateTime='.$startDateTime.'&endDateTime='.$endDateTime;
$result = $this -> GetConnect($href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция получения входящих сообщений */
/* $session (string 32 символа) - идентификатор пользователя */
/* $minDateUTC (DateTime ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС) - начало периода для запроса входящих сообщений */
/* $maxDateUTC (DateTime ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС) - конец периода для запроса входящих сообщений */
/*------------------------------------------------------------------------------------------------*/
function GetIncomingSms($server,$session,$minDateUTC,$maxDateUTC)
{
$href = $server.'Incoming/?sessionId='.$session.'&minDateUTC='.$minDateUTC.'&maxDateUTC='.$maxDateUTC;
$result = $this -> GetConnect($href);
$result = $this -> ChangeFormateDate(json_decode($result,true));
return $result;
}
/*------------------------------------------------------------------------------------------------*/
/* Функция получения статуса сообщения */
/* $session (string 32 символа) - идентификатор пользователя */
/* $messageId (string 9 символов) - статус отправленного сообщения */
/*------------------------------------------------------------------------------------------------*/
function GetState($server,$session,$messageId)
{
$href = $server.'State/?sessionId='.$session.'&messageId='.$messageId;
$result = $this -> GetConnect($href);
$result = $this -> ChangeFormateDate(json_decode($result,true));
return $result;
}
/*------------------------------------------------------------------------------------------------*/
/* Функция отправки единичного сообщения */
/* $session (string 32 символа) - идентификатор пользователя */
/* $sourceAddress (string 11 латинских или не более 15 цифровых символов) - имя отправителя */
/* $destinationAddress (integer) - номер абонента (в формате 79111234567 для РФ) */
/* $data (string) - текст сообщения */
/* $validity (integer) - время жизни сообщения, указывается в минутах, по умолчанию 1440 */
/* (необязательный параметр) */
/* $sendDate (DateTime ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС) - время передачи сообщения */
/* (необязательный параметр) */
/*------------------------------------------------------------------------------------------------*/
function SendSms($server,$session,$sourceAddress,$destinationAddress,$data,$validity,$sendDate = '')
{
$href = $server.'Send/SendSms/';
if($sendDate != '')
$sendDate = '&sendDate='.$sendDate;
$src = 'sessionId='.$session.'&sourceAddress='.$sourceAddress.'&destinationAddress='.$destinationAddress.'&data='.$data.'&validity='.$validity.$sendDate;
$result = $this -> PostConnect($src,$href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция отправки сообщений нескольким адресатам */
/* $session (string 32 символа) - идентификатор пользователя */
/* $sourceAddress (string 11 латинских или не более 15 цифровых символов) - имя отправителя */
/* $destinationAddresses (string) - номера абонентов (номера указываются через запятую) */
/* $data (string) - текст сообщения */
/* $validity (integer) - время жизни сообщения, указывается в минутах, по умолчанию 1440 */
/* (необязательный параметр) */
/*------------------------------------------------------------------------------------------------*/
function SendBulk($server,$session,$sourceAddress,$destinationAddresses,$data,$validity)
{
$href = $server.'Send/SendBulk/';
$src = 'sessionId='.$session.'&sourceAddress='.$sourceAddress.'&destinationAddresses='.$destinationAddresses.'&data='.$data.'&validity='.$validity;
$result = $this -> PostConnect($src,$href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция отправки сообщений по локальному времени абонента */
/* $session (string 32 символа) - идентификатор пользователя */
/* $sourceAddress (string 11 латинских или не более 15 цифровых символов) - имя отправителя */
/* $destinationAddress (integer) - номер абонента (в формате 79111234567 для РФ) */
/* $data (string) - текст сообщения */
/* $validity (integer) - время жизни сообщения, указывается в минутах, по умолчанию 1440 */
/* (необязательный параметр) */
/* $sendDate (DateTime ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС) - время передачи сообщения по UTC */
/*------------------------------------------------------------------------------------------------*/
function SendByTime($server,$session,$sourceAddress,$destinationAddress,$data,$validity,$sendDate = '')
{
$href = $server.'Send/SendByTime/';
if($sendDate != '')
$sendDate = '&sendDate='.$sendDate;
$src = 'sessionId='.$session.'&sourceAddress='.$sourceAddress.'&destinationAddress='.$destinationAddress.'&data='.$data.'&validity='.$validity.$sendDate;
$result = $this -> PostConnect($src,$href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция пакетной отправки сообщений */
/* $session (string 32 символа) - идентификатор пользователя */
/* $sourceAddress (string 11 латинских или не более 15 цифровых символов) - имя отправителя */
/* $destinationAddress (integer) - номер абонента (в формате 79111234567 для РФ) */
/* $phone_data (array) - тексты сообщений и номера получателей */
/* $validity (integer) - время жизни сообщения, указывается в минутах, по умолчанию 1440 */
/* (необязательный параметр) */
/*------------------------------------------------------------------------------------------------*/
function SendBulkPacket($server,$session,$sourceAddress,$phone_data,$validity)
{
$href = $server.'Send/SendBulkPacket/';
$src = 'sessionId='.$session.'&sourceAddress='.$sourceAddress.'&phone_data='.$phone_data.'&validity='.$validity;
$result = $this -> PostConnect($src,$href);
return json_decode($result,true);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция формирования и отправки get-запроса на сервер через cURL */
/* $href (string) - адрес для подключения (http://gateway.api.sc/rest/) */
/*------------------------------------------------------------------------------------------------*/
function GetConnect($href)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $href);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
$result=curl_exec($ch);
curl_close($ch);
return $result;
}
/*------------------------------------------------------------------------------------------------*/
/* Функция формирования и отправки post-запроса на сервер через cURL */
/* $href (string) - адрес для подключения (http://gateway.api.sc/rest/) */
/* $src (string) - передаваемый запрос */
/*------------------------------------------------------------------------------------------------*/
function PostConnect($src,$href)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CRLF, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $src);
curl_setopt($ch, CURLOPT_URL, $href);
$result = curl_exec($ch);
return $result;
curl_close($ch);
}
/*------------------------------------------------------------------------------------------------*/
/* Функция изменения даты из unix-формата в формат ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС */
/* $result (array) - массив, в котором значения типа unix-дата будут переведены в формат */
/* ГГГГ-ММ-ДД(T)ЧЧ:ММ:СС */
/*------------------------------------------------------------------------------------------------*/
function ChangeFormateDate($result)
{
foreach($result as $key => $value)
{
if(is_array($value))
{
foreach($value as $key_in => $value_in)
{
if(substr($value_in,0,5)=='/Date')
{
$value_in = str_replace('/Date(','',$value_in);
$value_in = str_replace(')/','',$value_in);
$value_in = substr($value_in,0,strlen($value_in)-3);
$value_in = date('Y-m-d H:i:s',$value_in);
$arr_in[$key_in] = $value_in;
}
else
$arr_in[$key_in] = $value_in;
}
$arr[$key] = $arr_in;
}
else
{
if(substr($value,0,5)=='/Date' || $key=='TimeStampUtc')
{
$value = str_replace('/Date(','',$value);
$value = str_replace(')/','',$value);
$value = substr($value,0,strlen($value)-3);
$value = date('Y-m-d H:i:s',$value);
$arr[$key] = $value;
}
else
$arr[$key] = $value;
}
}
return $arr;
}
function jsonRemoveUnicodeSequences($struct)
{
//SalesPlatform.ru begin
//return preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct));
return preg_replace_callback("/\\\\u([a-f0-9]{4})/", function($matches) {
return iconv('UCS-4LE','UTF-8',pack('V', hexdec('U' . $matches[1])));
}, json_encode($struct));
//SalesPlatform.ru end
}
function JsonArray($arr)
{
$phone_data = array('sms' => $arr);
$result = $this -> jsonRemoveUnicodeSequences($phone_data);
return $result;
}
}
?>