diff --git a/application/Api/v1/AddressdbApicontroller.php b/application/Api/v1/AddressdbApicontroller.php index baf21acc9..3654dad7d 100644 --- a/application/Api/v1/AddressdbApicontroller.php +++ b/application/Api/v1/AddressdbApicontroller.php @@ -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
\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") {