renamed and improved method for getting benutzerfunktionen

This commit is contained in:
alex
2018-08-27 18:25:12 +02:00
parent 20e9e6966e
commit 1a675a9939
@@ -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);
}
}