diff --git a/content/fas.xul.php b/content/fas.xul.php index a9318a376..3cd1eb420 100644 --- a/content/fas.xul.php +++ b/content/fas.xul.php @@ -97,11 +97,13 @@ echo ''; + - + + @@ -120,6 +122,7 @@ echo ''; + @@ -226,81 +229,97 @@ echo ''; - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + id = "menu-statistic-lehrauftragsliste" + key = "menu-statistic-lehrauftragsliste:key" + label = "&menu-statistic-lehrauftragsliste.label;" + command = "menu-statistic-lehrauftragsliste:command" + accesskey = "&menu-statistic-lehrauftragsliste.accesskey;"/> - + + + + + + + + + + + + + + + + @@ -395,6 +414,12 @@ echo ''; + '; label = "&menu-dokumente-zeugnis.label;" command = "menu-dokumente-zeugnis:command" accesskey = "&menu-dokumente-zeugnis.accesskey;"/> + '; key = "menu-extras-lvverwaltung:key" label = "&menu-extras-lvverwaltung.label;" command = "menu-extras-lvverwaltung:command" - accesskey = "&menu-extras-lvverwaltung.accesskey;"/> + accesskey = "&menu-extras-lvverwaltung.accesskey;"/> + content/statistik/abgaengerstatistik.php?stsem='+stsem,'Abgaengerstatistik'); } +// **** +// * Liefert eine Liste mit den Studenten die den OEH-Beitrag zahlen muessen / gezahlt haben +// **** +function StatistikPrintOehBeitrag() +{ + var stsem = getStudiensemester(); + + window.open('content/statistik/oeh_beitraege.xls.php?studiensemester_kurzbz='+stsem,'OEHBeitraege'); + +} + // **** // * Liefert eine statistik ueber die Anzahl der Absolventen pro Studiengang // **** @@ -1098,6 +1109,26 @@ function ExtrasShowProjektarbeitsBenotung() window.open('vilesci/lehre/projektarbeitsbenotung.php?stg_kz='+studiengang_kz,'Projektarbeitsbenotung',''); } +// **** +// * Zeigt HTML Seite zum Eintragen von Abgabeterminen fuer Projektarbeit an +// **** +function ExtrasShowProjektarbeitsabgaben() +{ + tree = document.getElementById('tree-verband'); + + if(tree.currentIndex==-1) + { + alert('Bitte zuerst einen Studiengang auswaehlen'); + return; + } + + //Studiengang holen + var col; + col = tree.columns ? tree.columns["stg_kz"] : "stg_kz"; + var studiengang_kz=tree.view.getCellText(tree.currentIndex,col); + + window.open('vilesci/lehre/abgabe_assistenz_frameset.php?stg_kz='+studiengang_kz,'Projektarbeitsabgaben',''); +} // **** // * Zeigt HTML Seite zur Bearbeitung der Gruppen an diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php index a2293b108..243918947 100644 --- a/content/student/studentoverlay.js.php +++ b/content/student/studentoverlay.js.php @@ -2452,7 +2452,7 @@ function StudentKontoZahlungsbestaetigung() // **** // * Erstellt das Zeugnis fuer einen oder mehrere Studenten // **** -function StudentCreateZeugnis() +function StudentCreateZeugnis(xsl) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); @@ -2484,7 +2484,7 @@ function StudentCreateZeugnis() } //PDF erzeugen - window.open('content/pdfExport.php?xml=zeugnis.rdf.php&xsl=Zeugnis&uid='+paramList+'&ss='+ss+'&xsl_stg_kz='+xsl_stg_kz,'Zeugnis', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes'); + window.open('content/pdfExport.php?xml=zeugnis.rdf.php&xsl='+xsl+'&uid='+paramList+'&ss='+ss+'&xsl_stg_kz='+xsl_stg_kz,'Zeugnis', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes'); } // **** diff --git a/include/basis.class.php b/include/basis.class.php index c3da2f2a3..3bc329287 100644 --- a/include/basis.class.php +++ b/include/basis.class.php @@ -1180,5 +1180,18 @@ class basis { $result = @($regs[2] == $regs[1]) ? $regs[1] : '
'; return $result; } + + // ************************************************ + // * wenn $var '' ist wird NULL zurueckgegeben + // * wenn $var !='' ist werden Datenbankkritische + // * Zeichen mit Backslash versehen und das Ergbnis + // * unter Hochkomma gesetzt. + // ************************************************ + protected function addslashes($var) + { + //TODO: diese Funktion gehoert ausgelagert in die BasisKlasse + return ($var!=''?"'".addslashes($var)."'":'null'); + } + } ?> \ No newline at end of file diff --git a/include/benutzerberechtigung.class.php b/include/benutzerberechtigung.class.php index fb0780629..2b96db49d 100644 --- a/include/benutzerberechtigung.class.php +++ b/include/benutzerberechtigung.class.php @@ -1,5 +1,5 @@ , - * Andreas Oesterreicher and - * Rudolf Hangl . + * Andreas Oesterreicher , + * Rudolf Hangl and + * Gerald Simane-Sequens */ +require_once('basis_db.class.php'); +require_once('organisationseinheit.class.php'); -class benutzerberechtigung +class benutzerberechtigung extends basis_db { - var $conn; // resource DB-Handle - var $errormsg; // string - var $new; // boolean - var $berechtigungen = array(); // benutzerberechtigung Objekt + public $errormsg; // string + public $new; // boolean + public $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(32) - var $studiensemester_kurzbz; // varchar(16) - var $start; // date - var $ende; // date - var $starttimestamp; - var $endetimestamp; + 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 - var $fix; - var $lektor; + public $fix; + public $lektor; // ************************************************************************* // * 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 + // * @param $benutzerberechtigung_id // ************************************************************************* - function benutzerberechtigung($conn, $benutzerberechtigung_id=null, $unicode=false) + public function __construct($benutzerberechtigung_id=null) { - $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; - } - + parent::__construct(); + if($benutzerberechtigung_id!=null) $this->load($benutzerberechtigung_id); } @@ -74,7 +69,7 @@ class benutzerberechtigung // * Laedt eine Benutzerberechtigung // * @param benutzerberechtigung_id // ********************************************************* - function load($benutzerberechtigung_id) + public function load($benutzerberechtigung_id) { return true; } @@ -84,7 +79,7 @@ class benutzerberechtigung // * auf Gueltigkeit. // * @return true wenn ok, false im Fehlerfall // ******************************************* - function validate() + protected function validate() { if(strlen($this->art)>16) { @@ -125,30 +120,20 @@ class benutzerberechtigung 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() + 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, @@ -186,6 +171,8 @@ class benutzerberechtigung $this->errormsg = 'Fehler beim Speichern der Benutzerberechtigung:'.$qry; return false; } + */ + return false; } // ************************************************************ @@ -196,6 +183,7 @@ class benutzerberechtigung // ************************************************************ function delete($benutzerberechtigung_id) { + /* // Berechtigungen holen $sql_query="DELETE from tbl_benutzerberechtigung where benutzerberechtigung_id = '".$benutzerberechtigung_id."'"; @@ -203,63 +191,116 @@ class benutzerberechtigung { $this->errormsg='Fehler beim löschen'; return false; - } - return true; + }*/ + 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,$all=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 - $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)) + + $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'; + $this->errormsg='Fehler beim Laden der Berechtigungen'; return false; } - while($row=pg_fetch_object($erg)) + while($row=$this->db_fetch_object()) { - $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; + //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,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)); + $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='$uid'"; - if(!$erg=pg_query($this->conn, $sql_query)) + $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'; + $this->errormsg='Fehler beim Laden der Berechtigungen'; return false; } - while($row=pg_fetch_object($erg)) + while($row=$this->db_fetch_object()) { if ($row->fixangestellt=='t') $this->fix=true; @@ -275,20 +316,36 @@ class benutzerberechtigung } //**************************************************************************** - // * Rueckgabewert ist TRUE wenn eine Berechtigung entspricht. - // * Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft. - // * @param string $uid UserID - // * @return variable Array mit LVA, false bei Fehler + // * 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. // *************************************************************************** - function isBerechtigt($berechtigung,$studiengang_kz=null,$art=null, $fachbereich_kurzbz=null) + public function isBerechtigt($berechtigung_kurzbz,$oe_kurzbz=null,$art=null) { $timestamp=time(); + foreach ($this->berechtigungen as $b) { - //echo 'Admin
'; - //Admin auf alles ist immer TRUE - if ($b->berechtigung_kurzbz=='admin' && is_null($b->fachbereich_kurzbz) && is_null($b->studiengang_kz) ) - //if ($b->berechtigung_kurzbz=='admin' && $b->fachbereich_kurzbz===NULL && $b->studiengang_kz===NULL ) + //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) || 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) @@ -296,73 +353,17 @@ class benutzerberechtigung } else return true; - - //echo 'Fachbereich
'; - //Fachbereichsberechtigung - if($fachbereich_kurzbz!=null) - { - //Wenn Fachbereichs oder Adminberechtigung - if(($berechtigung == $b->berechtigung_kurzbz || $b->berechtigung_kurzbz == 'admin') - && ($b->fachbereich_kurzbz==$fachbereich_kurzbz || is_null($b->fachbereich_kurzbz)) - && (is_null($b->studiengang_kz) || $b->studiengang_kz==$studiengang_kz) - && ($art==null || strstr($b->art, $art))) - { - if ($b->starttimestamp!=null && $b->endetimestamp!=null) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return true; - } - else - return true; - } } - - //echo 'Klasse
'; - //Wenn Berechtigung fuer Bestimmte Klasse vorhanden ist - if ( ($berechtigung==$b->berechtigung_kurzbz && is_null($studiengang_kz) && is_null($art) && is_null($fachbereich_kurzbz)) - || - ($b->berechtigung_kurzbz=='admin' - && (is_null($studiengang_kz) && (is_null($b->studiengang_kz) || $b->studiengang_kz==$studiengang_kz) ) - && (is_null($fachbereich_kurzbz) && (is_null($b->fachbereich_kurzbz) || $b->fachbereich_kurzbz==$fachbereich_kurzbz) ) - ) - ) - if ($b->starttimestamp!=null && $b->endetimestamp!=null) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return true; - } - else - return true; - - //echo 'Studiengang
'; - //Wenn Berechtigung fuer Bestimmten Studiengang vorhanden ist - if ($berechtigung==$b->berechtigung_kurzbz && ($studiengang_kz==$b->studiengang_kz || is_null($b->studiengang_kz)) && $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 || is_null($b->studiengang_kz)) - && strstr($b->art,$art) - && is_null($b->fachbereich_kurzbz)) - if ($b->starttimestamp!=null && $b->endetimestamp!=null) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return true; - } - else - return true; - } + return false; } - function isFix() + // ****************************************************** + // * Prueft ob die Person Fixangestellt ist + // * @return true wenn ja, false wenn nein + // ****************************************************** + public function isFix() { if ($this->fix) return true; @@ -371,42 +372,128 @@ class benutzerberechtigung } // ******************************************************************** - // * Gibt Array mit Kennzahlen der Studiengaenge sortiert zurueck. + // * Gibt Array mit den Studiengangskennzahlen zurueck fuer welche die + // * Person eine Berechtigung besitzt. // * Optional wird auf Berechtigung eingeschraenkt. - // * Wenn Berechtigung ueber alle Studiengaenge steht im ersten Feld 0. // ******************************************************************** - function getStgKz($berechtigung=null) + public function getStgKz($berechtigung_kurzbz=null) { $studiengang_kz=array(); $timestamp=time(); - + $in=''; + $not=''; + $all=false; + foreach ($this->berechtigungen as $b) - if ($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null) - if($b->fachbereich_kurzbz==null) - $studiengang_kz[]=$b->studiengang_kz; + { + 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('.substr($in,0, strlen($in)-1).')'; + } + + if($not!='') + $not = ' AND oe_kurzbz NOT IN('.substr($not,0, 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; } - function getFbKz($berechtigung=null) + /** + * Gibt eine Array mit den Fachbereichen/Instituten zurueck + * + * @param $berechtigung + * @return array mit fachbereichen + */ + public function getFbKz($berechtigung_kurzbz=null) { - $fachbereichs_kz=array(); + $fachbereich_kurzbz=array(); $timestamp=time(); - - foreach($this->berechtigungen as $b) + $in=''; + $not=''; + $all=false; + + 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 (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==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'; + 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; + } + } } } - sort($fachbereichs_kz); - return $fachbereichs_kz; + + if(!$all) + { + if($in=='') + return array(); + else + $in = ' AND oe_kurzbz IN('.substr($in,0, strlen($in)-1).')'; + } + + if($not!='') + $not = ' AND oe_kurzbz NOT IN('.substr($not,0, 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/zeugnisnote.class.php b/include/zeugnisnote.class.php index 5c1529a2f..076a308a0 100644 --- a/include/zeugnisnote.class.php +++ b/include/zeugnisnote.class.php @@ -292,6 +292,7 @@ class zeugnisnote tbl_zeugnisnote.updateamum, tbl_zeugnisnote.updatevon, tbl_zeugnisnote.insertamum, tbl_zeugnisnote.insertvon, tbl_zeugnisnote.ext_id, vw_student_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, + vw_student_lehrveranstaltung.bezeichnung_english as lehrveranstaltung_bezeichnung_english, tbl_note.bezeichnung as note_bezeichnung, tbl_zeugnisnote.bemerkung as bemerkung, vw_student_lehrveranstaltung.sort, @@ -310,7 +311,7 @@ class zeugnisnote UNION SELECT lehre.tbl_lehrveranstaltung.lehrveranstaltung_id,student_uid AS uid,studiensemester_kurzbz, note, uebernahmedatum, benotungsdatum,lehre.tbl_lehrveranstaltung.ects,lehre.tbl_lehrveranstaltung.semesterstunden, tbl_zeugnisnote.updateamum, tbl_zeugnisnote.updatevon, tbl_zeugnisnote.insertamum, - tbl_zeugnisnote.insertvon, tbl_zeugnisnote.ext_id, lehre.tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, + tbl_zeugnisnote.insertvon, tbl_zeugnisnote.ext_id, lehre.tbl_lehrveranstaltung.bezeichnung as lehrveranstaltung_bezeichnung, lehre.tbl_lehrveranstaltung.bezeichnung_english as lehrveranstaltung_bezeichnung_english, tbl_note.bezeichnung as note_bezeichnung, tbl_zeugnisnote.bemerkung as bemerkung, tbl_lehrveranstaltung.sort, tbl_lehrveranstaltung.zeugnis, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrform_kurzbz as lv_lehrform_kurzbz FROM @@ -339,6 +340,7 @@ class zeugnisnote $obj->ext_id = $row->ext_id; $obj->note_bezeichnung = $row->note_bezeichnung; $obj->lehrveranstaltung_bezeichnung = $row->lehrveranstaltung_bezeichnung; + $obj->lehrveranstaltung_bezeichnung_english = $row->lehrveranstaltung_bezeichnung_english; $obj->bemerkung = $row->bemerkung; $obj->semesterstunden = $row->semesterstunden; $obj->ects = $row->ects; diff --git a/locale/de-AT/fas.dtd b/locale/de-AT/fas.dtd index 12ec5b11a..829322e90 100644 --- a/locale/de-AT/fas.dtd +++ b/locale/de-AT/fas.dtd @@ -46,6 +46,22 @@ + + + + + + + + + + + + + + + + @@ -164,6 +180,10 @@ + + + + @@ -236,6 +256,10 @@ + + + + diff --git a/rdf/zeugnis.rdf.php b/rdf/zeugnis.rdf.php index 42a89e7b9..015206930 100644 --- a/rdf/zeugnis.rdf.php +++ b/rdf/zeugnis.rdf.php @@ -108,7 +108,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $xml_fussnote=''; $projektarbeit=array(); - $query = "SELECT tbl_student.matrikelnr, tbl_student.studiengang_kz, tbl_studiengang.typ, tbl_studiengang.bezeichnung, tbl_studentlehrverband.semester, tbl_person.vorname, tbl_person.vornamen, tbl_person.nachname,tbl_person.gebdatum,tbl_person.titelpre, tbl_person.titelpost, tbl_studiensemester.bezeichnung as sembezeichnung, tbl_studiensemester.studiensemester_kurzbz as stsem, tbl_student.prestudent_id FROM tbl_person, tbl_student, tbl_studiengang, tbl_benutzer, tbl_studentlehrverband, tbl_studiensemester WHERE tbl_student.studiengang_kz = tbl_studiengang.studiengang_kz and tbl_student.student_uid = tbl_benutzer.uid and tbl_benutzer.person_id = tbl_person.person_id and tbl_student.student_uid = '".$uid_arr[$i]."' and tbl_studentlehrverband.student_uid=tbl_student.student_uid and tbl_studiensemester.studiensemester_kurzbz = tbl_studentlehrverband.studiensemester_kurzbz and tbl_studentlehrverband.studiensemester_kurzbz = '".$studiensemester_kurzbz."'"; + $query = "SELECT tbl_student.matrikelnr, tbl_student.studiengang_kz, tbl_studiengang.typ, tbl_studiengang.bezeichnung, tbl_studiengang.english, tbl_studentlehrverband.semester, tbl_person.vorname, tbl_person.vornamen, tbl_person.nachname,tbl_person.gebdatum,tbl_person.titelpre, tbl_person.titelpost, tbl_studiensemester.bezeichnung as sembezeichnung, tbl_studiensemester.studiensemester_kurzbz as stsem, tbl_student.prestudent_id FROM tbl_person, tbl_student, tbl_studiengang, tbl_benutzer, tbl_studentlehrverband, tbl_studiensemester WHERE tbl_student.studiengang_kz = tbl_studiengang.studiengang_kz and tbl_student.student_uid = tbl_benutzer.uid and tbl_benutzer.person_id = tbl_person.person_id and tbl_student.student_uid = '".$uid_arr[$i]."' and tbl_studentlehrverband.student_uid=tbl_student.student_uid and tbl_studiensemester.studiensemester_kurzbz = tbl_studentlehrverband.studiensemester_kurzbz and tbl_studentlehrverband.studiensemester_kurzbz = '".$studiensemester_kurzbz."'"; //echo $query; if($result = pg_query($conn, $query)) { @@ -166,14 +166,15 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $xml .= " ".$row->semester.""; $xml .= " ".$bezeichnung.""; $xml .= " ".$row->bezeichnung.""; + $xml .= " ".$row->english.""; if($row->typ=='b') - $bezeichnung='Bachelor-Studiengang'; + $bezeichnung='Bachelor'; elseif($row->typ=='m') - $bezeichnung='Master-Studiengang'; + $bezeichnung='Master'; elseif($row->typ=='d') - $bezeichnung='Diplom-Studiengang'; + $bezeichnung='Diplom'; else - $bezeichnung='Studiengang'; + $bezeichnung=''; $studiengang_typ=$row->typ; $semester = $row->semester; @@ -187,7 +188,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $xml .= " ".$row->matrikelnr.""; $xml .= " ".$stgl_row->titelpre." ".$stgl_row->vorname." ".$stgl_row->nachname.($stgl_row->titelpost!=''?", ".$stgl_row->titelpost:'').""; $datum_aktuell = date('d.m.Y'); - $xml .= " Wien, am ".$datum_aktuell.""; + $xml .= " ".$datum_aktuell.""; $qry_proj = "SELECT lehrveranstaltung_id, titel, themenbereich, note FROM lehre.tbl_projektarbeit JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) WHERE student_uid='".$uid_arr[$i]."' AND studiensemester_kurzbz='$studiensemester_kurzbz' AND projekttyp_kurzbz in('Bachelor', 'Diplom')"; if($result_proj = pg_query($conn, $qry_proj)) @@ -240,6 +241,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") if(array_key_exists($row->lehrveranstaltung_id, $projektarbeit)) { $bezeichnung = $row->lehrveranstaltung_bezeichnung.$firma.' '.$fussnotenzeichen[$anzahl_fussnoten]; + $bezeichnung_englisch = $row->lehrveranstaltung_bezeichnung_english.$firma.' '.$fussnotenzeichen[$anzahl_fussnoten]; $xml_fussnote .="\n "; $xml_fussnote .=" ".$fussnotenzeichen[$anzahl_fussnoten].""; @@ -279,7 +281,10 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $anzahl_fussnoten++; } else + { $bezeichnung = $row->lehrveranstaltung_bezeichnung.$firma; + $bezeichnung_englisch = $row->lehrveranstaltung_bezeichnung_english.$firma; + } $bisio_von = ''; @@ -314,6 +319,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") } $xml .= "\n "; $xml .= " "; + $xml .= " "; $xml .= " ".$note2.""; $xml .= " ".($row->semesterstunden==0?'':sprintf('%.1f',$row->semesterstunden/$wochen)).""; $xml .= " ".($row->ects==0 || $row->ects==''?'':number_format($row->ects,1)).""; diff --git a/system/update12-20.php b/system/update12-20.php index 39b0ce4e1..b0bc2577e 100644 --- a/system/update12-20.php +++ b/system/update12-20.php @@ -130,6 +130,8 @@ if(!$result = @pg_query($conn, "SELECT * FROM system.tbl_berechtigung LIMIT 1;") CREATE INDEX idx_userberechtigung_uid ON system.tbl_benutzerrolle (uid); ALTER TABLE system.tbl_benutzerrolle ADD CONSTRAINT pk_tbl_benutzerberechtigung PRIMARY KEY (benutzerberechtigung_id); + ALTER TABLE system.tbl_benutzerrolle ADD CONSTRAINT benutzerrolle_benutzer FOREIGN KEY (uid) REFERENCES public.tbl_benutzer (uid) ON DELETE CASCADE ON UPDATE CASCADE; + ALTER TABLE system.tbl_benutzerrolle ADD CONSTRAINT benutzerrolle_funktion FOREIGN KEY (funktion_kurzbz) REFERENCES public.tbl_funktion (funktion_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; CREATE TABLE system.tbl_berechtigung ( @@ -155,6 +157,14 @@ if(!$result = @pg_query($conn, "SELECT * FROM system.tbl_berechtigung LIMIT 1;") WITH (OIDS=FALSE); ALTER TABLE system.tbl_rolleberechtigung ADD CONSTRAINT pk_tbl_rolleberechtigung PRIMARY KEY (berechtigung_kurzbz,rolle_kurzbz); + ALTER TABLE system.tbl_rolleberechtigung ADD CONSTRAINT rolleberechtigung_berechtigung FOREIGN KEY (berechtigung_kurzbz) REFERENCES system.tbl_berechtigung (berechtigung_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + ALTER TABLE system.tbl_rolleberechtigung ADD CONSTRAINT rolleberechtigung_rolle FOREIGN KEY (rolle_kurzbz) REFERENCES system.tbl_rolle (rolle_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + + ALTER TABLE system.tbl_benutzerrolle ADD CONSTRAINT benutzerrolle_rolle FOREIGN KEY (rolle_kurzbz) REFERENCES system.tbl_rolle (rolle_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + ALTER TABLE system.tbl_benutzerrolle ADD CONSTRAINT benutzerrolle_berechtigung FOREIGN KEY (berechtigung_kurzbz) REFERENCES system.tbl_berechtigung (berechtigung_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + ALTER TABLE system.tbl_benutzerrolle ADD CONSTRAINT benutzerrolle_organisationseinheit FOREIGN KEY (oe_kurzbz) REFERENCES public.tbl_organisationseinheit (oe_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + ALTER TABLE system.tbl_benutzerrolle ADD CONSTRAINT benutzerrolle_studienseemster FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester (studiensemester_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + GRANT SELECT ON system.tbl_benutzerrolle TO GROUP ".DB_CIS_USER_GROUP."; GRANT SELECT ON system.tbl_berechtigung TO GROUP ".DB_CIS_USER_GROUP."; @@ -170,7 +180,7 @@ if(!$result = @pg_query($conn, "SELECT * FROM system.tbl_berechtigung LIMIT 1;") if(!pg_query($conn, $qry)) echo 'system schema: '.pg_last_error($conn).'
'; else - echo 'system schema: Berechtigunstabellen wurden hinzugefügt!
'; + echo 'system schema: Berechtigungstabellen wurden hinzugefügt!
'; } ?> diff --git a/system/xsl/ZeugnisEng_0_v1.xsl b/system/xsl/ZeugnisEng_0_v1.xsl new file mode 100644 index 000000000..eea835317 --- /dev/null +++ b/system/xsl/ZeugnisEng_0_v1.xsl @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + Transcript of Records \n + + + + + + + + + st + + + nd + + + rd + + + th + + + Semester ( + + ) + + + + + + + + Degree Program + + + + + + + + + + + + Student ID: + + + + + + + + + + Program Code: + + + + + + + + + + + + + + + + First Name/Last Name: + + + + + + + + + + + + + + Date of Birth: + + + + + + + + + + + + + + + + + + + + + + + Subject + + + + + Grade + + + + + Hours/Week/ Semester + + + + + ECTS Points + + + + + + + + + \n + + + + + + + Grades: + + + excellent (1), very good (2), good (3), satisfactory (4), fail (5), not graded (nb), Credit based on previous experience/work (ar) + + + + + + + + non-credit participation (na), participated(t), bestanden (b), approbiert (ap), erfolgreich absolviert (ea), nicht erfolgreich absolviert (nea) + + + + + + + + + + + + + + + + + + + + + + + Vienna, + + + + + + + ______________________________________ + + + + + + + + ______________________________________ + + + + + + + + \nDirector of Academic Degree Program + + + + + + + + + Place, Date + + + + + + + + + + + + + + Fachhochschule Technikum Wien, Hoechstaedtplatz 5, 1200 Vienna, AUSTRIA, ZVR-Nr.: 074476426, DVR-Nr.:0928381 + + + + + + + + + + + + + + + + + Auslandsaufenthalt: -, , + \n Die im Ausland absolvierten Lehrveranstaltungen werden für das . Semester des Studiums an der Fachhochschule Technikum Wien angerechnet (Details siehe Transcript of Records der Gasthochschule). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +