From 4cc1ff2915cde0e18f6d6d62573b9060cc9f566f Mon Sep 17 00:00:00 2001 From: oesi Date: Wed, 8 Apr 2015 14:10:38 +0200 Subject: [PATCH 01/21] Fixed PHP Warning --- cis/testtool/admin/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/testtool/admin/index.php b/cis/testtool/admin/index.php index 00529d836..2be75e52e 100644 --- a/cis/testtool/admin/index.php +++ b/cis/testtool/admin/index.php @@ -518,7 +518,7 @@ echo ' + '; + } } echo ''; diff --git a/cis/private/lehre/pruefung/pruefung.js b/cis/private/lehre/pruefung/pruefung.js index c8edc3860..0a099b238 100644 --- a/cis/private/lehre/pruefung/pruefung.js +++ b/cis/private/lehre/pruefung/pruefung.js @@ -453,9 +453,14 @@ function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, t */ function saveAnmeldung(lehrveranstaltung_id, termin_id) { - var lehrveranstaltung_id = $("#lehrveranstaltungHidden").val(); - var termin_id = $("#terminHidden").val(); + var uid = $("#anmeldung_hinzufuegen_uid").val(); + if(lehrveranstaltung_id === undefined) + lehrveranstaltung_id = $("#lehrveranstaltungHidden").val(); + if(termin_id === undefined) + termin_id = $("#terminHidden").val(); var bemerkungen = $("#anmeldungBemerkung").val(); + if(bemerkungen === undefined) + bemerkungen = "von Lektor hinzugefügt"; $.ajax({ dataType: 'json', @@ -465,7 +470,8 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) method: "saveAnmeldung", termin_id: termin_id, lehrveranstaltung_id: lehrveranstaltung_id, - bemerkung: bemerkungen + bemerkung: bemerkungen, + uid: uid }, error: loadError }).success(function(data){ @@ -480,7 +486,17 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) resetForm(); }).complete(function(event, xhr, settings){ $("#saveDialog").dialog("close"); - refresh(); + + if(uid === undefined) + { + //Wenn Anmeldung durch Student + refresh(); + } + else + { + //Wenn Anmeldung durch Lektor + showAnmeldungen(termin_id, lehrveranstaltung_id); + } }); } @@ -653,6 +669,7 @@ function writeAnmeldungen(data) var ort_kurzbz = data.result.ort_kurzbz; var liste = ""; + $("#anmeldung_hinzufuegen").html(""); $("#reihungSpeichernButton").html(""); $("#anmeldeDaten").html(liste); + $("#listeDrucken").html("Liste drucken"); if(ort_kurzbz !== null) { $("#raumLink").html("Prüfungsraum: "+ort_kurzbz); @@ -829,11 +848,12 @@ function loadStudiengaenge() $("#stgListe").empty(); if(data.error === 'false') { - var liste = ""; + var liste = ""; $("#stgListe").append(liste); } else @@ -848,15 +868,22 @@ function loadStudiengaenge() * @param {type} studiengang_kz Studiengangskennzahl * @returns {undefined} */ -function loadPruefungStudiengang(studiengang_kz) +function loadPruefungStudiengang(studiengang_kz, studiensemester) { + if(studiengang_kz === undefined) + studiengang_kz = $("#select_studiengang option:selected").val(); + + if(studiensemester === undefined) + studiensemester = $("#filter_studiensemester option:selected").val(); + $.ajax({ dataType: 'json', url: "./pruefungsanmeldung.json.php", type: "POST", data: { method: "getPruefungenStudiengang", - studiengang_kz: studiengang_kz + studiengang_kz: studiengang_kz, + studiensemester: studiensemester }, error: loadError }).success(function(data){ @@ -867,6 +894,7 @@ function loadPruefungStudiengang(studiengang_kz) { var liste = ""; data.result.forEach(function(e){ + console.log(e); liste += "
'; //Liste der Studiengänge echo 'Studiengang: + + + + "; + + echo " + + + + + + +
Dokument:
Anmerkung:
"; +} +else +{ + echo "Es wurde keine notiz_id angegeben"; +} +?> + + + diff --git a/include/dms.class.php b/include/dms.class.php index 0e1e07d92..1e04a9570 100644 --- a/include/dms.class.php +++ b/include/dms.class.php @@ -254,6 +254,10 @@ class dms extends basis_db */ public function deleteDms($dms_id) { + $this->load($dms_id); + $this->getAllVersions($dms_id); + $error = false; + // lösche Versionen $qry ="BEGIN;DELETE FROM campus.tbl_dms_version WHERE dms_id =".$this->db_add_param($dms_id, FHC_INTEGER)."; "; $qry.="DELETE FROM fue.tbl_projekt_dokument WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER)."; "; @@ -261,12 +265,28 @@ class dms extends basis_db if($this->db_query($qry)) { $this->db_query('COMMIT;'); - return true; + + // Alle Versionen der Datei im Filesystem löschen + foreach($this->result as $obj) + { + if(is_file(DMS_PATH.$obj->filename) && !unlink(DMS_PATH.$obj->filename)) + $error = true; + } + + if($error) + { + $this->errormsg = "Fehler beim Löschen des Dokuments aufgetreten"; + return false; + } + else + { + return true; + } } else { $this->db_query('ROLLBACK;'); - $this->errormsg = "Fehler beim Löschen des Eintrages aufgetreten"; + $this->errormsg = "Fehler beim Löschen des Eintrages aufgetreten"; return false; } } @@ -841,6 +861,55 @@ class dms extends basis_db return false; } } + + /** + * Gibt die Dokumente einer Notiz zurück + * @param int $notiz_id + * @return boolean + */ + public function getDokumenteNotiz($notiz_id) + { + $qry = "SELECT * + FROM + campus.tbl_dms + JOIN campus.tbl_dms_version USING(dms_id) + JOIN public.tbl_notiz_dokument USING(dms_id) + WHERE (dms_id, version) in( + SELECT dms_id, max(version) + FROM campus.tbl_dms_version + GROUP BY dms_id) + AND tbl_notiz_dokument.notiz_id=".$this->db_add_param($notiz_id)." + ORDER BY name;"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new dms(); + + $obj->dms_id = $row->dms_id; + $obj->version = $row->version; + $obj->oe_kurzbz = $row->oe_kurzbz; + $obj->dokument_kurzbz = $row->dokument_kurzbz; + $obj->kategorie_kurzbz = $row->kategorie_kurzbz; + $obj->filename = $row->filename; + $obj->mimetype = $row->mimetype; + $obj->name = $row->name; + $obj->beschreibung = $row->beschreibung; + $obj->letzterzugriff = $row->letzterzugriff; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + + $this->result[] = $obj; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } /** * Laedt die Dokumente einer Projektphase diff --git a/include/js/jqSOAPClient.js b/include/js/jqSOAPClient.js index f54bc0846..8012247b3 100644 --- a/include/js/jqSOAPClient.js +++ b/include/js/jqSOAPClient.js @@ -14,6 +14,7 @@ */ //Singleton SOAP Client var SOAPClient = { + AjaxAsync: true, Proxy: "", SOAPServer: "", ContentType: "text/xml", @@ -44,7 +45,8 @@ var SOAPClient = { } } $.ajax({ - type: "POST", + async: SOAPClient.AjaxAsync, + type: "POST", url: SOAPClient.Proxy, dataType: "xml", processData: false, diff --git a/include/notiz.class.php b/include/notiz.class.php index 7d6e05cbd..eac9f5434 100644 --- a/include/notiz.class.php +++ b/include/notiz.class.php @@ -1,458 +1,520 @@ - and - */ -require_once(dirname(__FILE__).'/basis_db.class.php'); - -class notiz extends basis_db -{ - public $new; - public $result=array(); - - //Tabellenspalten - public $notiz_id; - public $titel; - public $text; - public $verfasser_uid; - public $bearbeiter_uid; - public $start; - public $ende; - public $erledigt; - public $insertamum; - public $insertvon; - public $updateamum; - public $updatevon; - - public $projekt_kurzbz; - public $projektphase_id; - public $projekttask_id; - public $uid; - public $person_id; - public $prestudent_id; - public $bestellung_id; - public $lehreinheit_id; - public $anrechnung_id; - - /** - * Konstruktor - * @param $notiz_id - */ - public function __construct($notiz_id = null) - { - parent::__construct(); - - if($notiz_id != null) - $this->load($notiz_id); - } - - /** - * Laedt eine Notiz - * @param $notiz_id - * @return true wenn ok, false im Fehlerfall - */ - public function load($notiz_id) - { - if(!is_numeric($notiz_id)) - { - $this->errormsg = 'NotizID ist ungueltig'; - return false; - } - - $qry = "SELECT * FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->notiz_id=$row->notiz_id; - $this->titel=$row->titel; - $this->text=$row->text; - $this->verfasser_uid=$row->verfasser_uid; - $this->bearbeiter_uid=$row->bearbeiter_uid; - $this->start=$row->start; - $this->ende=$row->ende; - $this->erledigt=$this->db_parse_bool($row->erledigt); - $this->insertamum=$row->insertamum; - $this->insertvon=$row->insertvon; - $this->updateamum=$row->updateamum; - $this->updatevon=$row->updatevon; - - return true; - } - else - { - $this->errormsg = 'Datensatz wurde nicht gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Löscht eine Notiz - * @param $notiz_id - * @return true wenn ok, false im Fehlerfall - */ - public function delete($notiz_id) - { - if(!is_numeric($notiz_id)) - { - $this->errormsg = 'NotizID ist ungueltig'; - return false; - } - - $qry = "Delete FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); - - if(!$this->db_query($qry)) - { - $this->errormsg = 'Fehler beim Loeschen der Daten'; - return false; - } - return true; - } - - /** - * Prueft die Daten vor dem Speichern - * auf Gueltigkeit - */ - public function validate() - { - return true; - } - - /** - * 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 $notiz_id aktualisiert - * @return true wenn ok, false im Fehlerfall - */ - public function save($new=null) - { - if($new==null) - $new=$this->new; - - if(!$this->validate()) - return false; - - if($new) - { - //Neuen Datensatz einfuegen - $qry='BEGIN;INSERT INTO public.tbl_notiz (titel, text, verfasser_uid, - bearbeiter_uid, start, ende, erledigt, insertamum, insertvon, - updateamum, updatevon) VALUES('. - $this->db_add_param($this->titel).', '. - $this->db_add_param($this->text).', '. - $this->db_add_param($this->verfasser_uid).','. - $this->db_add_param($this->bearbeiter_uid).','. - $this->db_add_param($this->start).','. - $this->db_add_param($this->ende).','. - $this->db_add_param($this->erledigt,FHC_BOOLEAN).','. - $this->db_add_param($this->insertamum).','. - $this->db_add_param($this->insertvon).','. - $this->db_add_param($this->updateamum).','. - $this->db_add_param($this->updatevon).');'; - } - else - { - $qry='UPDATE public.tbl_notiz SET '. - 'titel='.$this->db_add_param($this->titel).', '. - 'text='.$this->db_add_param($this->text).', '. - 'verfasser_uid='.$this->db_add_param($this->verfasser_uid).', '. - 'bearbeiter_uid='.$this->db_add_param($this->bearbeiter_uid).', '. - 'start='.$this->db_add_param($this->start).', '. - 'ende='.$this->db_add_param($this->ende).', '. - 'erledigt='.$this->db_add_param($this->erledigt,FHC_BOOLEAN).', '. - 'updateamum='.$this->db_add_param($this->updateamum).', '. - 'updatevon='.$this->db_add_param($this->updatevon).' '. - 'WHERE notiz_id='.$this->db_add_param($this->notiz_id,FHC_INTEGER).';'; - } - - if($this->db_query($qry)) - { - if($new) - { - $qry="SELECT currval('seq_notiz_notiz_id') as id;"; - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - { - $this->notiz_id = $row->id; - $this->db_query('COMMIT;'); - return true; - } - else - { - $this->errormsg = 'Fehler beim Lesen der Sequence'; - $this->db_query('ROLLBACK'); - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Lesen der Sequence'; - $this->db_query('ROLLBACK'); - return false; - } - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Datensatzes'; - return false; - } - } - - /** - * Speichert die Zuordnung einer Notiz - * - */ - public function saveZuordnung() - { - $qry = "INSERT INTO public.tbl_notizzuordnung(notiz_id, projekt_kurzbz, projektphase_id, projekttask_id, - uid, person_id, prestudent_id, bestellung_id, lehreinheit_id, anrechnung_id) VALUES(". - $this->db_add_param($this->notiz_id, FHC_INTEGER).','. - $this->db_add_param($this->projekt_kurzbz).','. - $this->db_add_param($this->projektphase_id, FHC_INTEGER).','. - $this->db_add_param($this->projekttask_id, FHC_INTEGER).','. - $this->db_add_param($this->uid).','. - $this->db_add_param($this->person_id, FHC_INTEGER).','. - $this->db_add_param($this->prestudent_id, FHC_INTEGER).','. - $this->db_add_param($this->bestellung_id, FHC_INTEGER).','. - $this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','. - $this->db_add_param($this->anrechnung_id, FHC_INTEGER).');'; - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der Daten'; - return false; - } - } - - /** - * - * Laedt die Notizen - * @param $erledigt - * @param $projekt_kurzbz - * @param $projektphase_id - * @param $projekttask_id - * @param $uid - * @param $person_id - * @param $prestudent_id - * @param $bestellung_id - * @param $user - * @param $lehreinheit_id - * @param $anrechnung_id - * @return boolean - */ - public function getNotiz($erledigt=null, $projekt_kurzbz=null, $projektphase_id=null, $projekttask_id=null, $uid=null, $person_id=null, $prestudent_id=null, $bestellung_id=null, $user=null, $lehreinheit_id=null, $stundenplandev_id=null, $anrechnung_id=null) - { - $qry = "SELECT - * - FROM - public.tbl_notiz - LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) - WHERE 1=1"; - - if(!is_null($erledigt)) - { - if($erledigt) - $qry.=" AND erledigt=true"; - else - $qry.=" AND erledigt=false"; - } - if($projekt_kurzbz!='') - $qry.=" AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); - if($projektphase_id!='') - $qry.=" AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); - if($projekttask_id!='') - $qry.=" AND projekttask_id=".$this->db_add_param($projekttask_id, FHC_INTEGER); - if($uid!='') - $qry.=" AND uid=".$this->db_add_param($uid); - if($person_id!='') - $qry.=" AND person_id=".$this->db_add_param($person_id, FHC_INTEGER); - if($prestudent_id!='') - $qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); - if($bestellung_id!='') - $qry.=" AND bestellung_id=".$this->db_add_param($bestellung_id, FHC_INTEGER); - if($user!='') - $qry.=" AND (verfasser_uid=".$this->db_add_param($user)." OR bearbeiter_uid=".$this->db_add_param($user).")"; - if($lehreinheit_id!='') - $qry.=" AND lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); - if($anrechnung_id!='') - $qry.=" AND anrechnung_id=".$this->db_add_param($anrechnung_id, FHC_INTEGER); - - $qry.=' ORDER BY start, ende, titel'; - - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - $obj = new notiz(); - - $obj->notiz_id=$row->notiz_id; - $obj->titel=$row->titel; - $obj->text=$row->text; - $obj->verfasser_uid=$row->verfasser_uid; - $obj->bearbeiter_uid=$row->bearbeiter_uid; - $obj->start=$row->start; - $obj->ende=$row->ende; - $obj->erledigt=$this->db_parse_bool($row->erledigt); - $obj->insertamum=$row->insertamum; - $obj->insertvon=$row->insertvon; - $obj->updateamum=$row->updateamum; - $obj->updatevon=$row->updatevon; - - $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * - * Laedt die Notizen vom Bewerbungstool - * @param $person_id int - * @return boolean - */ - public function getBewerbungstoolNotizen($person_id) - { - $qry = 'SELECT - * - FROM - public.tbl_notiz - LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) - WHERE person_id = ' . $this->db_add_param($person_id, FHC_INTEGER) . - ' AND insertvon = ' . $this->db_add_param('Bewerbungstool') . - ' ORDER BY notiz_id'; - - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - $obj = new notiz(); - - $obj->notiz_id=$row->notiz_id; - $obj->titel=$row->titel; - $obj->text=$row->text; - $obj->verfasser_uid=$row->verfasser_uid; - $obj->bearbeiter_uid=$row->bearbeiter_uid; - $obj->start=$row->start; - $obj->ende=$row->ende; - $obj->erledigt=$this->db_parse_bool($row->erledigt); - $obj->insertamum=$row->insertamum; - $obj->insertvon=$row->insertvon; - $obj->updateamum=$row->updateamum; - $obj->updatevon=$row->updatevon; - - $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - - * - - * Laedt die Notizen - * @param $erledigt - * @param $projekt_kurzbz - * @param $projektphase_id - * @param $projekttask_id - * @param $uid - * @param $person_id - * @param $prestudent_id - * @param $bestellung_id - * @param $user - * @param $lehreinheit_id - * @param $anrechnung_id - * @return boolean - */ - public function getAnzahlNotizen($erledigt=null, $projekt_kurzbz=null, $projektphase_id=null, $projekttask_id=null, $uid=null, $person_id=null, $prestudent_id=null, $bestellung_id=null, $user=null, $lehreinheit_id=null, $anrechnung_id=null) - { - $qry = "SELECT - count(*) as anzahl - FROM - public.tbl_notiz - LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) - WHERE 1=1"; - - if(!is_null($erledigt)) - { - if($erledigt) - $qry.=" AND erledigt=true"; - else - $qry.=" AND erledigt=false"; - } - if($projekt_kurzbz!='') - $qry.=" AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); - if($projektphase_id!='') - $qry.=" AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); - if($projekttask_id!='') - $qry.=" AND projekttask_id=".$this->db_add_param($projekttask_id, FHC_INTEGER); - if($uid!='') - $qry.=" AND uid=".$this->db_add_param($uid); - if($person_id!='') - $qry.=" AND person_id=".$this->db_add_param($person_id, FHC_INTEGER); - if($prestudent_id!='') - $qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); - if($bestellung_id!='') - $qry.=" AND bestellung_id=".$this->db_add_param($bestellung_id, FHC_INTEGER); - if($user!='') - $qry.=" AND (verfasser_uid=".$this->db_add_param($user)." OR bearbeiter_uid=".$this->db_add_param($user).")"; - if($lehreinheit_id!='') - $qry.=" AND lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); - if($anrechnung_id!='') - $qry.=" AND anrechnung_id=".$this->db_add_param($anrechnung_id, FHC_INTEGER); - - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - return $row->anzahl; - else - { - $this->errormsg='Fehler beim Laden der Daten'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } -} + and + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(dirname(__FILE__).'/dms.class.php'); + +class notiz extends basis_db +{ + public $new; + public $result=array(); + public $dokumente=array(); + + //Tabellenspalten + public $notiz_id; + public $titel; + public $text; + public $verfasser_uid; + public $bearbeiter_uid; + public $start; + public $ende; + public $erledigt; + public $insertamum; + public $insertvon; + public $updateamum; + public $updatevon; + + public $projekt_kurzbz; + public $projektphase_id; + public $projekttask_id; + public $uid; + public $person_id; + public $prestudent_id; + public $bestellung_id; + public $lehreinheit_id; + public $anrechnung_id; + + /** + * Konstruktor + * @param $notiz_id + */ + public function __construct($notiz_id = null) + { + parent::__construct(); + + if($notiz_id != null) + $this->load($notiz_id); + } + + /** + * Laedt eine Notiz + * @param $notiz_id + * @return true wenn ok, false im Fehlerfall + */ + public function load($notiz_id) + { + if(!is_numeric($notiz_id)) + { + $this->errormsg = 'NotizID ist ungueltig'; + return false; + } + + $qry = "SELECT * FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->notiz_id=$row->notiz_id; + $this->titel=$row->titel; + $this->text=$row->text; + $this->verfasser_uid=$row->verfasser_uid; + $this->bearbeiter_uid=$row->bearbeiter_uid; + $this->start=$row->start; + $this->ende=$row->ende; + $this->erledigt=$this->db_parse_bool($row->erledigt); + $this->insertamum=$row->insertamum; + $this->insertvon=$row->insertvon; + $this->updateamum=$row->updateamum; + $this->updatevon=$row->updatevon; + $this->getDokumente($row->notiz_id); + + return true; + } + else + { + $this->errormsg = 'Datensatz wurde nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Löscht eine Notiz + * @param $notiz_id + * @return true wenn ok, false im Fehlerfall + */ + public function delete($notiz_id) + { + if(!is_numeric($notiz_id)) + { + $this->errormsg = 'NotizID ist ungueltig'; + return false; + } + + // Dokumente der Notiz löschen + $this->getDokumente($notiz_id); + if(!empty($this->dokumente)) + { + $dms = new dms(); + + foreach($this->dokumente as $dms_id) + { + $dms->deleteDms($dms_id); + } + } + + $qry = "Delete FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler beim Loeschen der Daten'; + return false; + } + return true; + } + + /** + * Prueft die Daten vor dem Speichern + * auf Gueltigkeit + */ + public function validate() + { + return true; + } + + /** + * 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 $notiz_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + public function save($new=null) + { + if($new==null) + $new=$this->new; + + if(!$this->validate()) + return false; + + if($new) + { + //Neuen Datensatz einfuegen + $qry='BEGIN;INSERT INTO public.tbl_notiz (titel, text, verfasser_uid, + bearbeiter_uid, start, ende, erledigt, insertamum, insertvon, + updateamum, updatevon) VALUES('. + $this->db_add_param($this->titel).', '. + $this->db_add_param($this->text).', '. + $this->db_add_param($this->verfasser_uid).','. + $this->db_add_param($this->bearbeiter_uid).','. + $this->db_add_param($this->start).','. + $this->db_add_param($this->ende).','. + $this->db_add_param($this->erledigt,FHC_BOOLEAN).','. + $this->db_add_param($this->insertamum).','. + $this->db_add_param($this->insertvon).','. + $this->db_add_param($this->updateamum).','. + $this->db_add_param($this->updatevon).');'; + } + else + { + $qry='UPDATE public.tbl_notiz SET '. + 'titel='.$this->db_add_param($this->titel).', '. + 'text='.$this->db_add_param($this->text).', '. + 'verfasser_uid='.$this->db_add_param($this->verfasser_uid).', '. + 'bearbeiter_uid='.$this->db_add_param($this->bearbeiter_uid).', '. + 'start='.$this->db_add_param($this->start).', '. + 'ende='.$this->db_add_param($this->ende).', '. + 'erledigt='.$this->db_add_param($this->erledigt,FHC_BOOLEAN).', '. + 'updateamum='.$this->db_add_param($this->updateamum).', '. + 'updatevon='.$this->db_add_param($this->updatevon).' '. + 'WHERE notiz_id='.$this->db_add_param($this->notiz_id,FHC_INTEGER).';'; + } + + if($this->db_query($qry)) + { + if($new) + { + $qry="SELECT currval('seq_notiz_notiz_id') as id;"; + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->notiz_id = $row->id; + $this->db_query('COMMIT;'); + return true; + } + else + { + $this->errormsg = 'Fehler beim Lesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Lesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + } + + /** + * Speichert die Zuordnung einer Notiz + * + */ + public function saveZuordnung() + { + $qry = "INSERT INTO public.tbl_notizzuordnung(notiz_id, projekt_kurzbz, projektphase_id, projekttask_id, + uid, person_id, prestudent_id, bestellung_id, lehreinheit_id, anrechnung_id) VALUES(". + $this->db_add_param($this->notiz_id, FHC_INTEGER).','. + $this->db_add_param($this->projekt_kurzbz).','. + $this->db_add_param($this->projektphase_id, FHC_INTEGER).','. + $this->db_add_param($this->projekttask_id, FHC_INTEGER).','. + $this->db_add_param($this->uid).','. + $this->db_add_param($this->person_id, FHC_INTEGER).','. + $this->db_add_param($this->prestudent_id, FHC_INTEGER).','. + $this->db_add_param($this->bestellung_id, FHC_INTEGER).','. + $this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','. + $this->db_add_param($this->anrechnung_id, FHC_INTEGER).');'; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Speichert ein Dokument zur Notiz + * @param int $dms_id + * @return boolean + */ + public function saveDokument($dms_id) + { + $qry = "INSERT INTO public.tbl_notiz_dokument(notiz_id, dms_id) VALUES(". + $this->db_add_param($this->notiz_id, FHC_INTEGER).','. + $this->db_add_param($dms_id, FHC_INTEGER).');'; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * + * Laedt die Notizen + * @param $erledigt + * @param $projekt_kurzbz + * @param $projektphase_id + * @param $projekttask_id + * @param $uid + * @param $person_id + * @param $prestudent_id + * @param $bestellung_id + * @param $user + * @param $lehreinheit_id + * @param $anrechnung_id + * @return boolean + */ + public function getNotiz($erledigt=null, $projekt_kurzbz=null, $projektphase_id=null, $projekttask_id=null, $uid=null, $person_id=null, $prestudent_id=null, $bestellung_id=null, $user=null, $lehreinheit_id=null, $stundenplandev_id=null, $anrechnung_id=null) + { + $qry = "SELECT + * + FROM + public.tbl_notiz + LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) + WHERE 1=1"; + + if(!is_null($erledigt)) + { + if($erledigt) + $qry.=" AND erledigt=true"; + else + $qry.=" AND erledigt=false"; + } + if($projekt_kurzbz!='') + $qry.=" AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); + if($projektphase_id!='') + $qry.=" AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); + if($projekttask_id!='') + $qry.=" AND projekttask_id=".$this->db_add_param($projekttask_id, FHC_INTEGER); + if($uid!='') + $qry.=" AND uid=".$this->db_add_param($uid); + if($person_id!='') + $qry.=" AND person_id=".$this->db_add_param($person_id, FHC_INTEGER); + if($prestudent_id!='') + $qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); + if($bestellung_id!='') + $qry.=" AND bestellung_id=".$this->db_add_param($bestellung_id, FHC_INTEGER); + if($user!='') + $qry.=" AND (verfasser_uid=".$this->db_add_param($user)." OR bearbeiter_uid=".$this->db_add_param($user).")"; + if($lehreinheit_id!='') + $qry.=" AND lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); + if($anrechnung_id!='') + $qry.=" AND anrechnung_id=".$this->db_add_param($anrechnung_id, FHC_INTEGER); + + $qry.=' ORDER BY start, ende, titel'; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new notiz(); + + $obj->notiz_id=$row->notiz_id; + $obj->titel=$row->titel; + $obj->text=$row->text; + $obj->verfasser_uid=$row->verfasser_uid; + $obj->bearbeiter_uid=$row->bearbeiter_uid; + $obj->start=$row->start; + $obj->ende=$row->ende; + $obj->erledigt=$this->db_parse_bool($row->erledigt); + $obj->insertamum=$row->insertamum; + $obj->insertvon=$row->insertvon; + $obj->updateamum=$row->updateamum; + $obj->updatevon=$row->updatevon; + $obj->getDokumente($row->notiz_id); + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * + * Laedt die Notizen vom Bewerbungstool + * @param $person_id int + * @return boolean + */ + public function getBewerbungstoolNotizen($person_id) + { + $qry = 'SELECT + * + FROM + public.tbl_notiz + LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) + WHERE person_id = ' . $this->db_add_param($person_id, FHC_INTEGER) . + ' AND insertvon = ' . $this->db_add_param('Bewerbungstool') . + ' ORDER BY notiz_id'; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new notiz(); + + $obj->notiz_id=$row->notiz_id; + $obj->titel=$row->titel; + $obj->text=$row->text; + $obj->verfasser_uid=$row->verfasser_uid; + $obj->bearbeiter_uid=$row->bearbeiter_uid; + $obj->start=$row->start; + $obj->ende=$row->ende; + $obj->erledigt=$this->db_parse_bool($row->erledigt); + $obj->insertamum=$row->insertamum; + $obj->insertvon=$row->insertvon; + $obj->updateamum=$row->updateamum; + $obj->updatevon=$row->updatevon; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + + * + + * Laedt die Notizen + * @param $erledigt + * @param $projekt_kurzbz + * @param $projektphase_id + * @param $projekttask_id + * @param $uid + * @param $person_id + * @param $prestudent_id + * @param $bestellung_id + * @param $user + * @param $lehreinheit_id + * @param $anrechnung_id + * @return boolean + */ + public function getAnzahlNotizen($erledigt=null, $projekt_kurzbz=null, $projektphase_id=null, $projekttask_id=null, $uid=null, $person_id=null, $prestudent_id=null, $bestellung_id=null, $user=null, $lehreinheit_id=null, $anrechnung_id=null) + { + $qry = "SELECT + count(*) as anzahl + FROM + public.tbl_notiz + LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) + WHERE 1=1"; + + if(!is_null($erledigt)) + { + if($erledigt) + $qry.=" AND erledigt=true"; + else + $qry.=" AND erledigt=false"; + } + if($projekt_kurzbz!='') + $qry.=" AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); + if($projektphase_id!='') + $qry.=" AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); + if($projekttask_id!='') + $qry.=" AND projekttask_id=".$this->db_add_param($projekttask_id, FHC_INTEGER); + if($uid!='') + $qry.=" AND uid=".$this->db_add_param($uid); + if($person_id!='') + $qry.=" AND person_id=".$this->db_add_param($person_id, FHC_INTEGER); + if($prestudent_id!='') + $qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); + if($bestellung_id!='') + $qry.=" AND bestellung_id=".$this->db_add_param($bestellung_id, FHC_INTEGER); + if($user!='') + $qry.=" AND (verfasser_uid=".$this->db_add_param($user)." OR bearbeiter_uid=".$this->db_add_param($user).")"; + if($lehreinheit_id!='') + $qry.=" AND lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); + if($anrechnung_id!='') + $qry.=" AND anrechnung_id=".$this->db_add_param($anrechnung_id, FHC_INTEGER); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + return $row->anzahl; + else + { + $this->errormsg='Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt die Dokumente der Notiz + * @return boolean + */ + public function getDokumente($notiz_id) + { + $qry = "SELECT dms_id FROM public.tbl_notiz_dokument WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $this->dokumente[] = $row->dms_id; + } + + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } +} diff --git a/rdf/dms.rdf.php b/rdf/dms.rdf.php index 67a77a7b6..b15e87aa7 100755 --- a/rdf/dms.rdf.php +++ b/rdf/dms.rdf.php @@ -44,6 +44,11 @@ elseif(isset($_GET['filter'])) $filter = $_GET['filter']; $dms->search($filter); } +elseif(isset($_GET['notiz_id'])) +{ + $notiz_id = $_GET['notiz_id']; + $dms->getDokumenteNotiz($notiz_id); +} else die('projekt_kurzbz oder projektphase_id muss uebergeben werden'); diff --git a/rdf/notiz.rdf.php b/rdf/notiz.rdf.php index 32634de94..cdf890f31 100644 --- a/rdf/notiz.rdf.php +++ b/rdf/notiz.rdf.php @@ -93,6 +93,7 @@ foreach($notiz->result as $row) start.']]> ende.']]> erledigt?'true':'false').']]> + dokumente).']]> insertamum.']]> insertvon.']]> formatDatum($row->updateamum,'d.m.Y H:i:s').']]> diff --git a/soap/notiz.soap.php b/soap/notiz.soap.php index 7e02ad67e..b9c32be2f 100755 --- a/soap/notiz.soap.php +++ b/soap/notiz.soap.php @@ -30,10 +30,12 @@ require_once('../include/notiz.class.php'); require_once('../include/datum.class.php'); require_once('../include/functions.inc.php'); require_once('../include/benutzerberechtigung.class.php'); +require_once('../include/dms.class.php'); $SOAPServer = new SoapServer(APP_ROOT."/soap/notiz.wsdl.php?".microtime()); $SOAPServer->addFunction("saveNotiz"); $SOAPServer->addFunction("deleteNotiz"); +$SOAPServer->addFunction("deleteDokument"); $SOAPServer->addFunction("setErledigt"); $SOAPServer->handle(); @@ -133,6 +135,29 @@ function deleteNotiz($username, $passwort, $notiz_id) return new SoapFault("Server", $projekttask->errormsg); } +/** + * + * Löscht das Dokument mit der vom Webservice übergebenen DMS-ID + * @param $dms_id + */ +function deleteDokument($username, $passwort, $dms_id) +{ + if(!$user = check_user($username, $passwort)) + return new SoapFault("Server", "Invalid Credentials"); + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + + if(!$rechte->isBerechtigt('basis/notiz', null, 'suid')) + return new SoapFault("Server", "Sie haben keine Berechtigung zum Loeschen von Dokumenten"); + + $dms = new dms(); + if($dms->deleteDms($dms_id)) + return "OK"; + else + return new SoapFault("Server", $dms->errormsg); +} + /** * * Setzt den erledigt Status diff --git a/soap/notiz.wsdl.php b/soap/notiz.wsdl.php index 20ea77d0c..604da9c03 100755 --- a/soap/notiz.wsdl.php +++ b/soap/notiz.wsdl.php @@ -49,6 +49,14 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> + + + + + + + + @@ -66,6 +74,10 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> + + + + @@ -92,6 +104,15 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> + + " /> + + + + + + + " /> diff --git a/system/checksystem.php b/system/checksystem.php index 32617e700..5d3c1ec06 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -2826,6 +2826,30 @@ if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants } } +// Dokumentenupload für Notizen +if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_notiz_dokument LIMIT 1;")) +{ + $qry = " + + CREATE TABLE public.tbl_notiz_dokument + ( + notiz_id integer NOT NULL, + dms_id integer NOT NULL + ); + + ALTER TABLE public.tbl_notiz_dokument ADD CONSTRAINT fk_notiz_dokument_notiz FOREIGN KEY (notiz_id) REFERENCES public.tbl_notiz (notiz_id) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE public.tbl_notiz_dokument ADD CONSTRAINT fk_notiz_dokument_dms FOREIGN KEY (dms_id) REFERENCES campus.tbl_dms (dms_id) ON UPDATE CASCADE ON DELETE CASCADE; + + GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_notiz_dokument TO vilesci; + GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_notiz_dokument TO web; + "; + + if(!$db->db_query($qry)) + echo 'Dokumentenupload fuer Notizen: '.$db->db_last_error().'
'; + else + echo ' Tabellen fuer Dokumentenupload fuer Notizen hinzugefuegt!
'; +} + echo '


'; $tabellen=array( @@ -3003,7 +3027,8 @@ $tabellen=array( "public.tbl_mitarbeiter" => array("mitarbeiter_uid","personalnummer","telefonklappe","kurzbz","lektor","fixangestellt","bismelden","stundensatz","ausbildungcode","ort_kurzbz","standort_id","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","kleriker"), "public.tbl_notiz" => array("notiz_id","titel","text","verfasser_uid","bearbeiter_uid","start","ende","erledigt","insertamum","insertvon","updateamum","updatevon","ext_id"), "public.tbl_notizzuordnung" => array("notizzuordnung_id","notiz_id","projekt_kurzbz","projektphase_id","projekttask_id","uid","person_id","prestudent_id","bestellung_id","lehreinheit_id","ext_id","anrechnung_id"), - "public.tbl_ort" => array("ort_kurzbz","bezeichnung","planbezeichnung","max_person","lehre","reservieren","aktiv","lageplan","dislozierung","kosten","ausstattung","updateamum","updatevon","insertamum","insertvon","ext_id","stockwerk","standort_id","telefonklappe","content_id","m2","gebteil","oe_kurzbz"), + "public.tbl_notiz_dokument" => array("notiz_id","dms_id"), + "public.tbl_ort" => array("ort_kurzbz","bezeichnung","planbezeichnung","max_person","lehre","reservieren","aktiv","lageplan","dislozierung","kosten","ausstattung","updateamum","updatevon","insertamum","insertvon","ext_id","stockwerk","standort_id","telefonklappe","content_id","m2","gebteil","oe_kurzbz"), "public.tbl_ortraumtyp" => array("ort_kurzbz","hierarchie","raumtyp_kurzbz"), "public.tbl_organisationseinheit" => array("oe_kurzbz", "oe_parent_kurzbz", "bezeichnung","organisationseinheittyp_kurzbz", "aktiv","mailverteiler","freigabegrenze","kurzzeichen","lehre"), "public.tbl_organisationseinheittyp" => array("organisationseinheittyp_kurzbz", "bezeichnung", "beschreibung"), From ab98e6422ac4bd675b93dd673fe2cb4e3e894311 Mon Sep 17 00:00:00 2001 From: Nikolaus Krondraf Date: Thu, 9 Apr 2015 12:44:15 +0200 Subject: [PATCH 03/21] Extended class DMS so it can delete files in the filesystem --- cms/tinymce_dms.php | 32 ++++---------------------------- include/dms.class.php | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 30 deletions(-) diff --git a/cms/tinymce_dms.php b/cms/tinymce_dms.php index 2d940d92d..e21e69c02 100644 --- a/cms/tinymce_dms.php +++ b/cms/tinymce_dms.php @@ -347,40 +347,16 @@ if(isset($_REQUEST['delete'])) // DB Eintrag löschen if(!$dms->deleteVersion($dms_id, $version)) echo ''.$dms->errormsg.''; - else - { - // File im Filesystem löschen - if(unlink(DMS_PATH.$dms->filename)) - echo 'Erfolgreich gelöscht!'; - else - echo 'Fehler beim löschen aus dem Filesystem aufgetreten!'; - } - }else + } + else { // lösche gesamten Eintrag + $dms = new dms(); $dms_id = $_REQUEST['dms_id']; - $dms = new dms(); - $error = false; - - $dms->getAllVersions($dms_id); - - // DB Einträge löschen + // DB Einträge und Dokumente löschen if(!$dms->deleteDms($dms_id)) echo ''.$dms->errormsg.''; - else - { - // Alle Versionen der Datei vom Filesystem löschen - foreach($dms->result as $obj) - { - if(is_file(DMS_PATH.$obj->filename) && !unlink(DMS_PATH.$obj->filename)) - $error = true; - } - if($error) - echo 'Fehler beim löschen aus dem Filesystem aufgetreten!'; - else - echo 'Erfolgreich gelöscht!'; - } } } diff --git a/include/dms.class.php b/include/dms.class.php index 1e04a9570..08f28c997 100644 --- a/include/dms.class.php +++ b/include/dms.class.php @@ -220,6 +220,9 @@ class dms extends basis_db */ public function deleteVersion($dms_id, $version) { + $dms = new dms(); + $dms->load($dms_id, $version); + $qry ="DELETE FROM campus.tbl_dms_version WHERE dms_id = ".$this->db_add_param($dms_id, FHC_INTEGER)." and version =".$this->db_add_param($version, FHC_INTEGER).';'; if($this->db_query($qry)) @@ -227,13 +230,20 @@ class dms extends basis_db $qry_anzahl ="SELECT 1 FROM campus.tbl_dms_version WHERE dms_id =".$this->db_add_param($dms_id, FHC_INTEGER).';'; if($result = $this->db_query($qry_anzahl)) { - // Wenn letzte Version gelöscht wurde -> lösche gesamten Eintrag + // File der Version im Filesystem löschen + if(is_file(DMS_PATH.$dms->filename) && !unlink(DMS_PATH.$dms->filename)) + { + $this->errormsg = "Fehler beim Löschen des Dokuments aufgetreten"; + return false; + } + + // Wenn letzte Version gelöscht wurde -> lösche gesamten Eintrag if($this->db_num_rows($result) == 0 ) { if(!$this->deleteDms($dms_id)) { $this->errormsg = "Fehler beim Löschen aufgetreten"; - return false; + return false; } else return true; From ad6cebfa941837443ccdd49e0099e52030823ce4 Mon Sep 17 00:00:00 2001 From: Stefan Puraner Date: Thu, 9 Apr 2015 13:00:59 +0200 Subject: [PATCH 04/21] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 94761687c9b9a75c74ec7311bfa9023b651bd0fd Author: Stefan Puraner Date: Thu Apr 9 12:56:25 2015 +0200 Prüfungsanmelung: Studenten können durch Lektor hinzugefügt werden; Es kann eine Liste aller Anmeldungen erstellt und ausgedruckt werden. Desing Änderungen commit 27bb213c8c70ec81916cf4a3b3dabf3e325c1dad Author: Stefan Puraner Date: Thu Apr 9 10:57:57 2015 +0200 Lageplan kann im Infoterminal ausgeblendet werden commit 471a39f816c4951b478b95f035dca85124fe5642 Author: Stefan Puraner Date: Thu Apr 9 10:39:27 2015 +0200 Drucken des Studienblattes im CIS commit 58c283a389c0b18ca5186e6fd012afa0cdc84103 Author: Stefan Puraner Date: Wed Mar 25 16:15:59 2015 +0100 Studenten können durch Lektor/Sekretariat manuell zu Prüfungen hinzugefügt werden. commit fc9ae291c5e13ce4cd7a65baf43242ba5124616f Author: Stefan Puraner Date: Tue Mar 24 08:55:55 2015 +0100 Änderungen/Löschen von Noten werden im Undo-Log protokolliert und können rückgängig gemacht werden. --- cis/infoterminal/index.php | 5 +- cis/private/lehre/pruefung/pruefung.js | 44 +- .../pruefung/pruefungsanmeldung.json.php | 1933 +++++++++-------- .../lehre/pruefung/pruefungsanmeldung.php | 3 + .../pruefung/pruefungsanmeldungen_liste.php | 264 +++ .../pruefungsanmeldungen_verwalten.php | 575 ++--- .../lehre/pruefung/pruefungstermin.json.php | 1241 +++++------ cis/private/pdfExport.php | 270 ++- cis/private/profile/dokumente.php | 14 + config/cis.config-default.inc.php | 9 +- config/global.config-default.inc.php | 3 + content/student/studentDBDML.php | 51 +- include/lehrveranstaltung.class.php | 3 +- include/person.class.php | 19 + include/pruefungCis.class.php | 1436 ++++++------ include/studiensemester.class.php | 1579 +++++++------- include/zeugnisnote.class.php | 977 +++++---- locale/de-AT/tools.php | 147 +- 18 files changed, 4619 insertions(+), 3954 deletions(-) create mode 100644 cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php diff --git a/cis/infoterminal/index.php b/cis/infoterminal/index.php index 9dbd0a09a..3e7f7ed2d 100644 --- a/cis/infoterminal/index.php +++ b/cis/infoterminal/index.php @@ -533,8 +533,10 @@ $refreshtime = ($sdtools?99999:(isset($_SESSION[constSESSIONNAME]["uid"]) && !em else { // Lageplan + if(defined('CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN') && CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN) + { echo ' -
@@ -543,6 +545,7 @@ $refreshtime = ($sdtools?99999:(isset($_SESSION[constSESSIONNAME]["uid"]) && !em
 
+ + + + + + + + + + + uid); + $prfTermin = new pruefungstermin($anmeldung->pruefungstermin_id); + + if($einzeln) + { + $date = $datum->formatDatum($prfTermin->von, "Y-m-d H:i:s"); + $date = strtotime($date); + $date = $date+(60*$pruefungsintervall*($count)); + $date = $datum->formatDatum($prfTermin->von,"d.m.Y").' - '.date("h:i",$date); + $count++; + } + else + { + $date = $datum->formatDatum($prfTermin->von,"d.m.Y - H:i"); + } + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + ?> + + +
#VornameNachnameMatrikelnummerDatum
'.$anmeldung->reihung.''.$student->vorname.''.$student->nachname.''.$student->matrikelnr.''.$date.'
+ + + + \ No newline at end of file diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php index 47e6273d8..3995a2c66 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php @@ -1,269 +1,306 @@ - - - */ - -require_once('../../../../config/cis.config.inc.php'); -require_once('../../../../include/functions.inc.php'); -require_once('../../../../include/benutzerberechtigung.class.php'); -require_once('../../../../include/pruefungCis.class.php'); -require_once('../../../../include/studiensemester.class.php'); - -$uid = get_uid(); -$db = new basis_db(); -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($uid); - -$studiensemester = new studiensemester(); -$pruefung = new pruefungCis(); -$pruefung->getPruefungByMitarbeiter($uid, $studiensemester->getaktorNext()); -if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin')) - die('Sie haben keine Berechtigung für diese Seite'); - -?> - - - - Prüfungsanmeldung Verwaltung - - - - - - - - - - - - - -

Anmeldungen Verwalten

-
-
-

Studiengänge

-
    - -
-
-
-
-
-

Prüfungen

-
    - -
-
-
-
-
-

Anmeldungen

-
- -
-
- -
-
- -
-
- -
- -
-
- -
-
- -
-
-
-
- -
-
- - + + + */ + +require_once('../../../../config/cis.config.inc.php'); +require_once('../../../../include/functions.inc.php'); +require_once('../../../../include/benutzerberechtigung.class.php'); +require_once('../../../../include/pruefungCis.class.php'); +require_once('../../../../include/studiensemester.class.php'); + +$uid = get_uid(); +$db = new basis_db(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +$studiensemester = new studiensemester(); +$pruefung = new pruefungCis(); +$pruefung->getPruefungByMitarbeiter($uid, $studiensemester->getaktorNext()); +if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin')) + die('Sie haben keine Berechtigung für diese Seite'); + +?> + + + + Prüfungsanmeldung Verwaltung + + + + + + + + + + + + + +

Anmeldungen Verwalten

+
+
+
+

Studiengänge

+
+ +
+
+
+

Studiensemester

+ '; + $aktuellesSemester = $studiensemester->getaktorNext(); + $studiensemester->getAll(); + foreach($studiensemester->studiensemester as $sem) + { + /*@var $sem studiensemester */ + if($aktuellesSemester == $sem->studiensemester_kurzbz) + { + echo ''; + } + else + { + echo ''; + } + } + echo '

'; + ?> +
+
+
+
+
+

Prüfungen

+
    + +
+
+
+
+
+

Anmeldungen

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+
+ +
+
+ +
+
+
+
+ +
+
+ + diff --git a/cis/private/lehre/pruefung/pruefungstermin.json.php b/cis/private/lehre/pruefung/pruefungstermin.json.php index 1b8c94077..f8536061f 100644 --- a/cis/private/lehre/pruefung/pruefungstermin.json.php +++ b/cis/private/lehre/pruefung/pruefungstermin.json.php @@ -1,621 +1,622 @@ -getBerechtigungen($uid); - -$method = isset($_REQUEST['method'])?$_REQUEST['method']:''; - -switch($method) -{ - case 'loadPruefungstypen': - $data = loadPruefungstypen("false"); - break; - case 'loadStudiensemester': - $studiensemester = new studiensemester(); - $aktStudiensemester = $studiensemester->getaktorNext(); - $data = loadStudiensemester($aktStudiensemester); - break; - case 'getPruefungsfensterByStudiensemester': - $studiensemester = new studiensemester(); - $aktStudiensemester = $studiensemester->getaktorNext(); - $studiensemester_kurzbz = isset($_REQUEST["studiensemester_kurzbz"]) ? $_REQUEST["studiensemester_kurzbz"] : $aktStudiensemester; - $data = getPruefungsfensterByStudiensemester($studiensemester_kurzbz, $aktStudiensemester); - break; - case 'savePruefungstermin': - $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; - $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; - $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; - $titel = isset($_POST["titel"])?$_POST["titel"]:null; - $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; - $methode = isset($_POST["methode"])?$_POST["methode"]:null; - $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; - $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; - $termine = isset($_POST["termine"])?$_POST["termine"]:null; - $pruefungsintervall = NULL; - if(isset($_REQUEST["pruefungsintervall"]) && ($_REQUEST["pruefungsintervall"] !== "false")) - { - $pruefungsintervall = $_REQUEST["pruefungsintervall"]; - } - if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) - { - $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; - } - else - { - $mitarbeiter_uid = $uid; - } - $data = savePruefungstermin($mitarbeiter_uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall); - break; - case 'getLehrveranstaltungenByMitarbeiter': - $mitarbeiter_uid = $_POST["mitarbeiter_uid"]; - $studiensemester_kurzbz = $_POST["studiensemester_kurzbz"]; - $data = getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz); - break; - case 'updatePruefungstermin': - $pruefung_id = isset($_POST["pruefung_id"])?$_POST["pruefung_id"]:null; - $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; - $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; - $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; - $titel = isset($_POST["titel"])?$_POST["titel"]:null; - $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; - $methode = isset($_POST["methode"])?$_POST["methode"]:null; - $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; - $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; - $termine = isset($_POST["termine"])?$_POST["termine"]:null; - $termineNeu = isset($_POST["termineNeu"])?$_POST["termineNeu"]:null; - $pruefungsintervall = NULL; - if((isset($_REQUEST["pruefungsintervall"]) && $_REQUEST["pruefungsintervall"] !== false)) - { - $pruefungsintervall = $_REQUEST["pruefungsintervall"]; - } - if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) - { - $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; - } - else - { - $mitarbeiter_uid = $uid; - } - $data = updatePruefungstermin($mitarbeiter_uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall); - break; - case 'deleteLehrveranstaltungFromPruefung': - $lvId = $_POST["lehrveranstaltung_id"]; - $pruefung_id = $_POST["pruefung_id"]; - $data = deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id); - break; - case 'stornoPruefung': - $pruefung_id = $_REQUEST["pruefung_id"]; - $data = stornoPruefung($pruefung_id); - break; - case 'deleteTermin': - $pruefung_id = $_REQUEST["pruefung_id"]; - $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; - $data = deleteTermin($pruefung_id, $pruefungstermin_id); - break; - case 'getAllPruefungen': - if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) - { - $data = getAllPruefungen($_REQUEST["uid"]); - } - else - { - $data = getAllPruefungen($uid); - } - break; - default: - break; -} -echo json_encode($data); - - -/** - * Lädt alle Prüfungstypen aus der Datenbank - * @param boolean $abschluss Gibt an ob Prüfungstypen einer Abschlussprüfunge geladen werden sollen oder nicht - * @return Array - */ -function loadPruefungstypen($abschluss) -{ - $pruefungstermin = new pruefungstermin(); - $pruefungstypen = $pruefungstermin->getAllPruefungstypen($abschluss); - if(!empty($pruefungstypen)) - { - $data['result']=$pruefungstypen; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefungstermin->errormsg; - } - return $data; -} - -/** - * Lädt alle Studiensemester aus der Datenbank - * @param String $aktStudiensemester das Aktuelle Studiensemester - * @return Array - */ -function loadStudiensemester($aktStudiensemester = null) -{ - $studiensemester = new studiensemester(); - if($studiensemester->getAll()) - { - $data['result']=$studiensemester->studiensemester; - if(!is_null($aktStudiensemester)) - { - $data['aktSem']=$aktStudiensemester; - } - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$studiensemester->errormsg; - } - return $data; -} - -/** - * Lädt alle Prüfungsfenster eines Studiensemesters - * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @return Array - */ -function getPruefungsfensterByStudiensemester($studiensemester_kurzbz) -{ - $pruefungsfenster = new pruefungsfenster(); - if($pruefungsfenster->getByStudiensemester($studiensemester_kurzbz)) - { - $data['result']=$pruefungsfenster->result; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefungsfenster->errormsg; - } - return $data; -} - -/** - * Speichet einen Prüfungstermin - * @param int $uid UID des Lektors - * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @param int $pruefungsfenster_id ID des Prüfungsfensters - * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps - * @param String $titel Titel der Prüfung - * @param String $beschreibung Beschreibung zur Prüfung - * @param String $methode Methode der Prüfung - * @param boolen $einzeln TRUE, wenn Einzelprüfung - * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung - * @param Array $termine Termine zur Prüfung - * @return Array - */ -function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall) -{ - if($lehrveranstaltungen === null) - { - $data['error']='true'; - $data['errormsg']="Keine Lehrverantaltung angegeben."; - return $data; - } - $termineArray = array(); - foreach ($termine as $key => $t) { - $termin = new stdClass(); - $date = $t["datum"]; - $beginn = $t["beginn"]; - $ende = $t["ende"]; - $termin->min = $t["min"]; - $termin->max = $t["max"]; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); - $termin->sammelklausur = $t["sammelklausur"]; -// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) -// { - if(!(checkCollision($uid, $termin->beginn, $termin->ende))) - { - array_push($termineArray, $termin); - } - else - { - $data['error']='true'; - $data['errormsg']="Kollision mit anderem Termin."; - return $data; - } -// } -// else -// { -// $data['error']='true'; -// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; -// return $data; -// } - } - - $pruefung = new pruefungCis(); - $pruefung->termine = $termineArray; - $pruefung->mitarbeiter_uid = $uid; - $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; - $pruefung->pruefungsfenster_id = $pruefungsfenster_id; - $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; - $pruefung->titel = $titel; - $pruefung->beschreibung = $beschreibung; - $pruefung->methode = $methode; - $pruefung->einzeln = $einzeln; - $pruefung->insertvon = get_uid(); - $pruefung->pruefungsintervall = $pruefungsintervall; - - foreach ($lehrveranstaltungen as $lv) { - if($lv != "null") - { - array_push($pruefung->lehrveranstaltungen, $lv); - } - } - - if($pruefung->save(true)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - - //TODO Mail-Inhalt fehlt -// foreach ($pruefung->lehrveranstaltungen as $lvId) -// { -// $lv = new lehrveranstaltung($lvId); -// $text = "Ein Prüfungstermin zu Ihrer Lehrveranstaltung ".$lv->bezeichnung." wurde angelegt.\n" -// . "Die Prüfung kann am " -// .date('d.m.Y', strtotime($pruefung->termine[0]->beginn))." " -// . "in der Zeit von " -// .date('H:i', strtotime($pruefung->termine[0]->beginn))." bis " -// .date('H:i', strtotime($pruefung->termine[0]->ende))." abgelegt werden."; -// //$text = "test"; -// $empfaenger = $lv->getStudentsOfLv($lvId, $pruefung->studiensemester_kurzbz); -// $mailto = ""; -// foreach ($empfaenger as $e) { -// $mailto .= $e.'@'.DOMAIN.', '; -// } -// -// $email = new mail($mailto, "fhcomplete", "Prüfungstermin für ".$lv->bezeichnung, $text); -// $email->setReplyTo($uid."@".DOMAIN); -//// var_dump($email); -// $email->send(); -// } - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Lädt alle Lehrveranstaltungen eines Mitarbeiters - * @param int $mitarbeiter_uid UID des Mitarbeiters - * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @return Array - */ -function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz) -{ - $lehrveranstaltung = new lehrveranstaltung(); - if($lehrveranstaltung->getLVByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz)) - { - $stg = new studiengang(); - foreach($lehrveranstaltung->lehrveranstaltungen as $key=>$lv) - { - $stg->load($lv->studiengang_kz); - $lv->studiengang_bezeichnung = $stg->kurzbzlang; - } - $data['result']=$lehrveranstaltung->lehrveranstaltungen; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$lehrveranstaltung->errormsg; - } - return $data; -} - -/** - * Speichet einen Prüfungstermin - * @param int $uid UID des Lektors - * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @param int $pruefungsfenster_id ID des Prüfungsfensters - * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps - * @param String $titel Titel der Prüfung - * @param String $beschreibung Beschreibung zur Prüfung - * @param String $methode Methode der Prüfung - * @param boolen $einzeln TRUE, wenn Einzelprüfung - * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung - * @param Array $termine Termine zur Prüfung (bestehende) - * @param type $termineNeu Neu hinzugefügte Termine - * @return Array - */ -function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall) -{ - $pruefungsfenster = new pruefungsfenster(); - $pruefungsfenster->load($pruefungsfenster_id); - $datum = new datum(); - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - - if($termineNeu !== null) - { - $termineNeuArray = array(); - foreach ($termineNeu as $key => $t) { - $termin = new stdClass(); - $datum = new datum(); - $date = $t["datum"]; - $beginn = $t["beginn"]; - $ende = $t["ende"]; - $termin->min = $t["min"]; - $termin->max = $t["max"]; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); - $termin->sammelklausur = $t["sammelklausur"]; -// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) -// { - if(!(checkCollision($uid, $termin->beginn, $termin->ende))) - { - array_push($termineNeuArray, $termin); - } - else - { - $data['error']='true'; - $data['errormsg']="Kollision mit anderem Termin."; - return $data; - } -// } -// else -// { -// $data['error']='true'; -// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; -// return $data; -// } - } - foreach ($termineNeuArray as $t) - { - $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min, $t->sammelklausur); - } - } - - if($termine !== null) - { - $termineArray = array(); - foreach ($termine as $key => $t) { - $termin = new stdClass(); - $datum = new datum(); - $date = $t["datum"]; - $beginn = $t["beginn"]; - $ende = $t["ende"]; - $termin->pruefungstermin_id = $t["pruefungstermin_id"]; - $termin->min = $t["min"]; - $termin->max = ($t["max"] === "null") ? NULL : $t["max"]; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); -// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) -// { -// array_push($termineArray, $termin); -// } -// else -// { -// $data['error']='true'; -// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; -// return $data; -// } - } - foreach($termineArray as $key=>$t) - { - $termineArray[$key] = (object) $t; - } - $pruefung->termine = $termineArray; - } - - $pruefung->mitarbeiter_uid = $uid; - $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; - $pruefung->pruefungsfenster_id = $pruefungsfenster_id; - $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; - $pruefung->titel = $titel; - $pruefung->beschreibung = $beschreibung; - $pruefung->methode = $methode; - $pruefung->einzeln = $einzeln; - $pruefung->updatevon = get_uid(); - $pruefung->pruefungsintervall = $pruefungsintervall; - if($lehrveranstaltungen !== null) - { - foreach ($lehrveranstaltungen as $lv) - { - if($lv != "null") - { - array_push($pruefung->lehrveranstaltungen, $lv); - } - } - } - if($pruefung->save(false)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - - //TODO Mail-Inhalt fehlt - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Löscht Lehrveranstaltungen von einer Prüfung - * @param int $lvId ID der Lehrveranstaltung - * @param int $pruefung_id ID der Prüfung - * @return Array - */ -function deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id) -{ - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - if($pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Storniert eine Prüfung - * @param int $pruefung_id ID der Prüfung - * @return Array - */ -function stornoPruefung($pruefung_id) -{ - $pruefung = new pruefungCis(); - if($pruefung->pruefungStornieren($pruefung_id)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Löscht einen Termin einer Prüfung - * @param int $pruefung_id ID der Prüfung - * @param int $pruefungstermin_id ID des Termins - * @return Array - */ -function deleteTermin($pruefung_id, $pruefungstermin_id) -{ - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - if($pruefung->deleteTerminPruefung($pruefungstermin_id)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Lädt alle Prüfungen eines Mitarbeiters - * @param String $mitarbeiter_uid UID des Mitarbeiters - * @return Array - */ -function getAllPruefungen($mitarbeiter_uid) -{ - $pruefung = new pruefungCis(); - if($pruefung->getAllPruefungen($mitarbeiter_uid)) - { - foreach ($pruefung->result as $prf) - { - $prf->getLehrveranstaltungenByPruefung(); - foreach($prf->lehrveranstaltungen as $key=>$lv) - { - $temp = new lehrveranstaltung($lv->lehrveranstaltung_id); - $array = $temp->cleanResult(); - $prf->lehrveranstaltungen[$key] = $array[0]; - } - $prf->getTermineByPruefung(); - } - $data['result']=$pruefung->result; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Überprüft ob das angegebene Datum innerhalb eines Prüfungsfensters ist - * @param int $pruefungsfenster_id ID des Prüfungsfensters - * @param String $datum - * @return boolean - */ -function checkTerminPruefungsfenster($pruefungsfenster_id, $datum) -{ - $pruefungsfenster = new pruefungsfenster($pruefungsfenster_id); - $date = new datum(); - if($date->between($pruefungsfenster->start, $pruefungsfenster->ende, $datum)) - { - return true; - } - return false; -} - -/** - * Überprüft ob es eine Kollision zu anderen Prüfungen des Mitarbeiters gibt - * @param String $uid UID des Mitarbeiters - * @param String $beginn Beginn des Termins - * @param String $ende Ende des Termins - * @return boolean - */ -function checkCollision($uid, $beginn, $ende) -{ - $collision = false; - $pruefung = new pruefungCis(); - $pruefung->getAllPruefungen($uid); - $datum = new datum(); - foreach($pruefung->result as $prf) - { - $prf->getTermineByPruefung(); - foreach($prf->termine as $termin) - { - if(($datum->between($termin->von, $termin->bis, $beginn)) || ($datum->between($termin->von, $termin->bis, $ende))) - { - $collision = true; - } - } - } - if($collision) - { - return true; - } - return false; -} +getBerechtigungen($uid); + +$method = isset($_REQUEST['method'])?$_REQUEST['method']:''; + +switch($method) +{ + case 'loadPruefungstypen': + $data = loadPruefungstypen("false"); + break; + case 'loadStudiensemester': + $studiensemester = new studiensemester(); + $aktStudiensemester = $studiensemester->getaktorNext(); + $data = loadStudiensemester($aktStudiensemester); + break; + case 'getPruefungsfensterByStudiensemester': + $studiensemester = new studiensemester(); + $aktStudiensemester = $studiensemester->getaktorNext(); + $studiensemester_kurzbz = isset($_REQUEST["studiensemester_kurzbz"]) ? $_REQUEST["studiensemester_kurzbz"] : $aktStudiensemester; + $data = getPruefungsfensterByStudiensemester($studiensemester_kurzbz, $aktStudiensemester); + break; + case 'savePruefungstermin': + $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; + $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; + $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; + $titel = isset($_POST["titel"])?$_POST["titel"]:null; + $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; + $methode = isset($_POST["methode"])?$_POST["methode"]:null; + $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; + $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; + $termine = isset($_POST["termine"])?$_POST["termine"]:null; + $pruefungsintervall = NULL; + if(isset($_REQUEST["pruefungsintervall"]) && ($_REQUEST["pruefungsintervall"] !== "false")) + { + $pruefungsintervall = $_REQUEST["pruefungsintervall"]; + } + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) + { + $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; + } + else + { + $mitarbeiter_uid = $uid; + } + $data = savePruefungstermin($mitarbeiter_uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall); + break; + case 'getLehrveranstaltungenByMitarbeiter': + $mitarbeiter_uid = $_POST["mitarbeiter_uid"]; + $studiensemester_kurzbz = $_POST["studiensemester_kurzbz"]; + $data = getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz); + break; + case 'updatePruefungstermin': + $pruefung_id = isset($_POST["pruefung_id"])?$_POST["pruefung_id"]:null; + $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; + $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; + $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; + $titel = isset($_POST["titel"])?$_POST["titel"]:null; + $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; + $methode = isset($_POST["methode"])?$_POST["methode"]:null; + $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; + $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; + $termine = isset($_POST["termine"])?$_POST["termine"]:null; + $termineNeu = isset($_POST["termineNeu"])?$_POST["termineNeu"]:null; + $pruefungsintervall = NULL; + if((isset($_REQUEST["pruefungsintervall"]) && $_REQUEST["pruefungsintervall"] !== false)) + { + $pruefungsintervall = $_REQUEST["pruefungsintervall"]; + } + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) + { + $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; + } + else + { + $mitarbeiter_uid = $uid; + } + $data = updatePruefungstermin($mitarbeiter_uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall); + break; + case 'deleteLehrveranstaltungFromPruefung': + $lvId = $_POST["lehrveranstaltung_id"]; + $pruefung_id = $_POST["pruefung_id"]; + $data = deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id); + break; + case 'stornoPruefung': + $pruefung_id = $_REQUEST["pruefung_id"]; + $data = stornoPruefung($pruefung_id); + break; + case 'deleteTermin': + $pruefung_id = $_REQUEST["pruefung_id"]; + $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; + $data = deleteTermin($pruefung_id, $pruefungstermin_id); + break; + case 'getAllPruefungen': + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) + { + $data = getAllPruefungen($_REQUEST["uid"]); + } + else + { + $data = getAllPruefungen($uid); + } + break; + default: + break; +} +echo json_encode($data); + + +/** + * Lädt alle Prüfungstypen aus der Datenbank + * @param boolean $abschluss Gibt an ob Prüfungstypen einer Abschlussprüfunge geladen werden sollen oder nicht + * @return Array + */ +function loadPruefungstypen($abschluss) +{ + $pruefungstermin = new pruefungstermin(); + $pruefungstypen = $pruefungstermin->getAllPruefungstypen($abschluss); + if(!empty($pruefungstypen)) + { + $data['result']=$pruefungstypen; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungstermin->errormsg; + } + return $data; +} + +/** + * Lädt alle Studiensemester aus der Datenbank + * @param String $aktStudiensemester das Aktuelle Studiensemester + * @return Array + */ +function loadStudiensemester($aktStudiensemester = null) +{ + $studiensemester = new studiensemester(); + if($studiensemester->getAll()) + { + $data['result']=$studiensemester->studiensemester; + if(!is_null($aktStudiensemester)) + { + $data['aktSem']=$aktStudiensemester; + } + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$studiensemester->errormsg; + } + return $data; +} + +/** + * Lädt alle Prüfungsfenster eines Studiensemesters + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @return Array + */ +function getPruefungsfensterByStudiensemester($studiensemester_kurzbz) +{ + $pruefungsfenster = new pruefungsfenster(); + if($pruefungsfenster->getByStudiensemester($studiensemester_kurzbz)) + { + $data['result']=$pruefungsfenster->result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungsfenster->errormsg; + } + return $data; +} + +/** + * Speichet einen Prüfungstermin + * @param int $uid UID des Lektors + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @param int $pruefungsfenster_id ID des Prüfungsfensters + * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps + * @param String $titel Titel der Prüfung + * @param String $beschreibung Beschreibung zur Prüfung + * @param String $methode Methode der Prüfung + * @param boolen $einzeln TRUE, wenn Einzelprüfung + * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung + * @param Array $termine Termine zur Prüfung + * @return Array + */ +function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall) +{ + if($lehrveranstaltungen === null) + { + $data['error']='true'; + $data['errormsg']="Keine Lehrverantaltung angegeben."; + return $data; + } + $termineArray = array(); + foreach ($termine as $key => $t) { + $termin = new stdClass(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->min = $t["min"]; + $termin->max = $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + $termin->sammelklausur = $t["sammelklausur"]; + //Termin soll auch außerhalb eines Prüfungsfensters angelegt werden können +// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) +// { + if(!(checkCollision($uid, $termin->beginn, $termin->ende))) + { + array_push($termineArray, $termin); + } + else + { + $data['error']='true'; + $data['errormsg']="Kollision mit anderem Termin."; + return $data; + } +// } +// else +// { +// $data['error']='true'; +// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; +// return $data; +// } + } + + $pruefung = new pruefungCis(); + $pruefung->termine = $termineArray; + $pruefung->mitarbeiter_uid = $uid; + $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; + $pruefung->pruefungsfenster_id = $pruefungsfenster_id; + $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; + $pruefung->titel = $titel; + $pruefung->beschreibung = $beschreibung; + $pruefung->methode = $methode; + $pruefung->einzeln = $einzeln; + $pruefung->insertvon = get_uid(); + $pruefung->pruefungsintervall = $pruefungsintervall; + + foreach ($lehrveranstaltungen as $lv) { + if($lv != "null") + { + array_push($pruefung->lehrveranstaltungen, $lv); + } + } + + if($pruefung->save(true)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + + //TODO Mail-Inhalt fehlt +// foreach ($pruefung->lehrveranstaltungen as $lvId) +// { +// $lv = new lehrveranstaltung($lvId); +// $text = "Ein Prüfungstermin zu Ihrer Lehrveranstaltung ".$lv->bezeichnung." wurde angelegt.\n" +// . "Die Prüfung kann am " +// .date('d.m.Y', strtotime($pruefung->termine[0]->beginn))." " +// . "in der Zeit von " +// .date('H:i', strtotime($pruefung->termine[0]->beginn))." bis " +// .date('H:i', strtotime($pruefung->termine[0]->ende))." abgelegt werden."; +// //$text = "test"; +// $empfaenger = $lv->getStudentsOfLv($lvId, $pruefung->studiensemester_kurzbz); +// $mailto = ""; +// foreach ($empfaenger as $e) { +// $mailto .= $e.'@'.DOMAIN.', '; +// } +// +// $email = new mail($mailto, "fhcomplete", "Prüfungstermin für ".$lv->bezeichnung, $text); +// $email->setReplyTo($uid."@".DOMAIN); +//// var_dump($email); +// $email->send(); +// } + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt alle Lehrveranstaltungen eines Mitarbeiters + * @param int $mitarbeiter_uid UID des Mitarbeiters + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @return Array + */ +function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz) +{ + $lehrveranstaltung = new lehrveranstaltung(); + if($lehrveranstaltung->getLVByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz)) + { + $stg = new studiengang(); + foreach($lehrveranstaltung->lehrveranstaltungen as $key=>$lv) + { + $stg->load($lv->studiengang_kz); + $lv->studiengang_bezeichnung = $stg->kurzbzlang; + } + $data['result']=$lehrveranstaltung->lehrveranstaltungen; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$lehrveranstaltung->errormsg; + } + return $data; +} + +/** + * Speichet einen Prüfungstermin + * @param int $uid UID des Lektors + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @param int $pruefungsfenster_id ID des Prüfungsfensters + * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps + * @param String $titel Titel der Prüfung + * @param String $beschreibung Beschreibung zur Prüfung + * @param String $methode Methode der Prüfung + * @param boolen $einzeln TRUE, wenn Einzelprüfung + * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung + * @param Array $termine Termine zur Prüfung (bestehende) + * @param type $termineNeu Neu hinzugefügte Termine + * @return Array + */ +function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall) +{ + $pruefungsfenster = new pruefungsfenster(); + $pruefungsfenster->load($pruefungsfenster_id); + $datum = new datum(); + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + + if($termineNeu !== null) + { + $termineNeuArray = array(); + foreach ($termineNeu as $key => $t) { + $termin = new stdClass(); + $datum = new datum(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->min = $t["min"]; + $termin->max = $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + $termin->sammelklausur = $t["sammelklausur"]; +// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) +// { + if(!(checkCollision($uid, $termin->beginn, $termin->ende))) + { + array_push($termineNeuArray, $termin); + } + else + { + $data['error']='true'; + $data['errormsg']="Kollision mit anderem Termin."; + return $data; + } +// } +// else +// { +// $data['error']='true'; +// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; +// return $data; +// } + } + foreach ($termineNeuArray as $t) + { + $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min, $t->sammelklausur); + } + } + + if($termine !== null) + { + $termineArray = array(); + foreach ($termine as $key => $t) { + $termin = new stdClass(); + $datum = new datum(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->pruefungstermin_id = $t["pruefungstermin_id"]; + $termin->min = $t["min"]; + $termin->max = ($t["max"] === "null") ? NULL : $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); +// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) +// { +// array_push($termineArray, $termin); +// } +// else +// { +// $data['error']='true'; +// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; +// return $data; +// } + } + foreach($termineArray as $key=>$t) + { + $termineArray[$key] = (object) $t; + } + $pruefung->termine = $termineArray; + } + + $pruefung->mitarbeiter_uid = $uid; + $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; + $pruefung->pruefungsfenster_id = $pruefungsfenster_id; + $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; + $pruefung->titel = $titel; + $pruefung->beschreibung = $beschreibung; + $pruefung->methode = $methode; + $pruefung->einzeln = $einzeln; + $pruefung->updatevon = get_uid(); + $pruefung->pruefungsintervall = $pruefungsintervall; + if($lehrveranstaltungen !== null) + { + foreach ($lehrveranstaltungen as $lv) + { + if($lv != "null") + { + array_push($pruefung->lehrveranstaltungen, $lv); + } + } + } + if($pruefung->save(false)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + + //TODO Mail-Inhalt fehlt + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Löscht Lehrveranstaltungen von einer Prüfung + * @param int $lvId ID der Lehrveranstaltung + * @param int $pruefung_id ID der Prüfung + * @return Array + */ +function deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id) +{ + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + if($pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Storniert eine Prüfung + * @param int $pruefung_id ID der Prüfung + * @return Array + */ +function stornoPruefung($pruefung_id) +{ + $pruefung = new pruefungCis(); + if($pruefung->pruefungStornieren($pruefung_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Löscht einen Termin einer Prüfung + * @param int $pruefung_id ID der Prüfung + * @param int $pruefungstermin_id ID des Termins + * @return Array + */ +function deleteTermin($pruefung_id, $pruefungstermin_id) +{ + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + if($pruefung->deleteTerminPruefung($pruefungstermin_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt alle Prüfungen eines Mitarbeiters + * @param String $mitarbeiter_uid UID des Mitarbeiters + * @return Array + */ +function getAllPruefungen($mitarbeiter_uid) +{ + $pruefung = new pruefungCis(); + if($pruefung->getAllPruefungen($mitarbeiter_uid)) + { + foreach ($pruefung->result as $prf) + { + $prf->getLehrveranstaltungenByPruefung(); + foreach($prf->lehrveranstaltungen as $key=>$lv) + { + $temp = new lehrveranstaltung($lv->lehrveranstaltung_id); + $array = $temp->cleanResult(); + $prf->lehrveranstaltungen[$key] = $array[0]; + } + $prf->getTermineByPruefung(); + } + $data['result']=$pruefung->result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Überprüft ob das angegebene Datum innerhalb eines Prüfungsfensters ist + * @param int $pruefungsfenster_id ID des Prüfungsfensters + * @param String $datum + * @return boolean + */ +function checkTerminPruefungsfenster($pruefungsfenster_id, $datum) +{ + $pruefungsfenster = new pruefungsfenster($pruefungsfenster_id); + $date = new datum(); + if($date->between($pruefungsfenster->start, $pruefungsfenster->ende, $datum)) + { + return true; + } + return false; +} + +/** + * Überprüft ob es eine Kollision zu anderen Prüfungen des Mitarbeiters gibt + * @param String $uid UID des Mitarbeiters + * @param String $beginn Beginn des Termins + * @param String $ende Ende des Termins + * @return boolean + */ +function checkCollision($uid, $beginn, $ende) +{ + $collision = false; + $pruefung = new pruefungCis(); + $pruefung->getAllPruefungen($uid); + $datum = new datum(); + foreach($pruefung->result as $prf) + { + $prf->getTermineByPruefung(); + foreach($prf->termine as $termin) + { + if(($datum->between($termin->von, $termin->bis, $beginn)) || ($datum->between($termin->von, $termin->bis, $ende))) + { + $collision = true; + } + } + } + if($collision) + { + return true; + } + return false; +} ?> \ No newline at end of file diff --git a/cis/private/pdfExport.php b/cis/private/pdfExport.php index 646ff8d68..f80346eb0 100644 --- a/cis/private/pdfExport.php +++ b/cis/private/pdfExport.php @@ -33,6 +33,7 @@ require_once('../../include/akte.class.php'); require_once('../../include/konto.class.php'); require_once('../../include/benutzer.class.php'); require_once('../../include/vorlage.class.php'); +require_once('../../include/addon.class.php'); if (!$db = new basis_db()) die('Fehler beim Oeffnen der Datenbankverbindung'); @@ -89,31 +90,34 @@ if(isset($_GET['abschlusspruefung_id'])) $params.='&abschlusspruefung_id='.$_GET['abschlusspruefung_id']; if(isset($_GET['typ'])) $params.='&typ='.$_GET['typ']; - +if(isset($_GET['output'])) + $output=$_GET['output']; +else + $output='pdf'; $konto = new konto(); if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) { - if($xsl=='Inskription' && (!$konto->checkStudienbeitrag($user, $_GET["ss"]))) - die('Der Studienbeitrag wurde noch nicht bezahlt'); + if(($xsl=='Inskription' || $xsl == 'Studienblatt') && (!$konto->checkStudienbeitrag($user, $_GET["ss"]))) + die('Der Studienbeitrag wurde noch nicht bezahlt'); if(isset($_GET['buchungsnummern'])) { - //Beim Drucken von Buchungsbestaetigungen pruefen ob diese Buchungen auch zu diesem Benutzer gehoeren - $buchungsnr = explode(';',$_GET['buchungsnummern']); - $user_obj = new benutzer(); - $user_obj->load($user); - foreach($buchungsnr as $bnr) + //Beim Drucken von Buchungsbestaetigungen pruefen ob diese Buchungen auch zu diesem Benutzer gehoeren + $buchungsnr = explode(';',$_GET['buchungsnummern']); + $user_obj = new benutzer(); + $user_obj->load($user); + foreach($buchungsnr as $bnr) + { + if($bnr!='') { - if($bnr!='') - { - $konto->load($bnr); - if($konto->person_id!=$user_obj->person_id) - die('Sie haben keine Berechtigung fuer diese Buchung'); - if($konto->getDifferenz($bnr)!=0) - die('Diese Zahlung wurde noch nicht beglichen'); - } + $konto->load($bnr); + if($konto->person_id!=$user_obj->person_id) + die('Sie haben keine Berechtigung fuer diese Buchung'); + if($konto->getDifferenz($bnr)!=0) + die('Diese Zahlung wurde noch nicht beglichen'); } + } } $xml_url=XML_ROOT.$xml.$params; //echo $xml_url; @@ -134,49 +138,217 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) { if($xsl_stg_kz=='') $xsl_stg_kz='0'; - + $vorlage->getAktuelleVorlage($xsl_stg_kz, $xsl, $version); } - - // Load the XSL source - $xsl_doc = new DOMDocument; - - if(!$xsl_doc->loadXML($vorlage->text)) - die('unable to load xsl'); - - // Configure the transformer - $proc = new XSLTProcessor; - $proc->importStyleSheet($xsl_doc); // attach the xsl rules - - $buffer = $proc->transformToXml($xml_doc); - //in $buffer steht nun das xsl-fo file mit den daten - $buffer = ''.substr($buffer, strpos($buffer,"\n"),strlen($buffer)); - - //Pdf erstellen - $fo2pdf = new XslFo2Pdf(); - - //wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen - $nachname=''; + + if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument')) + { + switch($vorlage->mimetype) + { + case 'application/vnd.oasis.opendocument.text': + $endung = 'odt'; + break; + case 'application/vnd.oasis.opendocument.spreadsheet': + $endung = 'ods'; + break; + default: + $endung = 'pdf'; + } + + // Load the XSL source + $xsl_doc = new DOMDocument; + + if(!$xsl_doc->loadXML($vorlage->text)) + die('unable to load xsl'); + + // Configure the transformer + $proc = new XSLTProcessor; + $proc->importStyleSheet($xsl_doc); // attach the xsl rules + + $buffer = $proc->transformToXml($xml_doc); + //echo $buffer; + //exit; + $tempfolder = '/tmp/'.uniqid(); + mkdir($tempfolder); + chdir($tempfolder); + file_put_contents('content.xml', $buffer); + + // Wenn ein Style XSL uebergeben wurde wird ein zweites XML File erstellt mit den + // Styleanweisungen und ebenfalls zum Zip hinzugefuegt + if(isset($_GET['style_xsl'])) + { + $style_xsl=$_GET['style_xsl']; + $style_vorlage = new vorlage(); + $style_vorlage->getAktuelleVorlage($xsl_stg_kz, $style_xsl, $version); + $style_xsl_doc = new DOMDocument; + if(!$style_xsl_doc->loadXML($style_vorlage->text)) + die('unable to load xsl'); + + // Configure the transformer + $style_proc = new XSLTProcessor; + $style_proc->importStyleSheet($style_xsl_doc); // attach the xsl rules + + $stylebuffer = $style_proc->transformToXml($xml_doc); + + file_put_contents('styles.xml', $stylebuffer); + } + + $vorlage_found=false; + $addons = new addon(); + + foreach($addons->aktive_addons as $addon) + { + $zipfile = DOC_ROOT.'addons/'.$addon.'/system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung; + + if(file_exists($zipfile)) + { + $vorlage_found=true; + break; + } + } + if(!$vorlage_found) + $zipfile = DOC_ROOT.'system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung; + + + $tempname_zip = 'out.zip'; + if(copy($zipfile, $tempname_zip)) + { + exec("zip $tempname_zip content.xml"); + if(isset($_GET['style_xsl'])) + exec("zip $tempname_zip styles.xml"); + + clearstatcache(); + if($vorlage->bezeichnung!='') + $filename = $vorlage->bezeichnung; + else + $filename = $vorlage->vorlage_kurzbz; + if($output == 'pdf') + { + if($xsl == 'LV_Informationen') + { + $studiengang = new studiengang($_GET['stg_kz']); + $studiensemester = new studiensemester($_GET['ss']); + $tempPdfName = $vorlage->vorlage_kurzbz.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf'; + $filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf'; + } + elseif($xsl == "Honorarvertrag") + { + $tempPdfName = $vorlage->vorlage_kurzbz.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf'; + $filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf'; + } + elseif($xsl == "Studienordnung") + { + $studienordnung = new studienordnung(); + $studienordnung->loadStudienordnung($_GET['studienordnung_id']); + $filename = $filename.'_'.$studienordnung->studiengangkurzbzlang.'.pdf'; + $tempPdfName = $vorlage->vorlage_kurzbz.'.pdf'; + } + else + { + $tempPdfName = $vorlage->vorlage_kurzbz.'.pdf'; + $filename = $filename.'.pdf'; + } + exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName"); + + $fsize = filesize($tempPdfName); + $handle = fopen($tempPdfName,'r'); + header('Content-type: application/pdf'); + header('Content-Disposition: attachment; filename="'.$filename.'"'); + header('Content-Length: '.$fsize); + } + else if($output =='odt') + { + if($xsl == "Studienordnung") + { + $studienordnung = new studienordnung(); + $studienordnung->loadStudienordnung($_GET['studienordnung_id']); + $filename = $filename.'_'.$studienordnung->studiengangkurzbzlang; + } + $fsize = filesize($tempname_zip); + $handle = fopen($tempname_zip,'r'); + header('Content-type: '.$vorlage->mimetype); + header('Content-Disposition: attachment; filename="'.$filename.'.'.$endung.'"'); + header('Content-Length: '.$fsize); + } + else if($output =='doc') + { + $tempPdfName = $vorlage->vorlage_kurzbz.'.doc'; + if($xsl == "Studienordnung") + { + $studienordnung = new studienordnung(); + $studienordnung->loadStudienordnung($_GET['studienordnung_id']); + $filename = $filename.'_'.$studienordnung->studiengangkurzbzlang.'.doc'; + } + else + { + $filename = $filename.'.doc'; + } + exec("unoconv -e IsSkipEmptyPages=false --stdout -f doc $tempname_zip > $tempPdfName"); + + $fsize = filesize($tempPdfName); + $handle = fopen($tempPdfName,'r'); + header('Content-type: application/vnd.ms-word'); + header('Content-Disposition: attachment; filename="'.$filename.'"'); + header('Content-Length: '.$fsize); + } + while (!feof($handle)) + { + echo fread($handle, 8192); + } + fclose($handle); + + unlink('content.xml'); + if(isset($_GET['style_xsl'])) + unlink('styles.xml'); + unlink($tempname_zip); + if($output=='pdf' || $output=='doc') + unlink($filename); + rmdir($tempfolder); + } + } + else + { + // Load the XSL source + $xsl_doc = new DOMDocument; + + if(!$xsl_doc->loadXML($vorlage->text)) + die('unable to load xsl'); + + // Configure the transformer + $proc = new XSLTProcessor; + $proc->importStyleSheet($xsl_doc); // attach the xsl rules + + $buffer = $proc->transformToXml($xml_doc); + //in $buffer steht nun das xsl-fo file mit den daten + $buffer = ''.substr($buffer, strpos($buffer,"\n"),strlen($buffer)); + + //Pdf erstellen + $fo2pdf = new XslFo2Pdf(); + + //wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen + $nachname=''; - if(isset($_GET['uid']) && $_GET['uid']!='') - { + if(isset($_GET['uid']) && $_GET['uid']!='') + { $uid = str_replace(';','',$_GET['uid']); $qry = "SELECT nachname FROM campus.vw_benutzer WHERE uid=".$db->db_add_param($uid); - + if($result = $db->db_query($qry)) { - if($row = $db->db_fetch_object($result)) - { - $nachname = '_'.$row->nachname; - } + if($row = $db->db_fetch_object($result)) + { + $nachname = '_'.$row->nachname; + } } - } - $filename=$xsl.$nachname; - - if (!$fo2pdf->generatePdf($buffer, $filename, "D")) - { + } + $filename=$xsl.$nachname; + + if (!$fo2pdf->generatePdf($buffer, $filename, "D")) + { echo('Failed to generate PDF'); + } } } else diff --git a/cis/private/profile/dokumente.php b/cis/private/profile/dokumente.php index 6ac8d804a..00d833287 100755 --- a/cis/private/profile/dokumente.php +++ b/cis/private/profile/dokumente.php @@ -135,6 +135,7 @@ echo $p->t('global/studiensemester')." - - - - ".$p->t('incoming/dokumenttyp').": - - - - -   - - - - - - - - "; - -} -else -{ - echo "Es wurde keine Person_id angegeben"; -} - -?> - - diff --git a/include/studiengang.class.php b/include/studiengang.class.php index b7575bbe9..301904ae7 100644 --- a/include/studiengang.class.php +++ b/include/studiengang.class.php @@ -260,7 +260,7 @@ class studiengang extends basis_db . 'USING (studienordnung_id) ' . 'WHERE aktiv ' . 'AND studiengang_kz = ' . $this->db_add_param($studiengang_kz, FHC_INTEGER) - . ' AND orgform_kurzbz NOT IN (' . $this->db_add_param('DDP') . ', ' . $this->db_add_param('DL') . ')'; + . ' AND orgform_kurzbz!='. $this->db_add_param('DDP'); if($result = $this->db_query($qry)) { diff --git a/locale/de-AT/bewerbung.php b/locale/de-AT/bewerbung.php index 254968ed0..91216acbd 100755 --- a/locale/de-AT/bewerbung.php +++ b/locale/de-AT/bewerbung.php @@ -37,6 +37,7 @@ $this->phrasen['bewerbung/egal']='egal'; $this->phrasen['bewerbung/orgform']='Organisationsform'; $this->phrasen['bewerbung/orgform/berufsbegleitend']='Berufsbegleitend'; $this->phrasen['bewerbung/orgform/vollzeit']='Vollzeit'; +$this->phrasen['bewerbung/orgform/distance']='Fernstudium'; $this->phrasen['bewerbung/sprache']='Sprache'; $this->phrasen['bewerbung/sprache/deutsch']='Deutsch'; $this->phrasen['bewerbung/sprache/englisch']='Englisch'; diff --git a/system/checksystem.php b/system/checksystem.php index 5d3c1ec06..d6fea5fb1 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -2621,7 +2621,7 @@ if(!$result = @$db->db_query("SELECT pflicht FROM public.tbl_dokumentstudiengang } // Spalten zgvnation, zgvmanation, zgvdoktornation in public.tbl_prestudent -if(!$result = @$db->db_query("SELECT pflicht FROM public.tbl_prestudent LIMIT 1")) +if(!$result = @$db->db_query("SELECT zgvnation FROM public.tbl_prestudent LIMIT 1")) { $qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN zgvnation character varying(3); ALTER TABLE public.tbl_prestudent ADD COLUMN zgvmanation character varying(3) ; @@ -3044,7 +3044,7 @@ $tabellen=array( "public.tbl_preoutgoing_lehrveranstaltung" => array("preoutgoing_lehrveranstaltung_id","preoutgoing_id","bezeichnung","ects","endversion","insertamum","insertvon","updateamum","updatevon","wochenstunden","unitcode"), "public.tbl_preoutgoing_preoutgoing_status" => array("status_id","preoutgoing_status_kurzbz","preoutgoing_id","datum","insertamum","insertvon","updateamum","updatevon"), "public.tbl_preoutgoing_status" => array("preoutgoing_status_kurzbz","bezeichnung"), - "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor"), + "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation"), "public.tbl_prestudentstatus" => array("prestudent_id","status_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id","studienplan_id","bestaetigtam","bestaetigtvon","fgm","faktiv", "anmerkung"), "public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung"), "public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet","max_teilnehmer","oeffentlich"), From 31371eab5e4979f107520e595b9947ef994aa8bb Mon Sep 17 00:00:00 2001 From: oesi Date: Thu, 9 Apr 2015 19:01:00 +0200 Subject: [PATCH 06/21] Documents Folder added to ignore List --- .gitignore | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 4e8053fec..706a9c3a8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,4 @@ .htaccess /nbproject/ /.idea/ -documents/dms/5501ab0195d74.pdf -documents/dms/5501abcc7300b.pdf -documents/dms/5501b6ed6b073.jpg -documents/dms/5501d1a12fa02.jpg +documents/ From e728daf034f22808ac643806dca52c18410269ee Mon Sep 17 00:00:00 2001 From: oesi Date: Thu, 9 Apr 2015 19:01:55 +0200 Subject: [PATCH 07/21] Fehler in der Caldav Schnittstelle behoben bei der die Termine nicht immer korrekt exportiert wurden wenn zur selben Zeit ein LVPlan Eintrag und eine Reservierung vorhanden ist --- include/wochenplan.class.php | 5 ++++- webdav/Caldav_Backend.php | 12 ++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/include/wochenplan.class.php b/include/wochenplan.class.php index 76e497230..c924f098c 100644 --- a/include/wochenplan.class.php +++ b/include/wochenplan.class.php @@ -2438,6 +2438,8 @@ class wochenplan extends basis_db 'Description'=>$description, 'dtstart'=>$start_date_time_ical, 'dtend'=>$end_date_time_ical, + 'reservierung'=>$this->std_plan[$i][$j][$idx]->reservierung, + 'reservierung_id'=>($this->std_plan[$i][$j][$idx]->reservierung?$this->std_plan[$i][$j][$idx]->stundenplan_id:''), 'updateamum'=>$this->std_plan[$i][$j][$idx]->updateamum, 'data'=>'BEGIN:VEVENT'.$this->crlf .'UID:'.$UID.$this->crlf @@ -2488,7 +2490,8 @@ class wochenplan extends basis_db $lektor1 = $this->std_plan[$tag][$stunde][$idx]->lektor; $lektor2 = $this->std_plan[$tag][$stunde][$idx1]->lektor; - if($unr1==$unr2 && ($ort1==$ort2 || $lektor1==$lektor2)) + if($unr1==$unr2 && ($ort1==$ort2 || $lektor1==$lektor2) + && !$this->std_plan[$tag][$stunde][$idx]->reservierung && !$this->std_plan[$tag][$stunde][$idx1]->reservierung) return true; else return false; diff --git a/webdav/Caldav_Backend.php b/webdav/Caldav_Backend.php index 71f5780c1..d107341d2 100644 --- a/webdav/Caldav_Backend.php +++ b/webdav/Caldav_Backend.php @@ -211,7 +211,7 @@ class MySabre_CalDAV_Backend extends \Sabre\CalDAV\Backend\AbstractBackend foreach($val as $row) { //einzelnen Eintrag holen - if($row['dtstart']==$dtstart && $row['unr'][0]==$unr) + if($row['dtstart']==$dtstart && ($row['unr'][0]==$unr) || $unr=='R'.$row['reservierung_id']) { return $row; } @@ -221,6 +221,7 @@ class MySabre_CalDAV_Backend extends \Sabre\CalDAV\Backend\AbstractBackend $data=array_merge($data, $val); } $endtime = microtime(true); + //error_log("\n\nDATA".print_r($data,true)); //error_log("getCalendarData time:".($endtime-$starttime)); //$data.="\nEND:VCALENDAR"; return $data; @@ -280,9 +281,16 @@ END:VTIMEZONE\n".$event."\nEND:VCALENDAR"; $return = array(); foreach($data as $row) { + // Reservierungen werden mit einem R markiert und mit der ReservierungID da sonst + // Termine verloren gehen koennen wenn zur selben Zeit eine Reservierung und ein LVPlan Eintrag vorhanden ist + if($row['reservierung']) + $uri = $row['dtstart'].'-R'.$row['reservierung_id']; + else + $uri = $row['dtstart'].'-'.$row['unr'][0]; + $return[] = array("id"=>$row['UID'], "calendardata"=>$this->makeCal($row['data']), - "uri"=>$row['dtstart'].'-'.$row['unr'][0], + "uri"=>$uri, "lastmodified"=>$row['updateamum'], "etag"=>'"'.$row['UID'].'"', "calendarid"=>$calendarId); From cad7a714c149538d0cc01f20d20de414cae2f2db Mon Sep 17 00:00:00 2001 From: oesi Date: Thu, 9 Apr 2015 19:04:27 +0200 Subject: [PATCH 08/21] =?UTF-8?q?Addon=20Hooks=20f=C3=BCr=20LV-Detail=20Se?= =?UTF-8?q?ite=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/lesson.php | 33 ++++++++++++++++++++++++++++++++- include/tw/cis_menu_lv.inc.php | 2 +- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/cis/private/lehre/lesson.php b/cis/private/lehre/lesson.php index 0948eefcd..b3b6f2e1d 100644 --- a/cis/private/lehre/lesson.php +++ b/cis/private/lehre/lesson.php @@ -92,11 +92,42 @@ if (isset($_GET["handbuch"])){ readfile($filename); exit; } -?> +?> + + + +loadAddons(); +foreach($addon_obj->result as $addon) +{ + if(file_exists('../../../addons/'.$addon->kurzbz.'/cis/init.js.php')) + echo ''; +} + +// Wenn Seite fertig geladen ist Addons aufrufen +echo ' + +'; + +?>