0xV3NOMx
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 : 13.59.36.4


Current Path : /var/www/html/sms/
Upload File :
Current File : /var/www/html/sms/sendsmsapiv1.php

<?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');
		include("/var/www/config.php");
		$this->conn = new  mysqli(SERVERNAME,USERNAME,PASSWORD,"logisys3_comexam");
		if(!$this->conn) 
		{
			die("Connection failed: " . mysqli_connect_error());
		}
		
		$query = "select fsmsuser, fsmspasswd, if('{$fenttype}' = 'RA','LOGLYS',fsmssendid) as 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);
			$table = '<tr>
					<td width="5%" align="center">'.$i.'</td>
					<td  width="8%" align="center">'.$mob.'</td>
					<td width="10%" align="center">'.$mob.'</td>
					<td>'.$message.'</td>					
					<td  width="10%" align="center">'.$status.'</td>
				</tr>';
			echo $table;
		}
        
		$strInsertQuery = "insert into logisys3_logs.smslog(funivcode, fmobileno, fenttype, freasoncode, 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

		// if($key != 'NULL' || $key != ''){
		// 	$api = "https://api.onex-aura.com/api/sms?";
		// 	$url = $api;
		// 	$url.= "key={$key}";
		// 	$url.= "&from=PMSOLU";
		//$text = urlencode($message);
		// 	$url.= "&body={$text}";
		// 	$url.= "&entityid=1701160750260327092";
		// 	$url.= "&to={$to}";
		// 	$url.= "&templateid={$tmpid}";
		// }else{
			$api = "https://http2.myvfirst.com/smpp/sendsms?";
			$url = $api;
			$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);
		//echo $resp;
		$this->smsLog($to, $message, $resp, $usertype, $sentuser);
		return $resp;
	}

	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) {

		$query = "select funivcode, group_concat(concat('91', fmobileno)) as mobilenos,
		fenttype, fmessage,ifnull(fexamdate,'') as fexamdate, count(fmobileno) as fcount,
		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}'
		and date_format(fupdate,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')
		group by funivcode, fmessage";
		$result1 = mysqli_query($this->conn, $query); 
		
		$row = mysqli_fetch_assoc($result1);
	    
		if($row['fcount'] == 1) {
			$this->sendCustomizedBulkSms($usertype, $sentuser);
			return;	
		}

		$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}'
		and date_format(fupdate,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')
		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'];
			$table = '
				<style>
					table{
					width:100%;
					table-layout: fixed;
					}
				</style>	
				<table style="text-align: left;width: 100%;"  border="1" cellpadding="10" cellspacing="0" >
					<thead style = "">
						<tr style = "background-color:#8acc51">
							<th width="5%" align="center"><b>Sl. No.</b></th>
							<th width="8%"  align="center"><b>Reg. No. / Mobile No.</b></th>
							<th  width="10%" align="center"><b>Mobile No.</b></th>
							<th  align="center"><b>Message</b></th>
							<th width="10%" align="center"><b>Status</b></th>
						</tr>
					</thead>
					<tbody>';	
			echo $table;

			foreach($rgSmallArr as $key => $value)
			{
				$strTo = implode(',', $value);
				$mobs = $this->sendBulkSms($strTo, $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, $strUpdateQuery);
			}
		}
		$query = "select funivcode, fstaffmobileno from logisys3_comexam.dbname 
		where ifnull(fstaffmobileno,'') <> '' and funivcode = '{$this->funivcode}'";
		$resultn = mysqli_query($this->conn,$query);

		$row = mysqli_fetch_assoc($resultn);

		$strTo = $row['fstaffmobileno'];
		$mobs = $this->sendBulkSms($strTo, $message, $usertype, $sentuser);
	}

	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 date_format(fupdate,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')
		and fmobileno is not null";

		$result = mysqli_query($this->conn,$query);

		$table = '
				<style>
					table{
					width:100%;
					table-layout: fixed;
					}
				</style>	
				<table style="text-align: left;width: 100%;"  border="1" cellpadding="10" cellspacing="0" >
					<thead style = "">
						<tr style = "background-color:#8acc51">
							<th width="5%" align="center"><b>Sl. No.</b></th>
							<th width="8%"  align="center"><b>Reg. No. / Mobile No.</b></th>
							<th  width="10%" align="center"><b>Mobile No.</b></th>
							<th  align="center"><b>Message</b></th>
							<th width="10%" align="center"><b>Status</b></th>
						</tr>
					</thead>
					<tbody>';	
		echo $table;
		$i = 1;
		while($row = mysqli_fetch_assoc($result))
		{
			$to = $row['mobileno'];
			$message = $row['fmessage'];

			$status = $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($this->conn,$strUpdateQuery);

			$table = '<tr>
					<td width="5%" align="center">'.$i.'</td>
					<td  width="8%" align="center">'.$row['fregno'].'</td>
					<td width="10%" align="center">'.$to.'</td>
					<td>'.$message.'</td>					
					<td  width="10%" align="center">'.$status.'</td>
				</tr>';
			echo $table;
			$i++;
		}
		if(substr($this->fenttype,0,2) !== 'AI') {
			$query = "select funivcode, fstaffmobileno from logisys3_comexam.dbname 
			where ifnull(fstaffmobileno,'') <> '' and funivcode = '{$this->funivcode}'";
			$resultn = mysqli_query($this->conn,$query);

			$row = mysqli_fetch_assoc($resultn);

			$strTo = $row['fstaffmobileno'];

			$mobs = $this->sendBulkSms($strTo, $message, $usertype, $sentuser);
		}


	}
}


?>