From 45217ce0739d49dc044255e79ca10e06721612a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 15 Dec 2010 09:43:49 +0000 Subject: [PATCH] =?UTF-8?q?Funktion=20zum=20Abfragen=20der=20Freigabeberec?= =?UTF-8?q?htigung=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/benutzerberechtigung.class.php | 60 ++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/include/benutzerberechtigung.class.php b/include/benutzerberechtigung.class.php index fa95cc15e..b018cdfd0 100644 --- a/include/benutzerberechtigung.class.php +++ b/include/benutzerberechtigung.class.php @@ -878,5 +878,65 @@ class benutzerberechtigung extends basis_db return $kostenstellen; } + /** + * Liefert die UID der Benutzer, die Freigabeberechtigt für eine bestimmte Kostenstelle oder + * Organisationseinheit sind. + * Es werden nur die Benutzer zurückgeliefert die genau auf diese Organisationseinheit das Freigaberecht haben + * Uebergeordnete Benutzer werden nicht geliefert + * + * @param $kostenstelle_id + * @param $oe_kurzbz + */ + public function getFreigabeBenutzer($kostenstelle_id, $oe_kurzbz=null) + { + if($kostenstelle_id=='' && $oe_kurzbz=='') + { + $this->errormsg = 'Kostenstelle und Organisationseinheit darf nicht gleichzeitig leer sein'; + return false; + } + + if($kostenstelle_id!='' && $oe_kurzbz!='') + { + $this->errormsg = 'Kostenstelle und Organisationseinheit darf nicht gleichzeitig gesetzt sein'; + return false; + } + + $where = ''; + if($kostenstelle_id!='') + $where.=" kostenstelle_id='".addslashes($kostenstelle_id)."'"; + elseif($oe_kurzbz!='') + $where.=" oe_kurzbz='".addslashes($oe_kurzbz)."'"; + $where .=" AND berechtigung_kurzbz='wawi/freigabe'"; + $where .=" AND (start<=now() OR start is null) AND (ende>=now() OR ende is null)"; + + + $qry = "SELECT uid, negativ FROM system.tbl_benutzerrolle WHERE ".$where; + $qry .= " UNION + SELECT uid, negativ + FROM + system.tbl_benutzerrolle + JOIN system.tbl_rolle USING(rolle_kurzbz) + JOIN system.tbl_rolleberechtigung USING(berechtigung_kurzbz) + WHERE ".$where; + + $freigabebenutzer=array(); + $not = array(); + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + if($row->negativ=='t') + $not[]=$row->uid; + $freigabebenutzer[]=$row->uid; + } + + return array_diff($freigabebenutzer,$not); + } + else + { + $this->errormsg = 'Fehler beim Laden der FreigabeBenutzer'; + return false; + } + } } ?> \ No newline at end of file