MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/cafsindia/ntc_cafsinfotech_in_bk/cron/tracking.php
<?php
require_once('./dbconnect.php');
class tracking extends dbconnect{
	
	protected  $url    = null;	
	protected  $user   = null;	
	protected  $pwd    = null;	
	protected  $token  = null;	
	
	public function __construct() {
		$this->open_db();
		$this->url   = "http://vplus.vigil.co.za/ntc/api/";
		$this->user  = "NTCAPI1";
		$this->pwd   = "password";
		$this->get_token();
    }
	
	//CURL FUNCTION
	public function curl($url){		
		$ch = curl_init(); //  Initiate curl		
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Disable SSL verification		
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Will return the response, if false it print the response		
		curl_setopt($ch, CURLOPT_URL,$url); // Set the url		
		$result =curl_exec($ch);// Execute		
		curl_close($ch);// Closing
		return json_decode($result);
	}
	
	//GETTING DATA FOR MULTIPLE CURL CALL
	public function get_curl_opt($url){
		$ch = curl_init();	
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_URL,$url);
		return $ch;
	}
	
	public function real_escape_string($value){
		$value = mysql_real_escape_string($value);
		if(empty($value)){
			$value = 0;
		}
		return $value;
	}
	
	 //GET OR GENERATE TOKEN
	 public function get_token(){
		$token_query  = $this->runQuery("select token,expire_date from cw_vehicle_api_token where trans_status = '1'");
		$token_count  = (int)$this->num_rows($token_query);
		$trans_date   = date('Y-m-d H:i:s');
		$status       = array();
		if($token_count > 0){
			$token_info   = $this->result($token_query);
			$token        = $token_info[0]->token;
			$expire_date  = new DateTime($token_info[0]->expire_date);
			$date_now     = new DateTime();
			if($date_now > $expire_date){
				$status = array('sts' => false,'mode'=>'UPDATE');
			}else{ 
				$status = array('sts' => true,'mode'=>$token_info[0]->token);
			}
		}else{
			$status = array('sts' => false,'mode'=>"INSERT");
		}
		$sts = $status['sts'];
		if($sts){
			$this->token = $status['mode'];
		}else{
			$send_url = $this->url."login/$this->user/$this->pwd";
			$result   = $this->curl($send_url);	
			if((int)$result->IsSuccess === 1){	
				$trans_date  = date('Y-m-d H:i:s');			
				$this->token = $result->Token;
				$expire_date = date('Y-m-d H:i:s',strtotime($result->Expires));
				if($status['mode'] === 'INSERT'){
					$this->runQuery("INSERT INTO cw_vehicle_api_token(token,expire_date,trans_created_date) values ('$result->Token','$expire_date','$trans_date')");
				}else{
					$this->runQuery("UPDATE `cw_vehicle_api_token` SET `token`='$this->token',`expire_date`='$expire_date',`trans_updated_date`='$trans_date'");
				}
			}else{
				$this->token = false;
			}
		}
    }
	
	//GET VEHICLE LAST POSITION
	public function get_last_position(){	
		if($this->token){	
			$vehicle_query = $this->runQuery("select prime_vehicle_master_id,asset_id from cw_vehicle_master where trans_status = '1'");
			$vehicle_info  = $this->result($vehicle_query);
			$result    = array();
			$send_post = array();
			$multi_curl  = curl_multi_init();
			foreach($vehicle_info as $info){
				$prime_vehicle_master_id = $info->prime_vehicle_master_id;
				$asset_id                = $info->asset_id;
				$send_url                = $this->url."$this->token/vehicleLastPosition/$asset_id";
				$send_post[$prime_vehicle_master_id] = $this->get_curl_opt($send_url);
				curl_multi_add_handle($multi_curl, $send_post[$prime_vehicle_master_id]);
			}			
			$running = null;
			do{
				curl_multi_exec($multi_curl, $running);
			}while ($running);
			$insert_count = 0;
			$update_count = 0;
			foreach($send_post as $vehicle_id => $ch){
				$response = json_decode(curl_multi_getcontent($ch));
				if(property_exists($response, 'AssetId')){
					$assetid      = $response->AssetId;
					$driverid     = $response->DriverId;
					$positiondate = date('Y-m-d H:i:s',strtotime($response->PositionDate));
					$latitude     = $response->Latitude;
					$longitude    = $response->Longitude;
					$eventtype    = $response->EventType;
					$geoaddress   = $response->GeoAddress;
					$speed        = $response->Speed;
					$odometer     = $response->Odometer;
					$roadspeed    = $response->RoadSpeed;
					$altitude     = $response->Altitude;
					if($response->OverSpeed){
						$overspeed    = 1;
					}else{
						$overspeed    = 0;
					}
					$result[$vehicle_id]   = array("prime_vehicle_master_id"=>$vehicle_id,"assetid"=>$assetid,"positiondate"=>$positiondate);
					$trans_date   = date('Y-m-d H:i:s');
					if(!$this->check_vehicle_already_exists($assetid,(int)$vehicle_id)){
						$insert_info = $this->runQuery("INSERT INTO cw_vehicle_last_position(prime_vehicle_master_id,assetid,positiondate,geoaddress,latitude,longitude,eventtype,speed,roadspeed,driverid,altitude,overspeed,trans_created_date) values ('$vehicle_id','$assetid','$positiondate','$geoaddress','$latitude','$longitude','$eventtype','$speed','$roadspeed','$driverid','$altitude','$overspeed','$trans_date')");
						$insert_count++;
					}else{
						$update_info = $this->runQuery("UPDATE `cw_vehicle_last_position` SET `positiondate`='$positiondate',`geoaddress`='$geoaddress',`latitude`='$latitude',`longitude`='$longitude',`eventtype`='$eventtype',`speed`='$speed',`roadspeed`='$roadspeed',`driverid`='$driverid',`altitude`='$altitude',`overspeed`='$overspeed',`trans_updated_date` = '$trans_date' WHERE prime_vehicle_master_id = '$vehicle_id' and assetid = '$assetid'");
						$update_count++;
					}
				}			
				curl_multi_remove_handle($multi_curl, $ch);
			}
			return json_encode(array('status' => true,'vehicle Last Position Inserted' => $insert_count,'vehicle Last Position Updated' => $update_count,'data'=>$result));
		}else{
			return json_encode(array('status' => false,'data' => ''));
		}			
	}
	
	//GET VEHICLE ALREADY EXISTS
	public function check_vehicle_already_exists($assetid,$vehicle_id = -1){
		$add_condition = '';
		if((int)$vehicle_id > 0){
			$add_condition = "prime_vehicle_master_id = '$vehicle_id' and ";
		}
		$vehicle_query  = $this->runQuery("select * from cw_vehicle_last_position where $add_condition assetid = '$assetid' and trans_status = '1'");
		$vehicle_count  = (int)$this->num_rows($vehicle_query);
		if($vehicle_count > 0){
			return true;
		}else{
			return false;
		}
	}
	
	//GET VEHICLE POSITION HISTORY
	public function get_position_history($assetid,$form_date){
		if($this->check_vehicle_already_exists($assetid)){
			$form_date  = new DateTime($form_date);
			$form_date  = $form_date->format("Ymdhms");
			$send_url = $this->url."$this->token/vehiclepositionhistory/$assetid/$form_date";
			$result   = $this->curl($send_url);	
			return json_encode(array('status' => true,'data' => $result));
		}else{
			return json_encode(array('status' => false,'message' => 'Check AssetId and Try Again'));
		}
	}
	
	/* TRIPS START */
	
	//GET VEHICLE TRIP INFORMATION FOR SPECIFIC VEHICLE
	public function get_vehicle_trip_information($tripid){
		if($tripid){
			$send_url = $this->url."$this->token/trip-coordinates/$tripid";
			$result   = $this->curl($send_url);	
			return json_encode(array('status' => true,'data' => $result));
		}else{
			return json_encode(array('status' => false,'message' => 'Please Contact Admin..!'));
		}
	}
	
	//GET TRIPS INFORMATION OF VEHICLE FOR SPECIFIC DATE
	public function get_specific_trip_info($assetid,$fromdate,$todate){
		if($this->check_vehicle_already_exists($assetid) && $fromdate && $todate){
			$fromdate  = new DateTime($fromdate);
			$fromdate  = $fromdate->format("Ymdhms");
			$todate     = new DateTime($todate);
			$todate     = $todate->format("Ymdhms");
			$send_url   = $this->url."$this->token/trips/$assetid/$fromdate/$todate";
			$result     = $this->curl($send_url);	
			return json_encode(array('status' => true,'data' => $result));
		}else{
			return json_encode(array('status' => false,'message' => 'Please Contact Admin..!'));
		}
	}
	
	//GET TRIPS INFORMATION OF VEHICLE FOR SPECIFIC DATE
	public function get_all_trip_info($fromdate,$todate){
		if($fromdate && $todate){
			$fromdate   = new DateTime($fromdate);
			$fromdate   = $fromdate->format("Ymdhms");
			$todate     = new DateTime($todate);
			$todate     = $todate->format("Ymdhms");
			$send_url   = $this->url."$this->token/trips-all/$fromdate/$todate";
			$result     = $this->curl($send_url);	
			return json_encode(array('status' => true,'data' => $result));
		}else{
			return json_encode(array('status' => false,'message' => 'Please Contact Admin..!'));
		}
	}
	
	//GET TRIP DETAILS OF VEHICLE FOR SPECIFIC DATE
	public function get_all_trip_details_info($fromdate,$todate){
		if($fromdate && $todate){
			$fromdate   = new DateTime($fromdate);
			$fromdate   = $fromdate->format("Ymdhms");
			$todate     = new DateTime($todate);
			$todate     = $todate->format("Ymdhms");
			$send_url   = $this->url."$this->token/trips-all-details/$fromdate/$todate";
			$result     = $this->curl($send_url);	
			return json_encode(array('status' => true,'data' => $result));
		}else{
			return json_encode(array('status' => false,'message' => 'Please Contact Admin..!'));
		}
	}
	
	//GET TRIPS DETAIL OF VEHICLE FOR SPECIFIC DATE
	public function get_specific_trip_details_info($assetid,$fromdate,$todate){
		if($this->check_vehicle_already_exists($assetid) && $fromdate && $todate){
			$fromdate  = new DateTime($fromdate);
			$fromdate  = $fromdate->format("Ymdhms");
			$todate     = new DateTime($todate);
			$todate     = $todate->format("Ymdhms");
			$send_url   = $this->url."$this->token/trips-details/$assetid/$fromdate/$todate";
			$result     = $this->curl($send_url);	
			return json_encode(array('status' => true,'data' => $result));
		}else{
			return json_encode(array('status' => false,'message' => 'Please Contact Admin..!'));
		}
	}
	
	/* TRIPS END */
}
?>