View file plugins/video_call/requests/manage_call.php

File size: 3.3Kb
<?php
require_once(__DIR__ .'/../../../includes/autoload.php');

if(isset($_SESSION['token_id']) == false || $_POST['token_id'] != $_SESSION['token_id']) {
    return false;
}

if(isset($user['username'])) {
	// Decline call
	if($_POST['type'] == 3) {
		// $incomingCalls = $db->query(sprintf("SELECT * FROM `video_calls` LEFT JOIN `users` ON `video_calls`.`from` = `users`.`idu` WHERE `video_calls`.`to` = '%s' AND `video_calls`.`status` = 0", $db->real_escape_string($user['idu'])));

		$declineCall = $db->query(sprintf("UPDATE `video_calls` SET `status` = 3 WHERE `video_calls`.`id` = '%s' AND `video_calls`.`from` = '%s' AND `video_calls`.`to` = '%s'", $db->real_escape_string($_POST['call_id']), $db->real_escape_string($_POST['caller_id']), $db->real_escape_string($user['idu'])));
	} elseif($_POST['type'] == 0) {
		$feed = new feed();
		$feed->db = $db;
		$feed->url = $CONF['url'];
		
		// If the users are friends, start a conversation
		if($feed->verifyFriendship($user['idu'], $_POST['profile_id'])) {
			// Check if the targeted user doesn't have a pending call
			$incomingCalls = $db->query(sprintf("SELECT * FROM `video_calls` LEFT JOIN `users` ON `video_calls`.`from` = `users`.`idu` WHERE `video_calls`.`to` = '%s' AND `video_calls`.`status` = 0 AND `video_calls`.`time` > DATE_SUB(NOW(), INTERVAL %s SECOND) LIMIT 0,1", $db->real_escape_string($_POST['profile_id']), $pluginsSettings['video_call_dial_time']));
			
			$resultIncoming = $incomingCalls->fetch_assoc();

			// If there's no pending calls
			if(isset($resultIncoming['id']) == false) {
				$db->query(sprintf("INSERT INTO `video_calls` (`from`, `to`, `type`, `status`) VALUES ('%s', '%s', '%s', '%s')", $user['idu'], $db->real_escape_string($_POST['profile_id']), $db->real_escape_string($_POST['call_type']), 0));
				
				$selectCall = $db->query(sprintf("SELECT * FROM `video_calls` WHERE `from` = '%s' AND `to` = '%s' AND `type` = '%s' AND `status` = '%s' ORDER BY `id` DESC", $user['idu'], $db->real_escape_string($_POST['profile_id']), $db->real_escape_string($_POST['call_type']), 0));
				
				$result = $selectCall->fetch_assoc();
				
				echo json_encode(array('call_id' => $result['id']));
			} else {
				echo json_encode(array('error' => $LNG['plugin_video_call_user_busy']));
			}
		}
	} elseif($_POST['type'] == 1) {
		$selectCall = $db->query(sprintf("SELECT * FROM `video_calls` WHERE `id` = '%s'", $db->real_escape_string($_POST['profile_id'])));
		
		$result = $selectCall->fetch_assoc();
		
		// If the call is destinated to the logged-in user
		if($result['to'] == $user['idu'] && in_array($result['status'], array(0,1))) {
			$db->query(sprintf("UPDATE `video_calls` SET `status` = 1 WHERE `id` = '%s'", $result['id']));
			
			echo json_encode(array('call_id' => $result['id']));
		} else {
			echo json_encode(array('error' => $LNG['plugin_video_call_conversation_ended']));
		}
	} elseif($_POST['type'] == 2) {
		$selectCall = $db->query(sprintf("SELECT * FROM `video_calls` WHERE `id` = '%s'", $db->real_escape_string($_POST['call_id'])));
		
		$result = $selectCall->fetch_assoc();
		
		// If participant
		if($result['from'] == $user['idu'] || $result['to'] == $user['idu']) {
			$db->query(sprintf("UPDATE `video_calls` SET `status` = 2 WHERE `id` = '%s'", $result['id']));
		}
	}
}

mysqli_close($db);
?>