diff --git a/app/operator_panel/autocomplete.php b/app/operator_panel/autocomplete.php index 4d9f60402e..0ce2d30973 100644 --- a/app/operator_panel/autocomplete.php +++ b/app/operator_panel/autocomplete.php @@ -46,7 +46,46 @@ $term = check_str($_GET['term']); //add user's uuid to group uuid list to include private (non-shared) contacts $user_group_uuids[] = $_SESSION["user_uuid"]; -//build query for suggestion list +//get extensions list + $sql = "select "; + $sql .= "e.extension, "; + $sql .= "e.effective_caller_id_name, "; + $sql .= "e.directory_full_name "; + $sql .= "from "; + $sql .= "v_extensions e "; + $sql .= "where "; + $sql .= "( "; + $sql .= " lower(e.effective_caller_id_name) like lower('%".$term."%') or "; + $sql .= " lower(e.outbound_caller_id_name) like lower('%".$term."%') or "; + $sql .= " lower(e.directory_full_name) like lower('%".$term."%') or "; + $sql .= " lower(e.description) like lower('%".$term."%') or "; + $sql .= " lower(e.call_group) like lower('%".$term."%') or "; + $sql .= " e.extension like '%".$term."%' "; + $sql .= ") "; + $sql .= "and e.domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "and e.enabled = 'true' "; + $sql .= "order by "; + $sql .= "e.directory_full_name asc, "; + $sql .= "e.effective_caller_id_name asc "; + if (isset($_GET['debug'])) { echo $sql."

"; } + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $result_count = count($result); + unset ($prep_statement, $sql); + + if ($result_count > 0) { + foreach($result as $row) { + if ($row['directory_full_name'] != '') { $values[] = $row['directory_full_name']; } + if ($row['effective_caller_id_name'] != '') { $values[] = $row['effective_caller_id_name']; } + + $suggestions[] = "{ \"label\": \"".(implode(', ', $values)." @ ".$row['extension'])."\", \"value\": \"".$row['extension']."\" }"; + unset($values); + } + unset($sql, $result, $row_count); + } + +//get contacts list $sql = "select "; $sql .= "c.contact_organization, "; $sql .= "c.contact_name_given, "; @@ -84,7 +123,11 @@ $term = check_str($_GET['term']); $sql .= ") \n"; } $sql .= "and p.phone_type_voice = 1 "; - $sql .= "order by contact_organization desc, contact_name_given asc, contact_name_family asc "; + $sql .= "order by "; + $sql .= "contact_organization desc, "; + $sql .= "contact_name_given asc, "; + $sql .= "contact_name_family asc "; + if (isset($_GET['debug'])) { echo $sql."

"; } $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); @@ -92,11 +135,7 @@ $term = check_str($_GET['term']); unset($prep_statement, $sql); if ($result_count > 0) { - $resp .= "[\n"; - foreach($result as $row) { - - //build suggestions if ($row['contact_organization'] != '') { $values[] = $row['contact_organization']; } if ($row['contact_name_given'] != '') { $names = $row['contact_name_given']; } @@ -110,7 +149,11 @@ $term = check_str($_GET['term']); unset($values, $names); } unset($sql, $result, $row_count); + } +//output suggestions, if any + if (sizeof($suggestions) > 0) { + $resp .= "[\n"; $resp .= implode(",\n", $suggestions)."\n"; $resp .= "]"; @@ -118,5 +161,4 @@ $term = check_str($_GET['term']); echo $resp; if (isset($_GET['debug'])) { echo ""; } } - ?> \ No newline at end of file