From 1a675a99392a45c82bfd535c6cd7693a18013df1 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 27 Aug 2018 18:25:12 +0200 Subject: [PATCH] renamed and improved method for getting benutzerfunktionen --- .../models/person/Benutzerfunktion_model.php | 41 +++++++++++++++---- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php index c86222d22..6a15df107 100644 --- a/application/models/person/Benutzerfunktion_model.php +++ b/application/models/person/Benutzerfunktion_model.php @@ -29,25 +29,48 @@ class Benutzerfunktion_model extends DB_Model * @param $funktion_kurzbz string with one benutzerfunktionname or array with one or more * @return array|null */ - public function getByOeAndFunktion($oe_kurzbz, $funktion_kurzbz) + public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz = null, $activeoeonly = false, $activebenonly = false) { - $query = "SELECT * FROM public.tbl_benutzerfunktion - WHERE oe_kurzbz = ? - %s"; + $parametersArray = array(); + + $query = "SELECT * FROM public.tbl_benutzerfunktion"; + + if ($activeoeonly === true) + $query .= " JOIN public.tbl_organisationseinheit USING(oe_kurzbz)"; + + if ($activebenonly === true) + $query .= " JOIN public.tbl_benutzer USING(uid)"; + + $query .= "WHERE (datum_von <= NOW() OR datum_von IS NULL) AND (datum_bis >= NOW() OR datum_bis IS NULL)"; if (is_string($funktion_kurzbz)) { - $query = sprintf($query, " AND funktion_kurzbz = ".$funktion_kurzbz.")"); + $query .= " AND funktion_kurzbz = ".$funktion_kurzbz.")"; } elseif (is_array($funktion_kurzbz) && count($funktion_kurzbz) > 0) { $funktionstr = "'".implode("', '", $funktion_kurzbz)."'"; - $query = sprintf($query, " AND funktion_kurzbz IN (".$funktionstr.")"); + $query .= " AND funktion_kurzbz IN (".$funktionstr.")"; } - $query .= " AND (datum_von <= NOW() OR datum_von IS NULL) AND (datum_bis >= NOW() OR datum_bis IS NULL)"; - $query .= " ORDER BY funktion_kurzbz, uid"; + if (is_string($oe_kurzbz)) + { + $query .= " AND tbl_benutzerfunktion.oe_kurzbz = ?"; + $parametersArray[] = $oe_kurzbz; + } - return $this->execQuery($query, array($oe_kurzbz)); + if ($activebenonly === true) + { + $query .= " AND tbl_benutzer.aktiv"; + } + + if ($activeoeonly === true) + { + $query .= " AND tbl_organisationseinheit.aktiv"; + } + + $query .= " ORDER BY funktion_kurzbz, oe_kurzbz, uid"; + + return $this->execQuery($query, $parametersArray); } }