diff --git a/app/xml_cdr/xml_cdr_inc.php b/app/xml_cdr/xml_cdr_inc.php index 3b5c07176c..8015c23fa7 100644 --- a/app/xml_cdr/xml_cdr_inc.php +++ b/app/xml_cdr/xml_cdr_inc.php @@ -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'];