From fbb3f1694b669a7c5efc86fdc94c2facded9b21c Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 22 Aug 2018 17:36:53 +0200 Subject: [PATCH 01/11] - added function for generating unique lv-group strings - added functions for getting students and lecturers by lv - added function for getting Studiengaenge By Studiensemester - added function for getting Ausbildungssemester by Studiensemester and Studiengang --- .../education/Lehrveranstaltung_model.php | 170 ++++++++++++++++++ .../models/organisation/Studiengang_model.php | 22 +++ .../organisation/Studiensemester_model.php | 19 ++ 3 files changed, 211 insertions(+) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index 6b3f848aa..adef6d434 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -11,4 +11,174 @@ class Lehrveranstaltung_model extends DB_Model $this->dbTable = 'lehre.tbl_lehrveranstaltung'; $this->pk = 'lehrveranstaltung_id'; } + + /** + * Gets unique Groupstrings for Lehrveranstaltungen, e.g. WS2018_BIF_1_PRJM_VZ_LV12345 + * @param $studiensemester_kurzbz + * @param null $ausbildungssemester + * @param null $studiengang_kz + * @param null $lehrveranstaltung_ids + * @return StdClass + */ + public function getLehrveranstaltungGroupNames($studiensemester_kurzbz, $ausbildungssemester = null, $studiengang_kz = null, $lehrveranstaltung_ids = null) + { + $this->load->model('system/studiensemester_model', 'StudiensemesterModel'); + $this->load->model('organisation/studienplan_model', 'StudiengangModel'); + + $lvs = new StdClass(); + $lvs->error = 0; + $lvs->retval = array(); + $studiengang_kz_arr = array(); + $ausbildungssemester_arr = array(); + $lehrveranstaltung_id_arr = array(); + + if (is_numeric($studiengang_kz)) + { + $studiengang_kz_arr[] = $studiengang_kz; + } + elseif (is_array($studiengang_kz)) + { + $studiengang_kz_arr = $studiengang_kz; + } + else + { + $studiengangdata = $this->StudiengangModel->getStudiengaengeByStudiensemester($studiensemester_kurzbz); + + if (!hasData($studiengangdata)) + show_error('no studiengaenge retrieved'); + + foreach ($studiengangdata->retval as $studiengang) + { + $studiengang_kz_arr[] = $studiengang->studiengang_kz; + } + } + + if (is_numeric($ausbildungssemester)) + { + $ausbildungssemester_arr[] = $ausbildungssemester; + } + elseif (is_array($ausbildungssemester)) + { + $ausbildungssemester_arr = $ausbildungssemester; + } + else + { + foreach ($studiengang_kz_arr as $studiengang_kz_item) + { + $result = $this->StudiensemesterModel->getAusbildungssemesterByStudiensemesterAndStudiengang($studiensemester_kurzbz, $studiengang_kz_item); + + if (isError($result)) + return error($result->retval); + + foreach ($result->retval as $semester) + { + if (!in_array($semester->semester, $ausbildungssemester_arr)) + $ausbildungssemester_arr[] = $semester->semester; + } + } + } + + if (is_numeric($lehrveranstaltung_ids)) + { + $lehrveranstaltung_id_arr[] = $lehrveranstaltung_ids; + } + elseif (is_array($lehrveranstaltung_ids)) + { + $lehrveranstaltung_id_arr = $lehrveranstaltung_ids; + } + + $parametersarray = array($studiensemester_kurzbz, $studiensemester_kurzbz); + + $query = " + + SELECT lehrveranstaltung_id, ? || '_' || kuerzel || '_' || lvpostfix AS lvgroupname + FROM( + SELECT DISTINCT ON (kuerzel, lvpostfix) + lehrveranstaltung_id, + UPPER(tbl_studiengang.typ :: VARCHAR(1) || tbl_studiengang.kurzbz) AS kuerzel, + tbl_lehrveranstaltung.semester || '_' || tbl_lehrveranstaltung.kurzbz || '_' || COALESCE(tbl_lehrveranstaltung.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) || '_LV' || lehrveranstaltung_id AS lvpostfix + FROM lehre.tbl_lehrveranstaltung + JOIN public.tbl_studiengang ON tbl_lehrveranstaltung.studiengang_kz = tbl_studiengang.studiengang_kz + WHERE tbl_lehrveranstaltung.lehrtyp_kurzbz != 'modul' + AND EXISTS (SELECT 1 FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND studiensemester_kurzbz = ?)"; + + if (count($ausbildungssemester_arr) > 0) + $query .= " AND tbl_lehrveranstaltung.semester IN (". implode(", ", $ausbildungssemester_arr).")"; + + if (count($studiengang_kz_arr) > 0) + $query .= " AND tbl_lehrveranstaltung.studiengang_kz IN (". implode(", ", $studiengang_kz_arr).")"; + + if (count($lehrveranstaltung_id_arr) > 0) + { + $query .= " AND tbl_lehrveranstaltung.lehrveranstaltung_id IN (". implode(', ', $lehrveranstaltung_id_arr).")"; + } + + $query .= ") lvgroups ORDER BY lvgroupname"; + + $result = $this->execQuery($query, $parametersarray); + + if (hasData($result)) + { + $lvs->retval = array_merge($lvs->retval, $result->retval); + } + + return $lvs; + } + + /** + * Gets all students of a Lehrveranstaltung + * @param $studiensemester_kurzbz + * @param $lehrveranstaltung_id + * @return array|null + */ + public function getStudentsByLv($studiensemester_kurzbz, $lehrveranstaltung_id) + { + $query = "SELECT + distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, + tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, + (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, + tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student, + tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_benutzer.uid, + UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel, tbl_studiengang.orgform_kurzbz, vw_student_lehrveranstaltung.semester, vw_student_lehrveranstaltung.studiensemester_kurzbz, vw_student_lehrveranstaltung.bezeichnung + + FROM + campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) + JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid) + LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) + LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz) + LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz) + LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid) + LEFT JOIN public.tbl_studiengang ON(vw_student_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz) + WHERE + vw_student_lehrveranstaltung.studiensemester_kurzbz=? + AND + vw_student_lehrveranstaltung.lehrveranstaltung_id=? + ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC"; + + return $this->execQuery($query, array($studiensemester_kurzbz, $lehrveranstaltung_id)); + } + + /** + * Gets all lecturers of a Lehrveranstaltung + * @param $studiensemester_kurzbz + * @param $lehrveranstaltung_id + * @return array|null + */ + public function getLecturersByLv($studiensemester_kurzbz, $lehrveranstaltung_id) + { + $query = "SELECT * FROM (SELECT distinct on(uid) vorname, nachname, tbl_benutzer.uid as uid, + CASE WHEN lehrfunktion_kurzbz='LV-Leitung' THEN true ELSE false END as lvleiter + FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_benutzer, public.tbl_person + WHERE + tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND + tbl_lehreinheitmitarbeiter.mitarbeiter_uid=tbl_benutzer.uid AND + tbl_person.person_id=tbl_benutzer.person_id AND + lehrveranstaltung_id=? AND + tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT like '_Dummy%' AND + tbl_benutzer.aktiv=true AND tbl_person.aktiv=true AND + studiensemester_kurzbz=?) AS a + ORDER BY lvleiter DESC, nachname, vorname"; + + return $this->execQuery($query, array($lehrveranstaltung_id, $studiensemester_kurzbz)); + } } diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php index af790c831..78c81836f 100644 --- a/application/models/organisation/Studiengang_model.php +++ b/application/models/organisation/Studiengang_model.php @@ -407,4 +407,26 @@ class Studiengang_model extends DB_Model array('reihungstest') ); } + + /** + * Gets Studiengaenge of a Studiensemesester + * @param $studiensemester_kurzbz + * @return array|null + */ + public function getStudiengaengeByStudiensemester($studiensemester_kurzbz) + { + $query = "SELECT + distinct tbl_studiengang.*, UPPER(typ::varchar(1) || kurzbz) AS kuerzel + FROM + public.tbl_studiengang + JOIN lehre.tbl_studienordnung USING(studiengang_kz) + JOIN lehre.tbl_studienplan USING(studienordnung_id) + JOIN lehre.tbl_studienplan_semester USING(studienplan_id) + WHERE + tbl_studienplan_semester.studiensemester_kurzbz=? + ORDER BY + typ, kurzbz"; + + return $this->execQuery($query, array($studiensemester_kurzbz)); + } } diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index cb693144d..5ab41fcaa 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -80,4 +80,23 @@ class Studiensemester_model extends DB_Model return $this->execQuery($query); } + + /** + * Gets valid Ausbildungssemester of a Studiensemester with a Studiengang + * @param $studiensemester_kurzbz + * @param $studiengang_kz + * @return array|null + */ + public function getAusbildungssemesterByStudiensemesterAndStudiengang($studiensemester_kurzbz, $studiengang_kz) + { + $query = "SELECT DISTINCT semester + FROM lehre.tbl_studienplan + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + JOIN lehre.tbl_studienplan_semester USING(studienplan_id) + WHERE tbl_studienplan_semester.studiensemester_kurzbz = ? + AND tbl_studienordnung.studiengang_kz = ? + ORDER BY semester"; + + return $this->execQuery($query, array($studiensemester_kurzbz, $studiengang_kz)); + } } From ceb9eb57de8dd4145e3c6f371579eb679748df2c Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 23 Aug 2018 10:23:33 +0200 Subject: [PATCH 02/11] removed unnecessary array merge --- .../models/education/Lehrveranstaltung_model.php | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index adef6d434..266496b33 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -25,9 +25,6 @@ class Lehrveranstaltung_model extends DB_Model $this->load->model('system/studiensemester_model', 'StudiensemesterModel'); $this->load->model('organisation/studienplan_model', 'StudiengangModel'); - $lvs = new StdClass(); - $lvs->error = 0; - $lvs->retval = array(); $studiengang_kz_arr = array(); $ausbildungssemester_arr = array(); $lehrveranstaltung_id_arr = array(); @@ -115,14 +112,7 @@ class Lehrveranstaltung_model extends DB_Model $query .= ") lvgroups ORDER BY lvgroupname"; - $result = $this->execQuery($query, $parametersarray); - - if (hasData($result)) - { - $lvs->retval = array_merge($lvs->retval, $result->retval); - } - - return $lvs; + return $this->execQuery($query, $parametersarray); } /** From 4b6aefa3a12750053fe0a496f58985e18fd5ddd1 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 23 Aug 2018 10:55:49 +0200 Subject: [PATCH 03/11] added getNextOrAktSemester method --- .../organisation/Studiensemester_model.php | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index 5ab41fcaa..71b4d3738 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -32,6 +32,26 @@ class Studiensemester_model extends DB_Model return $this->execQuery($query); } + /** + * getNextOrAktSemester + * 62 days - in july and august, semester after summer is returned + */ + public function getNextOrAktSemester($days = 62) + { + if (!is_numeric($days)) + { + $days = 62; + } + + $query = 'SELECT studiensemester_kurzbz + FROM public.tbl_studiensemester + WHERE start < (NOW() + \'' . $days . ' DAYS\':: INTERVAL) + ORDER BY start DESC + LIMIT 1'; + + return $this->execQuery($query); + } + /** * getNextFrom */ From be5bf4c882a5a709afad7f17ca02bc1632c2f232 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 23 Aug 2018 15:26:51 +0200 Subject: [PATCH 04/11] fix: correct studiengangbezeichnung in abschlusspruefung rdf is retrieved for fallback (my bad!) --- rdf/abschlusspruefung.rdf.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rdf/abschlusspruefung.rdf.php b/rdf/abschlusspruefung.rdf.php index ae10ca68e..e64c51dd0 100644 --- a/rdf/abschlusspruefung.rdf.php +++ b/rdf/abschlusspruefung.rdf.php @@ -110,8 +110,8 @@ function draw_content_xml($row) $studiengangbezeichnung_englisch = $studienordnung->__get('studiengangbezeichnung_englisch'); } } - $studiengang_bezeichnung = empty($studiengangbezeichnung) ? $row->bezeichnung : $studiengangbezeichnung; - $studiengang_bezeichnung_englisch = empty($studiengangbezeichnung_englisch) ? $row->english : $studiengangbezeichnung_englisch; + $studiengang_bezeichnung = empty($studiengangbezeichnung) ? $studiengang->bezeichnung : $studiengangbezeichnung; + $studiengang_bezeichnung_englisch = empty($studiengangbezeichnung_englisch) ? $studiengang->english : $studiengangbezeichnung_englisch; if($mitarbeiter->load($row->vorsitz)) { From 6c99b4f0bdce8cf767951b8e296fadf466f13e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 23 Aug 2018 15:53:12 +0200 Subject: [PATCH 05/11] Fixed a problem where the results of a placementtest where summarized when transfered to FAS if there are multiple placementtests for the same studyplan --- include/pruefling.class.php | 843 ++++++++++++++++++------------------ 1 file changed, 430 insertions(+), 413 deletions(-) diff --git a/include/pruefling.class.php b/include/pruefling.class.php index 47a5b9a7c..2312e74e9 100644 --- a/include/pruefling.class.php +++ b/include/pruefling.class.php @@ -1,413 +1,430 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -require_once(dirname(__FILE__).'/basis_db.class.php'); - -class pruefling extends basis_db -{ - //Tabellenspalten - public $pruefling_id; - public $studiengang_kz; - public $idnachweis; - public $registriert; - public $prestudent_id; - public $semester; - - // ErgebnisArray - public $result=array(); - public $num_rows=0; - public $new; - - /** - * Konstruktor - Laedt optional einen pruefling - * @param $frage_id Frage die geladen werden soll (default=null) - */ - public function __construct($pruefling_id=null) - { - parent::__construct(); - - if($pruefling_id != null) - $this->load($pruefling_id); - } - - /** - * Laedt Pruefling mit der uebergebenen ID - * @param $pruefling_id ID der Frage die geladen werden soll - */ - public function load($pruefling_id) - { - $qry = "SELECT * FROM testtool.tbl_pruefling WHERE pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->pruefling_id = $row->pruefling_id; - $this->studiengang_kz = $row->studiengang_kz; - $this->idnachweis = $row->idnachweis; - $this->registriert = $row->registriert; - $this->prestudent_id = $row->prestudent_id; - $this->semester = $row->semester; - return true; - } - else - { - $this->errormsg = "Kein Eintrag gefunden fuer $pruefling_id"; - return false; - } - } - else - { - $this->errormsg = "Fehler beim Laden"; - return false; - } - } - - /** - * Prueft die Variablen vor dem Speichern - * auf Gueltigkeit. - * @return true wenn ok, false im Fehlerfall - */ - protected function validate() - { - return true; - } - - /** - * Speichert die Benutzerdaten in die Datenbank - * Wenn $new auf true gesetzt ist wird ein neuer Datensatz angelegt - * ansonsten der Datensatz mit $uid upgedated - * @return true wenn erfolgreich, false im Fehlerfall - */ - public function save() - { - //Variablen auf Gueltigkeit pruefen - if(!$this->validate()) - return false; - - if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE - { - $qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester) VALUES('. - $this->db_add_param($this->studiengang_kz).",". - $this->db_add_param($this->idnachweis).",". - $this->db_add_param($this->registriert).",". - $this->db_add_param($this->prestudent_id).",". - $this->db_add_param($this->semester).");"; - } - else - { - $qry = 'UPDATE testtool.tbl_pruefling SET'. - ' studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER).','. - ' idnachweis='.$this->db_add_param($this->idnachweis).','. - ' registriert='.$this->db_add_param($this->registriert).','. - ' semester='.$this->db_add_param($this->semester).','. - ' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER). - " WHERE pruefling_id=".$this->db_add_param($this->pruefling_id, FHC_INTEGER, false).";"; - } - - if($this->db_query($qry)) - { - if($this->new) - { - $qry = "SELECT currval('testtool.tbl_pruefling_pruefling_id_seq') as id"; - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->pruefling_id = $row->id; - $this->db_query('COMMIT;'); - return true; - } - else - { - $this->db_query('ROLLBACK;'); - $this->errormsg = 'Fehler beim Lesen der Sequence'; - return false; - } - } - else - { - $this->db_query('ROLLBACK;'); - $this->errormsg = 'Fehler beim Lesen der Sequence'; - return false; - } - } - else - { - return true; - } - } - else - { - $this->db_query('ROLLBACK'); - $this->errormsg = 'Fehler beim Speichern der Frage'; - return false; - } - } - - /** - * Laedt einen Puefling anhand der Prestudent_id - * - * @param $prestudent_id - * @return boolean - */ - public function getPruefling($prestudent_id) - { - $qry = "SELECT * FROM testtool.tbl_pruefling WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->pruefling_id = $row->pruefling_id; - $this->studiengang_kz = $row->studiengang_kz; - $this->idnachweis = $row->idnachweis; - $this->registriert = $row->registriert; - $this->prestudent_id = $row->prestudent_id; - $this->semester = $row->semester; - return true; - } - else - { - $this->errormsg = "Kein Eintrag gefunden"; - return false; - } - } - else - { - $this->errormsg = "Fehler beim Laden"; - return false; - } - } - - /** - * Ermittelt den aktuellen Level (schwierigkeitsgrad der Frage) - * des Prueflings fuer das uebergebene Gebiet - * - * @param $pruefling_id - * @param $gebiet_id - */ - public function getPrueflingLevel($pruefling_id, $gebiet_id) - { - $gebiet = new gebiet($gebiet_id); - - //wenn Levelsystem fuer dieses Gebiet aktiviert ist - if($gebiet->level_start!='') - { - //Maximal und Minimal Level fuer dieses Gebiet ermitteln - $max_level = 0; - $min_level = 0; - - $qry = "SELECT max(level) as max, min(level) as min FROM testtool.tbl_frage - WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $max_level = $row->max; - $min_level = $row->min; - } - else - { - $this->errormsg = 'unbekannter Fehler in getPrueflingLevel'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Ermitteln des Pruefling-Levels'; - return false; - } - - //alle bisherigen Antworten fuer dieses Gebiet holen - $qry = "SELECT - tbl_vorschlag.punkte - FROM - testtool.tbl_pruefling_frage - JOIN testtool.tbl_vorschlag USING(frage_id) - JOIN testtool.tbl_antwort USING(vorschlag_id) - JOIN testtool.tbl_frage USING(frage_id) - WHERE - tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND - tbl_pruefling_frage.pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)." AND - tbl_antwort.pruefling_id = tbl_pruefling_frage.pruefling_id - ORDER BY tbl_pruefling_frage.nummer ASC"; - - $aktueller_level=$gebiet->level_start; - $anzahl_richtig=0; - $anzahl_falsch=0; - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - if($row->punkte>0) - { - //wenn die Frage richtig beantwortet wurde dann richtig-zaehler erhoehen - $anzahl_richtig++; - $anzahl_falsch=0; - } - else - { - //wenn die Frage falsch beantwortet wurde dann falsch-zaehler erhoehen - $anzahl_richtig=0; - $anzahl_falsch++; - } - - //wenn einer der Zaehler das Sprunglevel erreicht hat, dann - //in ein anderes Level springen - if($anzahl_richtig==$gebiet->level_sprung_auf) - { - $aktueller_level++; - $anzahl_richtig=0; - $anzahl_falsch=0; - } - elseif($anzahl_falsch==$gebiet->level_sprung_ab) - { - $aktueller_level--; - $anzahl_richtig=0; - $anzahl_falsch=0; - } - - //aktueller level darf nicht kleiner/groesser als der minimal/maximal Level sein - if($aktueller_level<$min_level) - $aktueller_level=$min_level; - if($aktueller_level>$max_level) - $aktueller_level=$max_level; - } - - return $aktueller_level; - } - else - { - $this->errormsg = 'Fehler bei einer Abfrage'; - return false; - } - } - else - return -1; - } - - /** - * Berechnet das Reihungstestergebnis fuer eine Person und ggf Reihungstest - * - * @param $person_id ID der Person. - * @param $punkte Wenn true werden Punkte geliefert, sonst Prozentsumme. - * @param $reihungstest_id ID des Reihungstests. - * @return Endpunkte des Reihungstests oder False wenn keine Punkte vorhanden - */ - public function getReihungstestErgebnisPerson($person_id, $punkte=false, $reihungstest_id=null) - { - $qry = "SELECT * FROM testtool.vw_auswertung - WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER); - $ergebnis=0; - - - if(!is_null($reihungstest_id)) - $qry.=" AND reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER); - - - - if($result = $this->db_query($qry)) - { - // Wenn keine Eintraege vorhanden dann false - if($this->db_num_rows($result)==0) - return false; - - - - while($row = $this->db_fetch_object($result)) - { - //wenn maxpunkte ueberschritten wurde -> 100% - if($row->punkte>=$row->maxpunkte) - { - $prozent=100; - $row->punkte = $row->maxpunkte; - } - else - $prozent = ($row->punkte/$row->maxpunkte)*100; - - if($punkte) - { - $ergebnis +=$row->punkte; - } - - else - $ergebnis+=$prozent*$row->gewicht; - } - return $ergebnis; - } - else - { - $this->errormsg = 'Fehler bei einer Abfrage'; - return false; - } - } - - /** - * Berechnet das Reihungstestergebnis fuer einen Prestudenten und ggf Reihungstest - * - * @param $prestudent_id ID des Prestudenten - * @param $punkte Wenn true werden Punkte geliefert, sonst Prozentsumme. - * @param $reihungstest_id ID des Reihungstests. - * @return Endpunkte des Reihungstests oder false wenn keine Punkte vorhanden - */ - public function getReihungstestErgebnisPrestudent($prestudent_id, $punkte=false, $reihungstest_id=null) - { - $qry = "SELECT * FROM testtool.vw_auswertung - WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); - - if(!is_null($reihungstest_id)) - $qry.=" AND reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER); - - $ergebnis=0; - - if($result = $this->db_query($qry)) - { - if($this->db_num_rows($result)==0) - return false; - - while($row = $this->db_fetch_object()) - { - //wenn maxpunkte ueberschritten wurde -> 100% - if($row->punkte>=$row->maxpunkte) - { - $prozent=100; - $row->punkte = $row->maxpunkte; - } - else - $prozent = ($row->punkte/$row->maxpunkte)*100; - - if($punkte) - $ergebnis +=$row->punkte; - else - $ergebnis+=$prozent*$row->gewicht; - } - return $ergebnis; - } - else - { - $this->errormsg = 'Fehler bei einer Abfrage'; - return false; - } - } -} -?> +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class pruefling extends basis_db +{ + //Tabellenspalten + public $pruefling_id; + public $studiengang_kz; + public $idnachweis; + public $registriert; + public $prestudent_id; + public $semester; + + // ErgebnisArray + public $result=array(); + public $num_rows=0; + public $new; + + /** + * Konstruktor - Laedt optional einen pruefling + * @param $frage_id Frage die geladen werden soll (default=null) + */ + public function __construct($pruefling_id=null) + { + parent::__construct(); + + if($pruefling_id != null) + $this->load($pruefling_id); + } + + /** + * Laedt Pruefling mit der uebergebenen ID + * @param $pruefling_id ID der Frage die geladen werden soll + */ + public function load($pruefling_id) + { + $qry = "SELECT * FROM testtool.tbl_pruefling WHERE pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->pruefling_id = $row->pruefling_id; + $this->studiengang_kz = $row->studiengang_kz; + $this->idnachweis = $row->idnachweis; + $this->registriert = $row->registriert; + $this->prestudent_id = $row->prestudent_id; + $this->semester = $row->semester; + return true; + } + else + { + $this->errormsg = "Kein Eintrag gefunden fuer $pruefling_id"; + return false; + } + } + else + { + $this->errormsg = "Fehler beim Laden"; + return false; + } + } + + /** + * Prueft die Variablen vor dem Speichern + * auf Gueltigkeit. + * @return true wenn ok, false im Fehlerfall + */ + protected function validate() + { + return true; + } + + /** + * Speichert die Benutzerdaten in die Datenbank + * Wenn $new auf true gesetzt ist wird ein neuer Datensatz angelegt + * ansonsten der Datensatz mit $uid upgedated + * @return true wenn erfolgreich, false im Fehlerfall + */ + public function save() + { + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE + { + $qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester) VALUES('. + $this->db_add_param($this->studiengang_kz).",". + $this->db_add_param($this->idnachweis).",". + $this->db_add_param($this->registriert).",". + $this->db_add_param($this->prestudent_id).",". + $this->db_add_param($this->semester).");"; + } + else + { + $qry = 'UPDATE testtool.tbl_pruefling SET'. + ' studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER).','. + ' idnachweis='.$this->db_add_param($this->idnachweis).','. + ' registriert='.$this->db_add_param($this->registriert).','. + ' semester='.$this->db_add_param($this->semester).','. + ' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER). + " WHERE pruefling_id=".$this->db_add_param($this->pruefling_id, FHC_INTEGER, false).";"; + } + + if($this->db_query($qry)) + { + if($this->new) + { + $qry = "SELECT currval('testtool.tbl_pruefling_pruefling_id_seq') as id"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->pruefling_id = $row->id; + $this->db_query('COMMIT;'); + return true; + } + else + { + $this->db_query('ROLLBACK;'); + $this->errormsg = 'Fehler beim Lesen der Sequence'; + return false; + } + } + else + { + $this->db_query('ROLLBACK;'); + $this->errormsg = 'Fehler beim Lesen der Sequence'; + return false; + } + } + else + { + return true; + } + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = 'Fehler beim Speichern der Frage'; + return false; + } + } + + /** + * Laedt einen Puefling anhand der Prestudent_id + * + * @param $prestudent_id + * @return boolean + */ + public function getPruefling($prestudent_id) + { + $qry = "SELECT * FROM testtool.tbl_pruefling WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->pruefling_id = $row->pruefling_id; + $this->studiengang_kz = $row->studiengang_kz; + $this->idnachweis = $row->idnachweis; + $this->registriert = $row->registriert; + $this->prestudent_id = $row->prestudent_id; + $this->semester = $row->semester; + return true; + } + else + { + $this->errormsg = "Kein Eintrag gefunden"; + return false; + } + } + else + { + $this->errormsg = "Fehler beim Laden"; + return false; + } + } + + /** + * Ermittelt den aktuellen Level (schwierigkeitsgrad der Frage) + * des Prueflings fuer das uebergebene Gebiet + * + * @param $pruefling_id + * @param $gebiet_id + */ + public function getPrueflingLevel($pruefling_id, $gebiet_id) + { + $gebiet = new gebiet($gebiet_id); + + //wenn Levelsystem fuer dieses Gebiet aktiviert ist + if($gebiet->level_start!='') + { + //Maximal und Minimal Level fuer dieses Gebiet ermitteln + $max_level = 0; + $min_level = 0; + + $qry = "SELECT max(level) as max, min(level) as min FROM testtool.tbl_frage + WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $max_level = $row->max; + $min_level = $row->min; + } + else + { + $this->errormsg = 'unbekannter Fehler in getPrueflingLevel'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des Pruefling-Levels'; + return false; + } + + //alle bisherigen Antworten fuer dieses Gebiet holen + $qry = "SELECT + tbl_vorschlag.punkte + FROM + testtool.tbl_pruefling_frage + JOIN testtool.tbl_vorschlag USING(frage_id) + JOIN testtool.tbl_antwort USING(vorschlag_id) + JOIN testtool.tbl_frage USING(frage_id) + WHERE + tbl_frage.gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND + tbl_pruefling_frage.pruefling_id=".$this->db_add_param($pruefling_id, FHC_INTEGER)." AND + tbl_antwort.pruefling_id = tbl_pruefling_frage.pruefling_id + ORDER BY tbl_pruefling_frage.nummer ASC"; + + $aktueller_level=$gebiet->level_start; + $anzahl_richtig=0; + $anzahl_falsch=0; + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + if($row->punkte>0) + { + //wenn die Frage richtig beantwortet wurde dann richtig-zaehler erhoehen + $anzahl_richtig++; + $anzahl_falsch=0; + } + else + { + //wenn die Frage falsch beantwortet wurde dann falsch-zaehler erhoehen + $anzahl_richtig=0; + $anzahl_falsch++; + } + + //wenn einer der Zaehler das Sprunglevel erreicht hat, dann + //in ein anderes Level springen + if($anzahl_richtig==$gebiet->level_sprung_auf) + { + $aktueller_level++; + $anzahl_richtig=0; + $anzahl_falsch=0; + } + elseif($anzahl_falsch==$gebiet->level_sprung_ab) + { + $aktueller_level--; + $anzahl_richtig=0; + $anzahl_falsch=0; + } + + //aktueller level darf nicht kleiner/groesser als der minimal/maximal Level sein + if($aktueller_level<$min_level) + $aktueller_level=$min_level; + if($aktueller_level>$max_level) + $aktueller_level=$max_level; + } + + return $aktueller_level; + } + else + { + $this->errormsg = 'Fehler bei einer Abfrage'; + return false; + } + } + else + return -1; + } + + /** + * Berechnet das Reihungstestergebnis fuer eine Person und ggf Reihungstest + * ACHTUNG - Diese Funktion liefert keine zuverlaessigen Ergebnisse wenn keine ReihungstestID uebergeben wird + * und die Person mehrere Reihungstests absolviert hat! + * @param $person_id ID der Person. + * @param $punkte Wenn true werden Punkte geliefert, sonst Prozentsumme. + * @param $reihungstest_id ID des Reihungstests. + * @return Endpunkte des Reihungstests oder False wenn keine Punkte vorhanden + */ + public function getReihungstestErgebnisPerson($person_id, $punkte=false, $reihungstest_id=null) + { + $qry = "SELECT * FROM testtool.vw_auswertung + WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER); + $ergebnis=0; + + if(!is_null($reihungstest_id)) + { + $qry.=" AND reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER); + + // Quercheck der PrestudentID ueber den Status damit bei Personen + // die den Reihungstest oefter im selben Studiengang gemacht haben nicht das + // Ergebniss der beiden Tests summiert bekommen + // Im Zweifelsfall wird der neuere Reihungstest genommen + $qry.= " AND prestudent_id = ( + SELECT + prestudent_id + FROM + public.tbl_rt_person + JOIN public.tbl_reihungstest ON(rt_id=reihungstest_id) + JOIN public.tbl_prestudent USING(person_id) + JOIN public.tbl_prestudentstatus USING(prestudent_id, studienplan_id) + WHERE + tbl_rt_person.person_id=".$this->db_add_param($person_id, FHC_INTEGER)." + AND tbl_rt_person.rt_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER)." + AND tbl_prestudentstatus.status_kurzbz='Interessent' + ORDER BY + tbl_reihungstest.datum desc LIMIT 1)"; + } + + if($result = $this->db_query($qry)) + { + // Wenn keine Eintraege vorhanden dann false + if($this->db_num_rows($result)==0) + return false; + + while($row = $this->db_fetch_object($result)) + { + //wenn maxpunkte ueberschritten wurde -> 100% + if($row->punkte>=$row->maxpunkte) + { + $prozent=100; + $row->punkte = $row->maxpunkte; + } + else + $prozent = ($row->punkte/$row->maxpunkte)*100; + + if($punkte) + { + $ergebnis +=$row->punkte; + } + + else + $ergebnis+=$prozent*$row->gewicht; + } + return $ergebnis; + } + else + { + $this->errormsg = 'Fehler bei einer Abfrage'; + return false; + } + } + + /** + * Berechnet das Reihungstestergebnis fuer einen Prestudenten und ggf Reihungstest + * + * @param $prestudent_id ID des Prestudenten + * @param $punkte Wenn true werden Punkte geliefert, sonst Prozentsumme. + * @param $reihungstest_id ID des Reihungstests. + * @return Endpunkte des Reihungstests oder false wenn keine Punkte vorhanden + */ + public function getReihungstestErgebnisPrestudent($prestudent_id, $punkte=false, $reihungstest_id=null) + { + $qry = "SELECT * FROM testtool.vw_auswertung + WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); + + if(!is_null($reihungstest_id)) + $qry.=" AND reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER); + + $ergebnis=0; + + if($result = $this->db_query($qry)) + { + if($this->db_num_rows($result)==0) + return false; + + while($row = $this->db_fetch_object()) + { + //wenn maxpunkte ueberschritten wurde -> 100% + if($row->punkte>=$row->maxpunkte) + { + $prozent=100; + $row->punkte = $row->maxpunkte; + } + else + $prozent = ($row->punkte/$row->maxpunkte)*100; + + if($punkte) + $ergebnis +=$row->punkte; + else + $ergebnis+=$prozent*$row->gewicht; + } + return $ergebnis; + } + else + { + $this->errormsg = 'Fehler bei einer Abfrage'; + return false; + } + } +} +?> From a66766a3ab7dcc0e21f38d77a55f214333388ed1 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 23 Aug 2018 18:34:04 +0200 Subject: [PATCH 06/11] - correct studiengang model loaded - renamed getNextorAktSemester to getAktOrNextSemester --- application/models/education/Lehrveranstaltung_model.php | 2 +- application/models/organisation/Studiensemester_model.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index 266496b33..c55ce8e10 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -23,7 +23,7 @@ class Lehrveranstaltung_model extends DB_Model public function getLehrveranstaltungGroupNames($studiensemester_kurzbz, $ausbildungssemester = null, $studiengang_kz = null, $lehrveranstaltung_ids = null) { $this->load->model('system/studiensemester_model', 'StudiensemesterModel'); - $this->load->model('organisation/studienplan_model', 'StudiengangModel'); + $this->load->model('organisation/studiengang_model', 'StudiengangModel'); $studiengang_kz_arr = array(); $ausbildungssemester_arr = array(); diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index 71b4d3738..300e13805 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -36,7 +36,7 @@ class Studiensemester_model extends DB_Model * getNextOrAktSemester * 62 days - in july and august, semester after summer is returned */ - public function getNextOrAktSemester($days = 62) + public function getAktOrNextSemester($days = 62) { if (!is_numeric($days)) { @@ -45,7 +45,7 @@ class Studiensemester_model extends DB_Model $query = 'SELECT studiensemester_kurzbz FROM public.tbl_studiensemester - WHERE start < (NOW() + \'' . $days . ' DAYS\':: INTERVAL) + WHERE start < NOW() + \'' . $days . ' DAYS\':: INTERVAL ORDER BY start DESC LIMIT 1'; From 56340e992f571a478f92bb12cf81af8161c66545 Mon Sep 17 00:00:00 2001 From: Paolo Date: Fri, 24 Aug 2018 12:12:11 +0200 Subject: [PATCH 07/11] - Added constat CI_ENVIRONMENT to config/vilesci.config-default.inc.php - Changed index.ci.php to use CI_ENVIRONMENT to set the environment variable CI_ENV --- config/vilesci.config-default.inc.php | 3 +++ index.ci.php | 13 ++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/config/vilesci.config-default.inc.php b/config/vilesci.config-default.inc.php index 049109471..7cfff8938 100644 --- a/config/vilesci.config-default.inc.php +++ b/config/vilesci.config-default.inc.php @@ -197,4 +197,7 @@ define('DVB_PORTAL', 'https://stubei-p.portal.at'); define('DVB_USERNAME','username'); // Passwort define('DVB_PASSWORD','passwort'); + +define('CI_ENVIRONMENT', 'development'); // Code igniter environment variable + ?> diff --git a/index.ci.php b/index.ci.php index 5514d9450..ad946373a 100644 --- a/index.ci.php +++ b/index.ci.php @@ -55,6 +55,14 @@ * */ +// Loads FHC config files +require_once 'config/global.config.inc.php'; +require_once 'config/vilesci.config.inc.php'; + +// Check if the CI_ENVIRONMENT constants is set and eventually use it to set the CI_ENV environment variable +if (defined('CI_ENVIRONMENT')) $_SERVER['CI_ENV'] = CI_ENVIRONMENT; + +// If the CI_ENV environment variable is not set then use "development" as default define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development'); /* @@ -65,7 +73,6 @@ define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'developm * Different environments will require different levels of error reporting. * By default development will show errors but testing and live will hide them. */ - switch (ENVIRONMENT) { case 'development': @@ -299,10 +306,6 @@ switch (ENVIRONMENT) * */ -// First load the FHC-Config-Files ... -require_once 'config/global.config.inc.php'; -require_once 'config/vilesci.config.inc.php'; - // ... and the vendor autoload include_once 'vendor/autoload.php'; From 5e00044b56fa4d341826b14b7a9cba10b7af7c01 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 24 Aug 2018 17:57:07 +0200 Subject: [PATCH 08/11] added function for retrieving Benutzerfunktionen by oe and Funktion --- .../models/person/Benutzerfunktion_model.php | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php index e75540d92..c86222d22 100644 --- a/application/models/person/Benutzerfunktion_model.php +++ b/application/models/person/Benutzerfunktion_model.php @@ -22,4 +22,32 @@ class Benutzerfunktion_model extends DB_Model return $this->loadWhere(array('person_id' => $person_id)); } -} \ No newline at end of file + + /** + * Gets all Benutzer for a given OE and specified Benutzerfunktionen + * @param $oe_kurzbz + * @param $funktion_kurzbz string with one benutzerfunktionname or array with one or more + * @return array|null + */ + public function getByOeAndFunktion($oe_kurzbz, $funktion_kurzbz) + { + $query = "SELECT * FROM public.tbl_benutzerfunktion + WHERE oe_kurzbz = ? + %s"; + + if (is_string($funktion_kurzbz)) + { + $query = sprintf($query, " AND funktion_kurzbz = ".$funktion_kurzbz.")"); + } + elseif (is_array($funktion_kurzbz) && count($funktion_kurzbz) > 0) + { + $funktionstr = "'".implode("', '", $funktion_kurzbz)."'"; + $query = sprintf($query, " AND funktion_kurzbz IN (".$funktionstr.")"); + } + + $query .= " AND (datum_von <= NOW() OR datum_von IS NULL) AND (datum_bis >= NOW() OR datum_bis IS NULL)"; + $query .= " ORDER BY funktion_kurzbz, uid"; + + return $this->execQuery($query, array($oe_kurzbz)); + } +} From 1a675a99392a45c82bfd535c6cd7693a18013df1 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 27 Aug 2018 18:25:12 +0200 Subject: [PATCH 09/11] renamed and improved method for getting benutzerfunktionen --- .../models/person/Benutzerfunktion_model.php | 41 +++++++++++++++---- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php index c86222d22..6a15df107 100644 --- a/application/models/person/Benutzerfunktion_model.php +++ b/application/models/person/Benutzerfunktion_model.php @@ -29,25 +29,48 @@ class Benutzerfunktion_model extends DB_Model * @param $funktion_kurzbz string with one benutzerfunktionname or array with one or more * @return array|null */ - public function getByOeAndFunktion($oe_kurzbz, $funktion_kurzbz) + public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz = null, $activeoeonly = false, $activebenonly = false) { - $query = "SELECT * FROM public.tbl_benutzerfunktion - WHERE oe_kurzbz = ? - %s"; + $parametersArray = array(); + + $query = "SELECT * FROM public.tbl_benutzerfunktion"; + + if ($activeoeonly === true) + $query .= " JOIN public.tbl_organisationseinheit USING(oe_kurzbz)"; + + if ($activebenonly === true) + $query .= " JOIN public.tbl_benutzer USING(uid)"; + + $query .= "WHERE (datum_von <= NOW() OR datum_von IS NULL) AND (datum_bis >= NOW() OR datum_bis IS NULL)"; if (is_string($funktion_kurzbz)) { - $query = sprintf($query, " AND funktion_kurzbz = ".$funktion_kurzbz.")"); + $query .= " AND funktion_kurzbz = ".$funktion_kurzbz.")"; } elseif (is_array($funktion_kurzbz) && count($funktion_kurzbz) > 0) { $funktionstr = "'".implode("', '", $funktion_kurzbz)."'"; - $query = sprintf($query, " AND funktion_kurzbz IN (".$funktionstr.")"); + $query .= " AND funktion_kurzbz IN (".$funktionstr.")"; } - $query .= " AND (datum_von <= NOW() OR datum_von IS NULL) AND (datum_bis >= NOW() OR datum_bis IS NULL)"; - $query .= " ORDER BY funktion_kurzbz, uid"; + if (is_string($oe_kurzbz)) + { + $query .= " AND tbl_benutzerfunktion.oe_kurzbz = ?"; + $parametersArray[] = $oe_kurzbz; + } - return $this->execQuery($query, array($oe_kurzbz)); + if ($activebenonly === true) + { + $query .= " AND tbl_benutzer.aktiv"; + } + + if ($activeoeonly === true) + { + $query .= " AND tbl_organisationseinheit.aktiv"; + } + + $query .= " ORDER BY funktion_kurzbz, oe_kurzbz, uid"; + + return $this->execQuery($query, $parametersArray); } } From 588c6e5de5898fa9e3e1914fec62960802096b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 28 Aug 2018 09:55:17 +0200 Subject: [PATCH 10/11] DMS Upload Permissions moved to Class --- content/akteupload.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/content/akteupload.php b/content/akteupload.php index 729454046..d29be6670 100644 --- a/content/akteupload.php +++ b/content/akteupload.php @@ -60,12 +60,8 @@ if(isset($_POST['submitbild'])) if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) { - if(!chgrp($uploadfile,'dms')) - echo 'CHGRP failed'; - if(!chmod($uploadfile, 0774)) - echo 'CHMOD failed'; - $dms = new dms(); + $dms->setPermission($uploadfile); $dms->version='0'; $dms->kategorie_kurzbz=$kategorie_kurzbz; From 9fbb7f78a68fb774d50cdb77918c72e8988e908f Mon Sep 17 00:00:00 2001 From: Nikolaus Krondraf Date: Wed, 29 Aug 2018 09:31:16 +0200 Subject: [PATCH 11/11] add kurzbzlang of Studiengang to student array --- cis/private/lehre/anwesenheitsliste.pdf.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cis/private/lehre/anwesenheitsliste.pdf.php b/cis/private/lehre/anwesenheitsliste.pdf.php index 80d823a4f..eef40ff3f 100644 --- a/cis/private/lehre/anwesenheitsliste.pdf.php +++ b/cis/private/lehre/anwesenheitsliste.pdf.php @@ -166,7 +166,7 @@ $qry = 'SELECT tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student, - tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr + tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang FROM campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid) @@ -174,6 +174,7 @@ $qry = 'SELECT LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz) LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz) LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid) + LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz) WHERE vw_student_lehrveranstaltung.lehrveranstaltung_id='.$db->db_add_param($lvid, FHC_INTEGER).' AND vw_student_lehrveranstaltung.studiensemester_kurzbz='.$db->db_add_param($studiensemester); @@ -229,7 +230,8 @@ if($result = $db->db_query($qry)) 'semester'=>$row->semester, 'verband'=>trim($row->verband), 'gruppe'=>trim($row->gruppe), - 'zusatz'=>$zusatz + 'zusatz'=>$zusatz, + 'studiengang_kurzbz'=>$row->kurzbzlang )); } }