Linux ip-172-26-7-228 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64
Your IP : 3.142.198.148
<?php
/**
* @param description
* @param $funivcode = University code
* @param $fenttype = Event type
* @param $usertype = SMS sent to User level like 900-student, 100-top management etc
* @param $sentuser = user id of the sender
* @param $to = Mobileno of the user
* @param $message = Text message you want to send
*
*/
class SMS
{
public $url = "https://http2.myvfirst.com/smpp/sendsms?";
function __construct($funivcode, $fenttype)
{
include('/var/www/html/consts.php');
$this->conn = new mysqli(SERVERNAME,USERNAME,PASSWORD,"logisys3_comexam");
if(!$this->conn)
{
die("Connection failed: " . mysqli_connect_error());
}
$query = "select fsmsuser, fsmspasswd, fsmssendid from dbname where funivcode = '{$funivcode}'";
$result = mysqli_query($this->conn,$query);
$res = mysqli_fetch_assoc($result);
$this->smsuser = $res['fsmsuser'];
$this->smspasswd = $res['fsmspasswd'];
$this->smssendid = $res['fsmssendid'];
$this->funivcode = $funivcode;
$this->fenttype = $fenttype;
}
function smsLog($to, $message, $resp, $usertype, $sentuser){
$status = $resp == 'Sent.' ? 'T' : 'F';
$year = date("Y");
$type = date('m') < 6 ? 1 : 2;
$strInsertQuery = "insert into logisys3_logs.smslog(funivcode, fmobileno, fenttype, fackdate, fstatus, fmessage,
fusertype, fguid, fsentuser, fyear, fexamtype)
values ( '{$this->funivcode}', '{$to}', '{$this->fenttype}', now(), '{$status}', '{$message}',
'{$usertype}', '{$resp}', '{$sentuser}', '{$year}', '{$type}')";
// var_dump($strInsertQuery);
$result = mysqli_query($this->conn, $strInsertQuery);
}
function smsBulkLog($to, $message, $resp, $usertype, $sentuser){
$year = date("Y");
$type = date('m') < 6 ? 1 : 2;
$rgExpAmp = explode('&', $resp);
array_walk($rgExpAmp, function($val,$key) use(&$final){
list($key, $value) = explode('=', $val);
$final[$key] = $value;
});
$errorcode = explode(',', $final['errorcode']);
$mobnos = explode(',', $final['seqno']);
$rgInsert = array();
$rgTrimedMobs = array();
for($i = 0; $i < count($mobnos);$i++)
{
$mob = substr($mobnos[$i],2,11);
$status = $errorcode[$i] == 0 ? 'T' : 'F';
$rgInsert[] = "('{$this->funivcode}','{$mob}', '{$this->fenttype}', '{$errorcode[$i]}', now(), '{$status}', '{$message}',
'{$usertype}', '{$final['guid']}', '{$sentuser}', '{$year}', '{$type}')";
$rgTrimedMobs[$i] = substr($mobnos[$i],2,11);
}
$strInsertQuery = "insert into logisys3_logs.smslog(funivcode, fmobileno, fenttype, ferrorcode, fackdate, fstatus, fmessage,
fusertype, fguid, fsentuser, fyear, fexamtype)
values ".implode(',',$rgInsert);
$result = mysqli_query($this->conn, $strInsertQuery);
return $rgTrimedMobs;
}
function sendSms($to, $message, $category = ''){
// Build URL
$url = $this->url;
$url .="username={$this->smsuser}&password={$this->smspasswd}";
$url .="&to={$to}";
$url .="&udh=0";
$url .="&from={$this->smssendid}";
$text = urlencode($message);
$url .="&text={$text}";
$url .="&dlr-mask=1&dlr-url";
if($category !='')
$url .="&category={$category}";
// Send sms
$session = curl_init($url);
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($session);
curl_close($session);
return $response;
}
function sendIndvidualSms($to, $message, $usertype, $sentuser) {
$resp = $this->sendSms($to, $message);
$this->smsLog($to, $message, $resp, $usertype, $sentuser);
}
function sendBulkSms($to, $message, $usertype, $sentuser) {
$resp = $this->sendSms($to, $message, 'bulk');
$mobs = $this->smsBulkLog($to, $message, $resp, $usertype, $sentuser);
return $mobs;
}
function sendGeneralizedBulkSms($usertype, $sentuser) {
$query1 = "SET SESSION group_concat_max_len=10000000";
$result = mysqli_query($this->conn, $query1);
$query = "select funivcode, group_concat(concat('91', fmobileno)) as mobilenos,
fenttype, fmessage,fexamdate,
if(length(fmessage) > 160, ceiling(307/153), 1) as msg_cnt
from sendsms
where fmobileno is not null
and fstatus = 'F'
and fenttype = '{$this->fenttype}'
and funivcode = '{$this->funivcode}'
group by funivcode, fmessage";
$result = mysqli_query($this->conn, $query);
while($row = mysqli_fetch_assoc($result))
{
$rgBigArr = explode(',', $row['mobilenos']);
$rgSmallArr = array_chunk($rgBigArr,90);
$message = $row['fmessage'];
foreach($rgSmallArr as $key => $value)
{
$strTo = implode(',', $value);
$mobs = $this->sendBulkSms($to, $message, $usertype, $sentuser);
$srtImplodedMobs = implode("','",$mobs);
$strUpdateQuery = "update sendsms set fstatus = 'T' where fenttype = '{$this->fenttype}'
and fmobileno in ('{$srtImplodedMobs}')";
$updres = mysqli_query($this->conn, $query);
}
}
}
function sendCustomizedBulkSms($usertype, $sentuser) {
$query = "select funivcode, fregno, fenttype, fmobileno as mobileno,
concat(fmessage, ' Sent Time: ',time(now())) as fmessage,
fmessage, if(length(fmessage) > 160, ceiling(307/153), 1) as msg_cnt
from sendsms
where ifnull(fstatus, 'F') = 'F' and fenttype = '{$this->fenttype}'
and funivcode = '{$this->funivcode}'
and fmobileno is not null";
$result = mysqli_query($conn,$query);
while($row = mysqli_fetch_assoc($result))
{
$to = $row['mobileno'];
$message = $row['fmessage'];
$this->sendIndvidualSms($to, $message, $usertype, $sentuser);
$strUpdateQuery = "update sendsms set fstatus = 'T' where fenttype = '{$this->fenttype}'
and fmobileno = '{$to}' and funivcode = '{$this->funivcode}'";
$result2 = mysqli_query($conn,$strUpdateQuery);
}
}
}
?>
|