allow vendord
All checks were successful
Build, Push and Deploy / build-and-push (push) Successful in 3m3s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 16s
Build, Push and Deploy / deploy-staging (push) Successful in 32s
Build, Push and Deploy / deploy-production (push) Has been skipped
Build, Push and Deploy / cleanup (push) Successful in 1s

This commit is contained in:
2026-03-30 14:54:57 +07:00
parent 66aed7c4e8
commit b5e3a778ce
21316 changed files with 2777892 additions and 13 deletions

View File

@@ -0,0 +1,549 @@
<?php
namespace Melipayamak;
class SmsSoapAsync extends BaseSms
{
const PATH = "http://api.payamak-panel.com/post/%s.asmx?wsdl";
protected $username;
protected $password;
protected $sendUrl;
protected $receiveUrl;
protected $voiceUrl;
protected $scheduleUrl;
protected $queue;
public function __construct($username,$password)
{
parent::__construct($username,$password);
ini_set("soap.wsdl_cache_enabled", "0");
$this->sendUrl = $this->getPath(self::PATH,'send');
$this->receiveUrl = $this->getPath(self::PATH,'receive');
$this->voiceUrl = $this->getPath(self::PATH,'Voice');
$this->scheduleUrl = $this->getPath(self::PATH,'Schedule');
$this->queue = array();
}
public function execute(){
$endpoint = $this->queue[0];
$method = '';
$requestIds = [];
$parseResultFn = function ($method, $res) {
if (isset($res->{$method . 'Result'})) {
return $res->{$method . 'Result'};
}
return $res;
};
$options = [
'connection_timeout' => 40,
'trace' => true,
'exceptions' => true,
'soap_version' => SOAP_1_1,
'cache_wsdl' => WSDL_CACHE_BOTH,
'encoding' => 'UTF-8',
'resFn' => $parseResultFn,
];
$client = new \Soap\ParallelSoapClient($endpoint, $options);
$client->setMulti(true);
$responses = [];
foreach ($this->queue as $key => $value) {
# code...
if(!is_array($value)){
//$value is wsdl url && differs
if(strlen($value) > 33 && $endpoint != $value) {
//run prior tasks if we can change endpoint
// array_push($responses, $client->run());
//init new client
//unfortunately there's no way to change wsdl url during running, followings don't work!
// $client = new \Soap\ParallelSoapClient($value, $options);
// $client->__setLocation($value);
}
//$value is method name
else $method = $value;
}
else {
$requestIds[] = $client->{$method}($value);
}
}
$responses = $client->run();
// array_push($responses, $client->run());
//calling multiple endpoints causes $responses to be multidimensional array
// $results = $this->flatten($responses);
foreach ($responses as $id => $response) {
if ($response instanceof SoapFault) {
/** handle the exception here */
print 'SoapFault: ' . $response->faultcode . ' - ' . $response->getMessage() . "\n";
} else {
if (!is_string($response)) {
$response = json_encode($response, JSON_UNESCAPED_SLASHES);
}
print 'Response is : ' . $response . "\n";
}
}
//clean queue
$this->queue = array();
}
function flatten(array $array) {
$return = array();
array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
return $return;
}
public function getCredit()
{
$data = [
'username' => $this->username,
'password' => $this->password
];
array_push($this->queue, $this->sendUrl);
array_push($this->queue, 'getCredit');
array_push($this->queue, $data);
}
public function isDelivered($id)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'recId' => $id
];
array_push($this->queue, $this->sendUrl);
if(is_array($id))
array_push($this->queue, 'GetDeliveries3');
else array_push($this->queue, 'GetDelivery2');
array_push($this->queue, $data);
}
public function send($to,$from,$text,$isflash=false)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'from' => $from,
'text'=> $text,
'isflash' => $isflash,
'to' => $to
];
array_push($this->queue, $this->sendUrl);
if(is_array($to))
array_push($this->queue, 'SendSimpleSMS');
else array_push($this->queue, 'SendSimpleSMS2');
array_push($this->queue, $data);
}
public function send2($to,$from,$text,$isflash=false,$udh="")
{
$to = is_array($to) ? $to : array($to);
$recId = array();
$status = 0x0;
$data = [
'username' => $this->username,
'password' => $this->password,
'from' => $from,
'text'=> $text,
'isflash' => $isflash,
'to' => $to,
'udh' =>$udh,
'recId' => &$recId,
'status' => &$status
];
array_push($this->queue, $this->sendUrl);
array_push($this->queue, 'SendSms');
array_push($this->queue, $data);
}
public function sendWithDomain($to,$from,$text,$isflash,$domain)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'from' => $from,
'text'=> $text,
'isflash' => $isflash,
'to' => $to,
'domainName' => $domain
];
array_push($this->queue, $this->sendUrl);
array_push($this->queue, 'SendWithDomain');
array_push($this->queue, $data);
}
public function getMessages($location,$index,$count,$from='')
{
$data = [
'username' => $this->username,
'password' => $this->password,
'location' => $location,
'index'=> $index,
'count' => $count,
'from' => $from
];
array_push($this->queue, $this->sendUrl);
array_push($this->queue, 'getMessages');
array_push($this->queue, $data);
}
public function getMessagesStr($location,$index,$count,$from='')
{
$data = [
'username' => $this->username,
'password' => $this->password,
'location' => $location,
'index' => $index,
'count' => $count,
'from' => $from
];
array_push($this->queue, $this->receiveUrl);
array_push($this->queue, 'GetMessageStr');
array_push($this->queue, $data);
}
public function getMessagesByDate($location,$index,$count,$from,$dateFrom,$dateTo)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'location' => $location,
'index'=> $index,
'count' => $count,
'from' => $from,
'dateTo' => $dateTo,
'dateFrom' => $dateFrom
];
array_push($this->queue, $this->receiveUrl);
array_push($this->queue, 'GetMessagesByDate');
array_push($this->queue, $data);
}
public function getMessagesReceptions($msgId,$fromRows)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'msgId' => $msgId,
'fromRows' =>$fromRows
];
array_push($this->queue, $this->receiveUrl);
array_push($this->queue, 'GetMessagesReceptions');
array_push($this->queue, $data);
}
public function getUsersMessagesByDate($location,$index,$count,$from,$dateFrom,$dateTo)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'location' => $location,
'index'=> $index,
'count' => $count,
'from' => $from,
'dateTo' => $dateTo,
'dateFrom' => $dateFrom
];
array_push($this->queue, $this->receiveUrl);
array_push($this->queue, 'GetUsersMessagesByDate');
array_push($this->queue, $data);
}
public function remove($msgIds)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'msgIds' => $msgIds
];
array_push($this->queue, $this->receiveUrl);
array_push($this->queue, 'RemoveMessages2');
array_push($this->queue, $data);
}
public function getPrice($irancell,$mtn,$from,$text)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'irancellCount' => $irancell,
'mtnCount'=> $mtn,
'text' => $text,
'from' => $from
];
array_push($this->queue, $this->sendUrl);
array_push($this->queue, 'GetSmsPrice');
array_push($this->queue, $data);
}
public function getInboxCount($isRead=false)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'isRead' => $isRead,
];
array_push($this->queue, $this->sendUrl);
array_push($this->queue, 'GetInboxCount');
array_push($this->queue, $data);
}
public function sendWithSpeech($to,$from,$text,$speech)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'from' => $from,
'to' => $to,
'smsBody' => $text,
'speechBody' => $speech
];
array_push($this->queue, $this->voiceUrl);
array_push($this->queue, 'SendSMSWithSpeechText');
array_push($this->queue, $data);
}
public function sendWithSpeechSchduleDate($to,$from,$text,$speech,$scheduleDate)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'from' => $from,
'to' => $to,
'smsBody' => $text,
'speechBody' => $speech,
'scheduleDate'=> $scheduleDate
];
array_push($this->queue, $this->voiceUrl);
array_push($this->queue, 'SendSMSWithSpeechTextBySchduleDate');
array_push($this->queue, $data);
}
public function getSendWithSpeech($recId)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'recId'=>$recId
];
array_push($this->queue, $this->voiceUrl);
array_push($this->queue, 'GetSendSMSWithSpeechTextStatus');
array_push($this->queue, $data);
}
public function getMultiDelivery($recId)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'recId' => $recId,
];
array_push($this->queue, $this->sendUrl);
array_push($this->queue, 'GetMultiDelivery2');
array_push($this->queue, $data);
}
public function sendMultipleSchedule($to,$from,$text,$isflash,$scheduleDateTime,$period)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'to' => $to,
'from'=>$from,
'text'=>$text,
'isflash'=>$isflash,
'scheduleDateTime'=>$scheduleDateTime,
'period' => $period
];
array_push($this->queue, $this->scheduleUrl);
array_push($this->queue, 'AddMultipleSchedule');
array_push($this->queue, $data);
}
public function sendSchedule($to,$from,$text,$isflash,$scheduleDateTime,$period)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'to' => $to,
'from' => $from,
'text' => $text,
'isflash' => $isflash,
'scheduleDateTime' => $scheduleDateTime,
'period' => $period
];
array_push($this->queue, $this->scheduleUrl);
array_push($this->queue, 'AddSchedule');
array_push($this->queue, $data);
}
public function getScheduleStatus($schId)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'scheduleId'=>$schId
];
array_push($this->queue, $this->scheduleUrl);
array_push($this->queue, 'GetScheduleStatus');
array_push($this->queue, $data);
}
public function removeSchedule($schId)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'scheduleId'=>$schId
];
array_push($this->queue, $this->scheduleUrl);
array_push($this->queue, 'RemoveSchedule');
array_push($this->queue, $data);
}
public function addUsance($to,$from,$text,$isflash,$scheduleStartDateTime,$repeatAfterDays,$scheduleEndDateTime)
{
$data = [
'username' => $this->username,
'password' => $this->password,
'to' => $to,
'from'=>$from,
'text'=>$text,
'isflash'=>$isflash,
'scheduleStartDateTime'=>$scheduleStartDateTime,
'repeatAfterDays' => $repeatAfterDays,
'scheduleEndDateTime'=>$scheduleEndDateTime
];
array_push($this->queue, $this->scheduleUrl);
array_push($this->queue, 'AddUsance');
array_push($this->queue, $data);
}
}