PK œqhYî¶J‚ßFßF)nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/ $#$#$#

Dir : /home/trave494/outtheboxministry.org/api/v2/endpoints/
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64
IP: 209.182.202.254
Choose File :

Url:
Dir : /home/trave494/outtheboxministry.org/api/v2/endpoints/agora.php

<?php
$response_data = array(
    'api_status' => 400
);

$required_fields =  array(
                        'create',
                        'invite',
                        'check',
                        'action',
                    );

if (!empty($_POST['type']) && in_array($_POST['type'], $required_fields)) {

    if ($_POST['type'] == 'create') {
    	if (!empty($_POST['recipient_id']) && is_numeric($_POST['recipient_id']) && $_POST['recipient_id'] > 0 && !empty($_POST['call_type']) && in_array($_POST['call_type'], array('video','audio')) && $_POST['recipient_id'] != $wo['user']['id']) {
		    $user_2       = Wo_UserData(Wo_Secure($_POST['recipient_id']));
		    $room_script  = sha1(rand(1111111, 9999999999));
    		$wo['AgoraToken'] = null;
	        if (!empty($wo['config']['agora_chat_app_certificate']) && empty($_POST['token'])) {
	            include_once 'assets/libraries/AgoraDynamicKey/src/RtcTokenBuilder.php';
	            $appID = $wo['config']['agora_chat_app_id'];
	            $appCertificate = $wo['config']['agora_chat_app_certificate'];
	            $uid = 0;
	            $uidStr = "0";
	            $role = RtcTokenBuilder::RoleAttendee;
	            $expireTimeInSeconds = 36000000;
	            $currentTimestamp = (new DateTime("now", new DateTimeZone('UTC')))->getTimestamp();
	            $privilegeExpiredTs = $currentTimestamp + $expireTimeInSeconds;
	            $wo['AgoraToken'] = RtcTokenBuilder::buildTokenWithUid($appID, $appCertificate, $room_script, $uid, $role, $privilegeExpiredTs);
	        }
	        if (!empty($_POST['token'])) {
	        	$wo['AgoraToken'] = Wo_Secure($_POST['token']);
	        }

	        $call_type = Wo_Secure($_POST['call_type']);
	        $insertData = Wo_CreateNewAgoraCall(array(
	            'from_id' => $wo['user']['id'],
	            'to_id' => $user_2['user_id'],
	            'room_name' => $room_script,
	            'type' => $call_type,
	            'status' => 'calling',
	            'access_token' => $wo['AgoraToken']
	        ));
	        if ($insertData > 0) {
	            $wo['calling_user'] = $user_2;
	            if (!empty($wo['calling_user']['ios_m_device_id']) && $wo['config']['ios_push_messages'] == 1) {
	                $send_array = array(
	                    'send_to' => array(
	                        $wo['calling_user']['ios_m_device_id']
	                    ),
	                    'notification' => array(
	                        'notification_content' => 'is calling you',
	                        'notification_title' => $wo['calling_user']['name'],
	                        'notification_image' => $wo['calling_user']['avatar'],
	                        'notification_data' => array(
	                            'call_type' => $call_type,
	                            'access_token_2' => '',
	                            'room_name' => $room_script,
	                            'call_id' => $insertData
	                        )
	                    )
	                );
	                Wo_SendPushNotification($send_array,'ios_messenger');
	            }
	            if (!empty($wo['calling_user']['android_m_device_id']) && $wo['config']['android_push_messages'] == 1) {
	                $send_array = array(
	                    'send_to' => array(
	                        $wo['calling_user']['android_m_device_id']
	                    ),
	                    'notification' => array(
	                        'notification_content' => 'is calling you',
	                        'notification_title' => $wo['calling_user']['name'],
	                        'notification_image' => $wo['calling_user']['avatar'],
	                        'notification_data' => array(
	                            'call_type' => $call_type,
	                            'access_token_2' => '',
	                            'room_name' => $room_script,
	                            'call_id' => $insertData
	                        )
	                    )
	                );
	                Wo_SendPushNotification($send_array,'android_messenger');
	            }

	            $response_data               = array(
		            'api_status' => 200,
                    'room_name' => $room_script,
                    'id' => $insertData,
                    'token' => $wo['AgoraToken']
		        );
	        }
	        else{
	        	$error_code    = 6;
			    $error_message = 'something went wrong';
	        }
    	}
    	else{
    		$error_code    = 5;
		    $error_message = 'recipient_id , call_type can not be empty';
    	}
    }
    if ($_POST['type'] == 'invite') {
    	if (!empty($_POST['room_name']) && !empty($_POST['recipient_id']) && is_numeric($_POST['recipient_id']) && $_POST['recipient_id'] > 0 && $_POST['recipient_id'] != $wo['user']['id']) {
    		$room_name = Wo_Secure($_POST['room_name']);
    		$recipient_id = Wo_Secure($_POST['recipient_id']);
    		$call = $db->where('room_name',$room_name)->where('to_id',$recipient_id,'!=')->getOne(T_AGORA);
    		if (!empty($call)) {
    			$user_2       = Wo_UserData($recipient_id);
			    $room_script  = $room_name;
	    		$wo['AgoraToken'] = $call->access_token;
		        if (!empty($_POST['token'])) {
		        	$wo['AgoraToken'] = Wo_Secure($_POST['token']);
		        }

		        $call_type = $call->type;
		        $insertData = Wo_CreateNewAgoraCall(array(
		            'from_id' => $wo['user']['id'],
		            'to_id' => $user_2['user_id'],
		            'room_name' => $room_script,
		            'type' => $call_type,
		            'status' => 'calling',
		            'access_token' => $wo['AgoraToken']
		        ));
		        if ($insertData > 0) {
		            $wo['calling_user'] = $user_2;
		            if (!empty($wo['calling_user']['ios_m_device_id']) && $wo['config']['ios_push_messages'] == 1) {
		                $send_array = array(
		                    'send_to' => array(
		                        $wo['calling_user']['ios_m_device_id']
		                    ),
		                    'notification' => array(
		                        'notification_content' => 'is calling you',
		                        'notification_title' => $wo['calling_user']['name'],
		                        'notification_image' => $wo['calling_user']['avatar'],
		                        'notification_data' => array(
		                            'call_type' => $call_type,
		                            'access_token_2' => '',
		                            'room_name' => $room_script,
		                            'call_id' => $insertData
		                        )
		                    )
		                );
		                Wo_SendPushNotification($send_array,'ios_messenger');
		            }
		            if (!empty($wo['calling_user']['android_m_device_id']) && $wo['config']['android_push_messages'] == 1) {
		                $send_array = array(
		                    'send_to' => array(
		                        $wo['calling_user']['android_m_device_id']
		                    ),
		                    'notification' => array(
		                        'notification_content' => 'is calling you',
		                        'notification_title' => $wo['calling_user']['name'],
		                        'notification_image' => $wo['calling_user']['avatar'],
		                        'notification_data' => array(
		                            'call_type' => $call_type,
		                            'access_token_2' => '',
		                            'room_name' => $room_script,
		                            'call_id' => $insertData
		                        )
		                    )
		                );
		                Wo_SendPushNotification($send_array,'android_messenger');
		            }

		            $response_data               = array(
			            'api_status' => 200,
	                    'room_name' => $room_script,
	                    'id' => $insertData,
	                    'token' => $wo['AgoraToken']
			        );
		        }
    		}
    		else{
    			$error_code    = 6;
			    $error_message = 'call not found';
    		}
    	}
    	else{
    		$error_code    = 5;
		    $error_message = 'room_name , recipient_id can not be empty';
    	}
    }
    if ($_POST['type'] == 'check') {
    	if (!empty($_POST['call_id']) && is_numeric($_POST['call_id']) && $_POST['call_id'] > 0) {
    		$call_type = 'no_answer';
            $id = Wo_Secure($_POST['call_id']);
            $mysqli = mysqli_query($sqlConnect, "SELECT * FROM " . T_AGORA . " WHERE id = {$id}");
            $call_data = mysqli_fetch_assoc($mysqli);
            if (!empty($call_data)) {
            	$call_type = $call_data['status'];
            	if ($call_data['active'] == 1) {
            		$call_type = 'answered';
            	}
            	if ($call_data['declined'] == 1) {
            		$call_type = 'declined';
            	}
            }
            $response_data               = array(
	            'api_status' => 200,
                'call_status' => $call_type
	        );
	    }
	    else{
	    	$error_code    = 5;
		    $error_message = 'call_id can not be empty';
	    }
    }
    if ($_POST['type'] == 'action') {
    	if (!empty($_POST['call_id']) && is_numeric($_POST['call_id']) && $_POST['call_id'] > 0 && !empty($_POST['action']) && in_array($_POST['action'], array('answer','close','decline'))) {
    		$id = Wo_Secure($_POST['call_id']);
    		if ($_POST['action'] == 'answer') {
		        $query = mysqli_query($sqlConnect, "UPDATE " . T_AGORA . " SET `status` = 'answered' , `active` = '1' , `declined` = '0'  WHERE `id` = '$id'");
    		} else if ($_POST['action'] == 'close') {
                $query   = mysqli_query($sqlConnect, "DELETE FROM " . T_AGORA . " WHERE `from_id` = '$user_id'");
            } else if ($_POST['action'] == 'decline') {
		        $query = mysqli_query($sqlConnect, "UPDATE " . T_AGORA . " SET `status` = 'declined' , `declined` = '1' , `active` = '0' WHERE `id` = '$id'");
    		}
    		$response_data               = array(
	            'api_status' => 200
	        );
    	}
    	else{
    		$error_code    = 5;
		    $error_message = 'call_id , action can not be empty';
    	}
    }
}
else{
    $error_code    = 4;
    $error_message = 'type can not be empty';
}