minor changes to searchAddress sorting logic
This commit is contained in:
@@ -307,12 +307,16 @@ class AddressdbApicontroller extends mfBaseApicontroller {
|
||||
return mfResponse::BadRequest(['message' => "Search string cannot be empty"]);
|
||||
}
|
||||
|
||||
$search_parts = explode(" ", $search);
|
||||
$search_parts = [];
|
||||
$search = str_replace(",", "", $search);
|
||||
$tmp_search_parts = explode(" ", $search);
|
||||
$ort_search = $strasse_search = $plz_search = $hausnummer_search = [];
|
||||
|
||||
foreach($search_parts as $p) {
|
||||
foreach($tmp_search_parts as $p) {
|
||||
$p = $this->db()->escape(trim($p));
|
||||
if(!$p) continue;
|
||||
if(in_array($p,$search_parts)) continue;
|
||||
$search_parts[] = $p;
|
||||
$gem_search[] = "gemeinde like '$p%'";
|
||||
$ort_search[] = "ortschaft like '$p%'";
|
||||
$strasse_search[] = "strasse like '$p%'";
|
||||
@@ -339,7 +343,8 @@ class AddressdbApicontroller extends mfBaseApicontroller {
|
||||
if($this->hausnummer_add_zusatz) {
|
||||
$address_key = $data->hausnummer_id."-".$data->zusatz;
|
||||
}
|
||||
$sort_key = $data->plz." ".$data->ortschaft." ".$data->strasse." ".$data->hausnummer." ".$data->zusatz;
|
||||
//$sort_key = $data->plz." ".$data->gemeinde." ".$data->ortschaft." ".$data->strasse." ".$data->hausnummer." ".$data->zusatz;
|
||||
$sort_key = $data->plz." ".$data->gemeinde." ".$data->strasse." ".$data->hausnummer." ".$data->zusatz;
|
||||
if(!array_key_exists($address_key, $tmp_addresses)) {
|
||||
|
||||
// get allowed preorderTypes
|
||||
@@ -400,32 +405,52 @@ class AddressdbApicontroller extends mfBaseApicontroller {
|
||||
foreach($tmp_addresses as $temp_add) {
|
||||
$includes_int = false;
|
||||
$count = 0;
|
||||
$count_parts = 0;
|
||||
/*if($temp_add['oaid'] == "AT-8951-1592d361") {
|
||||
var_dump($temp_add);
|
||||
}*/
|
||||
foreach($search_parts as $p) {
|
||||
$p = $this->db->escape(trim($p));
|
||||
if(strlen($p) === 0) continue;
|
||||
if(is_numeric(($p))) {
|
||||
$includes_int = true;
|
||||
$count_parts++;
|
||||
if(substr_count(strtolower($temp_add['sort_key']), strtolower($p))) {
|
||||
$count++;
|
||||
}
|
||||
} else {
|
||||
$count += substr_count(strtolower($temp_add['sort_key']), strtolower($p));
|
||||
$p_count = substr_count(strtolower($temp_add['sort_key']), strtolower($p));
|
||||
if($p_count) {
|
||||
$count += $p_count;
|
||||
$count_parts++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($temp_add['sort_key']);
|
||||
//echo $address['text']." $p $count<br />\n";
|
||||
if($includes_int && (($count + 1) - count($search_parts) ) < 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//var_dump(count($search_parts), $count, $count_parts, $temp_add);
|
||||
|
||||
if($count_parts == count($search_parts)) {
|
||||
|
||||
$count = 50;
|
||||
}
|
||||
//var_dump($count);exit;
|
||||
if(!array_key_exists($count, $sorted_addresses)) {
|
||||
$sorted_addresses[$count] = [];
|
||||
}
|
||||
$sorted_addresses[$count][] = $temp_add;
|
||||
}
|
||||
//exit;
|
||||
|
||||
|
||||
ksort($sorted_addresses, SORT_NUMERIC);
|
||||
$sorted_addresses = array_reverse($sorted_addresses, true);
|
||||
|
||||
//var_dump($sorted_addresses);exit;
|
||||
|
||||
// sort / format
|
||||
if($format == "tree") {
|
||||
|
||||
Reference in New Issue
Block a user