View file apps/native/api/search_messages/content.php

File size: 3Kb
<?php 
# @*************************************************************************@
# @ Software author: Mansur Altamirov (Mansur_TL)							@
# @ Author_url 1: https://www.instagram.com/mansur_tl                       @
# @ Author_url 2: http://codecanyon.net/user/mansur_tl                      @
# @ Author E-mail: vayart.help@gmail.com                                    @
# @*************************************************************************@
# @ ColibriSM - The Ultimate Modern Social Media Sharing Platform           @
# @ Copyright (c) 2020 - 2021 ColibriSM. All rights reserved.               @
# @*************************************************************************@

if (empty($cl['is_logged'])) {
	$data         = array(
		'code'    => 401,
		'data'    => array(),
		'message' => 'Unauthorized Access'
	);
}
else {
	require_once(cl_full_path("core/apps/chat/app_ctrl.php"));

	$send_to     = fetch_or_get($_GET["user_id"], false);
	$page_size   = fetch_or_get($_GET["page_size"], false);
	$offset_up   = fetch_or_get($_GET["offset_up"], false);
	$offset_down = fetch_or_get($_GET["offset_down"], false);
	$user_data   = cl_raw_user_data($send_to);
	$query       = ((not_empty($_GET['query'])) ? cl_croptxt($_GET['query'], 32) : "");
	$query       = ((len_between($query, 1, 32)) ? cl_text_secure($query) : "");
	$offset_to   = false;
	$offset_id   = false;
	$page_size   = (is_posnum($page_size)) ? $page_size : 0;

	if (not_empty($offset_up) && is_posnum($offset_up)) {
		$offset_id = $offset_up;
		$offset_to = "lt";
	}
	else if(not_empty($offset_down) && is_posnum($offset_down)) {
		$offset_id = $offset_down;
		$offset_to = "gt";
	}

	if (empty($user_data) || $send_to == $me["id"] || cl_is_blocked($send_to, $me['id']) || cl_is_blocked($me['id'], $send_to)) {
		$data['code']    = 400;
        $data['message'] = "Interlocutor ID is missing or invalid";
    	$data['data']    = array();
	}

	else {
		$total_matches  = 0;
		$search_result  = array();
		$messages       = cl_search_conversation(array(
			'user_one'  => $me['id'],
			'user_two'  => $send_to,
			'order'     => "DESC",
			'limit'     => $page_size,
			'offset'    => $offset_id,
			'offset_to' => $offset_to
		));

		if (not_empty($messages)) {
			if (not_empty($query)) {
				foreach ($messages as $row) {

					$row['message'] = cl_linkify_urls($row['message']);
					$query_matches  = preg_match_all("/{$query}/i", $row['message']);

					if (is_posnum($query_matches)) {
						$total_matches += $query_matches;

						array_push($search_result, $row);
					}
				}

				if (not_empty($total_matches)) {
					$data["code"]  = 200;
					$data["total"] = $total_matches;
					$data["data"]  = $search_result;
				}
				else {
					$data["code"]    = 404;
					$data["data"]    = array();
					$data["message"] = "No data found";
				}
			}

			else {
				$data["code"]  = 200;
				$data["total"] = count($messages);
				$data["data"]  = $messages;
			}
		}

		else {
			$data["code"]    = 404;
			$data["data"]    = array();
			$data["message"] = "No data found";
		}
	}
}