diff --git a/include/benutzer.class.php b/include/benutzer.class.php index ff0ee3c6b..ac6ae1c3a 100644 --- a/include/benutzer.class.php +++ b/include/benutzer.class.php @@ -309,6 +309,10 @@ class benutzer extends person */ public function search($searchItems, $limit=null, $aktiv=true, $positivePersonalnr=false) { + // SearchItems imploden und trimmen, um preg_split(Zeichenweise trennung) durchfuehren zu koennen + $searchItems_string_orig = implode(' ', $searchItems); + $searchItems_string = generateSpecialCharacterString($searchItems_string_orig); + $qry = "SELECT * FROM ( SELECT distinct on (uid) vorname, nachname, uid, mitarbeiter_uid, personalnummer, titelpre, titelpost, lektor, fixangestellt, alias, tbl_benutzer.aktiv, anrede, @@ -350,8 +354,8 @@ class benutzer extends person if($positivePersonalnr === true) $qry.=" (personalnummer >= 0 OR personalnummer IS NULL) AND"; - $qry.=" (lower(vorname || ' ' || nachname) like lower('%".$this->db_escape(implode(' ',$searchItems))."%')"; - $qry.=" OR lower(nachname || ' ' || vorname) like lower('%".$this->db_escape(implode(' ',$searchItems))."%')"; + $qry.=" (lower(vorname || ' ' || nachname) ~* lower(".$this->db_add_param($searchItems_string).")"; + $qry.=" OR lower(nachname || ' ' || vorname) ~* lower(".$this->db_add_param($searchItems_string).")"; $qry.=" OR lower(uid) like lower('%".$this->db_escape(implode(' ',$searchItems))."%')"; $qry.=" OR lower(telefonklappe) like lower('%".$this->db_escape(implode(' ',$searchItems))."%')"; diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php index d6211ac24..5d63c9989 100644 --- a/include/mitarbeiter.class.php +++ b/include/mitarbeiter.class.php @@ -918,6 +918,10 @@ class mitarbeiter extends benutzer */ public function searchPersonal($filter) { + // Filter imploden und trimmen, um preg_split(Zeichenweise trennung) durchfuehren zu koennen + //$searchItems_string_orig = implode(' ', $filter); + $searchItems_string = generateSpecialCharacterString($filter); + $qry = "SELECT distinct on(mitarbeiter_uid) *, tbl_benutzer.aktiv as aktiv, tbl_mitarbeiter.insertamum, tbl_mitarbeiter.insertvon, tbl_mitarbeiter.updateamum, tbl_mitarbeiter.updatevon, tbl_person.svnr @@ -925,8 +929,8 @@ class mitarbeiter extends benutzer public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid) JOIN public.tbl_person USING(person_id) - WHERE lower(COALESCE(nachname,'') ||' '|| COALESCE(vorname,'')) ~* lower(".$this->db_add_param($filter).") OR - lower(COALESCE(vorname,'') ||' '|| COALESCE(nachname,'')) ~* lower(".$this->db_add_param($filter).") OR + WHERE lower(COALESCE(nachname,'') ||' '|| COALESCE(vorname,'')) ~* lower(".$this->db_add_param($searchItems_string).") OR + lower(COALESCE(vorname,'') ||' '|| COALESCE(nachname,'')) ~* lower(".$this->db_add_param($searchItems_string).") OR uid ~* ".$this->db_add_param($filter)." "; if(is_numeric($filter)) $qry.="OR personalnummer = ".$this->db_add_param($filter)." OR svnr = ".$this->db_add_param($filter).";";