From c649bf3fbe24a04180ff1a3207de60934bd4a06d Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 8 Apr 2019 13:26:33 +0200 Subject: [PATCH 01/18] Fixed double basic gebiet-entries in Reihungstest This issue popped up when basic gebiete of many Bachelor studies could not be merged (with unique gebiete) due to different reihung. This is fixed now. --- cis/testtool/menu.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cis/testtool/menu.php b/cis/testtool/menu.php index ed63324a3..cb1feb67e 100644 --- a/cis/testtool/menu.php +++ b/cis/testtool/menu.php @@ -193,7 +193,8 @@ if (isset($_SESSION['pruefling_id'])) ) - SELECT DISTINCT + SELECT DISTINCT ON + (gebiet_id, semester) semester, gebiet_id, bezeichnung, @@ -252,6 +253,7 @@ if (isset($_SESSION['pruefling_id'])) ORDER BY semester, + gebiet_id, reihung "; From ecadec9280adc9d8e671a6e55febc7ad84eaefef Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 8 Apr 2019 17:21:38 +0200 Subject: [PATCH 02/18] =?UTF-8?q?Changes=20in=20Models:=20-=20education/Le?= =?UTF-8?q?hreinheit=5Fmodel=20getLesForLv:=20studiengang=5Fkz=20and=20stu?= =?UTF-8?q?diengang=5Fkuerzel=20of=20lehreinheitgruppen=20is=20also=20retr?= =?UTF-8?q?ieved=20-=20education/Lehrveranstaltung=5Fmodel=20getLvsWithInc?= =?UTF-8?q?omingPlaces:=20=20=20=20--=20Retrieving=20not=20by=20Studienord?= =?UTF-8?q?nung=20G=C3=BCltigkeit,=20but=20by=20tbl=5Fstudienplan=5Fsemest?= =?UTF-8?q?er=20=20=20=20--=20retrieving=20lvs=20of=20studiengang=20ECI=20?= =?UTF-8?q?Campus=20International?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/education/Lehreinheit_model.php | 24 +++++-- .../education/Lehrveranstaltung_model.php | 68 +++++++++++-------- 2 files changed, 55 insertions(+), 37 deletions(-) diff --git a/application/models/education/Lehreinheit_model.php b/application/models/education/Lehreinheit_model.php index 737d482f8..7dba40153 100644 --- a/application/models/education/Lehreinheit_model.php +++ b/application/models/education/Lehreinheit_model.php @@ -14,6 +14,7 @@ class Lehreinheit_model extends DB_Model $this->load->model('education/lehrveranstaltung_model', 'LehrveranstaltungModel'); $this->load->model('education/lehreinheitgruppe_model', 'LehreinheitgruppeModel'); $this->load->model('education/lehreinheitmitarbeiter_model', 'LehreinheitmitarbeiterModel'); + $this->load->model('organisation/studiengang_model', 'StudiengangModel'); } /** @@ -57,13 +58,22 @@ class Lehreinheit_model extends DB_Model { foreach ($lehreinheitgruppen->retval as $lehreinheitgruppe) { - $letoadd->lehreinheitgruppen[] = array( - 'semester' => $lehreinheitgruppe->semester, - 'verband' => $lehreinheitgruppe->verband, - 'gruppe' => $lehreinheitgruppe->gruppe, - 'gruppe_kurzbz' => $lehreinheitgruppe->gruppe_kurzbz, - 'direktinskription' => $lehreinheitgruppe->direktinskription - ); + $studiengangresponse = $this->StudiengangModel->load($lehreinheitgruppe->studiengang_kz); + if (hasData($studiengangresponse)) + { + $studiengang = $studiengangresponse->retval[0]; + $stgkuerzel = mb_strtoupper($studiengang->typ . $studiengang->kurzbz); + + $letoadd->lehreinheitgruppen[] = array( + 'semester' => $lehreinheitgruppe->semester, + 'verband' => $lehreinheitgruppe->verband, + 'gruppe' => $lehreinheitgruppe->gruppe, + 'gruppe_kurzbz' => $lehreinheitgruppe->gruppe_kurzbz, + 'direktinskription' => $lehreinheitgruppe->direktinskription, + 'studiengang_kz' => $lehreinheitgruppe->studiengang_kz, + 'studiengang_kuerzel' => $stgkuerzel + ); + } } } diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index c7455f62e..6813773f3 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -208,11 +208,11 @@ class Lehrveranstaltung_model extends DB_Model * Gets valid Lehrveranstaltungen with incoming places for a Studiensemester. * Only * 1. Lvs with incoming places > 0 - * 2. Studienordnung valid in current semester or with Lehrauftrag (i.e. assigned Lehreinheit) + * 2. Studienplan valid in current semester or with Lehrauftrag (i.e. assigned Lehreinheit) * @param $studiensemester_kurzbz * @return object */ - public function getLvsWithIncomings($studiensemester_kurzbz) + public function getLvsWithIncomingPlaces($studiensemester_kurzbz) { $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); @@ -221,36 +221,44 @@ class Lehrveranstaltung_model extends DB_Model if (!hasData($studsemres)) return success(array()); - $semstart = $studsemres->retval[0]->start; - $semende = $studsemres->retval[0]->ende; - - $parametersarray = array($studiensemester_kurzbz, $studsemres->retval[0]->studienjahr_kurzbz, $semstart, $semende, $studiensemester_kurzbz); + $parametersarray = array($studiensemester_kurzbz, $studsemres->retval[0]->studienjahr_kurzbz, $studiensemester_kurzbz, $studiensemester_kurzbz); $query = " - SELECT lv.*, ? AS studiensemester_kurzbz, ? AS studienjahr_kurzbz, UPPER(stg.typ::varchar(1) || stg.kurzbz) AS studiengang_kuerzel, - stg.bezeichnung AS studiengang_bezeichnung, stg.english AS studiengang_bezeichnung_english, stg.typ, tbl_sprache.locale - FROM lehre.tbl_lehrveranstaltung lv - JOIN public.tbl_studiengang stg ON lv.studiengang_kz = stg.studiengang_kz - JOIN public.tbl_sprache ON lv.sprache = tbl_sprache.sprache - WHERE lv.lehrtyp_kurzbz != 'modul' - AND ( - EXISTS - ( - SELECT 1 FROM - lehre.tbl_studienplan_lehrveranstaltung - JOIN lehre.tbl_studienplan ON tbl_studienplan_lehrveranstaltung.studienplan_id = tbl_studienplan.studienplan_id - JOIN lehre.tbl_studienordnung ON tbl_studienordnung.studienordnung_id = tbl_studienplan.studienordnung_id - JOIN public.tbl_studiensemester semvon ON lehre.tbl_studienordnung.gueltigvon = semvon.studiensemester_kurzbz OR lehre.tbl_studienordnung.gueltigvon IS NULL - JOIN public.tbl_studiensemester sembis ON lehre.tbl_studienordnung.gueltigbis = sembis.studiensemester_kurzbz OR lehre.tbl_studienordnung.gueltigbis IS NULL - WHERE tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id = lv.lehrveranstaltung_id - AND (?::date >= semvon.start OR semvon.start IS NULL) AND (?::date <= sembis.ende OR sembis.ende IS NULL) - ) - OR EXISTS (SELECT 1 FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id = lv.lehrveranstaltung_id AND studiensemester_kurzbz = ?) - ) - AND lv.incoming > 0 - AND lv.aktiv - AND stg.typ IN ('b', 'm') - ORDER BY studiengang_kuerzel, orgform_kurzbz, lv.bezeichnung, lv.lehrform_kurzbz, lv.lehrveranstaltung_id + SELECT * FROM ( + SELECT DISTINCT ON (lv.lehrveranstaltung_id) lv.lehrveranstaltung_id, lv.bezeichnung AS lv_bezeichnung, lv.kurzbz AS lv_kurzbz, lv.sprache, lv.ects, lv.lehre, + lv.lehreverzeichnis, lv.sws, lv.lvs, lv.alvs, lv.lvps, lv.las, lv.incoming, lv.lehrform_kurzbz, lv.orgform_kurzbz AS lv_orgform, lv.semester, + ? AS studiensemester_kurzbz, ? AS studienjahr_kurzbz, UPPER(stg.typ::VARCHAR(1) || stg.kurzbz) AS studiengang_kuerzel, + stg.bezeichnung AS studiengang_bezeichnung, stg.english AS studiengang_bezeichnung_english, stg.typ, stg.orgform_kurzbz AS studiengang_orgform, + tbl_sprache.locale, CASE WHEN lv.orgform_kurzbz NOTNULL THEN lv.orgform_kurzbz ELSE stg.orgform_kurzbz END AS orgform_kurzbz + FROM lehre.tbl_lehrveranstaltung lv + JOIN public.tbl_studiengang stg ON lv.studiengang_kz = stg.studiengang_kz + JOIN public.tbl_sprache ON lv.sprache = tbl_sprache.sprache + WHERE lv.lehrtyp_kurzbz != 'modul' + AND ( + EXISTS + ( + WITH gueltige_studienplaene AS ( + SELECT studienplan_id, semester + FROM lehre.tbl_studienplan + JOIN lehre.tbl_studienplan_semester USING(studienplan_id) + WHERE tbl_studienplan.aktiv + AND lehre.tbl_studienplan_semester.studiensemester_kurzbz = ? + ) + SELECT 1 + FROM lehre.tbl_studienplan_lehrveranstaltung + WHERE tbl_studienplan_lehrveranstaltung.studienplan_id IN (SELECT studienplan_id FROM gueltige_studienplaene) + AND tbl_studienplan_lehrveranstaltung.semester IN + (SELECT semester FROM gueltige_studienplaene + WHERE gueltige_studienplaene.studienplan_id = tbl_studienplan_lehrveranstaltung.studienplan_id) + AND tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id = lv.lehrveranstaltung_id + ) + OR EXISTS (SELECT 1 FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id = lv.lehrveranstaltung_id AND studiensemester_kurzbz = ?) + ) + AND lv.incoming > 0 + AND lv.aktiv + AND (stg.typ IN ('b', 'm') OR stg.studiengang_kz = 10006)-- ECI Studiengang Campus International + ) lvs + ORDER BY studiengang_kuerzel, orgform_kurzbz, lv_bezeichnung, lehrform_kurzbz, lehrveranstaltung_id; "; return $this->execQuery($query, $parametersarray); From d5dfcae134be7bf088e45d8177e184e6479fc8d0 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 9 Apr 2019 14:27:28 +0200 Subject: [PATCH 03/18] Added function getAllProjects to projectbetreuer class This function retrieves all projektarbeiten by person. (Only with stundensatz > 0) --- include/projektbetreuer.class.php | 732 ++++++++++++++++-------------- 1 file changed, 395 insertions(+), 337 deletions(-) diff --git a/include/projektbetreuer.class.php b/include/projektbetreuer.class.php index 72dcffe8f..e962b2d0a 100644 --- a/include/projektbetreuer.class.php +++ b/include/projektbetreuer.class.php @@ -1,337 +1,395 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -/** - * Klasse projektbetreuer - * @create 08-02-2007 - */ -require_once(dirname(__FILE__).'/basis_db.class.php'); - -class projektbetreuer extends basis_db -{ - public $new; // boolean - public $result = array(); // adresse Objekt - - //Tabellenspalten - public $person_id; // integer - public $projektarbeit_id; // integer - public $note; // integer - public $betreuerart_kurzbz;// varchar - public $faktor; // numeric(3,2) - public $name; // string - public $punkte; // numeric(6,2) - public $stunden; // numeric(8,4) - public $stundensatz; // numeric(6,2) - public $ext_id; // integer - public $insertamum; // timestamp - public $insertvon; // bigint - public $updateamum; // timestamp - public $updatevon; // bigint - public $vertrag_id; // bigint - - public $person_id_old; - - /** - * Konstruktor - * @param $person_id, $projektarbeit ID des Projektbetreuers, der geladen werden soll (Default=null) - */ - public function __construct($person_id=null, $projektarbeit_id=null) - { - parent::__construct(); - - if($projektarbeit_id != null && $person_id!=null) - $this->load($person_id, $projektarbeit_id); - } - - /** - * Laedt die Funktion mit der ID $person_id, $projektarbeit_id - * @param $person_id ID der zu ladenden Funktion - * @param $projektarbeit_id ID der zu ladenden Funktion - * @return true wenn ok, false im Fehlerfall - */ - public function load($person_id, $projektarbeit_id, $betreuerart_kurzbz) - { - if(!is_numeric($person_id)) - { - $this->errormsg = 'Person_id muss eine gueltige Zahl sein'; - return false; - } - - if(!is_numeric($projektarbeit_id)) - { - $this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein'; - return false; - } - - $qry = "SELECT - * - FROM - lehre.tbl_projektbetreuer - WHERE - person_id=".$this->db_add_param($person_id, FHC_INTEGER)." - AND projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." - AND betreuerart_kurzbz=".$this->db_add_param($betreuerart_kurzbz); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->person_id = $row->person_id; - $this->projektarbeit_id = $row->projektarbeit_id; - $this->note = $row->note; - $this->betreuerart_kurzbz = $row->betreuerart_kurzbz; - $this->faktor = $row->faktor; - $this->name = $row->name; - $this->punkte = $row->punkte; - $this->stunden = $row->stunden; - $this->stundensatz = $row->stundensatz; - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->ext_id = $row->ext_id; - $this->vertrag_id = $row->vertrag_id; - $this->new=false; - return true; - } - else - { - $this->errormsg = 'Datensatz wurde nicht gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Prueft die Variablen auf Gueltigkeit - * @return true wenn ok, false im Fehlerfall - */ - protected function validate() - { - if($this->betreuerart_kurzbz=='') - { - $this->errormsg = 'Betreuerart muss eingegeben werden'; - return false; - } - if(mb_strlen($this->betreuerart_kurzbz)>16) - { - $this->errormsg = 'betreuerart darf nicht länger als 16 Zeichen sein'; - return false; - } - if(mb_strlen($this->name)>32) - { - $this->errormsg = 'Name darf nicht länger als 32 Zeichen sein'; - return false; - } - - if($this->note!='' && !is_numeric($this->note)) - { - $this->errormsg = 'Note muss ein numerischer Wert sein'; - return false; - } - if($this->punkte!='' && !is_numeric($this->punkte)) - { - $this->errormsg = 'Punkte muss ein numerischer Wert sein'; - } - if($this->faktor!='' && !is_numeric($this->faktor)) - { - $this->errormsg = 'Faktor muss ein numerischer Wert sein'; - return false; - } - if($this->stundensatz!='' && !is_numeric($this->stundensatz)) - { - $this->errormsg = 'Stundensatz muss ein numerischer Wert sein'; - return false; - } - - //Pruefen ob projektarbeit_id eine gueltige Zahl ist - if(!is_numeric($this->projektarbeit_id)) - { - $this->errormsg = 'projektarbeit_id muss eine gueltige Zahl sein'; - return false; - } - - //Pruefen ob person_id eine gueltige Zahl ist - if(!is_numeric($this->person_id)) - { - $this->errormsg = 'person_id muss eine gueltige Zahl sein'; - return false; - } - $this->errormsg = ''; - return true; - } - - /** - * Speichert den aktuellen Datensatz in die Datenbank - * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt - * andernfalls wird der Datensatz aktualisiert - * @return true wenn ok, false im Fehlerfall - */ - public function save($new=null) - { - if($new==null) - $new = $this->new; - - //Variablen pruefen - if(!$this->validate()) - return false; - - if($new) - { - //Neuen Datensatz einfuegen - $qry='INSERT INTO lehre.tbl_projektbetreuer (person_id, projektarbeit_id, note, betreuerart_kurzbz, faktor, name, - punkte, stunden, stundensatz, insertamum, insertvon, updateamum, updatevon, vertrag_id) VALUES('. - $this->db_add_param($this->person_id).', '. - $this->db_add_param($this->projektarbeit_id).', '. - $this->db_add_param($this->note).', '. - $this->db_add_param($this->betreuerart_kurzbz).', '. - $this->db_add_param($this->faktor).', '. - $this->db_add_param($this->name).', '. - $this->db_add_param($this->punkte).', '. - $this->db_add_param($this->stunden).', '. - $this->db_add_param($this->stundensatz).', now(), '. - $this->db_add_param($this->insertvon).', now(), '. - $this->db_add_param($this->updatevon).', '. - $this->db_add_param($this->vertrag_id).');'; - } - else - { - //Updaten des bestehenden Datensatzes - if($this->person_id_old=='') - $this->person_id_old = $this->person_id; - - if(!isset($this->betreuerart_kurzbz_old) || $this->betreuerart_kurzbz_old=='') - $this->betreuerart_kurzbz_old = $this->betreuerart_kurzbz; - - $qry='UPDATE lehre.tbl_projektbetreuer SET '. - 'person_id='.$this->db_add_param($this->person_id).', '. - 'note='.$this->db_add_param($this->note).', '. - 'betreuerart_kurzbz='.$this->db_add_param($this->betreuerart_kurzbz).', '. - 'faktor='.$this->db_add_param($this->faktor).', '. - 'name='.$this->db_add_param($this->name).', '. - 'punkte='.$this->db_add_param($this->punkte).', '. - 'stunden='.$this->db_add_param($this->stunden).', '. - 'stundensatz='.$this->db_add_param($this->stundensatz).', '. - 'updateamum='.$this->db_add_param($this->updateamum).', '. - 'updatevon='.$this->db_add_param($this->updatevon).', '. - 'vertrag_id='.$this->db_add_param($this->vertrag_id).' '. - "WHERE projektarbeit_id=".$this->db_add_param($this->projektarbeit_id, FHC_INTEGER,false). - " AND person_id=".$this->db_add_param($this->person_id_old, FHC_INTEGER,false). - " AND betreuerart_kurzbz=".$this->db_add_param($this->betreuerart_kurzbz_old).";"; - } - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der Daten'; - return false; - } - } - - /** - * Loescht den Datenensatz mit der ID die uebergeben wird - * @param $person_id ID die geloescht werden soll - * @param $projektarbeit_id ID die geloescht werden soll - * @return true wenn ok, false im Fehlerfall - */ - public function delete($person_id, $projektarbeit_id, $betreuerart_kurzbz) - { - if(!is_numeric($person_id)) - { - $this->errormsg = 'Person_id muss eine gueltige Zahl sein'; - return false; - } - - if(!is_numeric($projektarbeit_id)) - { - $this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein'; - return false; - } - - $qry = "DELETE FROM lehre.tbl_projektbetreuer WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER)." AND projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." AND betreuerart_kurzbz=".$this->db_add_param($betreuerart_kurzbz).";"; - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Loeschen des Datensatzes'; - return false; - } - } - - /** - * Liefert alle Betreuer zu einer Projektarbeit - * @param projektarbeit_id - */ - public function getProjektbetreuer($projektarbeit_id) - { - if(!is_numeric($projektarbeit_id)) - { - $this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein'; - return false; - } - - $qry = "SELECT * FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." ORDER BY name"; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $obj = new projektbetreuer(); - - $obj->person_id = $row->person_id; - $obj->projektarbeit_id = $row->projektarbeit_id; - $obj->note = $row->note; - $obj->betreuerart_kurzbz = $row->betreuerart_kurzbz; - $obj->faktor = $row->faktor; - $obj->name = $row->name; - $obj->punkte = $row->punkte; - $obj->stunden = $row->stunden; - $obj->stundensatz = $row->stundensatz; - $obj->updateamum = $row->updateamum; - $obj->updatevon = $row->updatevon; - $obj->insertamum = $row->insertamum; - $obj->insertvon = $row->insertvon; - $obj->ext_id = $row->ext_id; - $obj->vertrag_id = $row->vertrag_id; - - $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler bei einer Abfrage'; - return false; - } - } -} -?> +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Klasse projektbetreuer + * @create 08-02-2007 + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class projektbetreuer extends basis_db +{ + public $new; // boolean + public $result = array(); // adresse Objekt + + //Tabellenspalten + public $person_id; // integer + public $projektarbeit_id; // integer + public $note; // integer + public $betreuerart_kurzbz;// varchar + public $faktor; // numeric(3,2) + public $name; // string + public $punkte; // numeric(6,2) + public $stunden; // numeric(8,4) + public $stundensatz; // numeric(6,2) + public $ext_id; // integer + public $insertamum; // timestamp + public $insertvon; // bigint + public $updateamum; // timestamp + public $updatevon; // bigint + public $vertrag_id; // bigint + + public $person_id_old; + + /** + * Konstruktor + * @param $person_id, $projektarbeit ID des Projektbetreuers, der geladen werden soll (Default=null) + */ + public function __construct($person_id=null, $projektarbeit_id=null) + { + parent::__construct(); + + if($projektarbeit_id != null && $person_id!=null) + $this->load($person_id, $projektarbeit_id); + } + + /** + * Laedt die Funktion mit der ID $person_id, $projektarbeit_id + * @param $person_id ID der zu ladenden Funktion + * @param $projektarbeit_id ID der zu ladenden Funktion + * @return true wenn ok, false im Fehlerfall + */ + public function load($person_id, $projektarbeit_id, $betreuerart_kurzbz) + { + if(!is_numeric($person_id)) + { + $this->errormsg = 'Person_id muss eine gueltige Zahl sein'; + return false; + } + + if(!is_numeric($projektarbeit_id)) + { + $this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT + * + FROM + lehre.tbl_projektbetreuer + WHERE + person_id=".$this->db_add_param($person_id, FHC_INTEGER)." + AND projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND betreuerart_kurzbz=".$this->db_add_param($betreuerart_kurzbz); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->person_id = $row->person_id; + $this->projektarbeit_id = $row->projektarbeit_id; + $this->note = $row->note; + $this->betreuerart_kurzbz = $row->betreuerart_kurzbz; + $this->faktor = $row->faktor; + $this->name = $row->name; + $this->punkte = $row->punkte; + $this->stunden = $row->stunden; + $this->stundensatz = $row->stundensatz; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->ext_id = $row->ext_id; + $this->vertrag_id = $row->vertrag_id; + $this->new=false; + return true; + } + else + { + $this->errormsg = 'Datensatz wurde nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Prueft die Variablen auf Gueltigkeit + * @return true wenn ok, false im Fehlerfall + */ + protected function validate() + { + if($this->betreuerart_kurzbz=='') + { + $this->errormsg = 'Betreuerart muss eingegeben werden'; + return false; + } + if(mb_strlen($this->betreuerart_kurzbz)>16) + { + $this->errormsg = 'betreuerart darf nicht länger als 16 Zeichen sein'; + return false; + } + if(mb_strlen($this->name)>32) + { + $this->errormsg = 'Name darf nicht länger als 32 Zeichen sein'; + return false; + } + + if($this->note!='' && !is_numeric($this->note)) + { + $this->errormsg = 'Note muss ein numerischer Wert sein'; + return false; + } + if($this->punkte!='' && !is_numeric($this->punkte)) + { + $this->errormsg = 'Punkte muss ein numerischer Wert sein'; + } + if($this->faktor!='' && !is_numeric($this->faktor)) + { + $this->errormsg = 'Faktor muss ein numerischer Wert sein'; + return false; + } + if($this->stundensatz!='' && !is_numeric($this->stundensatz)) + { + $this->errormsg = 'Stundensatz muss ein numerischer Wert sein'; + return false; + } + + //Pruefen ob projektarbeit_id eine gueltige Zahl ist + if(!is_numeric($this->projektarbeit_id)) + { + $this->errormsg = 'projektarbeit_id muss eine gueltige Zahl sein'; + return false; + } + + //Pruefen ob person_id eine gueltige Zahl ist + if(!is_numeric($this->person_id)) + { + $this->errormsg = 'person_id muss eine gueltige Zahl sein'; + return false; + } + $this->errormsg = ''; + return true; + } + + /** + * Speichert den aktuellen Datensatz in die Datenbank + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + public function save($new=null) + { + if($new==null) + $new = $this->new; + + //Variablen pruefen + if(!$this->validate()) + return false; + + if($new) + { + //Neuen Datensatz einfuegen + $qry='INSERT INTO lehre.tbl_projektbetreuer (person_id, projektarbeit_id, note, betreuerart_kurzbz, faktor, name, + punkte, stunden, stundensatz, insertamum, insertvon, updateamum, updatevon, vertrag_id) VALUES('. + $this->db_add_param($this->person_id).', '. + $this->db_add_param($this->projektarbeit_id).', '. + $this->db_add_param($this->note).', '. + $this->db_add_param($this->betreuerart_kurzbz).', '. + $this->db_add_param($this->faktor).', '. + $this->db_add_param($this->name).', '. + $this->db_add_param($this->punkte).', '. + $this->db_add_param($this->stunden).', '. + $this->db_add_param($this->stundensatz).', now(), '. + $this->db_add_param($this->insertvon).', now(), '. + $this->db_add_param($this->updatevon).', '. + $this->db_add_param($this->vertrag_id).');'; + } + else + { + //Updaten des bestehenden Datensatzes + if($this->person_id_old=='') + $this->person_id_old = $this->person_id; + + if(!isset($this->betreuerart_kurzbz_old) || $this->betreuerart_kurzbz_old=='') + $this->betreuerart_kurzbz_old = $this->betreuerart_kurzbz; + + $qry='UPDATE lehre.tbl_projektbetreuer SET '. + 'person_id='.$this->db_add_param($this->person_id).', '. + 'note='.$this->db_add_param($this->note).', '. + 'betreuerart_kurzbz='.$this->db_add_param($this->betreuerart_kurzbz).', '. + 'faktor='.$this->db_add_param($this->faktor).', '. + 'name='.$this->db_add_param($this->name).', '. + 'punkte='.$this->db_add_param($this->punkte).', '. + 'stunden='.$this->db_add_param($this->stunden).', '. + 'stundensatz='.$this->db_add_param($this->stundensatz).', '. + 'updateamum='.$this->db_add_param($this->updateamum).', '. + 'updatevon='.$this->db_add_param($this->updatevon).', '. + 'vertrag_id='.$this->db_add_param($this->vertrag_id).' '. + "WHERE projektarbeit_id=".$this->db_add_param($this->projektarbeit_id, FHC_INTEGER,false). + " AND person_id=".$this->db_add_param($this->person_id_old, FHC_INTEGER,false). + " AND betreuerart_kurzbz=".$this->db_add_param($this->betreuerart_kurzbz_old).";"; + } + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Loescht den Datenensatz mit der ID die uebergeben wird + * @param $person_id ID die geloescht werden soll + * @param $projektarbeit_id ID die geloescht werden soll + * @return true wenn ok, false im Fehlerfall + */ + public function delete($person_id, $projektarbeit_id, $betreuerart_kurzbz) + { + if(!is_numeric($person_id)) + { + $this->errormsg = 'Person_id muss eine gueltige Zahl sein'; + return false; + } + + if(!is_numeric($projektarbeit_id)) + { + $this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "DELETE FROM lehre.tbl_projektbetreuer WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER)." AND projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." AND betreuerart_kurzbz=".$this->db_add_param($betreuerart_kurzbz).";"; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Loeschen des Datensatzes'; + return false; + } + } + + /** + * Liefert alle Betreuer zu einer Projektarbeit + * @param projektarbeit_id + */ + public function getProjektbetreuer($projektarbeit_id) + { + if(!is_numeric($projektarbeit_id)) + { + $this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)." ORDER BY name"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new projektbetreuer(); + + $obj->person_id = $row->person_id; + $obj->projektarbeit_id = $row->projektarbeit_id; + $obj->note = $row->note; + $obj->betreuerart_kurzbz = $row->betreuerart_kurzbz; + $obj->faktor = $row->faktor; + $obj->name = $row->name; + $obj->punkte = $row->punkte; + $obj->stunden = $row->stunden; + $obj->stundensatz = $row->stundensatz; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->ext_id = $row->ext_id; + $obj->vertrag_id = $row->vertrag_id; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler bei einer Abfrage'; + return false; + } + } + + /** + * Retrieves all projektarbeiten by person (only with stundensatz > 0) + * @param $person_id + * @return boolean If succeeded true and result-array with objects of each projektarbeit of the person. + */ + public function getAllProjects($person_id) + { + if (isset($person_id) && is_numeric($person_id)) + { + $qry = ' + SELECT + * + FROM + lehre.tbl_projektbetreuer + WHERE + (stundensatz IS NOT NULL) AND (stundensatz > 0) + AND + person_id =' . $this->db_add_param($person_id, FHC_INTEGER); + + if ($this->db_query($qry)) + { + while ($row = $this->db_fetch_object()) + { + $obj = new projektbetreuer(); + + $obj->person_id = $row->person_id; + $obj->projektarbeit_id = $row->projektarbeit_id; + $obj->note = $row->note; + $obj->betreuerart_kurzbz = $row->betreuerart_kurzbz; + $obj->faktor = $row->faktor; + $obj->name = $row->name; + $obj->punkte = $row->punkte; + $obj->stunden = $row->stunden; + $obj->stundensatz = $row->stundensatz; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->ext_id = $row->ext_id; + $obj->vertrag_id = $row->vertrag_id; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler bei einer Abfrage'; + return false; + } + } + else + { + $this->errormsg = 'Person_id fehlt oder nicht numerisch.'; + return false; + } + } +} +?> From 5fc356cd4f67592f1c374da3c67e11fff2ecc6d3 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 9 Apr 2019 14:39:07 +0200 Subject: [PATCH 04/18] =?UTF-8?q?Added=20document=20Lehrt=C3=A4tigkeit=20B?= =?UTF-8?q?est=C3=A4tigung=20in=20FAS=20(only=20FHTW)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now a new document exists to confirm the lecture activities which include all the . lehreinheiten of the mitarbeiter AND . projektarbeiten of the mitarbeiter (betreuer,...) clustered by studiensemester. --- cis/private/lehre/lehrtaetigkeit.pdf.php | 281 +++++++++++++++++++++++ include/lehreinheitmitarbeiter.class.php | 2 +- 2 files changed, 282 insertions(+), 1 deletion(-) create mode 100644 cis/private/lehre/lehrtaetigkeit.pdf.php diff --git a/cis/private/lehre/lehrtaetigkeit.pdf.php b/cis/private/lehre/lehrtaetigkeit.pdf.php new file mode 100644 index 000000000..badce253c --- /dev/null +++ b/cis/private/lehre/lehrtaetigkeit.pdf.php @@ -0,0 +1,281 @@ +. + */ + +require_once('../../../config/cis.config.inc.php'); +require_once('../../../include/dokument_export.class.php'); +require_once('../../../include/functions.inc.php'); +require_once('../../../include/person.class.php'); +require_once('../../../include/lehreinheitmitarbeiter.class.php'); +require_once('../../../include/lehreinheit.class.php'); +require_once('../../../include/projektbetreuer.class.php'); +require_once('../../../include/projektarbeit.class.php'); +require_once('../../../include/bisverwendung.class.php'); +require_once('../../../include/studiensemester.class.php'); +require_once('../../../include/phrasen.class.php'); +require_once('../../../include/benutzerberechtigung.class.php'); + +$user = get_uid(); +$sprache = getSprache(); +$p = new phrasen($sprache); + +$doc = new dokument_export('Lehrtaetigkeit'); + + +if (!$db = new basis_db()) + die('Es konnte keine Verbindung zum Server aufgebaut werden.'); + +// Check permission +$berechtigung = new benutzerberechtigung(); +$berechtigung->getBerechtigungen($user); +if (!$berechtigung->isBerechtigt('admin') && + !$berechtigung->isBerechtigt('mitarbeiter')) + die('Sie muessen das Recht "ADMIN" oder "MITARBEITER" haben, um diese Seite aufrufen zu koennen'); + +// Get GET params +$uid = (isset($_GET['uid']) && is_string($_GET['uid'])) ? $_GET['uid'] : die($p->t('global/fehlerBeimErmittelnDerUID')); +$output = (isset($_GET['output']) && ($_GET['output'] == 'odt' || $_GET['output'] == 'doc')) ? $_GET['output'] : 'pdf'; + +// Personal data of lector +$person = new Person(); +$person->getPersonFromBenutzer($uid); +$person_id = $person->person_id; +$anrede = $person->anrede; +$fullname = $person->getFullName(); +$birthday_date = new DateTime($person->gebdatum); + +// Get the lectors lehreinheiten-semesterstunden per semester +$semesterstunden_per_semester = array(); +$le_ma = new Lehreinheitmitarbeiter(); + +// * get all semester of the lector where he was teaching actively +$active_semester_arr = $le_ma->getSemesterZuLektor($uid); +$active_semester_arr = array_keys($active_semester_arr); + +// * for each semester: +foreach($active_semester_arr as $active_semester) +{ + // * get all the lectors lehreinheiten + $le_id_arr = array(); + $le_array = $le_ma->getLehreinheiten($uid, $active_semester); + foreach($le_array as $le) + { + $le_id_arr[]= $le->lehreinheit_id; + } + + // * get total amount of semesterstunden of the lehreinheiten, where stundensatz > 0 + $total_semesterstunden = 0; + foreach ($le_id_arr as $le_id) + { + $le_ma = new Lehreinheitmitarbeiter($le_id, $uid); + if ($le_ma && (!is_null ($le_ma->stundensatz) && $le_ma->stundensatz > 0)) + { + $total_semesterstunden = $total_semesterstunden + $le_ma->semesterstunden; + } + } + + // * store term and total amount of semesterstunden + $semesterstunden_per_semester []= ( + array( + 'studiensemester_kurzbz'=> $active_semester, + 'total_semesterstunden' => $total_semesterstunden + ) + ); +} + +// Get the lectors projektarbeitstunden per semester +$projektstunden_per_semester = array(); +$pb = new Projektbetreuer(); +$pb->getAllProjects($person_id); +$project_arr = $pb->result; + +foreach ($project_arr as $project) +{ + $pa_id = $project->projektarbeit_id; + $projektstunden = $project->stunden; + + // * get studiensemester + $pa = new Projektarbeit($pa_id); + $le = new Lehreinheit($pa->lehreinheit_id); + $studiensemester_kurzbz = $le->studiensemester_kurzbz; + $ss = new Studiensemester($studiensemester_kurzbz); + $studiensemester_start_date = $ss->start; + + // Sum up semesterstunden by studiensemester + // * check if studiensemester already exists. If so, get array index. + $studiensemester_index = array_search($studiensemester_kurzbz, array_map(function($val) { + return $val['studiensemester_kurzbz']; + }, $projektstunden_per_semester + )); + + // * if studiensemester exists, sum up hours of projektarbeit, where stundensatz > 0 + if ($studiensemester_index !== false) + { + $projektstunden_per_semester [$studiensemester_index]['total_semesterstunden'] = $projektstunden_per_semester [$studiensemester_index]['total_semesterstunden'] + $projektstunden; + } + // * if not, create new index + else + { + $projektstunden_per_semester []= ( + array( + 'studiensemester_kurzbz'=> $studiensemester_kurzbz, + 'total_semesterstunden' => $projektstunden, + 'studiensemester_start_date' => $studiensemester_start_date // store start date to sort array by date afterwards + ) + ); + } +} + +// Sort projektstunden per semester by date +usort($projektstunden_per_semester, function($a, $b) +{ + return strtotime($a['studiensemester_start_date']) - strtotime($b['studiensemester_start_date']); +}); + +// Merge lehreinheit- and projektarbeitstunden arrays +foreach ($projektstunden_per_semester as $item) +{ + // check if studiensemester already exists in projektstunden-per-term-array. If so, get array index. + $studiensemester_index = array_search($item['studiensemester_kurzbz'], array_map(function($val) { + return $val['studiensemester_kurzbz']; + }, $semesterstunden_per_semester + )); + + // * if studiensemester exists, merge lehreinheit- and projektarbeit hours + if ($studiensemester_index !== false) + { + $semesterstunden_per_semester [$studiensemester_index]['total_semesterstunden'] = $semesterstunden_per_semester [$studiensemester_index]['total_semesterstunden'] + $item['total_semesterstunden']; + } + // * if not, create new index + else + { + $semesterstunden_per_semester []= ( + array( + 'studiensemester_kurzbz'=> $item['studiensemester_kurzbz'], + 'total_semesterstunden' => $item['total_semesterstunden'] + ) + ); + } +} + +// Split studiensemester array into actual studiensemester array and former studiensemester array +// * get actual studiensemester +$ss = new Studiensemester(); +$actual_studiensemester = $ss->getakt(); +$actual_studiensemester_index = array_search($actual_studiensemester, array_map(function($val) { + return $val['studiensemester_kurzbz']; +}, $semesterstunden_per_semester +)); +// * split former from actual studiensemester +$semesterstunden_of_actual_semester = array(); +if ($actual_studiensemester_index !== false) +{ + $semesterstunden_of_actual_semester = array_slice($semesterstunden_per_semester, $actual_studiensemester_index); // array with actual + future semester + $semesterstunden_of_actual_semester = array_pop($semesterstunden_of_actual_semester); // array with actual semester only + $semesterstunden_per_semester = array_slice($semesterstunden_per_semester, 0, $actual_studiensemester_index); // array with all former semester +} + +// Begin and ending date over all existing contracts +$verwendung = new Bisverwendung(); +$verwendung->getVerwendung($uid); +$verwendung_arr = $verwendung->result; + +// * begin date of first contract +$earliest_verwendung = current($verwendung_arr); +$begin_date = !is_null($earliest_verwendung->beginn) ? new DateTime($earliest_verwendung->beginn) : null; + +// * end date of last contract +$latest_verwendung = end($verwendung_arr); +$end_date = !is_null($latest_verwendung->ende) ? new DateTime($latest_verwendung->ende) : null; + +// Semester begin and ending date of lehreinheit- and projektarbeit studiensemester +// * begin date of first lehreinheit- and projektarbeit studiensemester +$earliest_ss = current($semesterstunden_per_semester)['studiensemester_kurzbz']; +$ss = new Studiensemester($earliest_ss); +$begin_date_ss = !is_null($ss->start) ? new DateTime($ss->start) : null; + +// * end date of last lehreinheit- and projektarbeit studiensemester +$latest_ss = !empty($semesterstunden_of_actual_semester) + ? end($semesterstunden_of_actual_semester)['studiensemester_kurzbz'] + : end($semesterstunden_per_semester)['studiensemester_kurzbz']; +$ss = new Studiensemester($latest_ss); +$end_date_ss = !is_null($ss->ende) ? new DateTime($ss->ende) : null; + +/** + * Reset begin and ending date if necessary + * Basically use contracts begin and ending date, but reset if lehrtaetigkeit is shorter. + * */ +// * if semester begin > begin date +If (!is_null($begin_date_ss) && ($begin_date_ss > $begin_date)) +{ + // * begin date = semester begin + $begin_date = clone $begin_date_ss; +} +// * if semester end < end date +If (!is_null($end_date_ss) && !is_null($end_date) && ($end_date_ss < $end_date)) +{ + // * end date = semester end + $end_date = clone $end_date_ss; +} + +$actual_date = new DateTime(); + +$data = array ( + 'anrede' => $anrede, + 'full_name' => $fullname, + 'birthday' => $birthday_date->format('d.m.Y'), + 'begin_date' => !is_null($begin_date) ? $begin_date->format('d.m.Y') : '', + 'end_date' => !is_null($end_date) ? $end_date->format('d.m.Y') : '', // empty, if lector is still employed + 'total_ss_actual_semester' => $semesterstunden_of_actual_semester, // empty, if lehrauftraege in the past only, + 'actual_date' => $actual_date->format('d.m.Y') +); + +if (!empty($semesterstunden_per_semester)) +{ + foreach ($semesterstunden_per_semester as $item) + { + $data[]= array('total_ss_per_semester'=> + array( + 'studiensemester_kurzbz'=> $item['studiensemester_kurzbz'], + 'total_semesterstunden' => $item['total_semesterstunden'] + ) + ); + } +} +else +{ + $data[]= array('total_ss_per_semester'=> ''); // empty if lector has no lehreinheit- or projektarbeitsstunden +} + + +//add data to lehrtaetigkeit.xsl +$doc->addDataArray($data, 'lehrtaetigkeit'); + +//set doc name +$doc->setFilename('Lehrtaetigkeit_'. rtrim($fullname, '.')); + +//create doc in format required +if (!$doc->create($output)) + die($doc->errormsg); + +//download doc +$doc->output(); + +//unlink doc from tmp-folder +$doc->close(); \ No newline at end of file diff --git a/include/lehreinheitmitarbeiter.class.php b/include/lehreinheitmitarbeiter.class.php index 85493cd9e..e1933cfa7 100644 --- a/include/lehreinheitmitarbeiter.class.php +++ b/include/lehreinheitmitarbeiter.class.php @@ -474,7 +474,7 @@ class lehreinheitmitarbeiter extends basis_db public function getLehreinheiten($mitarbeiter_uid, $studiensemester_kurzbz) { $qry = 'SELECT - DISTINCT lehreinheit_id, lv_bezeichnung, lv_kurzbz, unr, lv_lehrform_kurzbz, stg_kurzbzlang, + DISTINCT lehreinheit_id, lehrveranstaltung_id, lv_bezeichnung, lv_kurzbz, unr, lv_lehrform_kurzbz, stg_kurzbzlang, lv_semester, lehrform_kurzbz FROM campus.vw_lehreinheit From c7e757c76fe7f9b966ced4cb431a6cbc70979855 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 9 Apr 2019 14:39:07 +0200 Subject: [PATCH 05/18] =?UTF-8?q?Added=20document=20Lehrt=C3=A4tigkeit=20B?= =?UTF-8?q?est=C3=A4tigung=20in=20FAS=20(only=20FHTW)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now a new document exists to confirm the lecture activities which include all the . lehreinheiten of the mitarbeiter AND . projektarbeiten of the mitarbeiter (betreuer,...) clustered by studiensemester. --- cis/private/lehre/lehrtaetigkeit.pdf.php | 281 +++++++++++++++++++++++ include/lehreinheitmitarbeiter.class.php | 2 +- 2 files changed, 282 insertions(+), 1 deletion(-) create mode 100644 cis/private/lehre/lehrtaetigkeit.pdf.php diff --git a/cis/private/lehre/lehrtaetigkeit.pdf.php b/cis/private/lehre/lehrtaetigkeit.pdf.php new file mode 100644 index 000000000..3d2f4950a --- /dev/null +++ b/cis/private/lehre/lehrtaetigkeit.pdf.php @@ -0,0 +1,281 @@ +. + */ + +require_once('../../../config/cis.config.inc.php'); +require_once('../../../include/dokument_export.class.php'); +require_once('../../../include/functions.inc.php'); +require_once('../../../include/person.class.php'); +require_once('../../../include/lehreinheitmitarbeiter.class.php'); +require_once('../../../include/lehreinheit.class.php'); +require_once('../../../include/projektbetreuer.class.php'); +require_once('../../../include/projektarbeit.class.php'); +require_once('../../../include/bisverwendung.class.php'); +require_once('../../../include/studiensemester.class.php'); +require_once('../../../include/phrasen.class.php'); +require_once('../../../include/benutzerberechtigung.class.php'); + +$user = get_uid(); +$sprache = getSprache(); +$p = new phrasen($sprache); + +$doc = new dokument_export('Lehrtaetigkeit'); + + +if (!$db = new basis_db()) + die('Es konnte keine Verbindung zum Server aufgebaut werden.'); + +// Check permission +$berechtigung = new benutzerberechtigung(); +$berechtigung->getBerechtigungen($user); +if (!$berechtigung->isBerechtigt('admin') && + !$berechtigung->isBerechtigt('mitarbeiter')) + die('Sie muessen das Recht "ADMIN" oder "MITARBEITER" haben, um diese Seite aufrufen zu koennen'); + +// Get GET params +$uid = (isset($_GET['uid']) && is_string($_GET['uid'])) ? $_GET['uid'] : die($p->t('global/fehlerBeimErmittelnDerUID')); +$output = (isset($_GET['output']) && ($_GET['output'] == 'odt' || $_GET['output'] == 'doc')) ? $_GET['output'] : 'pdf'; + +// Personal data of lector +$person = new Person(); +$person->getPersonFromBenutzer($uid); +$person_id = $person->person_id; +$anrede = $person->anrede; +$fullname = $person->getFullName(); +$birthday_date = new DateTime($person->gebdatum); + +// Get the lectors lehreinheiten-semesterstunden per semester +$semesterstunden_per_semester = array(); +$le_ma = new Lehreinheitmitarbeiter(); + +// * get all semester of the lector where he was teaching actively +$active_semester_arr = $le_ma->getSemesterZuLektor($uid); +$active_semester_arr = array_keys($active_semester_arr); + +// * for each semester: +foreach($active_semester_arr as $active_semester) +{ + // * get all the lectors lehreinheiten + $le_id_arr = array(); + $le_array = $le_ma->getLehreinheiten($uid, $active_semester); + foreach($le_array as $le) + { + $le_id_arr[]= $le->lehreinheit_id; + } + + // * get total amount of semesterstunden of the lehreinheiten, where stundensatz > 0 + $total_semesterstunden = 0; + foreach ($le_id_arr as $le_id) + { + $le_ma = new Lehreinheitmitarbeiter($le_id, $uid); + if ($le_ma && (!is_null ($le_ma->stundensatz) && $le_ma->stundensatz > 0)) + { + $total_semesterstunden = $total_semesterstunden + $le_ma->semesterstunden; + } + } + + // * store term and total amount of semesterstunden + $semesterstunden_per_semester []= ( + array( + 'studiensemester_kurzbz'=> $active_semester, + 'total_semesterstunden' => $total_semesterstunden + ) + ); +} + +// Get the lectors projektarbeitstunden per semester +$projektstunden_per_semester = array(); +$pb = new Projektbetreuer(); +$pb->getAllProjects($person_id); +$project_arr = $pb->result; + +foreach ($project_arr as $project) +{ + $pa_id = $project->projektarbeit_id; + $projektstunden = $project->stunden; + + // * get studiensemester + $pa = new Projektarbeit($pa_id); + $le = new Lehreinheit($pa->lehreinheit_id); + $studiensemester_kurzbz = $le->studiensemester_kurzbz; + $ss = new Studiensemester($studiensemester_kurzbz); + $studiensemester_start_date = $ss->start; + + // Sum up semesterstunden by studiensemester + // * check if studiensemester already exists. If so, get array index. + $studiensemester_index = array_search($studiensemester_kurzbz, array_map(function($val) { + return $val['studiensemester_kurzbz']; + }, $projektstunden_per_semester + )); + + // * if studiensemester exists, sum up hours of projektarbeit, where stundensatz > 0 + if ($studiensemester_index !== false) + { + $projektstunden_per_semester [$studiensemester_index]['total_semesterstunden'] = $projektstunden_per_semester [$studiensemester_index]['total_semesterstunden'] + $projektstunden; + } + // * if not, create new index + else + { + $projektstunden_per_semester []= ( + array( + 'studiensemester_kurzbz'=> $studiensemester_kurzbz, + 'total_semesterstunden' => $projektstunden, + 'studiensemester_start_date' => $studiensemester_start_date // store start date to sort array by date afterwards + ) + ); + } +} + +// Sort projektstunden per semester by date +usort($projektstunden_per_semester, function($a, $b) +{ + return strtotime($a['studiensemester_start_date']) - strtotime($b['studiensemester_start_date']); +}); + +// Merge lehreinheit- and projektarbeitstunden arrays +foreach ($projektstunden_per_semester as $item) +{ + // check if studiensemester already exists in projektstunden-per-term-array. If so, get array index. + $studiensemester_index = array_search($item['studiensemester_kurzbz'], array_map(function($val) { + return $val['studiensemester_kurzbz']; + }, $semesterstunden_per_semester + )); + + // * if studiensemester exists, merge lehreinheit- and projektarbeit hours + if ($studiensemester_index !== false) + { + $semesterstunden_per_semester [$studiensemester_index]['total_semesterstunden'] = $semesterstunden_per_semester [$studiensemester_index]['total_semesterstunden'] + $item['total_semesterstunden']; + } + // * if not, create new index + else + { + $semesterstunden_per_semester []= ( + array( + 'studiensemester_kurzbz'=> $item['studiensemester_kurzbz'], + 'total_semesterstunden' => intval($item['total_semesterstunden']) + ) + ); + } +} + +// Split studiensemester array into actual studiensemester array and former studiensemester array +// * get actual studiensemester +$ss = new Studiensemester(); +$actual_studiensemester = $ss->getakt(); +$actual_studiensemester_index = array_search($actual_studiensemester, array_map(function($val) { + return $val['studiensemester_kurzbz']; +}, $semesterstunden_per_semester +)); +// * split former from actual studiensemester +$semesterstunden_of_actual_semester = array(); +if ($actual_studiensemester_index !== false) +{ + $semesterstunden_of_actual_semester = array_slice($semesterstunden_per_semester, $actual_studiensemester_index); // array with actual + future semester + $semesterstunden_of_actual_semester = array_pop($semesterstunden_of_actual_semester); // array with actual semester only + $semesterstunden_per_semester = array_slice($semesterstunden_per_semester, 0, $actual_studiensemester_index); // array with all former semester +} + +// Begin and ending date over all existing contracts +$verwendung = new Bisverwendung(); +$verwendung->getVerwendung($uid); +$verwendung_arr = $verwendung->result; + +// * begin date of first contract +$earliest_verwendung = current($verwendung_arr); +$begin_date = !is_null($earliest_verwendung->beginn) ? new DateTime($earliest_verwendung->beginn) : null; + +// * end date of last contract +$latest_verwendung = end($verwendung_arr); +$end_date = !is_null($latest_verwendung->ende) ? new DateTime($latest_verwendung->ende) : null; + +// Semester begin and ending date of lehreinheit- and projektarbeit studiensemester +// * begin date of first lehreinheit- and projektarbeit studiensemester +$earliest_ss = current($semesterstunden_per_semester)['studiensemester_kurzbz']; +$ss = new Studiensemester($earliest_ss); +$begin_date_ss = !is_null($ss->start) ? new DateTime($ss->start) : null; + +// * end date of last lehreinheit- and projektarbeit studiensemester +$latest_ss = !empty($semesterstunden_of_actual_semester) + ? end($semesterstunden_of_actual_semester)['studiensemester_kurzbz'] + : end($semesterstunden_per_semester)['studiensemester_kurzbz']; +$ss = new Studiensemester($latest_ss); +$end_date_ss = !is_null($ss->ende) ? new DateTime($ss->ende) : null; + +/** + * Reset begin and ending date if necessary + * Basically use contracts begin and ending date, but reset if lehrtaetigkeit is shorter. + * */ +// * if semester begin > begin date +If (!is_null($begin_date_ss) && ($begin_date_ss > $begin_date)) +{ + // * begin date = semester begin + $begin_date = clone $begin_date_ss; +} +// * if semester end < end date +If (!is_null($end_date_ss) && !is_null($end_date) && ($end_date_ss < $end_date)) +{ + // * end date = semester end + $end_date = clone $end_date_ss; +} + +$actual_date = new DateTime(); + +$data = array ( + 'anrede' => $anrede, + 'full_name' => $fullname, + 'birthday' => $birthday_date->format('d.m.Y'), + 'begin_date' => !is_null($begin_date) ? $begin_date->format('d.m.Y') : '', + 'end_date' => !is_null($end_date) ? $end_date->format('d.m.Y') : '', // empty, if lector is still employed + 'total_ss_actual_semester' => $semesterstunden_of_actual_semester, // empty, if lehrauftraege in the past only, + 'actual_date' => $actual_date->format('d.m.Y') +); + +if (!empty($semesterstunden_per_semester)) +{ + foreach ($semesterstunden_per_semester as $item) + { + $data[]= array('total_ss_per_semester'=> + array( + 'studiensemester_kurzbz'=> $item['studiensemester_kurzbz'], + 'total_semesterstunden' => $item['total_semesterstunden'] + ) + ); + } +} +else +{ + $data[]= array('total_ss_per_semester'=> ''); // empty if lector has no lehreinheit- or projektarbeitsstunden +} + +// Add data to lehrtaetigkeit.xsl +$doc->addDataArray($data, 'lehrtaetigkeit'); + +// Set doc name +$doc->setFilename('Lehrtaetigkeit_'. rtrim($fullname, '.')); + +// Create doc in format required +if (!$doc->create($output)) + die($doc->errormsg); + +// Download doc +$doc->output(); + +// unlink doc from tmp-folder +$doc->close(); + diff --git a/include/lehreinheitmitarbeiter.class.php b/include/lehreinheitmitarbeiter.class.php index 85493cd9e..e1933cfa7 100644 --- a/include/lehreinheitmitarbeiter.class.php +++ b/include/lehreinheitmitarbeiter.class.php @@ -474,7 +474,7 @@ class lehreinheitmitarbeiter extends basis_db public function getLehreinheiten($mitarbeiter_uid, $studiensemester_kurzbz) { $qry = 'SELECT - DISTINCT lehreinheit_id, lv_bezeichnung, lv_kurzbz, unr, lv_lehrform_kurzbz, stg_kurzbzlang, + DISTINCT lehreinheit_id, lehrveranstaltung_id, lv_bezeichnung, lv_kurzbz, unr, lv_lehrform_kurzbz, stg_kurzbzlang, lv_semester, lehrform_kurzbz FROM campus.vw_lehreinheit From 39177fb97f326bafb0cb66b609599de30becfa96 Mon Sep 17 00:00:00 2001 From: cris-technikum Date: Wed, 10 Apr 2019 10:53:43 +0200 Subject: [PATCH 06/18] Removed check for Reihungsteststufe 1/NULL in getReihungstestErgebnisPerson Removed check for Reihungsteststufe 1 in function getReihungstestErgebnisPerson. --- include/pruefling.class.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/pruefling.class.php b/include/pruefling.class.php index d0c5daf8d..999efc7f2 100644 --- a/include/pruefling.class.php +++ b/include/pruefling.class.php @@ -400,8 +400,6 @@ class pruefling extends basis_db tbl_rt_person.rt_id = ".$this->db_add_param($reihungstest_id, FHC_INTEGER)." AND tbl_prestudentstatus.status_kurzbz='Interessent' - AND - (tbl_reihungstest.stufe = 1 OR tbl_reihungstest.stufe IS NULL) ORDER BY tbl_reihungstest.datum desc LIMIT 1 ) From 86444d89cc0fd9085d80bc906a1c2c5ad5607cca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 10 Apr 2019 11:01:52 +0200 Subject: [PATCH 07/18] =?UTF-8?q?Bewerberstatistik=20-=20Legende=20hinzuge?= =?UTF-8?q?f=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/statistik/bewerberstatistik.php | 47 +++++++++++++------------ 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/content/statistik/bewerberstatistik.php b/content/statistik/bewerberstatistik.php index 252a565e5..ff61e92f4 100644 --- a/content/statistik/bewerberstatistik.php +++ b/content/statistik/bewerberstatistik.php @@ -1085,15 +1085,15 @@ if (isset($_GET['excel'])) $worksheet2->write($zeile, ++$i, $row->interessenten_w, $$format); if (strlen($row->interessenten_w) > $maxlength[$i]) $maxlength[$i] = mb_strlen($row->interessenten_w); - $worksheet2->write($zeile, ++$i, "k.A.", $$format); - if (strlen("k.A.") > $maxlength[$i]) - $maxlength[$i] = mb_strlen("k.A."); - $worksheet2->write($zeile, ++$i, "k.A.", $$format); - if (strlen("k.A.") > $maxlength[$i]) - $maxlength[$i] = mb_strlen("k.A."); - $worksheet2->write($zeile, ++$i, "k.A.", $$format); - if (strlen("k.A.") > $maxlength[$i]) - $maxlength[$i] = mb_strlen("k.A."); + $worksheet2->write($zeile, ++$i, "k.A.*", $$format); + if (strlen("k.A.*") > $maxlength[$i]) + $maxlength[$i] = mb_strlen("k.A.*"); + $worksheet2->write($zeile, ++$i, "k.A.*", $$format); + if (strlen("k.A.*") > $maxlength[$i]) + $maxlength[$i] = mb_strlen("k.A.*"); + $worksheet2->write($zeile, ++$i, "k.A.*", $$format); + if (strlen("k.A.*") > $maxlength[$i]) + $maxlength[$i] = mb_strlen("k.A.*"); $worksheet2->write($zeile, ++$i, $row->interessentenrtanmeldung, $$format); if (strlen($row->interessentenrtanmeldung) > $maxlength[$i]) $maxlength[$i] = mb_strlen($row->interessentenrtanmeldung); @@ -1188,15 +1188,15 @@ if (isset($_GET['excel'])) $worksheet2->write($zeile, ++$i, $interessenten_w_sum, $format_bold); if (strlen($interessenten_w_sum) > $maxlength[$i]) $maxlength[$i] = mb_strlen($interessenten_w_sum); - $worksheet2->write($zeile, ++$i, "k.A.", $format_bold); - if (strlen("k.A.") > $maxlength[$i]) - $maxlength[$i] = mb_strlen("k.A."); - $worksheet2->write($zeile, ++$i, "k.A.", $format_bold); - if (strlen("k.A.") > $maxlength[$i]) - $maxlength[$i] = mb_strlen("k.A."); - $worksheet2->write($zeile, ++$i, "k.A.", $format_bold); - if (strlen("k.A.") > $maxlength[$i]) - $maxlength[$i] = mb_strlen("k.A."); + $worksheet2->write($zeile, ++$i, "k.A.*", $format_bold); + if (strlen("k.A.*") > $maxlength[$i]) + $maxlength[$i] = mb_strlen("k.A.*"); + $worksheet2->write($zeile, ++$i, "k.A.*", $format_bold); + if (strlen("k.A.*") > $maxlength[$i]) + $maxlength[$i] = mb_strlen("k.A.*"); + $worksheet2->write($zeile, ++$i, "k.A.*", $format_bold); + if (strlen("k.A.*") > $maxlength[$i]) + $maxlength[$i] = mb_strlen("k.A.*"); $worksheet2->write($zeile, ++$i, $interessentenrtanmeldung_sum, $format_bold); if (strlen($interessentenrtanmeldung_sum) > $maxlength[$i]) $maxlength[$i] = mb_strlen($interessentenrtanmeldung_sum); @@ -1253,7 +1253,9 @@ if (isset($_GET['excel'])) $maxlength[$i] = mb_strlen($student3sem_w_sum); } //Verteilung - $zeile = $zeile + 3; + $zeile = $zeile + 2; + $worksheet2->write($zeile, 0, '* für ZGV liegen zum Stichtag keine historischen Daten vor'); + $zeile = $zeile + 2; $i = 0; $worksheet2->write($zeile, 0, 'Verteilung'.$stsem, $format_bold); $worksheet2->mergeCells($zeile, $i, $zeile, $i + 1); @@ -2060,7 +2062,7 @@ else Studiengang InteressentInnen (m/w) - InteressentInnen mit ZGV (m/w) + InteressentInnen mit ZGV (m/w) * InteressentInnen mit RT Anmeldung (m/w) BewerberIn (m/w) Aufgenommene (m/w) @@ -2099,7 +2101,7 @@ else $content .= ''; $content .= "".mb_strtoupper($row->typ.$row->kurzbz)." ($row->kurzbzlang)"; $content .= "$row->interessenten ($row->interessenten_m / $row->interessenten_w)"; - $content .= "k.A."; + $content .= "k.A.*"; $content .= "$row->interessentenrtanmeldung ($row->interessentenrtanmeldung_m / $row->interessentenrtanmeldung_w)"; $content .= "$row->bewerber ($row->bewerber_m / $row->bewerber_w)"; $content .= "$row->aufgenommener ($row->aufgenommener_m / $row->aufgenommener_w)"; @@ -2136,7 +2138,7 @@ else $content .= ''; $content .= "Summe"; $content .= "$interessenten_sum ($interessenten_m_sum / $interessenten_w_sum)"; - $content .= "k.A."; + $content .= "k.A.*"; $content .= "$interessentenrt_sum ($interessentenrt_m_sum / $interessentenrt_w_sum)"; $content .= "$bewerber_sum ($bewerber_m_sum / $bewerber_w_sum)"; $content .= "$aufgenommener_sum ($aufgenommener_m_sum / $aufgenommener_w_sum)"; @@ -2146,6 +2148,7 @@ else $content .= ""; $content .= ''; + $content .= "
* für ZGV liegen zum Stichtag keine historischen Daten vor"; //Verteilung $content .= '

Verteilung '.$stsem.'


'; $qry = "SELECT From a5bd9502d8b584259317c25f15b9da183236959f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 10 Apr 2019 13:42:42 +0200 Subject: [PATCH 08/18] =?UTF-8?q?Tempus=20zeigt=20das=20Datum=20der=20letz?= =?UTF-8?q?ten=20=C3=84nderung=20von=20Zeitsperren=20im=20Tooltip=20an?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/wochenplan.class.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/include/wochenplan.class.php b/include/wochenplan.class.php index bbc418c1b..8d9ee0e9c 100644 --- a/include/wochenplan.class.php +++ b/include/wochenplan.class.php @@ -1231,11 +1231,18 @@ class wochenplan extends basis_db //Wenn eine Zeitsperre eingetragen ist, dann diese im Tooltiptext anzeigen $zeitsperre = new zeitsperre(); $zeitsperre->getSperreByDate($this->pers_uid, date('Y-m-d',$datum), $j); + $datum_obj = new datum(); foreach($zeitsperre->result as $sperren) { if ($tooltip!='') $tooltip.=', '; - $tooltip.=$sperren->zeitsperretyp_kurzbz.' - '.$sperren->bezeichnung; + $aenderungsdatum = $sperren->insertamum; + if($sperren->updateamum>$sperren->insertamum) + $aenderungsdatum = $sperren->updateamum; + $updateinfo = ''; + if ($aenderungsdatum != '') + $updateinfo = ' (letzte Änderung: '.$datum_obj->formatDatum($aenderungsdatum,'d.m.Y H:i').')'; + $tooltip.=$sperren->zeitsperretyp_kurzbz.' - '.$sperren->bezeichnung.$updateinfo; } } } From 6b43e97361e7eda568e6c865e0a53dd3b8c13acf Mon Sep 17 00:00:00 2001 From: cris-technikum Date: Wed, 10 Apr 2019 18:47:10 +0200 Subject: [PATCH 09/18] Removed check against bisverwendung in FAS document lehrtaetigkeit The check against bisverwendungen caused wrong date definitions, when a lector is teaching without a contract. Now the start end end time refer only the teaching activities. PLUS some code refactoring for easier maintainance --- cis/private/lehre/lehrtaetigkeit.pdf.php | 118 +++++++++++------------ 1 file changed, 56 insertions(+), 62 deletions(-) diff --git a/cis/private/lehre/lehrtaetigkeit.pdf.php b/cis/private/lehre/lehrtaetigkeit.pdf.php index 78380a815..d99f2bf6b 100644 --- a/cis/private/lehre/lehrtaetigkeit.pdf.php +++ b/cis/private/lehre/lehrtaetigkeit.pdf.php @@ -79,6 +79,11 @@ foreach($active_semester_arr as $active_semester) $le_id_arr[]= $le->lehreinheit_id; } + // * get begin- and end date of studiensemester + $ss = new Studiensemester($active_semester); + $studiensemester_start_date = $ss->start; + $studiensemester_end_date = $ss->ende; + // * get total amount of semesterstunden of the lehreinheiten, where stundensatz > 0 $total_semesterstunden = 0; foreach ($le_id_arr as $le_id) @@ -90,13 +95,18 @@ foreach($active_semester_arr as $active_semester) } } - // * store term and total amount of semesterstunden - $semesterstunden_per_semester []= ( - array( - 'studiensemester_kurzbz'=> $active_semester, - 'total_semesterstunden' => $total_semesterstunden - ) - ); + // * store data only if semesterstunden > 0 + if ($total_semesterstunden > 0) + { + $semesterstunden_per_semester []= ( + array( + 'studiensemester_kurzbz'=> $active_semester, + 'total_semesterstunden' => $total_semesterstunden, + 'studiensemester_start_date' => $studiensemester_start_date, + 'studiensemester_end_date' => $studiensemester_end_date + ) + ); + } } // Get the lectors projektarbeitstunden per semester @@ -105,6 +115,7 @@ $pb = new Projektbetreuer(); $pb->getAllProjects($person_id); $project_arr = $pb->result; +// * for each project foreach ($project_arr as $project) { $pa_id = $project->projektarbeit_id; @@ -114,10 +125,13 @@ foreach ($project_arr as $project) $pa = new Projektarbeit($pa_id); $le = new Lehreinheit($pa->lehreinheit_id); $studiensemester_kurzbz = $le->studiensemester_kurzbz; + + // * get begin- and end date of studiensemester $ss = new Studiensemester($studiensemester_kurzbz); $studiensemester_start_date = $ss->start; + $studiensemester_end_date = $ss->ende; - // Sum up semesterstunden by studiensemester + // Get total amount of semesterstunden by studiensemester // * check if studiensemester already exists. If so, get array index. $studiensemester_index = array_search($studiensemester_kurzbz, array_map(function($val) { return $val['studiensemester_kurzbz']; @@ -136,18 +150,13 @@ foreach ($project_arr as $project) array( 'studiensemester_kurzbz'=> $studiensemester_kurzbz, 'total_semesterstunden' => $projektstunden, - 'studiensemester_start_date' => $studiensemester_start_date // store start date to sort array by date afterwards + 'studiensemester_start_date' => $studiensemester_start_date, + 'studiensemester_end_date' => $studiensemester_end_date ) ); } } -// Sort projektstunden per semester by date -usort($projektstunden_per_semester, function($a, $b) -{ - return strtotime($a['studiensemester_start_date']) - strtotime($b['studiensemester_start_date']); -}); - // Merge lehreinheit- and projektarbeitstunden arrays foreach ($projektstunden_per_semester as $item) { @@ -168,12 +177,20 @@ foreach ($projektstunden_per_semester as $item) $semesterstunden_per_semester []= ( array( 'studiensemester_kurzbz'=> $item['studiensemester_kurzbz'], - 'total_semesterstunden' => intval($item['total_semesterstunden']) + 'total_semesterstunden' => intval($item['total_semesterstunden']), + 'studiensemester_start_date' => $item['studiensemester_start_date'], + 'studiensemester_end_date' => $item['studiensemester_end_date'] ) ); } } +// Sort lehreinheit- and projektarbeitstunden array by date +usort($semesterstunden_per_semester, function($a, $b) +{ + return strtotime($a['studiensemester_start_date']) - strtotime($b['studiensemester_start_date']); +}); + // Split studiensemester array into actual studiensemester array and former studiensemester array // * get actual studiensemester $ss = new Studiensemester(); @@ -182,85 +199,62 @@ $actual_studiensemester_index = array_search($actual_studiensemester, array_map( return $val['studiensemester_kurzbz']; }, $semesterstunden_per_semester )); -// * split former from actual studiensemester + +// * if lector is teaching actually, split former teaching activities from actual teaching activities of actual studiensemester $semesterstunden_of_actual_semester = array(); if ($actual_studiensemester_index !== false) { $semesterstunden_of_actual_semester = array_slice($semesterstunden_per_semester, $actual_studiensemester_index); // array with actual + future semester - $semesterstunden_of_actual_semester = array_pop($semesterstunden_of_actual_semester); // array with actual semester only $semesterstunden_per_semester = array_slice($semesterstunden_per_semester, 0, $actual_studiensemester_index); // array with all former semester } -// Begin and ending date over all existing contracts -$verwendung = new Bisverwendung(); -$verwendung->getVerwendung($uid); -$verwendung_arr = $verwendung->result; - -// * begin date of first contract -$earliest_verwendung = current($verwendung_arr); -$begin_date = !is_null($earliest_verwendung->beginn) ? new DateTime($earliest_verwendung->beginn) : null; - -// * end date of last contract -$latest_verwendung = end($verwendung_arr); -$end_date = !is_null($latest_verwendung->ende) ? new DateTime($latest_verwendung->ende) : null; - // Semester begin and ending date of lehreinheit- and projektarbeit studiensemester // * begin date of first lehreinheit- and projektarbeit studiensemester -$earliest_ss = current($semesterstunden_per_semester)['studiensemester_kurzbz']; -$ss = new Studiensemester($earliest_ss); -$begin_date_ss = !is_null($ss->start) ? new DateTime($ss->start) : null; +$earliest_ss = current($semesterstunden_per_semester)['studiensemester_start_date']; +$begin_date = !is_null($earliest_ss) ? new DateTime($earliest_ss) : null; // * end date of last lehreinheit- and projektarbeit studiensemester +// * if lector is teaching on actual studiensemester, get end date of actual studiensemester $latest_ss = !empty($semesterstunden_of_actual_semester) - ? end($semesterstunden_of_actual_semester)['studiensemester_kurzbz'] - : end($semesterstunden_per_semester)['studiensemester_kurzbz']; -$ss = new Studiensemester($latest_ss); -$end_date_ss = !is_null($ss->ende) ? new DateTime($ss->ende) : null; - -/** - * Reset begin and ending date if necessary - * Basically use contracts begin and ending date, but reset if lehrtaetigkeit is shorter. - * */ -// * if semester begin > begin date -If (!is_null($begin_date_ss) && ($begin_date_ss > $begin_date)) -{ - // * begin date = semester begin - $begin_date = clone $begin_date_ss; -} -// * if semester end < end date -If (!is_null($end_date_ss) && !is_null($end_date) && ($end_date_ss < $end_date)) -{ - // * end date = semester end - $end_date = clone $end_date_ss; -} + ? current($semesterstunden_of_actual_semester)['studiensemester_end_date'] +// * else get end date of the last of his teaching studiensemester + : end($semesterstunden_per_semester)['studiensemester_end_date']; +$end_date = !is_null($latest_ss) ? new DateTime($latest_ss) : null; $actual_date = new DateTime(); +// if the lector is still employed, reset the end date to null +if ($end_date > $actual_date) +{ + $end_date = null; +} + $data = array ( 'anrede' => $anrede, 'full_name' => $fullname, 'birthday' => $birthday_date->format('d.m.Y'), 'begin_date' => !is_null($begin_date) ? $begin_date->format('d.m.Y') : '', 'end_date' => !is_null($end_date) ? $end_date->format('d.m.Y') : '', // empty, if lector is still employed - 'total_ss_actual_semester' => $semesterstunden_of_actual_semester, // empty, if lehrauftraege in the past only, + 'total_ss_actual_semester' => current($semesterstunden_of_actual_semester), // empty, if lector has no lehreinheit- or projektarbeitsstunden at the actual studiensemester 'actual_date' => $actual_date->format('d.m.Y') ); +// Put semesterstunden per semester array in correct format for xsl template if (!empty($semesterstunden_per_semester)) { - foreach ($semesterstunden_per_semester as $item) + foreach ($semesterstunden_per_semester as &$item) { $data[]= array('total_ss_per_semester'=> - array( - 'studiensemester_kurzbz'=> $item['studiensemester_kurzbz'], - 'total_semesterstunden' => $item['total_semesterstunden'] - ) + array( + 'studiensemester_kurzbz'=> $item['studiensemester_kurzbz'], + 'total_semesterstunden' => $item['total_semesterstunden'] + ) ); } } else { - $data[]= array('total_ss_per_semester'=> ''); // empty if lector has no lehreinheit- or projektarbeitsstunden + $data[]= array('total_ss_per_semester'=> ''); // empty if lector has no lehreinheit- or projektarbeitsstunden in the past (before the actual studiensemester) } // Add data to lehrtaetigkeit.xsl From d32c7649559f8673d1ecbbc5fa3d36d9c02a0cb3 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 11 Apr 2019 10:11:08 +0200 Subject: [PATCH 10/18] - Lehrveranstaltung_model: getLvsWithIncomings method takes studienplan_lehrveranstaltung export field (= studienplanrelevant) into account --- application/models/education/Lehrveranstaltung_model.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index 6813773f3..1685ddf81 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -240,9 +240,9 @@ class Lehrveranstaltung_model extends DB_Model WITH gueltige_studienplaene AS ( SELECT studienplan_id, semester FROM lehre.tbl_studienplan - JOIN lehre.tbl_studienplan_semester USING(studienplan_id) + JOIN lehre.tbl_studienplan_semester USING(studienplan_id) WHERE tbl_studienplan.aktiv - AND lehre.tbl_studienplan_semester.studiensemester_kurzbz = ? + AND lehre.tbl_studienplan_semester.studiensemester_kurzbz = ? ) SELECT 1 FROM lehre.tbl_studienplan_lehrveranstaltung @@ -251,6 +251,7 @@ class Lehrveranstaltung_model extends DB_Model (SELECT semester FROM gueltige_studienplaene WHERE gueltige_studienplaene.studienplan_id = tbl_studienplan_lehrveranstaltung.studienplan_id) AND tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id = lv.lehrveranstaltung_id + AND tbl_studienplan_lehrveranstaltung.export ) OR EXISTS (SELECT 1 FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id = lv.lehrveranstaltung_id AND studiensemester_kurzbz = ?) ) From 460541389136e044c6d245c55d3d2042f4f331db Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 12 Apr 2019 14:29:45 +0200 Subject: [PATCH 11/18] FHC-Controller: changed scope of outputJson from private to protected --- application/core/FHC_Controller.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/application/core/FHC_Controller.php b/application/core/FHC_Controller.php index 5b6901f52..7b29b43e7 100644 --- a/application/core/FHC_Controller.php +++ b/application/core/FHC_Controller.php @@ -96,7 +96,7 @@ class FHC_Controller extends CI_Controller */ protected function outputJsonSuccess($mixed) { - $this->_outputJson(success($mixed)); + $this->outputJson(success($mixed)); } /** @@ -105,7 +105,7 @@ class FHC_Controller extends CI_Controller */ protected function outputJsonError($mixed) { - $this->_outputJson(error($mixed)); + $this->outputJson(error($mixed)); } /** @@ -119,13 +119,10 @@ class FHC_Controller extends CI_Controller exit; } - //------------------------------------------------------------------------------------------------------------------ - // Private methods - /** * Utility method to output using JSON as content type */ - private function _outputJson($mixed) + protected function outputJson($mixed) { $this->output->set_content_type('application/json')->set_output(json_encode($mixed)); } From bc68ca1e9f5b7261ef7d228161175516075112bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 15 Apr 2019 15:32:02 +0200 Subject: [PATCH 12/18] Added english Version of Lehrveranstaltungszeugnis --- .../lehrveranstaltungnotenoverlay.xul.php | 3 +- .../lvplanung/lehrveranstaltungoverlay.js.php | 10 +- content/student/studentnotenoverlay.xul.php | 3 +- content/student/studentoverlay.js.php | 15 +- rdf/lehrveranstaltungszeugnis.rdf.php | 28 +- system/vorlage_zip/LVZeugnisEng.odt | Bin 0 -> 169430 bytes system/xsl/LehrveranstaltungszeugnisEng_0.xsl | 504 ++++++++++++++++++ .../Lehrveranstaltungszeugnis_Eng_9005.xsl | 481 +++++++++++++++++ 8 files changed, 1032 insertions(+), 12 deletions(-) create mode 100644 system/vorlage_zip/LVZeugnisEng.odt create mode 100644 system/xsl/LehrveranstaltungszeugnisEng_0.xsl create mode 100644 system/xsl/Lehrveranstaltungszeugnis_Eng_9005.xsl diff --git a/content/lvplanung/lehrveranstaltungnotenoverlay.xul.php b/content/lvplanung/lehrveranstaltungnotenoverlay.xul.php index 4f9951d57..894540d3e 100644 --- a/content/lvplanung/lehrveranstaltungnotenoverlay.xul.php +++ b/content/lvplanung/lehrveranstaltungnotenoverlay.xul.php @@ -49,7 +49,8 @@ echo "