From 12abdb4ba710f2e52286bdf6a2803cdc8b119fdb Mon Sep 17 00:00:00 2001 From: Gerald Simane Date: Thu, 9 Jul 2009 11:09:57 +0000 Subject: [PATCH] --- content/lvplanung/timetable-week.xul.php | 1036 +++++++++++----------- include/aufmerksamdurch.class.php | 256 +++--- include/benutzerberechtigung.class.php | 1028 ++++++++++----------- include/lehrstunde.class.php | 2 +- 4 files changed, 1161 insertions(+), 1161 deletions(-) diff --git a/content/lvplanung/timetable-week.xul.php b/content/lvplanung/timetable-week.xul.php index 02eeb6f18..13419bd9f 100644 --- a/content/lvplanung/timetable-week.xul.php +++ b/content/lvplanung/timetable-week.xul.php @@ -1,519 +1,519 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - * Gerald Simane-Sequens . - */ -header("Content-type: application/vnd.mozilla.xul+xml"); - -include('../../config/vilesci.config.inc.php'); -include('../../include/globals.inc.php'); -include('../../include/functions.inc.php'); -include('../../include/berechtigung.class.php'); -include('../../include/lehreinheit.class.php'); -include('../../include/zeitwunsch.class.php'); -include('../../include/wochenplan.class.php'); -include('../../include/reservierung.class.php'); - -echo ''; -echo ''; -$PHP_SELF = $_SERVER['PHP_SELF']; -// Startwerte setzen -$db_stpl_table=null; -$db = new basis_db(); - -echo ''; - -$uid = get_uid(); - -$error_msg=''; - -// Benutzerdefinierte Variablen laden -loadVariables($uid); - -if (!isset($ignore_kollision)) - $ignore_kollision=(boolean)false; -elseif ($ignore_kollision=='false') - $ignore_kollision=(boolean)false; -else - $ignore_kollision=(boolean)true; - -// Bezeichnungen fuer Tabellen und Views -$lva_stpl_view=VIEW_BEGIN.'lva_'.$db_stpl_table; - -// Variablen uebernehmen -if (isset($_GET['aktion'])) - $aktion=$_GET['aktion']; -else - $aktion=null; - -if (isset($_GET['semesterplan'])) - $semesterplan=$_GET['semesterplan']; -else - $semesterplan=false; -if (isset($_GET['new_stunde'])) - $new_stunde=$_GET['new_stunde']; -if (isset($_GET['new_datum'])) - $new_datum=$_GET['new_datum']; -if (isset($_GET['old_ort'])) - $old_ort=$_GET['old_ort']; -if (isset($_GET['new_ort'])) - $new_ort=$_GET['new_ort']; -if (isset($_GET['ort'])) - $ort=$_GET['ort']; -else - $ort=null; -if (isset($_GET['datum'])) - $datum=$_GET['datum']; -if (isset($_GET['type'])) - $type=$_GET['type']; -if (isset($_GET['stg_kz'])) - $stg_kz=$_GET['stg_kz']; -else - $stg_kz=null; -if (isset($_GET['sem'])) - $sem=$_GET['sem']; -else - $sem=null; -if (isset($_GET['ver'])) - $ver=$_GET['ver']; -else - $ver=null; -if (isset($_GET['grp'])) - $grp=$_GET['grp']; -else - $grp=null; -if (isset($_GET['pers_uid'])) - $pers_uid=$_GET['pers_uid']; -if (isset($_GET['gruppe'])) - $gruppe=$_GET['gruppe']; -else - $gruppe=null; -if (isset($_GET['semester_aktuell'])) - $semester_aktuell=$_GET['semester_aktuell']; - -if (!isset($semester_aktuell) && $semesterplan) - $error_msg.='Studien-Semester ist nicht gesetzt!'; - -?> - - - - - +, + * Andreas Oesterreicher and + * Rudolf Hangl . + * Gerald Simane-Sequens . + */ +header("Content-type: application/vnd.mozilla.xul+xml"); + +include('../../config/vilesci.config.inc.php'); +include('../../include/globals.inc.php'); +include('../../include/functions.inc.php'); +#include('../../include/berechtigung.class.php'); +include('../../include/lehreinheit.class.php'); +include('../../include/zeitwunsch.class.php'); +include('../../include/wochenplan.class.php'); +include('../../include/reservierung.class.php'); + +echo ''; +echo ''; +$PHP_SELF = $_SERVER['PHP_SELF']; +// Startwerte setzen +$db_stpl_table=null; +$db = new basis_db(); + +echo ''; + +$uid = get_uid(); + +$error_msg=''; + +// Benutzerdefinierte Variablen laden +loadVariables($uid); + +if (!isset($ignore_kollision)) + $ignore_kollision=(boolean)false; +elseif ($ignore_kollision=='false') + $ignore_kollision=(boolean)false; +else + $ignore_kollision=(boolean)true; + +// Bezeichnungen fuer Tabellen und Views +$lva_stpl_view=VIEW_BEGIN.'lva_'.$db_stpl_table; + +// Variablen uebernehmen +if (isset($_GET['aktion'])) + $aktion=$_GET['aktion']; +else + $aktion=null; + +if (isset($_GET['semesterplan'])) + $semesterplan=$_GET['semesterplan']; +else + $semesterplan=false; +if (isset($_GET['new_stunde'])) + $new_stunde=$_GET['new_stunde']; +if (isset($_GET['new_datum'])) + $new_datum=$_GET['new_datum']; +if (isset($_GET['old_ort'])) + $old_ort=$_GET['old_ort']; +if (isset($_GET['new_ort'])) + $new_ort=$_GET['new_ort']; +if (isset($_GET['ort'])) + $ort=$_GET['ort']; +else + $ort=null; +if (isset($_GET['datum'])) + $datum=$_GET['datum']; +if (isset($_GET['type'])) + $type=$_GET['type']; +if (isset($_GET['stg_kz'])) + $stg_kz=$_GET['stg_kz']; +else + $stg_kz=null; +if (isset($_GET['sem'])) + $sem=$_GET['sem']; +else + $sem=null; +if (isset($_GET['ver'])) + $ver=$_GET['ver']; +else + $ver=null; +if (isset($_GET['grp'])) + $grp=$_GET['grp']; +else + $grp=null; +if (isset($_GET['pers_uid'])) + $pers_uid=$_GET['pers_uid']; +if (isset($_GET['gruppe'])) + $gruppe=$_GET['gruppe']; +else + $gruppe=null; +if (isset($_GET['semester_aktuell'])) + $semester_aktuell=$_GET['semester_aktuell']; + +if (!isset($semester_aktuell) && $semesterplan) + $error_msg.='Studien-Semester ist nicht gesetzt!'; + +?> + + + + + \ No newline at end of file diff --git a/include/aufmerksamdurch.class.php b/include/aufmerksamdurch.class.php index 102da78b0..4fd885bc1 100644 --- a/include/aufmerksamdurch.class.php +++ b/include/aufmerksamdurch.class.php @@ -1,129 +1,129 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -/** - * Klasse aufmerksamdurch - * @create 02-01-2007 - */ -require_once(dirname(__FILE__).'/basis_db.class.php'); - -class aufmerksamdurch extends basis_db -{ - public $new; - public $result = array(); - - //Tabellenspalten - public $aufmerksamdurch_kurzbz; - public $beschreibung; - public $ext_id; - - - /** - * Konstruktor - * @param $aufmerksamdurch_kurzbz = ID (Default=null) - */ - public function __construct($aufmerksamdurch_kurzbz=null) - { - parent::__construct(); - - if(!is_null($aufmerksamdurch_kurzbz)) - $this->load($aufmerksamdurch_kurzbz); - } - - /** - * Laedt einen Datensatz - * @param $aufmerksam_kurzbz ID - * @return true wenn ok, false im Fehlerfall - */ - public function load($aufmerksam_kurzbz) - { - //noch nicht implementiert - return false; - } - - /** - * Laedt alle Datansaetze - * @return true wenn ok, false im Fehlerfall - */ - public function getAll($orderby='aufmerksamdurch_kurzbz') - { - $qry = "SELECT * FROM public.tbl_aufmerksamdurch"; - if($orderby!='') - $qry .= " ORDER BY ".$orderby; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $obj = new aufmerksamdurch(); - - $obj->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; - $obj->beschreibung = $row->beschreibung; - - $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden'; - return false; - } - } - - /** - * Speichert den aktuellen Datensatz in die Datenbank - * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt - * andernfalls wird der Datensatz mit der ID in $schluessel_id aktualisiert - * @return true wenn ok, false im Fehlerfall - */ - public function save() - { - - if($this->new) - { - //Neuen Datensatz einfuegen - - $qry='INSERT INTO public.tbl_aufmerksamdurch (aufmerksamdurch_kurzbz, beschreibung, ext_id) VALUES('. - $this->addslashes($this->aufmerksamdurch_kurzbz).', '. - $this->addslashes($this->beschreibung).', '. - $this->addslashes($this->ext_id).');'; - } - else - { - $qry='UPDATE public.tbl_aufmerksamdurch SET '. - 'beschreibung='.$this->addslashes($this->beschreibung).', '. - 'ext_id='.$this->addslashes($this->ext_id).' '. - 'WHERE aufmerksamdurch_kurzbz='.$this->addslashes($this->aufmerksamdurch_kurzbz).';'; - } - - if(pg_query($this->conn, $qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der Daten'; - return false; - } - } -} +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Klasse aufmerksamdurch + * @create 02-01-2007 + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class aufmerksamdurch extends basis_db +{ + public $new; + public $result = array(); + + //Tabellenspalten + public $aufmerksamdurch_kurzbz; + public $beschreibung; + public $ext_id; + + + /** + * Konstruktor + * @param $aufmerksamdurch_kurzbz = ID (Default=null) + */ + public function __construct($aufmerksamdurch_kurzbz=null) + { + parent::__construct(); + + if(!is_null($aufmerksamdurch_kurzbz)) + $this->load($aufmerksamdurch_kurzbz); + } + + /** + * Laedt einen Datensatz + * @param $aufmerksam_kurzbz ID + * @return true wenn ok, false im Fehlerfall + */ + public function load($aufmerksam_kurzbz) + { + //noch nicht implementiert + return false; + } + + /** + * Laedt alle Datansaetze + * @return true wenn ok, false im Fehlerfall + */ + public function getAll($orderby='aufmerksamdurch_kurzbz') + { + $qry = "SELECT * FROM public.tbl_aufmerksamdurch"; + if($orderby!='') + $qry .= " ORDER BY ".$orderby; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new aufmerksamdurch(); + + $obj->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; + $obj->beschreibung = $row->beschreibung; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden'; + return false; + } + } + + /** + * Speichert den aktuellen Datensatz in die Datenbank + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der ID in $schluessel_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + public function save() + { + + if($this->new) + { + //Neuen Datensatz einfuegen + + $qry='INSERT INTO public.tbl_aufmerksamdurch (aufmerksamdurch_kurzbz, beschreibung, ext_id) VALUES('. + $this->addslashes($this->aufmerksamdurch_kurzbz).', '. + $this->addslashes($this->beschreibung).', '. + $this->addslashes($this->ext_id).');'; + } + else + { + $qry='UPDATE public.tbl_aufmerksamdurch SET '. + 'beschreibung='.$this->addslashes($this->beschreibung).', '. + 'ext_id='.$this->addslashes($this->ext_id).' '. + 'WHERE aufmerksamdurch_kurzbz='.$this->addslashes($this->aufmerksamdurch_kurzbz).';'; + } + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } +} ?> \ No newline at end of file diff --git a/include/benutzerberechtigung.class.php b/include/benutzerberechtigung.class.php index 95fbfcf7c..c814b83d8 100644 --- a/include/benutzerberechtigung.class.php +++ b/include/benutzerberechtigung.class.php @@ -1,515 +1,515 @@ -, - * Andreas Oesterreicher , - * Rudolf Hangl and - * Gerald Simane-Sequens - */ -require_once(dirname(__FILE__).'/basis_db.class.php'); -require_once(dirname(__FILE__).'/organisationseinheit.class.php'); -require_once(dirname(__FILE__).'/studiengang.class.php'); -require_once(dirname(__FILE__).'/fachbereich.class.php'); - -class benutzerberechtigung extends basis_db -{ - public $new; // boolean - public $berechtigungen = array(); // benutzerberechtigung Objekt - - //Tabellenspalten - public $benutzerberechtigung_id; // serial - public $uid; // varchar(32) - public $funktion_kurzbz; // varchar(16) - public $rolle_kurzbz; // varchar(32) - public $berechtigung_kurzbz; // varchar(16) - public $art; // varchar(5) - public $oe_kurzbz; // varchar(32) - public $studiensemester_kurzbz; // varchar(16) - public $start; // date - public $ende; // date - public $negativ; // boolean - public $updateamum; - public $updatevon; - public $insertamum; - public $insertvon; - - public $starttimestamp; - public $endetimestamp; - - //Attribute des Mitarbeiters - public $fix; - public $lektor; - - /** - * Konstruktor - Laedt optional eine Berechtigung - * @param $benutzerberechtigung_id - */ - public function __construct($benutzerberechtigung_id=null) - { - parent::__construct(); - - if($benutzerberechtigung_id!=null) - $this->load($benutzerberechtigung_id); - } - - /** - * Laedt eine Benutzerberechtigung - * @param benutzerberechtigung_id - */ - public function load($benutzerberechtigung_id) - { - return false; - } - - /** - * Prueft die Variablen vor dem Speichern - * auf Gueltigkeit. - * @return true wenn ok, false im Fehlerfall - */ - protected function validate() - { - if(mb_strlen($this->art)>16) - { - $this->errormsg = 'Art darf nicht laenger als 16 Zeichen sein'; - return false; - } - - if(mb_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(mb_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(mb_strlen($this->uid)>32) - { - $this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein'; - return false; - } - if($this->uid=='') - { - $this->errormsg = 'UID muss angegeben werden'; - return false; - } - - return true; - } - - /** - * 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 - */ - public 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; - } - */ - 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 false; - } - - /** - * Laedt die Berechtigungen eines Users - * @param $uid - * @param $all wenn $all auf true gesetzt wird, werden auch bereits abgelaufene - * berechtigungen geladen. - */ - public function getBerechtigungen($uid,$all=false) - { - // Berechtigungen holen - - $qry = "SELECT - benutzerberechtigung_id, tbl_benutzerrolle.uid, tbl_benutzerrolle.funktion_kurzbz, - tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, - tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start, - tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon, - tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon - FROM - system.tbl_benutzerrolle JOIN system.tbl_berechtigung USING(berechtigung_kurzbz) - WHERE uid='".addslashes($uid)."' - - UNION - - SELECT - benutzerberechtigung_id, tbl_benutzerrolle.uid, tbl_benutzerrolle.funktion_kurzbz, - tbl_benutzerrolle.rolle_kurzbz, tbl_berechtigung.berechtigung_kurzbz, tbl_benutzerrolle.art, - tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start, - tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon, - tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon - FROM - system.tbl_benutzerrolle JOIN system.tbl_rolle USING(rolle_kurzbz) - JOIN system.tbl_rolleberechtigung USING(rolle_kurzbz) - JOIN system.tbl_berechtigung ON(tbl_rolleberechtigung.berechtigung_kurzbz=tbl_berechtigung.berechtigung_kurzbz) - WHERE uid='".addslashes($uid)."' - - UNION - - SELECT - benutzerberechtigung_id, tbl_benutzerfunktion.uid, tbl_benutzerrolle.funktion_kurzbz, - tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, - tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start, - tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon, - tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon - FROM - system.tbl_benutzerrolle JOIN public.tbl_benutzerfunktion USING(funktion_kurzbz) - WHERE tbl_benutzerfunktion.uid='".addslashes($uid)."' - ORDER BY negativ DESC"; - - - if(!$this->db_query($qry)) - { - $this->errormsg='Fehler beim Laden der Berechtigungen'; - return false; - } - - while($row=$this->db_fetch_object()) - { - //wenn die Berechtigung an einer Organisationseinheit haengt, dann werden - //auch die Berechtigungen fuer die darunterliegenden Organisationseinheiten angelegt - if($row->oe_kurzbz!='') - { - $organisationseinheit = new organisationseinheit(); - $oes = $organisationseinheit->getChilds($row->oe_kurzbz); - } - else - { - $oes[]=$row->oe_kurzbz; - } - - foreach ($oes as $oe_kurzbz) - { - $b=new benutzerberechtigung(); - - $b->benutzerberechtigung_id = $row->benutzerberechtigung_id; - $b->uid=$row->uid; - $b->funktion_kurzbz=$row->funktion_kurzbz; - $b->rolle_kurzbz = $row->rolle_kurzbz; - $b->berechtigung_kurzbz = $row->berechtigung_kurzbz; - $b->art=$row->art; - $b->oe_kurzbz = $oe_kurzbz; - $b->studiensemester_kurzbz=$row->studiensemester_kurzbz; - $b->start=$row->start; - if ($row->start!=null) - $b->starttimestamp=mktime(0,0,0,mb_substr($row->start,5,2),mb_substr($row->start,8),mb_substr($row->start,0,4)); - else - $b->starttimestamp=null; - $b->ende=$row->ende; - if ($row->ende!=null) - $b->endetimestamp=mktime(23,59,59,mb_substr($row->ende,5,2),mb_substr($row->ende,8),mb_substr($row->ende,0,4)); - $b->negativ = ($row->negativ=='t'?true:false); - $b->updateamum = $row->updateamum; - $b->updatevon = $row->updatevon; - $b->insertamum = $row->insertamum; - $b->insertvon = $row->insertvon; - - $this->berechtigungen[]=$b; - } - } - - // Attribute des Mitarbeiters holen - $sql_query="SELECT * FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid='".addslashes($uid)."'"; - if(!$this->db_query($sql_query)) - { - $this->errormsg='Fehler beim Laden der Berechtigungen'; - return false; - } - while($row=$this->db_fetch_object()) - { - if ($row->fixangestellt=='t') - $this->fix=true; - else - $this->fix=false; - - if ($row->lektor=='t') - $this->lektor=true; - else - $this->lektor=false; - } - return true; - } - - /** - * Prueft ob die Berechtigung vorhanden ist. Vor der Verwendung muss die - * Funktion getBerechtigungen aufgerufen werden. - * - * @param $berechtigung - * @param $oe_kurzbz - * @param $art - * @return true wenn eine Berechtigung entspricht. - */ - public function isBerechtigt($berechtigung_kurzbz,$oe_kurzbz=null,$art=null, $fachbereich_kurzbz=null) - { - $timestamp=time(); - - //Studiengang - if(is_numeric($oe_kurzbz)) - { - //Studiengang - $stg = new studiengang($oe_kurzbz); - $oe_kurzbz = $stg->oe_kurzbz; - } - - //Fachbereich - if(!is_null($fachbereich_kurzbz)) - { - $fb = new fachbereich($fachbereich_kurzbz); - $oe_kurzbz = $fb->oe_kurzbz; - } - - foreach ($this->berechtigungen as $b) - { - //Pruefen ob eine negativ-Berechtigung vorhanden ist - if($b->berechtigung_kurzbz==$berechtigung_kurzbz && $b->negativ && $oe_kurzbz==$b->oe_kurzbz) - { - if (!is_null($b->starttimestamp) && !is_null($b->endetimestamp)) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return false; - } - else - return false; - } - - if($b->berechtigung_kurzbz==$berechtigung_kurzbz - && (is_null($art) || mb_strstr($b->art, $art)) - && (is_null($oe_kurzbz) || $oe_kurzbz==$b->oe_kurzbz)) - { - if (!is_null($b->starttimestamp) && !is_null($b->endetimestamp)) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return true; - } - else - return true; - } - } - - return false; - } - - /** - * Prueft ob die Person Fixangestellt ist - * @return true wenn ja, false wenn nein - */ - public function isFix() - { - if ($this->fix) - return true; - else - return false; - } - - /** - * Gibt Array mit den Studiengangskennzahlen zurueck fuer welche die - * Person eine Berechtigung besitzt. - * Optional wird auf Berechtigung eingeschraenkt. - */ - public function getStgKz($berechtigung_kurzbz=null) - { - $studiengang_kz=array(); - $timestamp=time(); - $in=''; - $not=''; - $all=false; - - foreach ($this->berechtigungen as $b) - { - if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null) - && (($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) || ($b->starttimestamp==null && $b->endetimestamp==null))) - { - if($b->negativ) - { - //Negativ-Recht - if(!is_null($b->oe_kurzbz)) - $not .="'".addslashes($b->oe_kurzbz)."',"; - else - return array(); - } - else - { - if(!is_null($b->oe_kurzbz)) - $in .= "'".addslashes($b->oe_kurzbz)."',"; - else - { - //Wenn NULL dann berechtigung auf alles - $all = true; - break; - } - } - } - } - - if(!$all) - { - if($in=='') - return array(); - else - $in = ' AND oe_kurzbz IN('.mb_substr($in,0, mb_strlen($in)-1).')'; - } - - if($not!='') - $not = ' AND oe_kurzbz NOT IN('.mb_substr($not,0, mb_strlen($not)-1).')'; - - $qry = "SELECT studiengang_kz FROM public.tbl_studiengang WHERE 1=1 $in $not"; - - if($this->db_query($qry)) - while($row = $this->db_fetch_object()) - $studiengang_kz[]=$row->studiengang_kz; - - $studiengang_kz=array_unique($studiengang_kz); - sort($studiengang_kz); - return $studiengang_kz; - } - - /** - * Gibt eine Array mit den Fachbereichen/Instituten zurueck - * - * @param $berechtigung - * @return array mit fachbereichen - */ - public function getFbKz($berechtigung_kurzbz=null) - { - $fachbereich_kurzbz=array(); - $timestamp=time(); - $in=''; - $not=''; - $all=false; - - foreach ($this->berechtigungen as $b) - { - if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null) - && (($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) || ($b->starttimestamp==null && $b->endetimestamp==null))) - { - if($b->negativ) - { - //Negativ-Recht - if(!is_null($b->oe_kurzbz)) - $not .="'".addslashes($b->oe_kurzbz)."',"; - else - return array(); - } - else - { - if(!is_null($b->oe_kurzbz)) - $in .= "'".addslashes($b->oe_kurzbz)."',"; - else - { - //Wenn NULL dann berechtigung auf alles - $all = true; - break; - } - } - } - } - - if(!$all) - { - if($in=='') - return array(); - else - $in = ' AND oe_kurzbz IN('.mb_substr($in,0, mb_strlen($in)-1).')'; - } - - if($not!='') - $not = ' AND oe_kurzbz NOT IN('.mb_substr($not,0, mb_strlen($not)-1).')'; - - $qry = "SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE 1=1 $in $not"; - - if($this->db_query($qry)) - while($row = $this->db_fetch_object()) - $fachbereich_kurzbz[]=$row->fachbereich_kurzbz; - - $fachbereich_kurzbz=array_unique($fachbereich_kurzbz); - sort($fachbereich_kurzbz); - return $fachbereich_kurzbz; - } -} +, + * Andreas Oesterreicher , + * Rudolf Hangl and + * Gerald Simane-Sequens + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(dirname(__FILE__).'/organisationseinheit.class.php'); +require_once(dirname(__FILE__).'/studiengang.class.php'); +require_once(dirname(__FILE__).'/fachbereich.class.php'); + +class benutzerberechtigung extends basis_db +{ + public $new; // boolean + public $berechtigungen = array(); // benutzerberechtigung Objekt + + //Tabellenspalten + public $benutzerberechtigung_id; // serial + public $uid; // varchar(32) + public $funktion_kurzbz; // varchar(16) + public $rolle_kurzbz; // varchar(32) + public $berechtigung_kurzbz; // varchar(16) + public $art; // varchar(5) + public $oe_kurzbz; // varchar(32) + public $studiensemester_kurzbz; // varchar(16) + public $start; // date + public $ende; // date + public $negativ; // boolean + public $updateamum; + public $updatevon; + public $insertamum; + public $insertvon; + + public $starttimestamp; + public $endetimestamp; + + //Attribute des Mitarbeiters + public $fix; + public $lektor; + + /** + * Konstruktor - Laedt optional eine Berechtigung + * @param $benutzerberechtigung_id + */ + public function __construct($benutzerberechtigung_id=null) + { + parent::__construct(); + + if($benutzerberechtigung_id!=null) + $this->load($benutzerberechtigung_id); + } + + /** + * Laedt eine Benutzerberechtigung + * @param benutzerberechtigung_id + */ + public function load($benutzerberechtigung_id) + { + return false; + } + + /** + * Prueft die Variablen vor dem Speichern + * auf Gueltigkeit. + * @return true wenn ok, false im Fehlerfall + */ + protected function validate() + { + if(mb_strlen($this->art)>16) + { + $this->errormsg = 'Art darf nicht laenger als 16 Zeichen sein'; + return false; + } + + if(mb_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(mb_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(mb_strlen($this->uid)>32) + { + $this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein'; + return false; + } + if($this->uid=='') + { + $this->errormsg = 'UID muss angegeben werden'; + return false; + } + + return true; + } + + /** + * 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 + */ + public 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(p g_query($this->conn,$qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Benutzerberechtigung:'.$qry; + return false; + } + */ + 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(!p g_query($this->conn, $sql_query)) + { + $this->errormsg='Fehler beim löschen'; + return false; + }*/ + return false; + } + + /** + * Laedt die Berechtigungen eines Users + * @param $uid + * @param $all wenn $all auf true gesetzt wird, werden auch bereits abgelaufene + * berechtigungen geladen. + */ + public function getBerechtigungen($uid,$all=false) + { + // Berechtigungen holen + + $qry = "SELECT + benutzerberechtigung_id, tbl_benutzerrolle.uid, tbl_benutzerrolle.funktion_kurzbz, + tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, + tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start, + tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon, + tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon + FROM + system.tbl_benutzerrolle JOIN system.tbl_berechtigung USING(berechtigung_kurzbz) + WHERE uid='".addslashes($uid)."' + + UNION + + SELECT + benutzerberechtigung_id, tbl_benutzerrolle.uid, tbl_benutzerrolle.funktion_kurzbz, + tbl_benutzerrolle.rolle_kurzbz, tbl_berechtigung.berechtigung_kurzbz, tbl_benutzerrolle.art, + tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start, + tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon, + tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon + FROM + system.tbl_benutzerrolle JOIN system.tbl_rolle USING(rolle_kurzbz) + JOIN system.tbl_rolleberechtigung USING(rolle_kurzbz) + JOIN system.tbl_berechtigung ON(tbl_rolleberechtigung.berechtigung_kurzbz=tbl_berechtigung.berechtigung_kurzbz) + WHERE uid='".addslashes($uid)."' + + UNION + + SELECT + benutzerberechtigung_id, tbl_benutzerfunktion.uid, tbl_benutzerrolle.funktion_kurzbz, + tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, + tbl_benutzerrolle.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start, + tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon, + tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon + FROM + system.tbl_benutzerrolle JOIN public.tbl_benutzerfunktion USING(funktion_kurzbz) + WHERE tbl_benutzerfunktion.uid='".addslashes($uid)."' + ORDER BY negativ DESC"; + + + if(!$this->db_query($qry)) + { + $this->errormsg='Fehler beim Laden der Berechtigungen'; + return false; + } + + while($row=$this->db_fetch_object()) + { + //wenn die Berechtigung an einer Organisationseinheit haengt, dann werden + //auch die Berechtigungen fuer die darunterliegenden Organisationseinheiten angelegt + if($row->oe_kurzbz!='') + { + $organisationseinheit = new organisationseinheit(); + $oes = $organisationseinheit->getChilds($row->oe_kurzbz); + } + else + { + $oes[]=$row->oe_kurzbz; + } + + foreach ($oes as $oe_kurzbz) + { + $b=new benutzerberechtigung(); + + $b->benutzerberechtigung_id = $row->benutzerberechtigung_id; + $b->uid=$row->uid; + $b->funktion_kurzbz=$row->funktion_kurzbz; + $b->rolle_kurzbz = $row->rolle_kurzbz; + $b->berechtigung_kurzbz = $row->berechtigung_kurzbz; + $b->art=$row->art; + $b->oe_kurzbz = $oe_kurzbz; + $b->studiensemester_kurzbz=$row->studiensemester_kurzbz; + $b->start=$row->start; + if ($row->start!=null) + $b->starttimestamp=mktime(0,0,0,mb_substr($row->start,5,2),mb_substr($row->start,8),mb_substr($row->start,0,4)); + else + $b->starttimestamp=null; + $b->ende=$row->ende; + if ($row->ende!=null) + $b->endetimestamp=mktime(23,59,59,mb_substr($row->ende,5,2),mb_substr($row->ende,8),mb_substr($row->ende,0,4)); + $b->negativ = ($row->negativ=='t'?true:false); + $b->updateamum = $row->updateamum; + $b->updatevon = $row->updatevon; + $b->insertamum = $row->insertamum; + $b->insertvon = $row->insertvon; + + $this->berechtigungen[]=$b; + } + } + + // Attribute des Mitarbeiters holen + $sql_query="SELECT * FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid='".addslashes($uid)."'"; + if(!$this->db_query($sql_query)) + { + $this->errormsg='Fehler beim Laden der Berechtigungen'; + return false; + } + while($row=$this->db_fetch_object()) + { + if ($row->fixangestellt=='t') + $this->fix=true; + else + $this->fix=false; + + if ($row->lektor=='t') + $this->lektor=true; + else + $this->lektor=false; + } + return true; + } + + /** + * Prueft ob die Berechtigung vorhanden ist. Vor der Verwendung muss die + * Funktion getBerechtigungen aufgerufen werden. + * + * @param $berechtigung + * @param $oe_kurzbz + * @param $art + * @return true wenn eine Berechtigung entspricht. + */ + public function isBerechtigt($berechtigung_kurzbz,$oe_kurzbz=null,$art=null, $fachbereich_kurzbz=null) + { + $timestamp=time(); + + //Studiengang + if(is_numeric($oe_kurzbz)) + { + //Studiengang + $stg = new studiengang($oe_kurzbz); + $oe_kurzbz = $stg->oe_kurzbz; + } + + //Fachbereich + if(!is_null($fachbereich_kurzbz)) + { + $fb = new fachbereich($fachbereich_kurzbz); + $oe_kurzbz = $fb->oe_kurzbz; + } + + foreach ($this->berechtigungen as $b) + { + //Pruefen ob eine negativ-Berechtigung vorhanden ist + if($b->berechtigung_kurzbz==$berechtigung_kurzbz && $b->negativ && $oe_kurzbz==$b->oe_kurzbz) + { + if (!is_null($b->starttimestamp) && !is_null($b->endetimestamp)) + { + if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) + return false; + } + else + return false; + } + + if($b->berechtigung_kurzbz==$berechtigung_kurzbz + && (is_null($art) || mb_strstr($b->art, $art)) + && (is_null($oe_kurzbz) || $oe_kurzbz==$b->oe_kurzbz)) + { + if (!is_null($b->starttimestamp) && !is_null($b->endetimestamp)) + { + if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) + return true; + } + else + return true; + } + } + + return false; + } + + /** + * Prueft ob die Person Fixangestellt ist + * @return true wenn ja, false wenn nein + */ + public function isFix() + { + if ($this->fix) + return true; + else + return false; + } + + /** + * Gibt Array mit den Studiengangskennzahlen zurueck fuer welche die + * Person eine Berechtigung besitzt. + * Optional wird auf Berechtigung eingeschraenkt. + */ + public function getStgKz($berechtigung_kurzbz=null) + { + $studiengang_kz=array(); + $timestamp=time(); + $in=''; + $not=''; + $all=false; + + foreach ($this->berechtigungen as $b) + { + if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null) + && (($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) || ($b->starttimestamp==null && $b->endetimestamp==null))) + { + if($b->negativ) + { + //Negativ-Recht + if(!is_null($b->oe_kurzbz)) + $not .="'".addslashes($b->oe_kurzbz)."',"; + else + return array(); + } + else + { + if(!is_null($b->oe_kurzbz)) + $in .= "'".addslashes($b->oe_kurzbz)."',"; + else + { + //Wenn NULL dann berechtigung auf alles + $all = true; + break; + } + } + } + } + + if(!$all) + { + if($in=='') + return array(); + else + $in = ' AND oe_kurzbz IN('.mb_substr($in,0, mb_strlen($in)-1).')'; + } + + if($not!='') + $not = ' AND oe_kurzbz NOT IN('.mb_substr($not,0, mb_strlen($not)-1).')'; + + $qry = "SELECT studiengang_kz FROM public.tbl_studiengang WHERE 1=1 $in $not"; + + if($this->db_query($qry)) + while($row = $this->db_fetch_object()) + $studiengang_kz[]=$row->studiengang_kz; + + $studiengang_kz=array_unique($studiengang_kz); + sort($studiengang_kz); + return $studiengang_kz; + } + + /** + * Gibt eine Array mit den Fachbereichen/Instituten zurueck + * + * @param $berechtigung + * @return array mit fachbereichen + */ + public function getFbKz($berechtigung_kurzbz=null) + { + $fachbereich_kurzbz=array(); + $timestamp=time(); + $in=''; + $not=''; + $all=false; + + foreach ($this->berechtigungen as $b) + { + if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null) + && (($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) || ($b->starttimestamp==null && $b->endetimestamp==null))) + { + if($b->negativ) + { + //Negativ-Recht + if(!is_null($b->oe_kurzbz)) + $not .="'".addslashes($b->oe_kurzbz)."',"; + else + return array(); + } + else + { + if(!is_null($b->oe_kurzbz)) + $in .= "'".addslashes($b->oe_kurzbz)."',"; + else + { + //Wenn NULL dann berechtigung auf alles + $all = true; + break; + } + } + } + } + + if(!$all) + { + if($in=='') + return array(); + else + $in = ' AND oe_kurzbz IN('.mb_substr($in,0, mb_strlen($in)-1).')'; + } + + if($not!='') + $not = ' AND oe_kurzbz NOT IN('.mb_substr($not,0, mb_strlen($not)-1).')'; + + $qry = "SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE 1=1 $in $not"; + + if($this->db_query($qry)) + while($row = $this->db_fetch_object()) + $fachbereich_kurzbz[]=$row->fachbereich_kurzbz; + + $fachbereich_kurzbz=array_unique($fachbereich_kurzbz); + sort($fachbereich_kurzbz); + return $fachbereich_kurzbz; + } +} ?> \ No newline at end of file diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php index 8614b5935..962bf43dc 100644 --- a/include/lehrstunde.class.php +++ b/include/lehrstunde.class.php @@ -299,7 +299,7 @@ class lehrstunde extends basis_db if (!$result_einheit=$this->db_query($sql_query)) { - $this->errormsg=pg_last_error($this->conn); + $this->errormsg=$this->db_last_error($this->conn); return false; } else