mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2025-12-30 00:53:50 +00:00
Add flexible search with improved wildcard support.
This commit is contained in:
@@ -318,16 +318,26 @@
|
||||
}
|
||||
if (strlen($caller_id_name) > 0) {
|
||||
$mod_caller_id_name = str_replace("*", "%", $caller_id_name);
|
||||
$sql .= "and caller_id_name like :caller_id_name \n";
|
||||
$parameters['caller_id_name'] = '%'.$mod_caller_id_name.'%';
|
||||
if (strstr($mod_caller_id_name, '%')) {
|
||||
$sql .= "and caller_id_name like :caller_id_name \n";
|
||||
$parameters['caller_id_name'] = $mod_caller_id_name;
|
||||
}
|
||||
else {
|
||||
$sql .= "and caller_id_name = :caller_id_name \n";
|
||||
$parameters['caller_id_name'] = $mod_caller_id_name;
|
||||
}
|
||||
}
|
||||
if (strlen($caller_id_number) > 0) {
|
||||
$mod_caller_id_number = preg_replace("#[^0-9./]#", "", $caller_id_number);
|
||||
if (strlen($mod_caller_id_number) == 0) {
|
||||
$mod_caller_id_number = trim($caller_id_number);
|
||||
$mod_caller_id_number = str_replace("*", "%", $caller_id_number);
|
||||
$mod_caller_id_number = preg_replace("#[^\+0-9.%/]#", "", $mod_caller_id_number);
|
||||
if (strstr($mod_caller_id_number, '%')) {
|
||||
$sql .= "and caller_id_number like :caller_id_number \n";
|
||||
$parameters['caller_id_number'] = $mod_caller_id_number;
|
||||
}
|
||||
else {
|
||||
$sql .= "and caller_id_number = :caller_id_number \n";
|
||||
$parameters['caller_id_number'] = $mod_caller_id_number;
|
||||
}
|
||||
$sql .= "and caller_id_number like :caller_id_number \n";
|
||||
$parameters['caller_id_number'] = '%'.$mod_caller_id_number.'%';
|
||||
}
|
||||
|
||||
if (strlen($extension_uuid) > 0 && is_uuid($extension_uuid)) {
|
||||
@@ -335,20 +345,28 @@
|
||||
$parameters['extension_uuid'] = $extension_uuid;
|
||||
}
|
||||
if (strlen($caller_destination) > 0) {
|
||||
$mod_caller_destination = preg_replace("#[^0-9./]#", "", $caller_destination);
|
||||
if (strlen($mod_caller_destination) == 0) {
|
||||
$mod_caller_destination = trim($caller_destination);
|
||||
$mod_caller_destination = str_replace("*", "%", $caller_destination);
|
||||
$mod_caller_destination = preg_replace("#[^\+0-9.%/]#", "", $mod_caller_destination);
|
||||
if (strstr($mod_caller_destination, '%')) {
|
||||
$sql .= "and caller_destination like :caller_destination \n";
|
||||
$parameters['caller_destination'] = $mod_caller_destination;
|
||||
}
|
||||
else {
|
||||
$sql .= "and caller_destination = :caller_destination \n";
|
||||
$parameters['caller_destination'] = $mod_caller_destination;
|
||||
}
|
||||
$sql .= "and caller_destination like :caller_destination \n";
|
||||
$parameters['caller_destination'] = '%'.$mod_caller_destination.'%';
|
||||
}
|
||||
if (strlen($destination_number) > 0) {
|
||||
$mod_destination_number = preg_replace("#[^0-9./]#", "", $destination_number);
|
||||
if (strlen($mod_destination_number) == 0) {
|
||||
$mod_destination_number = trim($destination_number);
|
||||
$mod_destination_number = str_replace("*", "%", $destination_number);
|
||||
$mod_destination_number = preg_replace("#[^\+0-9.%/]#", "", $mod_destination_number);
|
||||
if (strstr($mod_destination_number, '%')) {
|
||||
$sql .= "and destination_number like :destination_number \n";
|
||||
$parameters['destination_number'] = $mod_destination_number;
|
||||
}
|
||||
else {
|
||||
$sql .= "and destination_number = :destination_number \n";
|
||||
$parameters['destination_number'] = $mod_destination_number;
|
||||
}
|
||||
$sql .= "and destination_number like :destination_number \n";
|
||||
$parameters['destination_number'] = '%'.$mod_destination_number.'%';
|
||||
}
|
||||
if (strlen($context) > 0) {
|
||||
$sql .= "and context like :context \n";
|
||||
@@ -361,8 +379,14 @@
|
||||
if (isset($$field_name)) {
|
||||
$$field_name = $_REQUEST[$field_name];
|
||||
if (strlen($$field_name) > 0) {
|
||||
$sql .= "and $field_name like :".$field_name." \n";
|
||||
$parameters[$field_name] = '%'.$$field_name.'%';
|
||||
if (strstr($$field_name, '%')) {
|
||||
$sql .= "and $field_name like :".$field_name." \n";
|
||||
$parameters[$field_name] = $$field_name;
|
||||
}
|
||||
else {
|
||||
$sql .= "and $field_name = :".$field_name." \n";
|
||||
$parameters[$field_name] = $$field_name;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -385,7 +409,6 @@
|
||||
}
|
||||
if (strlen($answer_stamp_begin) > 0 && strlen($answer_stamp_end) > 0) {
|
||||
$sql .= "and answer_stamp between :answer_stamp_begin::timestamptz and :answer_stamp_end::timestamptz ";
|
||||
|
||||
$parameters['answer_stamp_begin'] = $answer_stamp_begin.':00.000 '.$time_zone;
|
||||
$parameters['answer_stamp_end'] = $answer_stamp_end.':59.999 '.$time_zone;
|
||||
}
|
||||
@@ -487,7 +510,7 @@
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$sql .= "and (answer_stamp is null and bridge_uuid is null and duration = 0) ";
|
||||
$sql .= "and (answer_stamp is null and bridge_uuid is null and duration = 0) ";
|
||||
//$sql .= "and (answer_stamp is null and bridge_uuid is null and billsec = 0 and sip_hangup_disposition = 'send_refuse') ";
|
||||
}
|
||||
}
|
||||
@@ -564,9 +587,6 @@
|
||||
}
|
||||
}
|
||||
$sql = str_replace(" ", " ", $sql);
|
||||
//echo $sql;
|
||||
//print_r($parameters);
|
||||
//exit;
|
||||
$database = new database;
|
||||
if ($archive_request && $_SESSION['cdr']['archive_database']['boolean'] == 'true') {
|
||||
$database->driver = $_SESSION['cdr']['archive_database_driver']['text'];
|
||||
|
||||
Reference in New Issue
Block a user