From e24628668a853072866037194355de0f21b6d998 Mon Sep 17 00:00:00 2001 From: Gerald Raab Date: Thu, 21 Jun 2007 10:10:22 +0000 Subject: [PATCH] benutzerberechtigungen --- include/benutzer.class.php | 1 + include/benutzerberechtigung.class.php | 670 +++++++++--------- vilesci/left.php | 29 +- .../benutzerberechtigung_details.php | 402 +++++++++++ .../benutzerberechtigung_frameset.html | 21 + .../benutzerberechtigung_uebersicht.php | 78 ++ 6 files changed, 870 insertions(+), 331 deletions(-) create mode 100644 vilesci/stammdaten/benutzerberechtigung_details.php create mode 100644 vilesci/stammdaten/benutzerberechtigung_frameset.html create mode 100644 vilesci/stammdaten/benutzerberechtigung_uebersicht.php diff --git a/include/benutzer.class.php b/include/benutzer.class.php index 7399bfefd..0175303b8 100644 --- a/include/benutzer.class.php +++ b/include/benutzer.class.php @@ -20,6 +20,7 @@ * Rudolf Hangl . */ + class benutzer extends person { //Tabellenspalten diff --git a/include/benutzerberechtigung.class.php b/include/benutzerberechtigung.class.php index 112a3f814..27b0aa4b1 100644 --- a/include/benutzerberechtigung.class.php +++ b/include/benutzerberechtigung.class.php @@ -1,325 +1,347 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -class benutzerberechtigung -{ - var $conn; // resource DB-Handle - var $errormsg; // string - var $new; // boolean - var $berechtigungen = array(); // benutzerberechtigung Objekt - - //Tabellenspalten - var $benutzerberechtigung_id; // int - var $art; // varchar(16) - var $fachbereich_kurzbz; // int - var $studiengang_kz; // int - var $berechtigung_kurzbz; // varchar(16) - var $uid; // varchar(16) - var $studiensemester_kurzbz; // varchar(16) - var $start; // date - var $ende; // date - var $starttimestamp; - var $endetimestamp; - - // ************************************************************************* - // * Konstruktor - Uebergibt die Connection und laedt optional eine Lehrform - // * @param $conn Datenbank-Connection - // * $benutzerberechtigung_id - // * $unicode Gibt an ob die Daten mit UNICODE Codierung - // * oder LATIN9 Codierung verarbeitet werden sollen - // ************************************************************************* - function benutzerberechtigung($conn, $benutzerberechtigung_id=null, $unicode=false) - { - $this->conn = $conn; - - if($unicode) - $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; - else - $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; - - if(!pg_query($conn,$qry)) - { - $this->errormsg = 'Encoding konnte nicht gesetzt werden'; - return false; - } - - if($benutzerberechtigung_id!=null) - $this->load($benutzerberechtigung_id); - } - - // ********************************************************* - // * Laedt eine Benutzerberechtigung - // * @param benutzerberechtigung_id - // ********************************************************* - function load($benutzerberechtigung_id) - { - return true; - } - - // ******************************************* - // * Prueft die Variablen vor dem Speichern - // * auf Gueltigkeit. - // * @return true wenn ok, false im Fehlerfall - // ******************************************* - function validate() - { - if(strlen($this->art)>16) - { - $this->errormsg = 'Art darf nicht laenger als 16 Zeichen sein'; - return false; - } - - if(strlen($this->fachbereich_kurzbz)>16) - { - $this->errormsg = 'fachbereich_kurzbz darf nicht laenger als 16 Zeichen sein'; - return false; - } - if($this->studiengang_kz!='' && !is_numeric($this->studiengang_kz)) - { - $this->errormsg = 'Studiengangskennzahl muss eine gueltige Zahl sein'; - return false; - } - if(strlen($this->berechtigung_kurzbz)>16) - { - $this->errormsg = 'Berechtigung_kurzbz darf nicht laenger als 16 Zeichen sein'; - return false; - } - if($this->berechtigung_kurzbz=='') - { - $this->errormsg = 'Berechtigung_kurzbz muss angegeben werden'; - return false; - } - if(strlen($this->uid)>16) - { - $this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein'; - return false; - } - if($this->uid=='') - { - $this->errormsg = 'UID muss angegeben werden'; - return false; - } - - return true; - } - - // ************************************************ - // * wenn $var '' ist wird NULL zurueckgegeben - // * wenn $var !='' ist werden Datenbankkritische - // * Zeichen mit Backslash versehen und das Ergbnis - // * unter Hochkomma gesetzt. - // ************************************************ - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } - - // ************************************************************ - // * Speichert Benutzerberechtigung in die Datenbank - // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - // * angelegt, ansonsten der Datensatz upgedated - // * @return true wenn erfolgreich, false im Fehlerfall - // ************************************************************ - function save() - { - //Variablen auf Gueltigkeit pruefen - if(!$this->validate()) - return false; - - if($this->new) - { - $qry = 'INSERT INTO public.tbl_benutzerberechtigung (art, fachbereich_kurzbz, studiengang_kz, berechtigung_kurzbz, - uid, studiensemester_kurzbz, start, ende) - VALUES('.$this->addslashes($this->art).','. - $this->addslashes($this->fachbereich_kurzbz).','. - $this->addslashes($this->studiengang_kz).','. - $this->addslashes($this->berechtigung_kurzbz).','. - $this->addslashes($this->uid).','. - $this->addslashes($this->studiensemester_kurzbz).','. - $this->addslashes($this->start).','. - $this->addslashes($this->ende).');'; - } - else - { - $qry = 'UPDATE public.tbl_benutzerberechtigung SET'. - ' art='.$this->addslashes($this->art).','. - ' fachbereich_kurzbz='.$this->addslashes($this->fachbereich_kurzbz).','. - ' studiengang_kz='.$this->addslashes($this->studiengang_kz).','. - ' berechtigung_kurzbz='.$this->addslashes($this->berechtigung_kurzbz).','. - ' uid='.$this->addslashes($this->uid).','. - ' studiensemester_kurzbz='.$this->addslashes($this->studiensemester_kurzbz).','. - ' start='.$this->addslashes($this->start).','. - ' ende='.$this->addslashes($this->ende). - " WHERE benutzerberechtigung_id='".addslashes($this->benutzerberechtigung_id)."'"; - } - - if(pg_query($this->conn,$qry)) - { - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der Benutzerberechtigung:'.$qry; - return false; - } - } - - //**************************************************************************** - // * Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die - // * Fehlermeldung liegt in errormsg. - // * Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft. - // * @param string $uid UserID - // * @return variable Array mit LVA, false bei Fehler - // *************************************************************************** - function getBerechtigungen($uid) - { - // Berechtigungen holen - $sql_query="SELECT * FROM public.tbl_benutzerberechtigung WHERE uid='$uid' AND (startnow() OR ende IS NULL)"; - - if(!$erg=pg_query($this->conn, $sql_query)) - { - $this->errormsg='Fehler beim laden der Berechtigungen'; - return false; - } - - while($row=pg_fetch_object($erg)) - { - $b=new benutzerberechtigung($this->conn); - - $b->benutzerberechtigung_id = $row->benutzerberechtigung_id; - $b->art=$row->art; - $b->fachbereich_kurzbz=$row->fachbereich_kurzbz; - $b->studiengang_kz=$row->studiengang_kz; - $b->berechtigung_kurzbz=$row->berechtigung_kurzbz; - $b->uid=$row->uid; - $b->studiensemester_kurzbz=$row->studiensemester_kurzbz; - $b->start=$row->start; - if ($row->start!=null) - $b->starttimestamp=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8),substr($row->start,0,4)); - else - $b->starttimestamp=null; - $b->ende=$row->ende; - if ($row->ende!=null) - $b->endetimestamp=mktime(23,59,59,substr($row->ende,5,2),substr($row->ende,8),substr($row->ende,0,4)); - - - $this->berechtigungen[]=$b; - } - return true; - } - - function isBerechtigt($berechtigung,$studiengang_kz=null,$art=null, $fachbereich_kurzbz=null) - { - $timestamp=time(); - foreach ($this->berechtigungen as $b) - { - //Fachbereichsberechtigung - if($fachbereich_kurzbz!=null) - { - //Wenn Fachbereichs oder Adminberechtigung - if(($berechtigung == $b->berechtigung_kurzbz || $b->berechtigung_kurzbz == 'admin') && ($b->fachbereich_kurzbz==$fachbereich_kurzbz || $b->fachbereich_kurzbz=='0')) - { - if ($b->starttimestamp!=null && $b->endetimestamp!=null) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return true; - } - else - return true; - } - } - - //Wenn Berechtigung fuer Bestimmte Klasse vorhanden ist - if($berechtigung == $b->berechtigung_kurzbz && $studiengang_kz==null && $art==null && $fachbereich_kurzbz==null) - if ($b->starttimestamp!=null && $b->endetimestamp!=null) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return true; - } - else - return true; - //Wenn Berechtigung fuer Bestimmten Studiengang vorhanden ist - if ($berechtigung==$b->berechtigung_kurzbz - && ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) && $art==null && $b->fachbereich_kurzbz==null) - if ($b->starttimestamp!=null && $b->endetimestamp!=null) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return true; - } - else - return true; - //Wenn Berechtigung mit Studiengang und der richtigen BerechtigungsArt (suid) vorhanden ist - if ($berechtigung==$b->berechtigung_kurzbz - && ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) - && strstr($b->art,$art)) - if ($b->starttimestamp!=null && $b->endetimestamp!=null) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return true; - } - else - return true; - } - return false; - } - - // ******************************************************************** - // * Gibt Array mit Kennzahlen der Studiengaenge sortiert zurueck. - // * Optional wird auf Berechtigung eingeschraenkt. - // * Wenn Berechtigung ueber alle Studiengaenge steht im ersten Feld 0. - // ******************************************************************** - function getStgKz($berechtigung=null) - { - $studiengang_kz=array(); - $timestamp=time(); - - foreach ($this->berechtigungen as $b) - if ($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null) - if($b->fachbereich_kurzbz==null) - $studiengang_kz[]=$b->studiengang_kz; - $studiengang_kz=array_unique($studiengang_kz); - sort($studiengang_kz); - return $studiengang_kz; - } - - function getFbKz($berechtigung=null) - { - $fachbereichs_kz=array(); - $timestamp=time(); - - foreach($this->berechtigungen as $b) - { - if(($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null) - && (($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) || ($b->starttimestamp==null && $b->endetimestamp==null))) - { - if($b->fachbereich_kurzbz!='' && !in_array($b->fachbereich_kurzbz,$fachbereichs_kz)) - $fachbereichs_kz[] = $b->fachbereich_kurzbz; - if($b->fachbereich_kurzbz=='' && ($b->studiengang_kz==0 || $b->studiengang_kz='')) - $fachbereichs_kz[] = '0'; - } - } - sort($fachbereichs_kz); - return $fachbereichs_kz; - } -} +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +class benutzerberechtigung +{ + var $conn; // resource DB-Handle + var $errormsg; // string + var $new; // boolean + var $berechtigungen = array(); // benutzerberechtigung Objekt + + //Tabellenspalten + var $benutzerberechtigung_id; // int + var $art; // varchar(16) + var $fachbereich_kurzbz; // int + var $studiengang_kz; // int + var $berechtigung_kurzbz; // varchar(16) + var $uid; // varchar(16) + var $studiensemester_kurzbz; // varchar(16) + var $start; // date + var $ende; // date + var $starttimestamp; + var $endetimestamp; + + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional eine Lehrform + // * @param $conn Datenbank-Connection + // * $benutzerberechtigung_id + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function benutzerberechtigung($conn, $benutzerberechtigung_id=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + + if($benutzerberechtigung_id!=null) + $this->load($benutzerberechtigung_id); + } + + // ********************************************************* + // * Laedt eine Benutzerberechtigung + // * @param benutzerberechtigung_id + // ********************************************************* + function load($benutzerberechtigung_id) + { + return true; + } + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + if(strlen($this->art)>16) + { + $this->errormsg = 'Art darf nicht laenger als 16 Zeichen sein'; + return false; + } + + if(strlen($this->fachbereich_kurzbz)>16) + { + $this->errormsg = 'fachbereich_kurzbz darf nicht laenger als 16 Zeichen sein'; + return false; + } + if($this->studiengang_kz!='' && !is_numeric($this->studiengang_kz)) + { + $this->errormsg = 'Studiengangskennzahl muss eine gueltige Zahl sein'; + return false; + } + if(strlen($this->berechtigung_kurzbz)>16) + { + $this->errormsg = 'Berechtigung_kurzbz darf nicht laenger als 16 Zeichen sein'; + return false; + } + if($this->berechtigung_kurzbz=='') + { + $this->errormsg = 'Berechtigung_kurzbz muss angegeben werden'; + return false; + } + if(strlen($this->uid)>16) + { + $this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein'; + return false; + } + if($this->uid=='') + { + $this->errormsg = 'UID muss angegeben werden'; + return false; + } + + return true; + } + + // ************************************************ + // * wenn $var '' ist wird NULL zurueckgegeben + // * wenn $var !='' ist werden Datenbankkritische + // * Zeichen mit Backslash versehen und das Ergbnis + // * unter Hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + // ************************************************************ + // * Speichert Benutzerberechtigung in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + // * angelegt, ansonsten der Datensatz upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ************************************************************ + function save() + { + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if($this->new) + { + $qry = 'INSERT INTO public.tbl_benutzerberechtigung (art, fachbereich_kurzbz, studiengang_kz, berechtigung_kurzbz, + uid, studiensemester_kurzbz, start, ende) + VALUES('.$this->addslashes($this->art).','. + $this->addslashes($this->fachbereich_kurzbz).','. + $this->addslashes($this->studiengang_kz).','. + $this->addslashes($this->berechtigung_kurzbz).','. + $this->addslashes($this->uid).','. + $this->addslashes($this->studiensemester_kurzbz).','. + $this->addslashes($this->start).','. + $this->addslashes($this->ende).');'; + } + else + { + $qry = 'UPDATE public.tbl_benutzerberechtigung SET'. + ' art='.$this->addslashes($this->art).','. + ' fachbereich_kurzbz='.$this->addslashes($this->fachbereich_kurzbz).','. + ' studiengang_kz='.$this->addslashes($this->studiengang_kz).','. + ' berechtigung_kurzbz='.$this->addslashes($this->berechtigung_kurzbz).','. + ' uid='.$this->addslashes($this->uid).','. + ' studiensemester_kurzbz='.$this->addslashes($this->studiensemester_kurzbz).','. + ' start='.$this->addslashes($this->start).','. + ' ende='.$this->addslashes($this->ende). + " WHERE benutzerberechtigung_id='".addslashes($this->benutzerberechtigung_id)."'"; + } + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Benutzerberechtigung:'.$qry; + return false; + } + } + + // ************************************************************ + // * Speichert Benutzerberechtigung in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + // * angelegt, ansonsten der Datensatz upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ************************************************************ + function delete($benutzerberechtigung_id) + { + // Berechtigungen holen + $sql_query="DELETE from tbl_benutzerberechtigung where benutzerberechtigung_id = '".$benutzerberechtigung_id."'"; + + if(!pg_query($this->conn, $sql_query)) + { + $this->errormsg='Fehler beim löschen'; + return false; + } + return true; + } + + //**************************************************************************** + // * Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die + // * Fehlermeldung liegt in errormsg. + // * Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft. + // * @param string $uid UserID + // * @return variable Array mit LVA, false bei Fehler + // *************************************************************************** + function getBerechtigungen($uid,$all=false) + { + // Berechtigungen holen + $sql_query="SELECT * FROM public.tbl_benutzerberechtigung WHERE uid='$uid'"; + if (!$all) + $sql_query .= " AND (startnow() OR ende IS NULL)"; + $sql_query .= " order by benutzerberechtigung_id"; + + if(!$erg=pg_query($this->conn, $sql_query)) + { + $this->errormsg='Fehler beim laden der Berechtigungen'; + return false; + } + + while($row=pg_fetch_object($erg)) + { + $b=new benutzerberechtigung($this->conn); + + $b->benutzerberechtigung_id = $row->benutzerberechtigung_id; + $b->art=$row->art; + $b->fachbereich_kurzbz=$row->fachbereich_kurzbz; + $b->studiengang_kz=$row->studiengang_kz; + $b->berechtigung_kurzbz=$row->berechtigung_kurzbz; + $b->uid=$row->uid; + $b->studiensemester_kurzbz=$row->studiensemester_kurzbz; + $b->start=$row->start; + if ($row->start!=null) + $b->starttimestamp=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8),substr($row->start,0,4)); + else + $b->starttimestamp=null; + $b->ende=$row->ende; + if ($row->ende!=null) + $b->endetimestamp=mktime(23,59,59,substr($row->ende,5,2),substr($row->ende,8),substr($row->ende,0,4)); + + + $this->berechtigungen[]=$b; + } + return true; + } + + function isBerechtigt($berechtigung,$studiengang_kz=null,$art=null, $fachbereich_kurzbz=null) + { + $timestamp=time(); + foreach ($this->berechtigungen as $b) + { + //Fachbereichsberechtigung + if($fachbereich_kurzbz!=null) + { + //Wenn Fachbereichs oder Adminberechtigung + if(($berechtigung == $b->berechtigung_kurzbz || $b->berechtigung_kurzbz == 'admin') && ($b->fachbereich_kurzbz==$fachbereich_kurzbz || $b->fachbereich_kurzbz=='0')) + { + if ($b->starttimestamp!=null && $b->endetimestamp!=null) + { + if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) + return true; + } + else + return true; + } + } + + //Wenn Berechtigung fuer Bestimmte Klasse vorhanden ist + if($berechtigung == $b->berechtigung_kurzbz && $studiengang_kz==null && $art==null && $fachbereich_kurzbz==null) + if ($b->starttimestamp!=null && $b->endetimestamp!=null) + { + if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) + return true; + } + else + return true; + //Wenn Berechtigung fuer Bestimmten Studiengang vorhanden ist + if ($berechtigung==$b->berechtigung_kurzbz + && ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) && $art==null && $b->fachbereich_kurzbz==null) + if ($b->starttimestamp!=null && $b->endetimestamp!=null) + { + if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) + return true; + } + else + return true; + //Wenn Berechtigung mit Studiengang und der richtigen BerechtigungsArt (suid) vorhanden ist + if ($berechtigung==$b->berechtigung_kurzbz + && ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) + && strstr($b->art,$art)) + if ($b->starttimestamp!=null && $b->endetimestamp!=null) + { + if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) + return true; + } + else + return true; + } + return false; + } + + // ******************************************************************** + // * Gibt Array mit Kennzahlen der Studiengaenge sortiert zurueck. + // * Optional wird auf Berechtigung eingeschraenkt. + // * Wenn Berechtigung ueber alle Studiengaenge steht im ersten Feld 0. + // ******************************************************************** + function getStgKz($berechtigung=null) + { + $studiengang_kz=array(); + $timestamp=time(); + + foreach ($this->berechtigungen as $b) + if ($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null) + if($b->fachbereich_kurzbz==null) + $studiengang_kz[]=$b->studiengang_kz; + $studiengang_kz=array_unique($studiengang_kz); + sort($studiengang_kz); + return $studiengang_kz; + } + + function getFbKz($berechtigung=null) + { + $fachbereichs_kz=array(); + $timestamp=time(); + + foreach($this->berechtigungen as $b) + { + if(($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null) + && (($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) || ($b->starttimestamp==null && $b->endetimestamp==null))) + { + if($b->fachbereich_kurzbz!='' && !in_array($b->fachbereich_kurzbz,$fachbereichs_kz)) + $fachbereichs_kz[] = $b->fachbereich_kurzbz; + if($b->fachbereich_kurzbz=='' && ($b->studiengang_kz==0 || $b->studiengang_kz='')) + $fachbereichs_kz[] = '0'; + } + } + sort($fachbereichs_kz); + return $fachbereichs_kz; + } +} ?> \ No newline at end of file diff --git a/vilesci/left.php b/vilesci/left.php index 645ff663e..f8b6adb8a 100644 --- a/vilesci/left.php +++ b/vilesci/left.php @@ -270,17 +270,32 @@    Neu - + +   + + + +   + + +  Berechtigungen + + + + + + + + + + + + +
  Übersicht
  Neu
 
-