Browse Source

Search for contact by the phone number

FusionPBX 1 year ago
parent
commit
55f802ebd4
2 changed files with 86 additions and 64 deletions
  1. 85 63
      message_contact.php
  2. 1 1
      messages_contacts.php

+ 85 - 63
message_contact.php

@@ -41,25 +41,43 @@
 	$language = new text;
 	$text = $language->get(null, '/app/contacts');
 
-
 //action add or update
 	if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
 		$contact_uuid = $_REQUEST["id"];
 	}
+	elseif (!empty($_REQUEST["destination"]) ) {
+		$destination = $_REQUEST["destination"];
+	}
 	else {
 		echo '<html><body>&nbsp;</body></html> ';
 		exit;
 	}
 
 //main contact details
-	$sql = "select * from v_contacts ";
-	$sql .= "where domain_uuid = :domain_uuid ";
-	$sql .= "and contact_uuid = :contact_uuid ";
+	$sql = "select * from v_contacts as c \n";
+	$sql .= "where domain_uuid = :domain_uuid \n";
+	if (!empty($destination)) {
+		$sql .= "and contact_uuid in ( \n";
+		$sql .= " select contact_uuid from v_contact_phones \n";
+		$sql .= " where domain_uuid = :domain_uuid \n";
+		$sql .= " and ( \n";
+		$sql .= "  concat('+',phone_country_code, phone_number) = :destination \n";
+		$sql .= "  or concat(phone_country_code, phone_number) = :destination \n";
+		$sql .= "  or phone_number = :destination \n";
+		$sql .= " ) \n";
+		$sql .= ") \n";
+		$parameters['destination'] = $destination;
+	}
+	if (!empty($contact_uuid)) {
+		$sql .= "and contact_uuid = :contact_uuid ";
+		$parameters['contact_uuid'] = $contact_uuid;
+	}
 	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
-	$parameters['contact_uuid'] = $contact_uuid;
+
 	$database = new database;
 	$row = $database->select($sql, $parameters, 'row');
 	if (!empty($row)) {
+		$contact_uuid = $row["contact_uuid"];
 		$contact_type = $row["contact_type"];
 		$contact_organization = $row["contact_organization"];
 		$contact_name_prefix = $row["contact_name_prefix"];
@@ -76,69 +94,73 @@
 	}
 	unset($sql, $parameters, $row);
 
-//get the available users for this contact
-	$sql = "select * from v_users ";
-	$sql .= "where domain_uuid = :domain_uuid ";
-	$sql .= "order by username asc ";
-	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
-	$database = new database;
-	$users = $database->select($sql, $parameters ?? null, 'all');
-	unset($sql, $parameters);
-
-//determine if contact assigned to a user
-	if (!empty($users)) {
-		foreach ($users as $user) {
-			if ($user['contact_uuid'] == $contact_uuid) {
-				$contact_user_uuid = $user['user_uuid'];
-				break;
+//check contact permisions if this is set to enabled. default is false
+	if ($_SESSION['contact']['permissions']['boolean'] == "true") {
+
+		//get the available users for this contact
+		$sql = "select * from v_users ";
+		$sql .= "where domain_uuid = :domain_uuid ";
+		$sql .= "order by username asc ";
+		$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$database = new database;
+		$users = $database->select($sql, $parameters ?? null, 'all');
+		unset($sql, $parameters);
+
+		//determine if contact assigned to a user
+		if (!empty($users)) {
+			foreach ($users as $user) {
+				if ($user['contact_uuid'] == $contact_uuid) {
+					$contact_user_uuid = $user['user_uuid'];
+					break;
+				}
 			}
 		}
-	}
 
-//get the assigned users that can view this contact
-	$sql = "select u.username, u.user_uuid, a.contact_user_uuid from v_contacts as c, v_users as u, v_contact_users as a ";
-	$sql .= "where c.contact_uuid = :contact_uuid ";
-	$sql .= "and c.domain_uuid = :domain_uuid ";
-	$sql .= "and u.user_uuid = a.user_uuid ";
-	$sql .= "and c.contact_uuid = a.contact_uuid ";
-	$sql .= "order by u.username asc ";
-	$parameters['contact_uuid'] = $contact_uuid;
-	$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
-	$database = new database;
-	$contact_users_assigned = $database->select($sql, $parameters, 'all');
-	unset($sql, $parameters);
-
-//get the assigned groups that can view this contact
-	$sql = "select g.*, cg.contact_group_uuid ";
-	$sql .= "from v_groups as g, v_contact_groups as cg ";
-	$sql .= "where cg.group_uuid = g.group_uuid ";
-	$sql .= "and cg.domain_uuid = :domain_uuid ";
-	$sql .= "and cg.contact_uuid = :contact_uuid ";
-	$sql .= "and cg.group_uuid <> :group_uuid ";
-	$sql .= "order by g.group_name asc ";
-	$parameters['domain_uuid'] = $domain_uuid;
-	$parameters['contact_uuid'] = $contact_uuid;
-	$parameters['group_uuid'] = $_SESSION["user_uuid"];
-	$database = new database;
-	$contact_groups_assigned = $database->select($sql, $parameters, 'all');
-	if (!empty($contact_groups_assigned)) {
-		foreach ($contact_groups_assigned as $field) {
-			$contact_groups[] = "'".$field['group_uuid']."'";
+		//get the assigned users that can view this contact
+		$sql = "select u.username, u.user_uuid, a.contact_user_uuid from v_contacts as c, v_users as u, v_contact_users as a ";
+		$sql .= "where c.contact_uuid = :contact_uuid ";
+		$sql .= "and c.domain_uuid = :domain_uuid ";
+		$sql .= "and u.user_uuid = a.user_uuid ";
+		$sql .= "and c.contact_uuid = a.contact_uuid ";
+		$sql .= "order by u.username asc ";
+		$parameters['contact_uuid'] = $contact_uuid;
+		$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+		$database = new database;
+		$contact_users_assigned = $database->select($sql, $parameters, 'all');
+		unset($sql, $parameters);
+
+		//get the assigned groups that can view this contact
+		$sql = "select g.*, cg.contact_group_uuid ";
+		$sql .= "from v_groups as g, v_contact_groups as cg ";
+		$sql .= "where cg.group_uuid = g.group_uuid ";
+		$sql .= "and cg.domain_uuid = :domain_uuid ";
+		$sql .= "and cg.contact_uuid = :contact_uuid ";
+		$sql .= "and cg.group_uuid <> :group_uuid ";
+		$sql .= "order by g.group_name asc ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$parameters['contact_uuid'] = $contact_uuid;
+		$parameters['group_uuid'] = $_SESSION["user_uuid"];
+		$database = new database;
+		$contact_groups_assigned = $database->select($sql, $parameters, 'all');
+		if (!empty($contact_groups_assigned)) {
+			foreach ($contact_groups_assigned as $field) {
+				$contact_groups[] = "'".$field['group_uuid']."'";
+			}
 		}
-	}
-	unset($sql, $parameters);
+		unset($sql, $parameters);
 
-//get the available groups for this contact
-	$sql = "select group_uuid, group_name from v_groups ";
-	$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
-	if (!empty($contact_groups)) {
-		$sql .= "and group_uuid not in (".implode(',', $contact_groups).") ";
+		//get the available groups for this contact
+		$sql = "select group_uuid, group_name from v_groups ";
+		$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
+		if (!empty($contact_groups)) {
+			$sql .= "and group_uuid not in (".implode(',', $contact_groups).") ";
+		}
+		$sql .= "order by group_name asc ";
+		$parameters['domain_uuid'] = $domain_uuid;
+		$database = new database;
+		$contact_groups_available = $database->select($sql, $parameters, 'all');
+		unset($sql, $parameters, $contact_groups);
 	}
-	$sql .= "order by group_name asc ";
-	$parameters['domain_uuid'] = $domain_uuid;
-	$database = new database;
-	$contact_groups_available = $database->select($sql, $parameters, 'all');
-	unset($sql, $parameters, $contact_groups);
 
 //determine title name
 	if ($contact_name_given || $contact_name_family) {
@@ -423,4 +445,4 @@
 echo "</body>\n";
 echo "</html>\n";
 
-?>
+?>

+ 1 - 1
messages_contacts.php

@@ -341,7 +341,7 @@
 			if (!empty($_SESSION['user']['contact_number']) && $_SESSION['user']['contact_number'] == $number) {
 				echo "<tr onclick=\"parent.document.getElementById('message_to').value=".escape($number)."; parent.document.getElementById('contacts_frame').src='messages_contacts.php?number=".urlencode($number)."'; update_url('messages_frame', 'messages_thread.php?number=".urlencode($number)."'); ".(permission_exists('contact_view') && !empty($_SESSION['message']['contact_details']['boolean']) && $_SESSION['message']['contact_details']['boolean'] == 'true' ? "parent.document.getElementById('contact_frame').src='message_contact.php?id=".$row['contact_uuid']."';" : null)."\"><td valign='top' class='row_style0 contact_selected'>\n";
 				if (permission_exists('contact_view') && !empty($_SESSION['message']['contact_details']['boolean']) && $_SESSION['message']['contact_details']['boolean'] == 'true') {
-					echo "<script>parent.document.getElementById('contact_frame').src='message_contact.php?id=".$row['contact_uuid']."';</script>";
+					echo "<script>parent.document.getElementById('contact_frame').src='message_contact.php?destination=".urlencode($number)."&id=".$row['contact_uuid']."';</script>";
 				}
 				$selected = true;
 			}