From 9250485cb37b77eb81ad776c9e133ef3f60ea414 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 3 Sep 2020 15:22:46 +0200 Subject: [PATCH 001/119] check for time in csv import --- cis/private/tools/zeitaufzeichnung.php | 182 +++++++----- include/projekt.class.php | 391 ++++++++++++++++--------- 2 files changed, 347 insertions(+), 226 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 71fdda2bb..ed146e728 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -689,108 +689,128 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $anzahl = 0; $importtage_array = array(); $ende_vorher = date('Y-m-d H:i:s'); + $projects_of_user = new projekt(); + $projects= $projects_of_user->getProjekteListForMitarbeiter($user); + $project_kurzbz_array = array(); + + foreach($projects as $prjct) + { + array_push($project_kurzbz_array, (string) $prjct->projekt_kurzbz); + } + while(($data = fgetcsv($handle, 1000, ';', '"')) !== FALSE) { - if($data[0] == $user) - { - if (!isset($data[5])) - $data[5] = NULL; - if (!isset($data[6])) - $data[6] = NULL; - if (!isset($data[7])) - $data[7] = NULL; - if (!isset($data[8])) - $data[8] = NULL; - if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum) - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
'; - //elseif (isset($data[8]) && ( filter_var($data[8], FILTER_VALIDATE_INT) === false )) - //{ - // echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Service ID ist keine Zahl ('.$data[8].')
'; - //} - elseif (checkVals($data[5],$data[6],$data[7],$data[8])) + if($data[0] == $user){ + if(!empty($data[6]) && !in_array($data[6], $project_kurzbz_array)) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Fehlerhafte Werte ('.$data[2].')
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgendem Projekt nicht zugewiesen sind: ('.$data[6].')
'; } else { - if ($data[1] == 'LehreIntern') - $data[1] = 'Lehre'; - $zeit->new = true; - $zeit->beschreibung = NULL; - $zeit->oe_kurzbz_1 = NULL; - $zeit->projekt_kurzbz = NULL; - $zeit->projektphase_id = NULL; - $zeit->service_id = NULL; - $zeit->insertamum = date('Y-m-d H:i:s'); - $zeit->updateamum = date('Y-m-d H:i:s'); - $zeit->updatevon = $user; - $zeit->insertvon = $user; - $zeit->uid = $data[0]; - $zeit->aktivitaet_kurzbz = $data[1]; - $zeit->start = $datum->formatDatum($data[2], $format='Y-m-d H:i:s'); - $zeit->ende = $datum->formatDatum($data[3], $format='Y-m-d H:i:s'); - if (isset($data[4])) - $zeit->beschreibung = $data[4]; - if (isset($data[5])) - $zeit->oe_kurzbz_1 = $data[5]; - if (isset($data[6])) - $zeit->projekt_kurzbz = $data[6]; - if (isset($data[7])) - $zeit->projektphase_id = $data[7]; - if (isset($data[8])) - $zeit->service_id = $data[8]; - $tag = $datum->formatDatum($data[2], $format='Y-m-d'); - - if(!in_array($tag, $importtage_array)) + if (!isset($data[5])) + $data[5] = NULL; + if (!isset($data[6])) + $data[6] = NULL; + if (!isset($data[7])) + $data[7] = NULL; + if (!isset($data[8])) + $data[8] = NULL; + if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum) + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
'; + //elseif (isset($data[8]) && ( filter_var($data[8], FILTER_VALIDATE_INT) === false )) + //{ + // echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Service ID ist keine Zahl ('.$data[8].')
'; + //} + elseif (!empty($data[6]) && !$projects_of_user->checkProjectInCorrectTime($data[6], $data[2], $data[3])) { - $importtage_array[] = $tag; - $zeit->deleteEntriesForUser($user, $tag); - $tag_aktuell = $tag; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; + } + elseif (checkVals($data[5],$data[6],$data[7],$data[8])) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Fehlerhafte Werte ('.$data[2].')
'; } else { - if ($ende_vorher < $zeit->start) + if ($data[1] == 'LehreIntern') + $data[1] = 'Lehre'; + $zeit->new = true; + $zeit->beschreibung = NULL; + $zeit->oe_kurzbz_1 = NULL; + $zeit->projekt_kurzbz = NULL; + $zeit->projektphase_id = NULL; + $zeit->service_id = NULL; + + $zeit->insertamum = date('Y-m-d H:i:s'); + $zeit->updateamum = date('Y-m-d H:i:s'); + $zeit->updatevon = $user; + $zeit->insertvon = $user; + $zeit->uid = $data[0]; + $zeit->aktivitaet_kurzbz = $data[1]; + $zeit->start = $datum->formatDatum($data[2], $format='Y-m-d H:i:s'); + $zeit->ende = $datum->formatDatum($data[3], $format='Y-m-d H:i:s'); + if (isset($data[4])) + $zeit->beschreibung = $data[4]; + if (isset($data[5])) + $zeit->oe_kurzbz_1 = $data[5]; + if (isset($data[6])) + $zeit->projekt_kurzbz = $data[6]; + if (isset($data[7])) + $zeit->projektphase_id = $data[7]; + if (isset($data[8])) + $zeit->service_id = $data[8]; + $tag = $datum->formatDatum($data[2], $format='Y-m-d'); + + if(!in_array($tag, $importtage_array)) { - $pause = new zeitaufzeichnung(); - $pause->new = true; - $pause->insertamum = date('Y-m-d H:i:s'); - $pause->updateamum = date('Y-m-d H:i:s'); - $pause->updatevon = $user; - $pause->insertvon = $user; - $pause->uid = $user; - $pause->aktivitaet_kurzbz = 'Pause'; - $pause->start = $ende_vorher; - $pause->ende = $zeit->start; - $pause->beschreibung = ''; - if(!$pause->save()) + $importtage_array[] = $tag; + $zeit->deleteEntriesForUser($user, $tag); + $tag_aktuell = $tag; + } + else + { + if ($ende_vorher < $zeit->start) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'
'; + $pause = new zeitaufzeichnung(); + $pause->new = true; + $pause->insertamum = date('Y-m-d H:i:s'); + $pause->updateamum = date('Y-m-d H:i:s'); + $pause->updatevon = $user; + $pause->insertvon = $user; + $pause->uid = $user; + $pause->aktivitaet_kurzbz = 'Pause'; + $pause->start = $ende_vorher; + $pause->ende = $zeit->start; + $pause->beschreibung = ''; + if(!$pause->save()) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'
'; + } } } - } - $ende_vorher = $zeit->ende; - if($data[2] != $data[3]) - { - /* - if ($data[1] == 'LehreExtern') + $ende_vorher = $zeit->ende; + if($data[2] != $data[3]) { - $zeit->start = date('Y-m-d H:i:s', strtotime('+2 seconds', strtotime($data[2]))); - $zeit->ende = date('Y-m-d H:i:s', strtotime('-2 seconds', strtotime($data[3]))); - } - */ - if(!$zeit->save()) - { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'('.$zeit->start.')
'; + /* + if ($data[1] == 'LehreExtern') + { + $zeit->start = date('Y-m-d H:i:s', strtotime('+2 seconds', strtotime($data[2]))); + $zeit->ende = date('Y-m-d H:i:s', strtotime('-2 seconds', strtotime($data[3]))); + } + */ + if(!$zeit->save()) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'('.$zeit->start.')
'; + } + else + $anzahl++; } else $anzahl++; - } - else - $anzahl++; - } + } + } } else if (strpos($data[0],'#') === false) { diff --git a/include/projekt.class.php b/include/projekt.class.php index 92a3129ec..d1cd49661 100644 --- a/include/projekt.class.php +++ b/include/projekt.class.php @@ -28,26 +28,25 @@ require_once(dirname(__FILE__).'/basis_db.class.php'); class projekt extends basis_db { - public $new; // boolean - public $result = array(); // projekt Objekt + public $new; // boolean + public $result = array(); // projekt Objekt //Tabellenspalten - public $projekt_kurzbz; // string - public $nummer; // string - public $titel; // string - public $beschreibung; // string - public $beginn; // date - public $ende; // date - public $oe_kurzbz; // string - public $insertamum; // timestamp - public $insertvon; // string - public $updateamum; // timestamp - public $updatevon; // string + public $projekt_kurzbz; // string + public $nummer; // string + public $titel; // string + public $beschreibung; // string + public $beginn; // date + public $ende; // date + public $oe_kurzbz; // string + public $insertamum; // timestamp + public $insertvon; // string + public $updateamum; // timestamp + public $updatevon; // string public $budget; public $farbe; - public $anzahl_ma; // integer - public $aufwand_pt; // integer - + public $anzahl_ma; // integer + public $aufwand_pt; // integer /** @@ -58,23 +57,21 @@ class projekt extends basis_db { parent::__construct(); - if($projekt_kurzbz != null) + if ($projekt_kurzbz != null) $this->load($projekt_kurzbz); } /** * Laedt die Projek mit der Kurzbezeichnung $projekt_kurzbz - * @param string $projekt_kurzbz Kurzbz des Projekts. + * @param string $projekt_kurzbz Kurzbz des Projekts. * @return true wenn ok, false im Fehlerfall */ public function load($projekt_kurzbz) { - $qry = "SELECT * FROM fue.tbl_projekt WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); + $qry = "SELECT * FROM fue.tbl_projekt WHERE projekt_kurzbz=" . $this->db_add_param($projekt_kurzbz); - if ($this->db_query($qry)) - { - if ($row = $this->db_fetch_object()) - { + if ($this->db_query($qry)) { + if ($row = $this->db_fetch_object()) { $this->projekt_kurzbz = $row->projekt_kurzbz; $this->nummer = $row->nummer; $this->titel = $row->titel; @@ -89,43 +86,39 @@ class projekt extends basis_db return true; } - else - { + else { $this->errormsg = 'Datensatz wurde nicht gefunden'; return false; } } - else - { + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } } - /** - * Laedt alle aktuellen Projekte - * @param bool $filter_kommende Lädt auch alle zukünftigen. + /** + * Laedt alle aktuellen Projekte + * @param bool $filter_kommende Lädt auch alle zukünftigen. * @param string $oe Organisationseinheit. - * @return bool - */ - public function getProjekteAktuell($filter_kommende = false, $oe = null) - { - $qry = 'SELECT * FROM fue.tbl_projekt WHERE '; + * @return bool + */ + public function getProjekteAktuell($filter_kommende = false, $oe = null) + { + $qry = 'SELECT * FROM fue.tbl_projekt WHERE '; - if($filter_kommende) - $qry .= " ((beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP) OR beginn > CURRENT_TIMESTAMP)"; - else - $qry .= " (beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP)"; + if ($filter_kommende) + $qry .= " ((beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP) OR beginn > CURRENT_TIMESTAMP)"; + else + $qry .= " (beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP)"; - if (!is_null($oe)) - $qry .= ' AND oe_kurzbz='.$this->db_add_param($oe); + if (!is_null($oe)) + $qry .= ' AND oe_kurzbz=' . $this->db_add_param($oe); - $qry .= ' ORDER BY oe_kurzbz;'; - if ($this->db_query($qry)) - { - while ($row = $this->db_fetch_object()) - { + $qry .= ' ORDER BY oe_kurzbz;'; + if ($this->db_query($qry)) { + while ($row = $this->db_fetch_object()) { $obj = new projekt(); $obj->projekt_kurzbz = $row->projekt_kurzbz; @@ -145,31 +138,28 @@ class projekt extends basis_db } return true; } - else - { + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } - } + } - /** - * Laedt alle Projekte die zwischen beginn und ende liegen - * @param date $beginn Anfang. - * @param date $ende Ende. - * @param string $oe Organisationseinheit. - * @return bool - */ - public function getProjekteInZeitraum($beginn, $ende, $oe = null) - { - $qry = 'select * from fue.tbl_projekt where beginn <= '.$this->db_add_param($ende).' and ende >= '.$this->db_add_param($beginn); + /** + * Laedt alle Projekte die zwischen beginn und ende liegen + * @param date $beginn Anfang. + * @param date $ende Ende. + * @param string $oe Organisationseinheit. + * @return bool + */ + public function getProjekteInZeitraum($beginn, $ende, $oe = null) + { + $qry = 'select * from fue.tbl_projekt where beginn <= ' . $this->db_add_param($ende) . ' and ende >= ' . $this->db_add_param($beginn); if (!is_null($oe)) - $qry .= " AND oe_kurzbz=".$this->db_add_param($oe); + $qry .= " AND oe_kurzbz=" . $this->db_add_param($oe); $qry .= ' ORDER BY oe_kurzbz;'; //echo $qry; - if ($this->db_query($qry)) - { - while ($row = $this->db_fetch_object()) - { + if ($this->db_query($qry)) { + while ($row = $this->db_fetch_object()) { $obj = new projekt(); $obj->projekt_kurzbz = $row->projekt_kurzbz; @@ -188,12 +178,11 @@ class projekt extends basis_db } return true; } - else - { + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } - } + } /** @@ -205,13 +194,11 @@ class projekt extends basis_db { $qry = 'SELECT * FROM fue.tbl_projekt'; if (!is_null($oe)) - $qry .= " WHERE oe_kurzbz=".$this->db_add_param($oe); + $qry .= " WHERE oe_kurzbz=" . $this->db_add_param($oe); $qry .= ' ORDER BY oe_kurzbz;'; //echo $qry; - if ($this->db_query($qry)) - { - while ($row = $this->db_fetch_object()) - { + if ($this->db_query($qry)) { + while ($row = $this->db_fetch_object()) { $obj = new projekt(); $obj->projekt_kurzbz = $row->projekt_kurzbz; @@ -231,8 +218,7 @@ class projekt extends basis_db } return true; } - else - { + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } @@ -245,26 +231,21 @@ class projekt extends basis_db protected function validate() { //Gesamtlaenge pruefen - if ($this->projekt_kurzbz == null) - { + if ($this->projekt_kurzbz == null) { $this->errormsg = 'Projekt kurzbz darf nicht NULL sein!'; } - if ($this->oe_kurzbz == null) - { + if ($this->oe_kurzbz == null) { $this->errormsg = 'OE kurbz darf nicht NULL sein!'; } - if (mb_strlen($this->projekt_kurzbz) > 16) - { + if (mb_strlen($this->projekt_kurzbz) > 16) { $this->errormsg = 'Projektyp_kurzbz darf nicht länger als 16 Zeichen sein'; return false; } - if (mb_strlen($this->nummer) > 8) - { + if (mb_strlen($this->nummer) > 8) { $this->errormsg = 'Nummer darf nicht länger als 8 Zeichen sein'; return false; } - if (mb_strlen($this->titel) > 256) - { + if (mb_strlen($this->titel) > 256) { $this->errormsg = 'Titel darf nicht länger als 256 Zeichen sein'; return false; } @@ -283,56 +264,52 @@ class projekt extends basis_db public function save($new = null) { //Variablen pruefen - if(!$this->validate()) + if (!$this->validate()) return false; if ($new == null) $new = $this->new; - if ($new) - { + if ($new) { //Neuen Datensatz einfuegen - $qry = 'INSERT INTO fue.tbl_projekt (projekt_kurzbz, nummer, titel,beschreibung, beginn, ende, budget, farbe, oe_kurzbz, aufwand_pt, anzahl_ma, aufwandstyp_kurzbz) VALUES('. - $this->db_add_param($this->projekt_kurzbz).', '. - $this->db_add_param($this->nummer).', '. - $this->db_add_param($this->titel).', '. - $this->db_add_param($this->beschreibung).', '. - $this->db_add_param($this->beginn).', '. - $this->db_add_param($this->ende).', '. - $this->db_add_param($this->budget).', '. - $this->db_add_param($this->farbe).', '. - $this->db_add_param($this->oe_kurzbz).','. - $this->db_add_param($this->aufwand_pt).','. - $this->db_add_param($this->anzahl_ma).','. - $this->db_add_param($this->aufwandstyp_kurzbz).');'; + $qry = 'INSERT INTO fue.tbl_projekt (projekt_kurzbz, nummer, titel,beschreibung, beginn, ende, budget, farbe, oe_kurzbz, aufwand_pt, anzahl_ma, aufwandstyp_kurzbz) VALUES(' . + $this->db_add_param($this->projekt_kurzbz) . ', ' . + $this->db_add_param($this->nummer) . ', ' . + $this->db_add_param($this->titel) . ', ' . + $this->db_add_param($this->beschreibung) . ', ' . + $this->db_add_param($this->beginn) . ', ' . + $this->db_add_param($this->ende) . ', ' . + $this->db_add_param($this->budget) . ', ' . + $this->db_add_param($this->farbe) . ', ' . + $this->db_add_param($this->oe_kurzbz) . ',' . + $this->db_add_param($this->aufwand_pt) . ',' . + $this->db_add_param($this->anzahl_ma) . ',' . + $this->db_add_param($this->aufwandstyp_kurzbz) . ');'; } - else - { + else { //Updaten des bestehenden Datensatzes - $qry = 'UPDATE fue.tbl_projekt SET '. - 'projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).', '. - 'nummer='.$this->db_add_param($this->nummer).', '. - 'titel='.$this->db_add_param($this->titel).', '. - 'beschreibung='.$this->db_add_param($this->beschreibung).', '. - 'beginn='.$this->db_add_param($this->beginn).', '. - 'ende='.$this->db_add_param($this->ende).', '. - 'budget='.$this->db_add_param($this->budget).', '. - 'farbe='.$this->db_add_param($this->farbe).', '. - 'oe_kurzbz='.$this->db_add_param($this->oe_kurzbz).', '. - 'anzahl_ma='.$this->db_add_param($this->anzahl_ma).', '. - 'aufwand_pt='.$this->db_add_param($this->aufwand_pt).', '. - 'aufwandstyp_kurzbz='.$this->db_add_param($this->aufwandstyp_kurzbz).' '. - 'WHERE projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).';'; + $qry = 'UPDATE fue.tbl_projekt SET ' . + 'projekt_kurzbz=' . $this->db_add_param($this->projekt_kurzbz) . ', ' . + 'nummer=' . $this->db_add_param($this->nummer) . ', ' . + 'titel=' . $this->db_add_param($this->titel) . ', ' . + 'beschreibung=' . $this->db_add_param($this->beschreibung) . ', ' . + 'beginn=' . $this->db_add_param($this->beginn) . ', ' . + 'ende=' . $this->db_add_param($this->ende) . ', ' . + 'budget=' . $this->db_add_param($this->budget) . ', ' . + 'farbe=' . $this->db_add_param($this->farbe) . ', ' . + 'oe_kurzbz=' . $this->db_add_param($this->oe_kurzbz) . ', ' . + 'anzahl_ma=' . $this->db_add_param($this->anzahl_ma) . ', ' . + 'aufwand_pt=' . $this->db_add_param($this->aufwand_pt) . ', ' . + 'aufwandstyp_kurzbz=' . $this->db_add_param($this->aufwandstyp_kurzbz) . ' ' . + 'WHERE projekt_kurzbz=' . $this->db_add_param($this->projekt_kurzbz) . ';'; } - if ($this->db_query($qry)) - { + if ($this->db_query($qry)) { return true; } - else - { + else { $this->errormsg = 'Fehler beim Speichern der Daten'; return false; } @@ -345,14 +322,12 @@ class projekt extends basis_db */ public function delete($projekt_kurzbz) { - $qry = "DELETE FROM lehre.tbl_projek WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); + $qry = "DELETE FROM lehre.tbl_projek WHERE projekt_kurzbz=" . $this->db_add_param($projekt_kurzbz); - if ($this->db_query($qry)) - { + if ($this->db_query($qry)) { return true; } - else - { + else { $this->errormsg = 'Fehler beim Loeschen des Datensatzes'; return false; } @@ -367,7 +342,7 @@ class projekt extends basis_db */ function getProjekteMitarbeiter($mitarbeiter_uid, $projektphasen = false) { - $qry = "SELECT DISTINCT + $qry = "SELECT DISTINCT tbl_projekt.* FROM fue.tbl_ressource @@ -377,12 +352,12 @@ class projekt extends basis_db AND (ende + interval '1 month 1 day' >=now() OR ende is null) AND ( - mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." OR - student_uid=".$this->db_add_param($mitarbeiter_uid)." + mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid) . " OR + student_uid=" . $this->db_add_param($mitarbeiter_uid) . " )"; - if ($projektphasen == true) - $qry .= "UNION + if ($projektphasen == true) + $qry .= "UNION SELECT DISTINCT tbl_projekt.* @@ -401,12 +376,10 @@ class projekt extends basis_db AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null) ) ) - AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid); + AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid); - if ($result = $this->db_query($qry)) - { - while ($row = $this->db_fetch_object($result)) - { + if ($result = $this->db_query($qry)) { + while ($row = $this->db_fetch_object($result)) { $obj = new projekt(); $obj->projekt_kurzbz = $row->projekt_kurzbz; @@ -421,22 +394,90 @@ class projekt extends basis_db } return true; } - else - { + else { $this->erromsg = 'Fehler beim Laden der Daten'; return false; } } + + /** + * Liefert Ein Array mit Porjekten von allen Projekten des Mitarbeiters mit UID. + * Optional auch mit den Zuteilungen zu Projektphasen. + * @param string $mitarbeiter_uid MitarbeiterUID. + * @param bool $projektphasen Default false. Wenn true, werden auch Zuteilungen zu Projektphasen geliefert. + * @return array wenn ok, false im Fehlerfall + */ + function getProjekteListForMitarbeiter($mitarbeiter_uid, $projektphasen = false) + { + $projectList = array(); + $qry = "SELECT DISTINCT + tbl_projekt.* + FROM + fue.tbl_ressource + JOIN fue.tbl_projekt_ressource USING(ressource_id) + JOIN fue.tbl_projekt USING(projekt_kurzbz) + WHERE (beginn<=now() or beginn is null) + AND (ende + interval '1 month 1 day' >=now() OR ende is null) + AND + ( + mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid) . " OR + student_uid=" . $this->db_add_param($mitarbeiter_uid) . " + )"; + + if ($projektphasen == true) + $qry .= "UNION + + SELECT DISTINCT + tbl_projekt.* + FROM + fue.tbl_projektphase + JOIN fue.tbl_projekt USING (projekt_kurzbz) + JOIN fue.tbl_projekt_ressource USING (projektphase_id) + JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id) + WHERE + ( + ( + (tbl_projekt.beginn<=now() or tbl_projekt.beginn is null) + AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null) + ) OR ( + (tbl_projektphase.start<=now() or tbl_projektphase.start is null) + AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null) + ) + ) + AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid); + + if ($result = $this->db_query($qry)) { + while ($row = $this->db_fetch_object($result)) { + $obj = new projekt(); + + $obj->projekt_kurzbz = $row->projekt_kurzbz; + $obj->nummer = $row->nummer; + $obj->titel = $row->titel; + $obj->beschreibung = $row->beschreibung; + $obj->beginn = $row->beginn; + $obj->ende = $row->ende; + $obj->oe_kurzbz = $row->oe_kurzbz; + + $this->result[] = $obj; + + array_push($projectList, $obj); + } + return $projectList; + } + else { + $this->erromsg = 'Fehler beim Laden der Daten'; + return false; + } + } + public function getProjektFromBestellung($bestellung_id) { $qry = "select * from fue.tbl_projekt join wawi.tbl_projekt_bestellung USING (projekt_kurzbz) - where bestellung_id= ".$this->db_add_param($bestellung_id); + where bestellung_id= " . $this->db_add_param($bestellung_id); - if ($this->db_query($qry)) - { - if ($row = $this->db_fetch_object()) - { + if ($this->db_query($qry)) { + if ($row = $this->db_fetch_object()) { $this->projekt_kurzbz = $row->projekt_kurzbz; $this->nummer = $row->nummer; $this->titel = $row->titel; @@ -451,17 +492,77 @@ class projekt extends basis_db return true; } - else - { + else { $this->errormsg = 'Datensatz wurde nicht gefunden'; return false; } } - else + else { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Liefert True zurück wenn die angegebenen Start und Endzeitpunkt der Arbeitsdauer in die Projektdauer fallen + * @param string $mitarbeiter_uid MitarbeiterUID. + * @param bool $projektphasen Default false. Wenn true, werden auch Zuteilungen zu Projektphasen geliefert. + * @return array wenn ok, false im Fehlerfall + */ + public function checkProjectInCorrectTime($projekt_kurzbz, $give_project_start, $give_projekt_ende) + { + try { + $projekt = $this->getProjectByKurzbz($projekt_kurzbz); + if(strtotime($projekt->beginn)) + $projekt_start = date('Y-m-d', strtotime($projekt->beginn)); + else + $projekt_start = NULL; + if(strtotime($projekt->ende)) + $projekt_ende = date('Y-m-d', strtotime($projekt->ende)); + else + $projekt_ende = NULL; + + $given_start = date('Y-m-d', strtotime($give_project_start)); + $given_ende = date('Y-m-d', strtotime($give_projekt_ende)); + + var_dump($projekt_start,$given_start); + var_dump($projekt_ende,$given_ende); + if ((empty($projekt_start) || $given_start >= $projekt_start) && (empty($projekt_ende) || $given_ende <= $projekt_ende)) + return true; + else + return false; + + } + catch (Exception $e) + { + echo 'Exception abgefangen: ', $e->getMessage(), "\n"; + } + } + + public function getProjectByKurzbz($projekt_kurzbz) + { + $qry = "SELECT * FROM fue.tbl_projekt + WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); + if ($result = $this->db_query($qry)) { + $row = $this->db_fetch_object($result); + $obj = new projekt(); + + $obj->projekt_kurzbz = $row->projekt_kurzbz; + $obj->nummer = $row->nummer; + $obj->titel = $row->titel; + $obj->beschreibung = $row->beschreibung; + $obj->beginn = $row->beginn; + $obj->ende = $row->ende; + $obj->oe_kurzbz = $row->oe_kurzbz; + + return $obj; + } + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } } } + ?> From 6c857b7c24717d224d265317c9c132b0397aa751 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 3 Sep 2020 15:25:33 +0200 Subject: [PATCH 002/119] cleanup var_dump --- include/projekt.class.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/projekt.class.php b/include/projekt.class.php index d1cd49661..036a90bf0 100644 --- a/include/projekt.class.php +++ b/include/projekt.class.php @@ -526,8 +526,6 @@ class projekt extends basis_db $given_start = date('Y-m-d', strtotime($give_project_start)); $given_ende = date('Y-m-d', strtotime($give_projekt_ende)); - var_dump($projekt_start,$given_start); - var_dump($projekt_ende,$given_ende); if ((empty($projekt_start) || $given_start >= $projekt_start) && (empty($projekt_ende) || $given_ende <= $projekt_ende)) return true; else From 2e44f58df9cc8d0f03a313c08620f28b35e79200 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Mon, 7 Sep 2020 16:11:17 +0200 Subject: [PATCH 003/119] check time in project for user input --- cis/private/tools/zeitaufzeichnung.php | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index ed146e728..ba554f5e7 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -672,6 +672,14 @@ function checkVals ($oe_val, $project_val, $phase_val, $service_val) if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) { $zeit = new zeitaufzeichnung(); + $projects_of_user = new projekt(); + $projects= $projects_of_user->getProjekteListForMitarbeiter($user); + $project_kurzbz_array = array(); + + foreach($projects as $prjct) + { + array_push($project_kurzbz_array, (string) $prjct->projekt_kurzbz); + } if ($_FILES['csv']['error'] == 0 && isset($_POST['import'])) { @@ -689,14 +697,14 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $anzahl = 0; $importtage_array = array(); $ende_vorher = date('Y-m-d H:i:s'); - $projects_of_user = new projekt(); + /*$projects_of_user = new projekt(); $projects= $projects_of_user->getProjekteListForMitarbeiter($user); $project_kurzbz_array = array(); foreach($projects as $prjct) { array_push($project_kurzbz_array, (string) $prjct->projekt_kurzbz); - } + }*/ while(($data = fgetcsv($handle, 1000, ';', '"')) !== FALSE) { @@ -832,7 +840,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) } } else if ($datum->formatDatum($von, $format='Y-m-d H:i:s') < $sperrdatum) - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum'; + echo '' .$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum'; else if (isset($_POST['save']) || isset($_POST['edit'])) { @@ -864,7 +872,12 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $zeit->service_id = $service_id; $zeit->kunde_uid = $kunde_uid; $saveerror = 0; - if (isset($_POST['genPause']) && (isset($_POST['save']) || isset($_POST['edit']))) + if (!$projects_of_user->checkProjectInCorrectTime($projekt_kurzbz, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d'))) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; + $saveerror = 1; + } + elseif (isset($_POST['genPause']) && (isset($_POST['save']) || isset($_POST['edit']))) { $p_start = $datum->formatDatum($von_pause, $format='Y-m-d H:i:s'); From 37884b1f7e96b1f713f0866ba20e0b5a8906e189 Mon Sep 17 00:00:00 2001 From: Oliiver Date: Tue, 8 Sep 2020 09:49:57 +0200 Subject: [PATCH 004/119] cleanup code --- cis/private/tools/zeitaufzeichnung.php | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index ba554f5e7..d5ace925a 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1,5 +1,5 @@ getProjekteListForMitarbeiter($user); - $project_kurzbz_array = array(); - - foreach($projects as $prjct) - { - array_push($project_kurzbz_array, (string) $prjct->projekt_kurzbz); - }*/ while(($data = fgetcsv($handle, 1000, ';', '"')) !== FALSE) { From e4f3139205a89f6ed969a51dd7696e9be97b57a7 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 9 Sep 2020 10:50:42 +0200 Subject: [PATCH 005/119] impliment zeitaufzeichnungs checks --- cis/private/tools/zeitaufzeichnung.php | 10 +-- include/projekt.class.php | 2 +- include/projektphase.class.php | 86 +++++++++++++++++++++++++- 3 files changed, 92 insertions(+), 6 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index ba554f5e7..a114eef40 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -680,6 +680,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) { array_push($project_kurzbz_array, (string) $prjct->projekt_kurzbz); } + $projectphase = new projektphase(); if ($_FILES['csv']['error'] == 0 && isset($_POST['import'])) { @@ -726,10 +727,6 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $data[8] = NULL; if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
'; - //elseif (isset($data[8]) && ( filter_var($data[8], FILTER_VALIDATE_INT) === false )) - //{ - // echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Service ID ist keine Zahl ('.$data[8].')
'; - //} elseif (!empty($data[6]) && !$projects_of_user->checkProjectInCorrectTime($data[6], $data[2], $data[3])) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; @@ -877,6 +874,11 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; $saveerror = 1; } + elseif (!$projectphase->checkProjectphaseInCorrectTime($projektphase_id, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d'))) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt.
'; + $saveerror = 1; + } elseif (isset($_POST['genPause']) && (isset($_POST['save']) || isset($_POST['edit']))) { diff --git a/include/projekt.class.php b/include/projekt.class.php index 036a90bf0..304d6d4ab 100644 --- a/include/projekt.class.php +++ b/include/projekt.class.php @@ -25,7 +25,7 @@ * @param string $projekt_kurzbz primary key Projektname. */ require_once(dirname(__FILE__).'/basis_db.class.php'); - +error_reporting(E_ALL ^ E_NOTICE); class projekt extends basis_db { public $new; // boolean diff --git a/include/projektphase.class.php b/include/projektphase.class.php index 81de4e095..8d96c92af 100644 --- a/include/projektphase.class.php +++ b/include/projektphase.class.php @@ -24,7 +24,7 @@ */ require_once(dirname(__FILE__).'/basis_db.class.php'); require_once(dirname(__FILE__).'/projekttask.class.php'); - +error_reporting(E_ALL ^ E_NOTICE); class projektphase extends basis_db { public $new; // boolean @@ -572,6 +572,90 @@ class projektphase extends basis_db else return false; } + + public function checkProjectphaseInCorrectTime($projektphase_id, $given_projectphase_start, $given_projektphase_ende) + { + try + { + $projektphase = $this->getProjectphaseById($projektphase_id); + if(strtotime($projektphase->beginn)) + $projektphase_start = date('Y-m-d', strtotime($projektphase->beginn)); + else + $projektphase_start = NULL; + if(strtotime($projektphase->ende)) + $projektphase_ende = date('Y-m-d', strtotime($projektphase->ende)); + else + $projektphase_ende = NULL; + + $given_start = date('Y-m-d', strtotime($given_projectphase_start)); + $given_ende = date('Y-m-d', strtotime($given_projektphase_ende)); + + if ((empty($projektphase_start) || $given_start >= $projektphase_start) && (empty($projektphase_ende) || $given_ende <= $projektphase_ende)) + return true; + else + return false; + + } + catch (Exception $e) + { + echo 'Exception abgefangen: ', $e->getMessage(), "\n"; + } + } + + /** + * Laedt die Projektphase mit der ID $projektphase_id + * @param $projektphase_id ID der zu ladenden Projektphase + * @return true wenn ok, false im Fehlerfall + */ + public function getProjectphaseById($projektphase_id) + { + if(!is_numeric($projektphase_id)) + { + $this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung + FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id) + WHERE projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $obj = new projektphase(); + $obj->projekt_kurzbz = $row->projekt_kurzbz; + $obj->projektphase_id = $row->projektphase_id; + $obj->projektphase_fk = $row->projektphase_fk; + $obj->bezeichnung = $row->bezeichnung; + $obj->typ = $row->typ; + $obj->beschreibung = $row->beschreibung; + $obj->start = $row->start; + $obj->ende = $row->ende; + $obj->personentage = $row->personentage; + $obj->farbe = $row->farbe; + $obj->budget = $row->budget; + $obj->ressource_id = $row->ressource_id; + $obj->ressource_bezeichnung = $row->ressource_bezeichnung; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + + return $obj; + } + else + { + $this->errormsg = 'Datensatz wurde nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } } ?> From 2e8ed786f456cd4392300bdf83bfc37518adc455 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 9 Sep 2020 13:05:28 +0200 Subject: [PATCH 006/119] impliment export --- cis/private/tools/zeitaufzeichnung.php | 87 +++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 1 deletion(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 8c4588893..5831ebecf 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -166,6 +166,12 @@ if(isset($_POST['export'])) } } +//CSV export für Übersicht zugeteilter Projekte - Konflikt mit normalen HTML headern deshalb weiter vorne +if(isset($_POST['projektübersichtexport'])) +{ + exportProjectOverviewAsCSV($user, ','); +} + echo ' @@ -1048,7 +1054,9 @@ if($projekt->getProjekteMitarbeiter($user, true)) CSV Import | - CSV Export"; + CSV Export | + + Projektübersichtexport"; if($anzprojekte > 0) echo " | ".$p->t("zeitaufzeichnung/projektexport").""; echo " @@ -1134,6 +1142,17 @@ if($projekt->getProjekteMitarbeiter($user, true)) echo ''; } + if (isset($_GET['projektübersichtexport'])) + { + echo '
'; + echo '
'; + echo 'CSV-Export'; + echo ''; + echo ''; + echo '
'; + echo '
'; + } + //Aktivitaet echo ''; echo ''.$p->t("zeitaufzeichnung/aktivitaet").''; @@ -1886,4 +1905,70 @@ function getZeitaufzeichnung($user, $von, $bis) return $za; } +/** + * Exportiert Zeitaufzeichnungsdaten als CSV + * @param $data Zeitaufzeichnungsdaten + * @param string $delimiter CSV-Trennzeichen + * @param $fieldheadings Namen der Spaltenüberschriften + * @param bool $za_simple Zeitaufzeichnung lang (für Infrastrukturmitarbeiter) oder kurz (simple) + * @param $uid Id des Users für CSV-Filenamen "zeitaufzeichnung_uid" + */ +function exportProjectOverviewAsCSV($user, $delimiter = ',') +{ + + $filename = "projektUebersicht_".$user.".csv"; + header('Content-type: text/csv; charset=utf-8'); + header('Content-Disposition: attachment; filename='.$filename); + + $file = fopen('php://output', 'w'); + $towrite = getDataForProjectOverviewCSV($user); + foreach ($towrite as $row) + { + fputcsv($file, $row, $delimiter); + } + fclose($file); + //Abbruch damit HTML markup danach nicht mit exportiert wird + exit(); +} + +function getDataForProjectOverviewCSV($user) +{ + $projects_of_user = new projekt(); + $projects= $projects_of_user->getProjekteListForMitarbeiter($user); + + $csvData = array(); + //headers schreiben + $csvData[] = array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'START', 'PROJEKT ENDE'); + foreach ($projects as $project) + { + //Newline characters bei Beschreibung ersetzen + $titel = $project->titel; + $projekt_kurzbz = $project->projekt_kurzbz; + $projekt_phase = ''; + $beginn = $project->beginn; + $ende = $project->ende; + + $csvData[] = array($titel, $projekt_kurzbz,$projekt_phase, $beginn, $ende); + + $projektphasen = new projektphase($projekt_kurzbz); + + if($projektphasen->getProjektphasen($projekt_kurzbz)) + { + foreach($projektphasen->result as $projektphase) + { + $projekt_phase = $projektphase->bezeichnung; + if(!empty($projektphase->beginn)) + $beginn = $projektphase->beginn; + else + $beginn = $project->beginn; + if(!empty($projektphase->ende)) + $ende = $projektphase->ende; + else + $ende = $project->ende; + $csvData[] = array($titel, $projekt_kurzbz,$projekt_phase, $beginn, $ende); + } + } + } + return $csvData; +} ?> From e933cce0e890bfe610c6b7164e071a37a38a6039 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 10 Sep 2020 09:29:39 +0200 Subject: [PATCH 007/119] add project ID to csv export --- cis/private/tools/zeitaufzeichnung.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 5831ebecf..6ee3e35cd 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1938,17 +1938,18 @@ function getDataForProjectOverviewCSV($user) $csvData = array(); //headers schreiben - $csvData[] = array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'START', 'PROJEKT ENDE'); + $csvData[] = array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'PROJEKTPHASEN ID', 'START', 'PROJEKT ENDE'); foreach ($projects as $project) { //Newline characters bei Beschreibung ersetzen $titel = $project->titel; $projekt_kurzbz = $project->projekt_kurzbz; $projekt_phase = ''; + $projekt_phase_id = ''; $beginn = $project->beginn; $ende = $project->ende; - $csvData[] = array($titel, $projekt_kurzbz,$projekt_phase, $beginn, $ende); + $csvData[] = array($titel, $projekt_kurzbz,$projekt_phase,$projekt_phase_id, $beginn, $ende); $projektphasen = new projektphase($projekt_kurzbz); @@ -1957,6 +1958,7 @@ function getDataForProjectOverviewCSV($user) foreach($projektphasen->result as $projektphase) { $projekt_phase = $projektphase->bezeichnung; + $projekt_phase_id = $projektphase->projektphase_id; if(!empty($projektphase->beginn)) $beginn = $projektphase->beginn; else @@ -1965,7 +1967,7 @@ function getDataForProjectOverviewCSV($user) $ende = $projektphase->ende; else $ende = $project->ende; - $csvData[] = array($titel, $projekt_kurzbz,$projekt_phase, $beginn, $ende); + $csvData[] = array($titel, $projekt_kurzbz,$projekt_phase, $projekt_phase_id, $beginn, $ende); } } } From 612c339305dc5316608802131da9e795e019b555 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 10 Sep 2020 10:39:33 +0200 Subject: [PATCH 008/119] only get project phases that user is assigned to in CSV Export --- cis/private/tools/zeitaufzeichnung.php | 4 +- include/projektphase.class.php | 79 ++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 2 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 6ee3e35cd..1056ebc87 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1951,9 +1951,9 @@ function getDataForProjectOverviewCSV($user) $csvData[] = array($titel, $projekt_kurzbz,$projekt_phase,$projekt_phase_id, $beginn, $ende); - $projektphasen = new projektphase($projekt_kurzbz); + $projektphasen = new projektphase(); - if($projektphasen->getProjektphasen($projekt_kurzbz)) + if($projektphasen->getProjectphaseForMitarbeiter($user)) { foreach($projektphasen->result as $projektphase) { diff --git a/include/projektphase.class.php b/include/projektphase.class.php index 8d96c92af..fbf41682c 100644 --- a/include/projektphase.class.php +++ b/include/projektphase.class.php @@ -656,6 +656,85 @@ class projektphase extends basis_db return false; } } + + public function getProjectphaseForMitarbeiter($mitarbeiter_uid) + { + + /*$qry = "SELECT DISTINCT + tbl_projekt.* + FROM + fue.tbl_ressource + JOIN fue.tbl_projekt_ressource USING(ressource_id) + JOIN fue.tbl_projekt USING(projekt_kurzbz) + WHERE (beginn<=now() or beginn is null) + AND (ende + interval '1 month 1 day' >=now() OR ende is null) + AND + ( + mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid) . " OR + student_uid=" . $this->db_add_param($mitarbeiter_uid) . " + )";*/ + + $qry = " + + SELECT DISTINCT + tbl_projektphase.* + FROM + fue.tbl_projektphase + JOIN fue.tbl_projekt USING (projekt_kurzbz) + JOIN fue.tbl_projekt_ressource USING (projektphase_id) + JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id) + WHERE + ( + ( + (tbl_projekt.beginn<=now() or tbl_projekt.beginn is null) + AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null) + ) OR ( + (tbl_projektphase.start<=now() or tbl_projektphase.start is null) + AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null) + ) + ) + AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + while ($row = $this->db_fetch_object($result)) { + $obj = new projektphase(); + $obj->projekt_kurzbz = $row->projekt_kurzbz; + $obj->projektphase_id = $row->projektphase_id; + $obj->projektphase_fk = $row->projektphase_fk; + $obj->bezeichnung = $row->bezeichnung; + $obj->typ = $row->typ; + $obj->beschreibung = $row->beschreibung; + $obj->start = $row->start; + $obj->ende = $row->ende; + $obj->personentage = $row->personentage; + $obj->farbe = $row->farbe; + $obj->budget = $row->budget; + $obj->ressource_id = $row->ressource_id; + $obj->ressource_bezeichnung = $row->ressource_bezeichnung; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Datensatz wurde nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } } ?> From a565b667519dd109cd74b7b8eeb078d029ad932f Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 10 Sep 2020 13:07:51 +0200 Subject: [PATCH 009/119] display only projektphasen of the user --- cis/private/tools/zeitaufzeichnung.php | 37 ++++--- .../tools/zeitaufzeichnung_projektphasen.php | 20 +++- include/projektphase.class.php | 104 ++++++++++++++++-- 3 files changed, 128 insertions(+), 33 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 1056ebc87..6263972ed 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1936,6 +1936,9 @@ function getDataForProjectOverviewCSV($user) $projects_of_user = new projekt(); $projects= $projects_of_user->getProjekteListForMitarbeiter($user); + $projektphase = new projektphase(); + $projektphasen = $projektphase->getProjectphaseForMitarbeiter($user); + $csvData = array(); //headers schreiben $csvData[] = array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'PROJEKTPHASEN ID', 'START', 'PROJEKT ENDE'); @@ -1951,25 +1954,27 @@ function getDataForProjectOverviewCSV($user) $csvData[] = array($titel, $projekt_kurzbz,$projekt_phase,$projekt_phase_id, $beginn, $ende); - $projektphasen = new projektphase(); + //$projektphasen = new projektphase(); - if($projektphasen->getProjectphaseForMitarbeiter($user)) - { - foreach($projektphasen->result as $projektphase) + + foreach($projektphasen as $prjp) { - $projekt_phase = $projektphase->bezeichnung; - $projekt_phase_id = $projektphase->projektphase_id; - if(!empty($projektphase->beginn)) - $beginn = $projektphase->beginn; - else - $beginn = $project->beginn; - if(!empty($projektphase->ende)) - $ende = $projektphase->ende; - else - $ende = $project->ende; - $csvData[] = array($titel, $projekt_kurzbz,$projekt_phase, $projekt_phase_id, $beginn, $ende); + if($prjp->projekt_kurzbz===$projekt_kurzbz) + { + $projekt_phase = $prjp->bezeichnung; + $projekt_phase_id = $prjp->projektphase_id; + if (!empty($prjp->beginn)) + $beginn = $prjp->beginn; + else + $beginn = $project->beginn; + if (!empty($prjp->ende)) + $ende = $prjp->ende; + else + $ende = $project->ende; + $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); + } } - } + } return $csvData; } diff --git a/cis/private/tools/zeitaufzeichnung_projektphasen.php b/cis/private/tools/zeitaufzeichnung_projektphasen.php index 8ec421395..c6fe99363 100644 --- a/cis/private/tools/zeitaufzeichnung_projektphasen.php +++ b/cis/private/tools/zeitaufzeichnung_projektphasen.php @@ -1,26 +1,36 @@ getProjectphaseForMitarbeiterByKurzBz($user, $projekt_kurzbz); + $pp_user_ids = array(); + foreach ($projektphasen_user as $pp_user) + { + array_push($pp_user_ids, $pp_user->projektphase_id); + } + if($projektphase->getProjektphasen($projekt_kurzbz)) { $result_obj = array(); foreach($projektphase->result as $row) { - $item['projektphase_id']=$row->projektphase_id; - $item['bezeichnung']=$row->bezeichnung; - $result_obj[]=$item; + if(in_array($row->projektphase_id, $pp_user_ids)) + { + $item['projektphase_id'] = $row->projektphase_id; + $item['bezeichnung'] = $row->bezeichnung; + $result_obj[] = $item; + } } echo json_encode($result_obj); } diff --git a/include/projektphase.class.php b/include/projektphase.class.php index fbf41682c..5744382e9 100644 --- a/include/projektphase.class.php +++ b/include/projektphase.class.php @@ -657,9 +657,14 @@ class projektphase extends basis_db } } + /** + * Laedt die Projektphase mit der ID des mitarbeiters + * @param $mitarbeiter_uid der zu ladenden Projektphase des users + * @return array wenn ok, false im Fehlerfall + */ public function getProjectphaseForMitarbeiter($mitarbeiter_uid) { - + $projecphasetList = array(); /*$qry = "SELECT DISTINCT tbl_projekt.* FROM @@ -697,10 +702,10 @@ class projektphase extends basis_db if($result = $this->db_query($qry)) { - if($row = $this->db_fetch_object()) + while($row = $this->db_fetch_object($result)) { - while ($row = $this->db_fetch_object($result)) { $obj = new projektphase(); + $obj->projekt_kurzbz = $row->projekt_kurzbz; $obj->projektphase_id = $row->projektphase_id; $obj->projektphase_fk = $row->projektphase_fk; @@ -713,21 +718,97 @@ class projektphase extends basis_db $obj->farbe = $row->farbe; $obj->budget = $row->budget; $obj->ressource_id = $row->ressource_id; - $obj->ressource_bezeichnung = $row->ressource_bezeichnung; $obj->insertamum = $row->insertamum; $obj->insertvon = $row->insertvon; $obj->updateamum = $row->updateamum; $obj->updatevon = $row->updatevon; $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = 'Datensatz wurde nicht gefunden'; - return false; + + array_push($projecphasetList, $obj); } + return $projecphasetList; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt die Projektphase mit der ID des mitarbeiters für das jeweilige Projekt + * @param $mitarbeiter_uid der zu ladenden Projektphase des users + * @param $prjkzbz des zu landenen Projekts + * @return array wenn ok, false im Fehlerfall + */ + public function getProjectphaseForMitarbeiterByKurzBz($mitarbeiter_uid, $prjkzbz) + { + $projecphasetList = array(); + /*$qry = "SELECT DISTINCT + tbl_projekt.* + FROM + fue.tbl_ressource + JOIN fue.tbl_projekt_ressource USING(ressource_id) + JOIN fue.tbl_projekt USING(projekt_kurzbz) + WHERE (beginn<=now() or beginn is null) + AND (ende + interval '1 month 1 day' >=now() OR ende is null) + AND + ( + mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid) . " OR + student_uid=" . $this->db_add_param($mitarbeiter_uid) . " + )";*/ + + $qry = " + + SELECT DISTINCT + tbl_projektphase.* + FROM + fue.tbl_projektphase + JOIN fue.tbl_projekt USING (projekt_kurzbz) + JOIN fue.tbl_projekt_ressource USING (projektphase_id) + JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id) + WHERE + ( + ( + (tbl_projekt.beginn<=now() or tbl_projekt.beginn is null) + AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null) + ) OR ( + (tbl_projektphase.start<=now() or tbl_projektphase.start is null) + AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null) + ) + ) + AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid); + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new projektphase(); + + $obj->projekt_kurzbz = $row->projekt_kurzbz; + $obj->projektphase_id = $row->projektphase_id; + $obj->projektphase_fk = $row->projektphase_fk; + $obj->bezeichnung = $row->bezeichnung; + $obj->typ = $row->typ; + $obj->beschreibung = $row->beschreibung; + $obj->start = $row->start; + $obj->ende = $row->ende; + $obj->personentage = $row->personentage; + $obj->farbe = $row->farbe; + $obj->budget = $row->budget; + $obj->ressource_id = $row->ressource_id; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + + $this->result[] = $obj; + + if($prjkzbz === $row->projekt_kurzbz ) + array_push($projecphasetList, $obj); + } + return $projecphasetList; } else { @@ -735,6 +816,5 @@ class projektphase extends basis_db return false; } } - } ?> From 82d7f4edd200cc0b8434928c6413852b7913cffb Mon Sep 17 00:00:00 2001 From: Oliiver Date: Wed, 16 Sep 2020 09:37:31 +0200 Subject: [PATCH 010/119] fix brackets; remove error_reporting --- include/projekt.class.php | 43 +++--- include/projektphase.class.php | 230 +++++++++++++++++---------------- 2 files changed, 150 insertions(+), 123 deletions(-) diff --git a/include/projekt.class.php b/include/projekt.class.php index 304d6d4ab..dc5144fb8 100644 --- a/include/projekt.class.php +++ b/include/projekt.class.php @@ -25,7 +25,7 @@ * @param string $projekt_kurzbz primary key Projektname. */ require_once(dirname(__FILE__).'/basis_db.class.php'); -error_reporting(E_ALL ^ E_NOTICE); + class projekt extends basis_db { public $new; // boolean @@ -86,12 +86,14 @@ class projekt extends basis_db return true; } - else { + else + { $this->errormsg = 'Datensatz wurde nicht gefunden'; return false; } } - else { + else + { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } @@ -138,7 +140,8 @@ class projekt extends basis_db } return true; } - else { + else + { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } @@ -178,7 +181,8 @@ class projekt extends basis_db } return true; } - else { + else + { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } @@ -218,7 +222,8 @@ class projekt extends basis_db } return true; } - else { + else + { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } @@ -287,7 +292,8 @@ class projekt extends basis_db $this->db_add_param($this->anzahl_ma) . ',' . $this->db_add_param($this->aufwandstyp_kurzbz) . ');'; } - else { + else + { //Updaten des bestehenden Datensatzes $qry = 'UPDATE fue.tbl_projekt SET ' . @@ -309,7 +315,8 @@ class projekt extends basis_db if ($this->db_query($qry)) { return true; } - else { + else + { $this->errormsg = 'Fehler beim Speichern der Daten'; return false; } @@ -327,7 +334,8 @@ class projekt extends basis_db if ($this->db_query($qry)) { return true; } - else { + else + { $this->errormsg = 'Fehler beim Loeschen des Datensatzes'; return false; } @@ -394,7 +402,8 @@ class projekt extends basis_db } return true; } - else { + else + { $this->erromsg = 'Fehler beim Laden der Daten'; return false; } @@ -464,7 +473,8 @@ class projekt extends basis_db } return $projectList; } - else { + else + { $this->erromsg = 'Fehler beim Laden der Daten'; return false; } @@ -492,12 +502,14 @@ class projekt extends basis_db return true; } - else { + else + { $this->errormsg = 'Datensatz wurde nicht gefunden'; return false; } } - else { + else + { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } @@ -534,7 +546,7 @@ class projekt extends basis_db } catch (Exception $e) { - echo 'Exception abgefangen: ', $e->getMessage(), "\n"; + error_log('Exception abgefangen: ', $e->getMessage(), "\n"); } } @@ -556,7 +568,8 @@ class projekt extends basis_db return $obj; } - else { + else + { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } diff --git a/include/projektphase.class.php b/include/projektphase.class.php index 5744382e9..e12f2c458 100644 --- a/include/projektphase.class.php +++ b/include/projektphase.class.php @@ -24,7 +24,7 @@ */ require_once(dirname(__FILE__).'/basis_db.class.php'); require_once(dirname(__FILE__).'/projekttask.class.php'); -error_reporting(E_ALL ^ E_NOTICE); + class projektphase extends basis_db { public $new; // boolean @@ -37,10 +37,10 @@ class projektphase extends basis_db public $bezeichnung; //string public $typ='Projektphase'; //string public $beschreibung; //string - public $start; //date - public $ende; //date + public $start; //date + public $ende; //date public $personentage; //integer - public $farbe; + public $farbe; public $budget; // numeric public $ressource_id; // bigint public $ressource_bezeichnung; // string @@ -58,7 +58,7 @@ class projektphase extends basis_db { parent::__construct(); - if($projektphase_id != null) + if($projektphase_id != null) $this->load($projektphase_id); } @@ -74,11 +74,11 @@ class projektphase extends basis_db $this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein'; return false; } - - $qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung + + $qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id) WHERE projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); - + if($this->db_query($qry)) { if($row = $this->db_fetch_object()) @@ -102,20 +102,20 @@ class projektphase extends basis_db $this->updatevon = $row->updatevon; return true; } - else + else { $this->errormsg = 'Datensatz wurde nicht gefunden'; return false; } } - else + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } } - + /** * Laedt die Projektphasen mit zu einem Projekt * @param $projekt_kurzbz Projekt der zu ladenden Projektphasen @@ -125,23 +125,23 @@ class projektphase extends basis_db { $this->result=array(); $qry = "Select * from fue.tbl_projektphase where projekt_kurzbz = ".$this->db_add_param($projekt_kurzbz)." and projektphase_id not in ( - WITH RECURSIVE tasks(projektphase_fk) as + WITH RECURSIVE tasks(projektphase_fk) as ( SELECT projektphase_id FROM fue.tbl_projektphase WHERE projektphase_fk=".$this->db_add_param($projektphase_id, FHC_INTEGER)." UNION ALL - SELECT p.projektphase_id FROM fue.tbl_projektphase p, tasks + SELECT p.projektphase_id FROM fue.tbl_projektphase p, tasks WHERE p.projektphase_fk=tasks.projektphase_fk ) SELECT * FROM tasks) and projektphase_id not in (".$this->db_add_param($projektphase_id, FHC_INTEGER).")"; //echo "\n".$qry."\n"; - + if($this->db_query($qry)) { while($row = $this->db_fetch_object()) { $obj = new projektphase(); - + $obj->projekt_kurzbz = $row->projekt_kurzbz; $obj->projektphase_id = $row->projektphase_id; $obj->projektphase_fk = $row->projektphase_fk; @@ -158,25 +158,25 @@ class projektphase extends basis_db $obj->insertvon = $row->insertvon; $obj->updateamum = $row->updateamum; $obj->updatevon = $row->updatevon; - + $this->result[] = $obj; } //var_dump($this->result); return true; } - else + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } } - + /** * Laedt die Projektphasen zu einem Projekt * @param $projekt_kurzbz Projekt der zu ladenden Projektphasen * @param $foreignkey wenn ! gib nur die Erste Ebene der Projektphasen zurück * @return true wenn ok, false im Fehlerfall - */ + */ public function getProjektphasen($projekt_kurzbz, $foreignkey = null) { $this->result=array(); @@ -184,18 +184,18 @@ class projektphase extends basis_db FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id) WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); //echo "\n".$qry."\n"; - + if(!is_null($foreignkey)) $qry .= " and projektphase_fk is NULL"; - - $qry .= " ORDER BY start, projektphase_fk DESC;"; - + + $qry .= " ORDER BY start, projektphase_fk DESC;"; + if($this->db_query($qry)) { while($row = $this->db_fetch_object()) { $obj = new projektphase(); - + $obj->projekt_kurzbz = $row->projekt_kurzbz; $obj->projektphase_id = $row->projektphase_id; $obj->projektphase_fk = $row->projektphase_fk; @@ -213,36 +213,36 @@ class projektphase extends basis_db $obj->insertvon = $row->insertvon; $obj->updateamum = $row->updateamum; $obj->updatevon = $row->updatevon; - + $this->result[] = $obj; } //var_dump($this->result); return true; } - else + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } } - + /** * Lädt alle Unterphasen zu einem Projekt * @param type $phase_id - * @return boolean + * @return boolean */ public function getAllUnterphasen($phase_id) { $qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichung FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id) - WHERE projektphase_fk =".$this->db_add_param($phase_id, FHC_INTEGER); - + WHERE projektphase_fk =".$this->db_add_param($phase_id, FHC_INTEGER); + if($result = $this->db_query($qry)) { while($row = $this->db_fetch_object()) { - $obj = new projektphase(); - + $obj = new projektphase(); + $obj->projekt_kurzbz = $row->projekt_kurzbz; $obj->projektphase_id = $row->projektphase_id; $obj->projektphase_fk = $row->projektphase_fk; @@ -260,15 +260,15 @@ class projektphase extends basis_db $obj->insertvon = $row->insertvon; $obj->updateamum = $row->updateamum; $obj->updatevon = $row->updatevon; - + $this->result[] = $obj; } - return true; + return true; } else { - $this->errormsg = "Fehler beim laden der Daten"; - return false; + $this->errormsg = "Fehler beim laden der Daten"; + return false; } } @@ -296,11 +296,11 @@ class projektphase extends basis_db $this->errormsg.='Projekt Kurzbz darf nicht länger als 16 Zeichen 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 @@ -315,12 +315,12 @@ class projektphase extends basis_db if($new==null) $new = $this->new; - + if($new) { //Neuen Datensatz einfuegen - $qry='BEGIN; INSERT INTO fue.tbl_projektphase (projekt_kurzbz, projektphase_fk, bezeichnung, typ, + $qry='BEGIN; INSERT INTO fue.tbl_projektphase (projekt_kurzbz, projektphase_fk, bezeichnung, typ, beschreibung, start, ende, budget, ressource_id, insertvon, insertamum, updatevon, updateamum, farbe, personentage) VALUES ('. $this->db_add_param($this->projekt_kurzbz).', '. $this->db_add_param($this->projektphase_fk).', '. @@ -356,7 +356,7 @@ class projektphase extends basis_db 'updatevon='.$this->db_add_param($this->updatevon).' '. 'WHERE projektphase_id='.$this->db_add_param($this->projektphase_id, FHC_INTEGER).';'; } - + if($this->db_query($qry)) { if($new) @@ -371,21 +371,21 @@ class projektphase extends basis_db $this->db_query('COMMIT'); return true; } - else + else { $this->errormsg = 'Fehler beim Auslesen der Sequence'; $this->db_query('ROLLBACK;'); return false; } } - else + else { $this->errormsg = 'Fehler beim Auslesen der Sequence'; $this->db_query('ROLLBACK;'); return false; } } - + return true; } else @@ -394,7 +394,7 @@ class projektphase extends basis_db return false; } } - + /** * Loescht den Datenensatz mit der ID die uebergeben wird * @param $projekt_kurzbz ID die geloescht werden soll @@ -407,77 +407,81 @@ class projektphase extends basis_db $this->errormsg = 'Projektphase_ID ist ungueltig'; return true; } - + // an projektphase hängt noch eine phase if($this->existPhaseFk($projektphase_id)) { $this->errormsg ="Phase kann nicht gelöscht werden, da noch eine andere Phase daran hängt. Bitte zuerst Phase abhängen. "; - return false; + return false; } - + // Beginne Transaktion und lösche alle Tasks der Phase - $qry1 ="Begin; DELETE FROM fue.tbl_projekttask + $qry1 ="Begin; DELETE FROM fue.tbl_projekttask WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER).";"; - + if($this->db_query($qry1)) { // Lösche alle zugewiesenen Ressourcen - $qry2 = "DELETE FROM fue.tbl_projekt_ressource + $qry2 = "DELETE FROM fue.tbl_projekt_ressource WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER).";"; - + if($this->db_query($qry2)) { // Lösche den Phaseneintrag - $qry3 = "DELETE FROM fue.tbl_projektphase + $qry3 = "DELETE FROM fue.tbl_projektphase WHERE projektphase_id = ".$this->db_add_param($projektphase_id, FHC_INTEGER).";"; - + if($this->db_query($qry3)) { $this->db_query('COMMIT'); - return true; - }else + return true; + } + else { $this->errormsg ="Fehler beim löschen der Projektphase aufgetreten"; $this->db_query('ROLLBACK'); - return false; + return false; } - }else + } + else { $this->errormsg ="Fehler beim löschen der Ressourcen aufgetreten"; $this->db_query('ROLLBACK'); - return false; + return false; } - }else + } + else { $this->errormsg ="Fehler beim löschen der Tasks aufgetreten"; - $this->db_query('ROLLBACK'); - return false; + $this->db_query('ROLLBACK'); + return false; } } - + /** - * + * * Überprüft ob an übergebenr Phase noch eine andere Phase hängt. true wenn noch eine daran hängt * @param $projektphase_id */ public function existPhaseFk($projektphase_id) { $qry = "SELECT * FROM fue.tbl_projektphase WHERE projektphase_fk =".$this->db_add_param($projektphase_id, FHC_INTEGER).";"; - + if($this->db_query($qry)) { if($row = $this->db_fetch_object()) - return true; - }else + return true; + } + else { $this->errormsg ="Fehler bei der Abfrage aufgetreten"; - return false; + return false; } } - + /** - * + * * Löscht Ressourcen einer Phase * @param $projektphase_id * @param $ressource_id -> wenn != null wird nur die eine ressource gelöscht @@ -492,58 +496,60 @@ class projektphase extends basis_db $this->errormsg = "Keine gültige ID übergeben"; return false; } - $qry ="DELETE from fue.tbl_projekt_ressource - WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER)." and + $qry ="DELETE from fue.tbl_projekt_ressource + WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER)." and ressource_id=".$this->db_add_param($ressource_id, FHC_INTEGER).";"; - }else + } + else { // gesamte Ressourcen von Phase werden gelöscht if(!is_numeric($projektphase_id)) { $this->errormsg ="Keine gültige ID übergeben"; } - $qry ="DELETE from fue.tbl_projekt_ressource + $qry ="DELETE from fue.tbl_projekt_ressource WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER).";"; } if($this->db_query($qry)) { - return true; - }else + return true; + } + else { $this->errormsg = "Fehler bei der Abfrage aufgetreten"; - return false; + return false; } - + } - + /** - * + * * gibt den Fortschritt der Phase in Prozent zurück --> Phasen die auf die übergebene Phase zeigen werden berücksichtigt * @param $projektphase_id */ - public function getFortschritt($projektphase_id) +public function getFortschritt($projektphase_id) { - $qry = "Select * from fue.tbl_projektphase phase - join fue.tbl_projekttask task using(projektphase_id) + $qry = "Select * from fue.tbl_projektphase phase + join fue.tbl_projekttask task using(projektphase_id) where task.projektphase_id = ".$this->db_add_param($projektphase_id, FHC_INTEGER)." OR task.projektphase_id IN ( - - WITH RECURSIVE tasks(projektphase_fk) as + + WITH RECURSIVE tasks(projektphase_fk) as ( SELECT projektphase_id FROM fue.tbl_projektphase WHERE projektphase_fk=".$this->db_add_param($projektphase_id, FHC_INTEGER)." UNION ALL - SELECT p.projektphase_id FROM fue.tbl_projektphase p, tasks + SELECT p.projektphase_id FROM fue.tbl_projektphase p, tasks WHERE p.projektphase_fk=tasks.projektphase_fk )SELECT * FROM tasks)"; - - $taskAnzahl = 0; + + $taskAnzahl = 0; // erledige tasks - $i = 0; - $ergebnis = 0; - + $i = 0; + $ergebnis = 0; + if($this->db_query($qry)) { while($row = $this->db_fetch_object()) @@ -553,24 +559,24 @@ class projektphase extends basis_db $i++; } } - $taskAnzahl = ($taskAnzahl == 0)? 1 : $taskAnzahl; - $ergebnis = ($i*100)/$taskAnzahl; - - return sprintf("%01.2f", $ergebnis); + $taskAnzahl = ($taskAnzahl == 0)? 1 : $taskAnzahl; + $ergebnis = ($i*100)/$taskAnzahl; + + return sprintf("%01.2f", $ergebnis); } - + /** * Überprüft ob alle Tasks einer Phase erledigt sind */ public function isPhaseErledigt($phase_id) { - $task = new projekttask(); - - $task->getProjekttasks($phase_id,null,'offen'); + $task = new projekttask(); + + $task->getProjekttasks($phase_id,null,'offen'); if(count($task->result)==0) - return true; + return true; else - return false; + return false; } public function checkProjectphaseInCorrectTime($projektphase_id, $given_projectphase_start, $given_projektphase_ende) @@ -578,14 +584,22 @@ class projektphase extends basis_db try { $projektphase = $this->getProjectphaseById($projektphase_id); - if(strtotime($projektphase->beginn)) - $projektphase_start = date('Y-m-d', strtotime($projektphase->beginn)); + if(strtotime($projektphase->start)) + { + $projektphase_start = date('Y-m-d', strtotime($projektphase->start)); + } else - $projektphase_start = NULL; + { + $projektphase_start = NULL; + } if(strtotime($projektphase->ende)) - $projektphase_ende = date('Y-m-d', strtotime($projektphase->ende)); + { + $projektphase_ende = date('Y-m-d', strtotime($projektphase->ende)); + } else - $projektphase_ende = NULL; + { + $projektphase_ende = NULL; + } $given_start = date('Y-m-d', strtotime($given_projectphase_start)); $given_ende = date('Y-m-d', strtotime($given_projektphase_ende)); @@ -598,7 +612,7 @@ class projektphase extends basis_db } catch (Exception $e) { - echo 'Exception abgefangen: ', $e->getMessage(), "\n"; + error_log('Exception abgefangen: ', $e->getMessage(), "\n"); } } @@ -615,7 +629,7 @@ class projektphase extends basis_db return false; } - $qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung + $qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id) WHERE projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); From ad98fed84b555fe54fb365d2ddec3a6c314f53e8 Mon Sep 17 00:00:00 2001 From: Oliiver Date: Wed, 16 Sep 2020 12:34:26 +0200 Subject: [PATCH 011/119] additionally export projectphasen without project --- cis/private/tools/zeitaufzeichnung.php | 38 ++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 6263972ed..4802b08ab 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1055,7 +1055,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) CSV Import | CSV Export | - + Projektübersichtexport"; if($anzprojekte > 0) echo " | ".$p->t("zeitaufzeichnung/projektexport").""; @@ -1944,6 +1944,7 @@ function getDataForProjectOverviewCSV($user) $csvData[] = array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'PROJEKTPHASEN ID', 'START', 'PROJEKT ENDE'); foreach ($projects as $project) { + $index=0; //Newline characters bei Beschreibung ersetzen $titel = $project->titel; $projekt_kurzbz = $project->projekt_kurzbz; @@ -1963,19 +1964,44 @@ function getDataForProjectOverviewCSV($user) { $projekt_phase = $prjp->bezeichnung; $projekt_phase_id = $prjp->projektphase_id; - if (!empty($prjp->beginn)) - $beginn = $prjp->beginn; + if (!empty($prjp->start)) + { + $beginn = $prjp->start; + } else - $beginn = $project->beginn; + { + $beginn = $project->beginn; + } if (!empty($prjp->ende)) - $ende = $prjp->ende; + { + $ende = $prjp->ende; + } else - $ende = $project->ende; + { + $ende = $project->ende; + } $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); + //$index = array_search($prjp, array_values($projektphasen)); + unset($projektphasen[$index]); } + $index++; } } + foreach($projektphasen as $prjp) + { + if(empty($prjp->projektphase_fk)) + { + $titel=$prjp->projekt_kurzbz; + $projekt_kurzbz = $prjp->projekt_kurzbz; + $projekt_phase = $prjp->bezeichnung; + $projekt_phase_id = $prjp->projektphase_id; + $beginn = $prjp->start; + $ende = $prjp->ende; + + $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); + } + } return $csvData; } ?> From 85c6aa08fc0ce9bd97efa29f59f619773179683a Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 23 Sep 2020 12:45:00 +0200 Subject: [PATCH 012/119] fix bug for empty projekt and projektphasen --- cis/private/tools/zeitaufzeichnung.php | 6 +++--- include/projekt.class.php | 7 +++++-- include/projektphase.class.php | 26 ++++++++++++++------------ 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 4802b08ab..c5aff4ef6 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -727,7 +727,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
'; elseif (!empty($data[6]) && !$projects_of_user->checkProjectInCorrectTime($data[6], $data[2], $data[3])) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; } elseif (checkVals($data[5],$data[6],$data[7],$data[8])) { @@ -869,12 +869,12 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $saveerror = 0; if (!$projects_of_user->checkProjectInCorrectTime($projekt_kurzbz, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d'))) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; $saveerror = 1; } elseif (!$projectphase->checkProjectphaseInCorrectTime($projektphase_id, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d'))) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt.
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt.
'; $saveerror = 1; } elseif (isset($_POST['genPause']) && (isset($_POST['save']) || isset($_POST['edit']))) diff --git a/include/projekt.class.php b/include/projekt.class.php index dc5144fb8..5cfa0ed9c 100644 --- a/include/projekt.class.php +++ b/include/projekt.class.php @@ -523,6 +523,8 @@ class projekt extends basis_db */ public function checkProjectInCorrectTime($projekt_kurzbz, $give_project_start, $give_projekt_ende) { + if(empty($projekt_kurzbz)) + return true; try { $projekt = $this->getProjectByKurzbz($projekt_kurzbz); @@ -546,7 +548,7 @@ class projekt extends basis_db } catch (Exception $e) { - error_log('Exception abgefangen: ', $e->getMessage(), "\n"); + error_log('Exception abgefangen: ', $e->getMessage(), "\n"); } } @@ -554,7 +556,8 @@ class projekt extends basis_db { $qry = "SELECT * FROM fue.tbl_projekt WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); - if ($result = $this->db_query($qry)) { + if ($result = $this->db_query($qry)) + { $row = $this->db_fetch_object($result); $obj = new projekt(); diff --git a/include/projektphase.class.php b/include/projektphase.class.php index e12f2c458..a0e2b5c6b 100644 --- a/include/projektphase.class.php +++ b/include/projektphase.class.php @@ -581,25 +581,27 @@ public function getFortschritt($projektphase_id) public function checkProjectphaseInCorrectTime($projektphase_id, $given_projectphase_start, $given_projektphase_ende) { + if(empty($projektphase_id)) + return true; try { $projektphase = $this->getProjectphaseById($projektphase_id); if(strtotime($projektphase->start)) - { - $projektphase_start = date('Y-m-d', strtotime($projektphase->start)); - } + { + $projektphase_start = date('Y-m-d', strtotime($projektphase->start)); + } else - { - $projektphase_start = NULL; - } + { + $projektphase_start = NULL; + } if(strtotime($projektphase->ende)) - { - $projektphase_ende = date('Y-m-d', strtotime($projektphase->ende)); - } + { + $projektphase_ende = date('Y-m-d', strtotime($projektphase->ende)); + } else - { - $projektphase_ende = NULL; - } + { + $projektphase_ende = NULL; + } $given_start = date('Y-m-d', strtotime($given_projectphase_start)); $given_ende = date('Y-m-d', strtotime($given_projektphase_ende)); From 49fb4d8afaec65a6927e0d715b8d8360bcbd14be Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 23 Sep 2020 13:16:07 +0200 Subject: [PATCH 013/119] sort csvExport --- cis/private/tools/zeitaufzeichnung.php | 88 +++++++++++++------------- 1 file changed, 43 insertions(+), 45 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index c5aff4ef6..e30605700 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1934,17 +1934,16 @@ function exportProjectOverviewAsCSV($user, $delimiter = ',') function getDataForProjectOverviewCSV($user) { $projects_of_user = new projekt(); - $projects= $projects_of_user->getProjekteListForMitarbeiter($user); + $projects = $projects_of_user->getProjekteListForMitarbeiter($user); $projektphase = new projektphase(); $projektphasen = $projektphase->getProjectphaseForMitarbeiter($user); $csvData = array(); - //headers schreiben - $csvData[] = array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'PROJEKTPHASEN ID', 'START', 'PROJEKT ENDE'); + foreach ($projects as $project) { - $index=0; + $index = 0; //Newline characters bei Beschreibung ersetzen $titel = $project->titel; $projekt_kurzbz = $project->projekt_kurzbz; @@ -1953,55 +1952,54 @@ function getDataForProjectOverviewCSV($user) $beginn = $project->beginn; $ende = $project->ende; - $csvData[] = array($titel, $projekt_kurzbz,$projekt_phase,$projekt_phase_id, $beginn, $ende); + $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); - //$projektphasen = new projektphase(); - - - foreach($projektphasen as $prjp) + foreach ($projektphasen as $prjp) + { + if ($prjp->projekt_kurzbz === $projekt_kurzbz) { - if($prjp->projekt_kurzbz===$projekt_kurzbz) + $projekt_phase = $prjp->bezeichnung; + $projekt_phase_id = $prjp->projektphase_id; + if (!empty($prjp->start)) { - $projekt_phase = $prjp->bezeichnung; - $projekt_phase_id = $prjp->projektphase_id; - if (!empty($prjp->start)) - { - $beginn = $prjp->start; - } - else - { - $beginn = $project->beginn; - } - if (!empty($prjp->ende)) - { - $ende = $prjp->ende; - } - else - { - $ende = $project->ende; - } - $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); - //$index = array_search($prjp, array_values($projektphasen)); - unset($projektphasen[$index]); + $beginn = $prjp->start; + } else + { + $beginn = $project->beginn; } - $index++; + if (!empty($prjp->ende)) + { + $ende = $prjp->ende; + } else + { + $ende = $project->ende; + } + $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); + //$index = array_search($prjp, array_values($projektphasen)); + unset($projektphasen[$index]); } + $index++; + } } - foreach($projektphasen as $prjp) - { - if(empty($prjp->projektphase_fk)) - { - $titel=$prjp->projekt_kurzbz; - $projekt_kurzbz = $prjp->projekt_kurzbz; - $projekt_phase = $prjp->bezeichnung; - $projekt_phase_id = $prjp->projektphase_id; - $beginn = $prjp->start; - $ende = $prjp->ende; + foreach ($projektphasen as $prjp) + { + if (empty($prjp->projektphase_fk)) + { + $titel = $prjp->projekt_kurzbz; + $projekt_kurzbz = $prjp->projekt_kurzbz; + $projekt_phase = $prjp->bezeichnung; + $projekt_phase_id = $prjp->projektphase_id; + $beginn = $prjp->start; + $ende = $prjp->ende; - $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); - } - } + $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); + } + } + + sort($csvData); + //headers schreiben + $csvData[0] = array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'PROJEKTPHASEN ID', 'START', 'PROJEKT ENDE'); return $csvData; } ?> From 4183e7f4f702e04727f04d575745bc5f54adbe7f Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 23 Sep 2020 13:44:46 +0200 Subject: [PATCH 014/119] changed errormessage for projects that are already complited --- cis/private/tools/zeitaufzeichnung.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index e30605700..143863345 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -710,7 +710,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) if($data[0] == $user){ if(!empty($data[6]) && !in_array($data[6], $project_kurzbz_array)) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgendem Projekt nicht zugewiesen sind: ('.$data[6].')
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgendem Projekt entweder nicht zugewiesen sind oder das Projekt schon abgeschlossen wurde: ('.$data[6].')
'; } else { From 16fb610b3fc32176e1248c2b1cf34e2dea92900a Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 23 Sep 2020 14:24:17 +0200 Subject: [PATCH 015/119] impliment checks for ProjektPhase --- cis/private/tools/zeitaufzeichnung.php | 35 +++++++++++++++----------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 143863345..99b8739b9 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -678,14 +678,24 @@ function checkVals ($oe_val, $project_val, $phase_val, $service_val) if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) { $zeit = new zeitaufzeichnung(); + $projects_of_user = new projekt(); $projects= $projects_of_user->getProjekteListForMitarbeiter($user); $project_kurzbz_array = array(); + $projektph_of_user = new projektphase(); + $projektphasen = $projektph_of_user->getProjectphaseForMitarbeiter($user); + $projectphasen_kurzbz_array = array(); + foreach($projects as $prjct) { array_push($project_kurzbz_array, (string) $prjct->projekt_kurzbz); } + foreach ($projektphasen as $pp) + { + array_push($projectphasen_kurzbz_array, (string) $pp->projektphase_id); + } + $projectphase = new projektphase(); if ($_FILES['csv']['error'] == 0 && isset($_POST['import'])) @@ -712,6 +722,10 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgendem Projekt entweder nicht zugewiesen sind oder das Projekt schon abgeschlossen wurde: ('.$data[6].')
'; } + elseif(!empty($data[7]) && !in_array($data[7], $projectphasen_kurzbz_array)) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgender Projektphase entweder nicht zugewiesen sind oder die Projektphase schon abgeschlossen wurde: ('.$data[7].')
'; + } else { @@ -729,6 +743,10 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; } + elseif (!empty($data[7]) && !$projektph_of_user ->checkProjectphaseInCorrectTime($data[7], $data[2], $data[3])) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt.
'; + } elseif (checkVals($data[5],$data[6],$data[7],$data[8])) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Fehlerhafte Werte ('.$data[2].')
'; @@ -1960,20 +1978,9 @@ function getDataForProjectOverviewCSV($user) { $projekt_phase = $prjp->bezeichnung; $projekt_phase_id = $prjp->projektphase_id; - if (!empty($prjp->start)) - { - $beginn = $prjp->start; - } else - { - $beginn = $project->beginn; - } - if (!empty($prjp->ende)) - { - $ende = $prjp->ende; - } else - { - $ende = $project->ende; - } + $beginn = $prjp->start; + $ende = $prjp->ende; + $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); //$index = array_search($prjp, array_values($projektphasen)); unset($projektphasen[$index]); From 14fbfc78604c2142b6b1b801382f4e07a994900d Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 24 Sep 2020 08:48:59 +0200 Subject: [PATCH 016/119] diplay date in error message --- cis/private/tools/zeitaufzeichnung.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 99b8739b9..518d397a5 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -169,7 +169,7 @@ if(isset($_POST['export'])) //CSV export für Übersicht zugeteilter Projekte - Konflikt mit normalen HTML headern deshalb weiter vorne if(isset($_POST['projektübersichtexport'])) { - exportProjectOverviewAsCSV($user, ','); + exportProjectOverviewAsCSV('oesi', ','); } echo ' @@ -741,11 +741,11 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
'; elseif (!empty($data[6]) && !$projects_of_user->checkProjectInCorrectTime($data[6], $data[2], $data[3])) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt: ('.$data[2].') ('.$data[3].')
'; } elseif (!empty($data[7]) && !$projektph_of_user ->checkProjectphaseInCorrectTime($data[7], $data[2], $data[3])) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt.
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt: ('.$data[2].') ('.$data[3].')
'; } elseif (checkVals($data[5],$data[6],$data[7],$data[8])) { From 3d274645ac34023b0ca544020620a512da6a8312 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 24 Sep 2020 08:52:33 +0200 Subject: [PATCH 017/119] correct user --- cis/private/tools/zeitaufzeichnung.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 518d397a5..2ed8005b1 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -169,7 +169,7 @@ if(isset($_POST['export'])) //CSV export für Übersicht zugeteilter Projekte - Konflikt mit normalen HTML headern deshalb weiter vorne if(isset($_POST['projektübersichtexport'])) { - exportProjectOverviewAsCSV('oesi', ','); + exportProjectOverviewAsCSV($user, ','); } echo ' From f672cd2d53901d7692929cc664f25897bd7aee84 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 24 Sep 2020 11:14:32 +0200 Subject: [PATCH 018/119] user can enter project with projectphase even if not assigend to project --- cis/private/tools/zeitaufzeichnung.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 2ed8005b1..a5e277e76 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -718,7 +718,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) while(($data = fgetcsv($handle, 1000, ';', '"')) !== FALSE) { if($data[0] == $user){ - if(!empty($data[6]) && !in_array($data[6], $project_kurzbz_array)) + if(!empty($data[6]) && !in_array($data[6], $project_kurzbz_array) && empty($data[7])) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgendem Projekt entweder nicht zugewiesen sind oder das Projekt schon abgeschlossen wurde: ('.$data[6].')
'; } @@ -739,7 +739,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $data[8] = NULL; if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
'; - elseif (!empty($data[6]) && !$projects_of_user->checkProjectInCorrectTime($data[6], $data[2], $data[3])) + elseif (empty($data[7]) && !empty($data[6]) && !$projects_of_user->checkProjectInCorrectTime($data[6], $data[2], $data[3])) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt: ('.$data[2].') ('.$data[3].')
'; } From 7fe2f3ef396f7b4bd869e86b3c229dfa7446c192 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 15 Oct 2020 11:03:16 +0200 Subject: [PATCH 019/119] Adapted span-width of date in each tablerow Allows nice align of error messages. Signed-off-by: Cris --- cis/private/tools/zeitaufzeichnung.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 71fdda2bb..054cf32e2 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1532,7 +1532,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) $langindex = 1; else $langindex = 2; - echo ''.$tagbez[$langindex][$datum->formatDatum($tag,'N')].' '.$datum->formatDatum($tag,'d.m.Y').' '.$zeitsperre_text.''.$pausefehlt_str; + echo ''.$tagbez[$langindex][$datum->formatDatum($tag,'N')].' '.$datum->formatDatum($tag,'d.m.Y').''.$zeitsperre_text.''.$pausefehlt_str; if ($ersumme != '00:00') $erstr = ' (+ '.$ersumme.' ER)'; else From 56c958319ddb124fea5945256c6d4c80fbcc83c0 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 12 Nov 2020 15:49:45 +0100 Subject: [PATCH 020/119] fix bug in export --- cis/private/tools/zeitaufzeichnung.php | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index a5e277e76..3d64092e4 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1961,8 +1961,6 @@ function getDataForProjectOverviewCSV($user) foreach ($projects as $project) { - $index = 0; - //Newline characters bei Beschreibung ersetzen $titel = $project->titel; $projekt_kurzbz = $project->projekt_kurzbz; $projekt_phase = ''; @@ -1972,26 +1970,11 @@ function getDataForProjectOverviewCSV($user) $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); - foreach ($projektphasen as $prjp) - { - if ($prjp->projekt_kurzbz === $projekt_kurzbz) - { - $projekt_phase = $prjp->bezeichnung; - $projekt_phase_id = $prjp->projektphase_id; - $beginn = $prjp->start; - $ende = $prjp->ende; - - $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); - //$index = array_search($prjp, array_values($projektphasen)); - unset($projektphasen[$index]); - } - $index++; - } } foreach ($projektphasen as $prjp) { - if (empty($prjp->projektphase_fk)) + if (true) { $titel = $prjp->projekt_kurzbz; $projekt_kurzbz = $prjp->projekt_kurzbz; @@ -2000,13 +1983,13 @@ function getDataForProjectOverviewCSV($user) $beginn = $prjp->start; $ende = $prjp->ende; - $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende); + array_push($csvData, array($projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende) ); } } sort($csvData); //headers schreiben - $csvData[0] = array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'PROJEKTPHASEN ID', 'START', 'PROJEKT ENDE'); + array_unshift($csvData, array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'PROJEKTPHASEN ID', 'START', 'PROJEKT ENDE')); return $csvData; } ?> From 32a174d8362513be8f03a0f625470c30a3d03e15 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Mon, 30 Nov 2020 11:09:49 +0100 Subject: [PATCH 021/119] Zeiterfassung: Eintraege in der Zukunft --- cis/private/tools/zeitaufzeichnung.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 3d64092e4..eedd12644 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -114,6 +114,8 @@ else $gesperrt_bis = '2015-08-31'; $sperrdatum = date('c', strtotime($gesperrt_bis)); +$datumjetzt = strtotime("+5 weeks"); +$limitdatum = date('c', $datumjetzt); // Uses urlencode to avoid XSS issues $zeitaufzeichnung_id = urlencode(isset($_GET['zeitaufzeichnung_id'])?$_GET['zeitaufzeichnung_id']:''); @@ -739,6 +741,8 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $data[8] = NULL; if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
'; + elseif ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') > $limitdatum) + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da ('.$data[2].') zu weit in der Zukunft liegt.
'; elseif (empty($data[7]) && !empty($data[6]) && !$projects_of_user->checkProjectInCorrectTime($data[6], $data[2], $data[3])) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt: ('.$data[2].') ('.$data[3].')
'; @@ -890,6 +894,11 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; $saveerror = 1; } + elseif ($datum->formatDatum($von, $format='Y-m-d') > $limitdatum || $datum->formatDatum($bis, $format='Y-m-d') > $limitdatum) + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs oder Enddatum zu weit in der Zukunft liegt.
'; + $saveerror = 1; + } elseif (!$projectphase->checkProjectphaseInCorrectTime($projektphase_id, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d'))) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt.
'; From a8227e1f91ebf4ba2cb7be9f98d83692222ab00b Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 2 Dec 2020 11:58:51 +0100 Subject: [PATCH 022/119] =?UTF-8?q?Zeiterfassung:=20Tages=C3=BCbergreifend?= =?UTF-8?q?e=20Eintr=C3=A4ge=20verhindern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/tools/zeitaufzeichnung.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index eedd12644..a3e4041b7 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -730,6 +730,10 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) } else { + $vonCSV = $datum->formatDatum($data[2], $format='Y-m-d'); + $bisCSV = $datum->formatDatum($data[3], $format='Y-m-d'); + $dateVonCSV = new DateTime($vonCSV); + $dateBisCSV = new DateTime($bisCSV); if (!isset($data[5])) $data[5] = NULL; @@ -743,6 +747,10 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')
'; elseif ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') > $limitdatum) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da ('.$data[2].') zu weit in der Zukunft liegt.
'; + elseif ($dateVonCSV!=$dateBisCSV && $data[1]!="DienstreiseMT") + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).
'; + } elseif (empty($data[7]) && !empty($data[6]) && !$projects_of_user->checkProjectInCorrectTime($data[6], $data[2], $data[3])) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt: ('.$data[2].') ('.$data[3].')
'; @@ -889,6 +897,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) $zeit->service_id = $service_id; $zeit->kunde_uid = $kunde_uid; $saveerror = 0; + if (!$projects_of_user->checkProjectInCorrectTime($projekt_kurzbz, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d'))) { echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.
'; @@ -904,6 +913,11 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import'])) echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt.
'; $saveerror = 1; } + elseif (abs($von-$bis)>0 && $aktivitaet_kurzbz!="DienstreiseMT") + { + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).
'; + $saveerror = 1; + } elseif (isset($_POST['genPause']) && (isset($_POST['save']) || isset($_POST['edit']))) { From c33856ee502d96e85dbc33c27921ead80e4c569d Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 2 Dec 2020 12:57:54 +0100 Subject: [PATCH 023/119] =?UTF-8?q?Zeitsperren:=20User=20bekommt=20Warnhin?= =?UTF-8?q?weis=20bei=20auff=C3=A4llig=20langem=20Zeitraum?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/profile/zeitsperre_resturlaub.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index b7654310e..c85c6f959 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -180,7 +180,7 @@ function checkdatum() return false; } - var Datum, Tag, Monat,Jahr,vonDatum,bisDatum; + var Datum, Tag, Monat,Jahr,vonDatum,bisDatum, diff; Datum=document.getElementById('vondatum').value; Tag=Datum.substring(0,2); @@ -210,12 +210,23 @@ function checkdatum() bisDatum=Jahr+''+Monat+''+Tag; + diff=bisDatum-vonDatum; + if (vonDatum>bisDatum) { alert('t('zeitsperre/vonDatum');?> '+ document.getElementById('vondatum').value+ ' t('zeitsperre/istGroesserAlsBisDatum');?> '+document.getElementById('bisdatum').value); document.getElementById('vondatum').focus(); return false; } + else if (diff>14) + { + Check = confirm('t('zeitaufzeichnung/zeitraumAuffallendHoch');?>'); + document.getElementById('bisdatum').focus(); + if (Check == false) + return false; + else + return true; + } return true; } From 47d7a4688ff4e23464dfdfffe85bbc13cde64582 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 2 Dec 2020 15:16:07 +0100 Subject: [PATCH 024/119] =?UTF-8?q?Zeiterfassung:=20Zeitausgleich=20und=20?= =?UTF-8?q?Krankenstand=20nur=20ganzt=C3=A4gig=20eintragbar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/profile/zeitsperre_resturlaub.php | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index c85c6f959..081a0f0de 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -265,6 +265,8 @@ function showHideBezeichnungDropDown() document.getElementById('resturlaub').style.visibility = 'visible'; else document.getElementById('resturlaub').style.visibility = 'hidden'; + + showHideStudeDropDown() } function setBisDatum() @@ -272,6 +274,22 @@ function setBisDatum() document.zeitsperre_form.bisdatum.value = document.zeitsperre_form.vondatum.value; } +function showHideStudeDropDown() +{ + var dd = document.zeitsperre_form.zeitsperretyp_kurzbz; + console.log(dd.options[dd.selectedIndex].value == 'ZA') + if (dd.options[dd.selectedIndex].value == 'ZA' || dd.options[dd.selectedIndex].value == 'Urlaub') + { + document.getElementById('vonStd').style.visibility = 'hidden'; + document.getElementById('bisStd').style.visibility = 'hidden'; + } + else + { + document.getElementById('vonStd').style.visibility = 'visible'; + document.getElementById('bisStd').style.visibility = 'visible'; + } +} + @@ -611,7 +629,7 @@ if($result = $db->db_query($qry)) } $content_form.= ''; $content_form.= ''.$p->t('global/bezeichnung').''; -$content_form.= ''.$p->t('global/von').' '; +$content_form.= ''.$p->t('global/von').' '; //dropdown fuer vonstunde $content_form.= $p->t('zeitsperre/stundeInklusive'); @@ -633,7 +651,7 @@ for($i=0;$i<$num_rows_stunde;$i++) $content_form.= ""; -$content_form.= ''.$p->t('global/bis').' '; +$content_form.= ''.$p->t('global/bis').' '; //dropdown fuer bisstunde $content_form.= $p->t('zeitsperre/stundeInklusive'); $content_form.= " '; echo ''; echo '
'; - echo ''; + } //Aktivitaet @@ -1481,6 +1481,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) echo ''; } + echo ''; echo ''; echo ''; From 74c12372c8c54b08b7d77e6f5194b29418082e1a Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Tue, 15 Dec 2020 13:17:23 +0100 Subject: [PATCH 026/119] also hide hours on edit --- cis/private/profile/zeitsperre_resturlaub.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index 9672f13b8..b155516e7 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -778,12 +778,13 @@ $content_form.= ''; if(isset($_GET['type']) && $_GET['type']=='edit') $content_form.= ""; + else $content_form.= ""; $content_form.= ''; $content_form .= ' '; -$content_form.= "".$p->t('zeitsperre/achtungEsWerdenAlleEingegebenenTage').""; +$content_form.= "" .$p->t('zeitsperre/achtungEsWerdenAlleEingegebenenTage').""; $content_form.= ''; echo ''; @@ -803,3 +804,4 @@ echo '
'; +showHideStudeDropDown();'; ?> From 57722553eca12b8db3aecef0ef4424cd0e991309 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 13 Jan 2021 00:05:03 +0100 Subject: [PATCH 027/119] - new funktion type kstzuordnung for cost center assignment in public.tbl_funktion --- system/dbupdate_3.3.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 2336ebad4..d3672ffc7 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4465,6 +4465,20 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE } } +// Add new funktion type kstzuordnung for cost center assignment in public.tbl_funktion +if ($result = @$db->db_query("SELECT 1 FROM public.tbl_funktion WHERE funktion_kurzbz = 'kstzuordnung';")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO public.tbl_funktion(funktion_kurzbz, beschreibung, aktiv, fachbereich, semester) VALUES('kstzuordnung','Standardkostenstelle Zuordnung',true,false,false);"; + + if (!$db->db_query($qry)) + echo 'public.tbl_funktion '.$db->db_last_error().'
'; + else + echo '
public.tbl_funktion: Added funktion kstzuordnung
'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; From 254dad870045edb7d54fef9869a07d8841099fa9 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 13 Jan 2021 21:15:44 +0100 Subject: [PATCH 028/119] db changes for projektarbeitsbeurteilung - added lehre.tbl_projektarbeitsbeurteilung - added columns zugangstoken, zugangstoken_gueltigbis to lehre.tbl_projektbetreuer --- system/dbupdate_3.3.php | 110 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 2336ebad4..b08a7581d 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4465,6 +4465,113 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE } } +// SEQUENCE tbl_projektarbeitsbeurteilung_id_se +if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_projektarbeitsbeurteilung_id_seq'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = ' + CREATE SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + '; + if(!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; + else + echo '
Created sequence: lehre.tbl_projektarbeitsbeurteilung_id_seq'; + + // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO vilesci; + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO vilesci;'; + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; + else + echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung_id_seq'; + + // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO fhcomplete; + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO fhcomplete;'; + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; + else + echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung_id_seq'; + } +} + +// TABLE lehre.tbl_projektarbeitsbeurteilung +if (!@$db->db_query("SELECT 0 FROM lehre.tbl_projektarbeitsbeurteilung WHERE 0 = 1")) +{ + $qry = ' + CREATE TABLE lehre.tbl_projektarbeitsbeurteilung ( + projektarbeitsbeurteilung_id integer NOT NULL DEFAULT nextval(\'lehre.tbl_projektarbeitsbeurteilung_id_seq\'::regclass), + projektarbeit_id integer NOT NULL, + projektbetreuer_person_id integer NOT NULL, + betreuerart_kurzbz varchar(16) NOT NULL, + bewertung jsonb NOT NULL, + abgeschicktamum timestamp, + abgeschicktvon varchar(32), + insertamum timestamp default now(), + insertvon varchar(32), + updateamum timestamp + ); + + ALTER TABLE lehre.tbl_projektarbeitsbeurteilung ADD CONSTRAINT pk_projektarbeitsbeurteilung PRIMARY KEY (projektarbeitsbeurteilung_id); + ALTER TABLE lehre.tbl_projektarbeitsbeurteilung ADD CONSTRAINT fk_projektarbeitsbeurteilung_projektarbeit_id FOREIGN KEY (projektarbeit_id, projektbetreuer_person_id, betreuerart_kurzbz) REFERENCES lehre.tbl_projektbetreuer (projektarbeit_id, person_id, betreuerart_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; + '; + + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; + else + echo '
Created table lehre.tbl_projektarbeitsbeurteilung'; + + + // GRANT SELECT ON TABLE lehre.tbl_projektarbeitsbeurteilung TO web; + $qry = 'GRANT SELECT ON TABLE lehre.tbl_projektarbeitsbeurteilung TO web;'; + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; + else + echo '
Granted privileges to web on lehre.tbl_projektarbeitsbeurteilung'; + + // GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_projektarbeitsbeurteilung TO vilesci; + $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_projektarbeitsbeurteilung TO vilesci;'; + if (!$db->db_query($qry)) + echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; + else + echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung'; + +// COMMENT ON TABLE lehre.tbl_projektarbeitsbeurteilung + $qry = 'COMMENT ON TABLE lehre.tbl_projektarbeitsbeurteilung IS \'Table to manage project work asessments\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to lehre.tbl_projektarbeitsbeurteilung: ' . $db->db_last_error() . '
'; + else + echo '
Added comment to lehre.tbl_projektarbeitsbeurteilung'; +} + +// Add column zugangstoken to tbl_projektbetreuer +if(!$result = @$db->db_query("SELECT zugangstoken FROM lehre.tbl_projektbetreuer LIMIT 1")) +{ + $qry = "ALTER table lehre.tbl_projektbetreuer ADD COLUMN zugangstoken VARCHAR(32); + COMMENT ON COLUMN lehre.tbl_projektbetreuer.zugangstoken IS 'Zugangstoken zur Projektarbeitsbewertung fuer externe Betreuer';"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_projektbetreuer: '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_projektbetreuer: Spalte zugangstoken hinzugefuegt'; +} + +// Add column zugangstoken_gueltigbis to tbl_projektbetreuer +if(!$result = @$db->db_query("SELECT zugangstoken_gueltigbis FROM lehre.tbl_projektbetreuer LIMIT 1")) +{ + $qry = "ALTER table lehre.tbl_projektbetreuer ADD COLUMN zugangstoken_gueltigbis date; + COMMENT ON COLUMN lehre.tbl_projektbetreuer.zugangstoken_gueltigbis IS 'Gueligkeitsdatum fuer Zugangstoken zur Projektarbeitsbewertung fuer externe Betreuer';"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_projektbetreuer: '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_projektbetreuer: Spalte zugangstoken_gueltigbis hinzugefuegt'; +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -4593,7 +4700,8 @@ $tabellen=array( "lehre.tbl_notenschluesselzuordnung" => array("notenschluesselzuordnung_id","notenschluessel_kurzbz","lehrveranstaltung_id","studienplan_id","oe_kurzbz","studiensemester_kurzbz"), "lehre.tbl_note" => array("note","bezeichnung","anmerkung","farbe","positiv","notenwert","aktiv","lehre","offiziell","bezeichnung_mehrsprachig","lkt_ueberschreibbar"), "lehre.tbl_projektarbeit" => array("projektarbeit_id","projekttyp_kurzbz","titel","lehreinheit_id","student_uid","firma_id","note","punkte","beginn","ende","faktor","freigegeben","gesperrtbis","stundensatz","gesamtstunden","themenbereich","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","titel_english","seitenanzahl","abgabedatum","kontrollschlagwoerter","schlagwoerter","schlagwoerter_en","abstract", "abstract_en", "sprache","final"), - "lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id"), + "lehre.tbl_projektarbeitsbeurteilung" => array("projektarbeitsbeurteilung_id","projektarbeit_id","projektbetreuer_person_id","betreuerart_kurzbz","bewertung","abgeschicktamum","abgeschicktvon","insertamum","insertvon","updateamum"), + "lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id", "zugangstoken", "zugangstoken_gueltigbis"), "lehre.tbl_projekttyp" => array("projekttyp_kurzbz","bezeichnung","aktiv"), "lehre.tbl_pruefung" => array("pruefung_id","lehreinheit_id","student_uid","mitarbeiter_uid","note","pruefungstyp_kurzbz","datum","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","pruefungsanmeldung_id","vertrag_id", "punkte"), "lehre.tbl_pruefungstyp" => array("pruefungstyp_kurzbz","beschreibung","abschluss","sort"), From 98deb3d2a0fd9d86fabb5fedaaa5af73ba669c48 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 14 Jan 2021 10:32:42 +0100 Subject: [PATCH 029/119] moved creation of tbl_projektarbeitsbeurteilung to FHC_Core_Abschlusspruefungsbeurteilung extension --- system/dbupdate_3.3.php | 83 ----------------------------------------- 1 file changed, 83 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index b08a7581d..3adf241ff 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4465,89 +4465,6 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE } } -// SEQUENCE tbl_projektarbeitsbeurteilung_id_se -if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_projektarbeitsbeurteilung_id_seq'")) -{ - if ($db->db_num_rows($result) == 0) - { - $qry = ' - CREATE SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq - START WITH 1 - INCREMENT BY 1 - NO MAXVALUE - NO MINVALUE - CACHE 1; - '; - if(!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; - else - echo '
Created sequence: lehre.tbl_projektarbeitsbeurteilung_id_seq'; - - // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO vilesci; - $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO vilesci;'; - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; - else - echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung_id_seq'; - - // GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO fhcomplete; - $qry = 'GRANT SELECT, UPDATE ON SEQUENCE lehre.tbl_projektarbeitsbeurteilung_id_seq TO fhcomplete;'; - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung_id_seq '.$db->db_last_error().'
'; - else - echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung_id_seq'; - } -} - -// TABLE lehre.tbl_projektarbeitsbeurteilung -if (!@$db->db_query("SELECT 0 FROM lehre.tbl_projektarbeitsbeurteilung WHERE 0 = 1")) -{ - $qry = ' - CREATE TABLE lehre.tbl_projektarbeitsbeurteilung ( - projektarbeitsbeurteilung_id integer NOT NULL DEFAULT nextval(\'lehre.tbl_projektarbeitsbeurteilung_id_seq\'::regclass), - projektarbeit_id integer NOT NULL, - projektbetreuer_person_id integer NOT NULL, - betreuerart_kurzbz varchar(16) NOT NULL, - bewertung jsonb NOT NULL, - abgeschicktamum timestamp, - abgeschicktvon varchar(32), - insertamum timestamp default now(), - insertvon varchar(32), - updateamum timestamp - ); - - ALTER TABLE lehre.tbl_projektarbeitsbeurteilung ADD CONSTRAINT pk_projektarbeitsbeurteilung PRIMARY KEY (projektarbeitsbeurteilung_id); - ALTER TABLE lehre.tbl_projektarbeitsbeurteilung ADD CONSTRAINT fk_projektarbeitsbeurteilung_projektarbeit_id FOREIGN KEY (projektarbeit_id, projektbetreuer_person_id, betreuerart_kurzbz) REFERENCES lehre.tbl_projektbetreuer (projektarbeit_id, person_id, betreuerart_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE; - '; - - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; - else - echo '
Created table lehre.tbl_projektarbeitsbeurteilung'; - - - // GRANT SELECT ON TABLE lehre.tbl_projektarbeitsbeurteilung TO web; - $qry = 'GRANT SELECT ON TABLE lehre.tbl_projektarbeitsbeurteilung TO web;'; - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; - else - echo '
Granted privileges to web on lehre.tbl_projektarbeitsbeurteilung'; - - // GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_projektarbeitsbeurteilung TO vilesci; - $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_projektarbeitsbeurteilung TO vilesci;'; - if (!$db->db_query($qry)) - echo 'lehre.tbl_projektarbeitsbeurteilung ' . $db->db_last_error() . '
'; - else - echo '
Granted privileges to vilesci on lehre.tbl_projektarbeitsbeurteilung'; - -// COMMENT ON TABLE lehre.tbl_projektarbeitsbeurteilung - $qry = 'COMMENT ON TABLE lehre.tbl_projektarbeitsbeurteilung IS \'Table to manage project work asessments\';'; - if (!$db->db_query($qry)) - echo 'Adding comment to lehre.tbl_projektarbeitsbeurteilung: ' . $db->db_last_error() . '
'; - else - echo '
Added comment to lehre.tbl_projektarbeitsbeurteilung'; -} - // Add column zugangstoken to tbl_projektbetreuer if(!$result = @$db->db_query("SELECT zugangstoken FROM lehre.tbl_projektbetreuer LIMIT 1")) { From c3f24f30385a87c13417907c8d1cd862297bbc9e Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 28 Jan 2021 13:03:18 +0100 Subject: [PATCH 030/119] - Projektarbeitsbeurtielung: added app Projektarbeitsbeurteilung and phrases for Projektarbeitsformular --- system/dbupdate_3.3.php | 15 +- system/phrasesupdate.php | 1205 +++++++++++++++++++++++++++++++++++++- 2 files changed, 1218 insertions(+), 2 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 3adf241ff..59dba9f9d 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4489,6 +4489,20 @@ if(!$result = @$db->db_query("SELECT zugangstoken_gueltigbis FROM lehre.tbl_proj echo '
lehre.tbl_projektbetreuer: Spalte zugangstoken_gueltigbis hinzugefuegt'; } +// App 'projektarbeitsbeurteilung' hinzufügen +if($result = $db->db_query("SELECT 1 FROM system.tbl_app WHERE app='projektarbeitsbeurteilung'")) +{ + if($db->db_num_rows($result)==0) + { + $qry = "INSERT INTO system.tbl_app(app) VALUES('projektarbeitsbeurteilung');"; + + if(!$db->db_query($qry)) + echo 'App: '.$db->db_last_error().'
'; + else + echo '
Neue App projektarbeitsbeurteilung in system.tbl_app hinzugefügt'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -4617,7 +4631,6 @@ $tabellen=array( "lehre.tbl_notenschluesselzuordnung" => array("notenschluesselzuordnung_id","notenschluessel_kurzbz","lehrveranstaltung_id","studienplan_id","oe_kurzbz","studiensemester_kurzbz"), "lehre.tbl_note" => array("note","bezeichnung","anmerkung","farbe","positiv","notenwert","aktiv","lehre","offiziell","bezeichnung_mehrsprachig","lkt_ueberschreibbar"), "lehre.tbl_projektarbeit" => array("projektarbeit_id","projekttyp_kurzbz","titel","lehreinheit_id","student_uid","firma_id","note","punkte","beginn","ende","faktor","freigegeben","gesperrtbis","stundensatz","gesamtstunden","themenbereich","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","titel_english","seitenanzahl","abgabedatum","kontrollschlagwoerter","schlagwoerter","schlagwoerter_en","abstract", "abstract_en", "sprache","final"), - "lehre.tbl_projektarbeitsbeurteilung" => array("projektarbeitsbeurteilung_id","projektarbeit_id","projektbetreuer_person_id","betreuerart_kurzbz","bewertung","abgeschicktamum","abgeschicktvon","insertamum","insertvon","updateamum"), "lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id", "zugangstoken", "zugangstoken_gueltigbis"), "lehre.tbl_projekttyp" => array("projekttyp_kurzbz","bezeichnung","aktiv"), "lehre.tbl_pruefung" => array("pruefung_id","lehreinheit_id","student_uid","mitarbeiter_uid","note","pruefungstyp_kurzbz","datum","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","pruefungsanmeldung_id","vertrag_id", "punkte"), diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 727a389e4..833ca1c73 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -7988,7 +7988,1210 @@ Any unusual occurrences 'insertvon' => 'system' ) ) - ) + ), + array( + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'und', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'und', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'and', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + + //******************* Projektarbeitsbeurteilung - CORE + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'sehrGut', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Sehr Gut', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Excellent', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'gut', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Gut', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Good', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'befriedigend', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Befriedigend', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Satisfactory', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'genuegend', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Genügend', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Sufficient', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'nichtGenuegend', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Nicht genügend', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Insufficient', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'lehre', + 'phrase' => 'notenschluessel', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Notenschlüssel', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'criteria', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'speichernAbsenden', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Speichern und Absenden', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Save and send', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + //******************* Projektarbeitsbeurteilung - specific + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteilung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beurteilung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'erstBegutachter', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Erst-Begutachter*in', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'First Assessor', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'plagiatscheckUnauffaellig', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der Plagiatscheck ist unauffällig.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The plagiarism check reveals nothing of note.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'kriterien', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Kriterien', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Criteria', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'punkte', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Punkte', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Points', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'thema', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Thema', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Subject', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'themaText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Das Thema wurde in eine im Rahmen einer Masterarbeit bearbeitbare Form übergeführt (Entwicklung sinnvoller Forschungsfragen bzw. Aufgabenstellungen, etc.).', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The subject was handled in a suitable manner for a master thesis (well-structured, meaningful research questions or tasks, etc.)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'loesungsansatz', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Lösungsansatz', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Solution Approach', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'loesungsansatzText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der Lösungsansatz ist dem Stand der Technik entsprechend argumentiert und zeigt ein adäquates Problemverständnis.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The approach to the solution is argued according to the state of the art and shows an adequate understanding of the problem.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'methode', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Methode', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Methods', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'methodeText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die methodische Vorgangsweise ist in Bezug auf die Ausrichtung der Arbeit (technisch-ingenieurwissenschaftlich, sozial-wirtschaftswissenschaftlich…) angemessen, gut begründet und wird korrekt umgesetzt.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The methodological approach is appropriate, well-founded and correctly implemented in relation to the orientation of the work (technical-engineering, socio-economic…).', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ereignisseDiskussion', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ergebnisse und Diskussion', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Results & Discussion of the conclusion', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ereignisseDiskussionText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Frage- bzw. Aufgabenstellungen wurden zielführend beantwortet; die Ergebnisse werden diskutiert.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The research questions or the tasks were answered in a manner appropriate with the objectives; the results are discussed.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ereignisseDiskussionTextMaster', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Forschungsfrage(n) wurde(n) zielführend beantwortet; die Ergebnisse werden kritisch diskutiert und liefern einen Mehrwert für Forschung und/oder Berufspraxis.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The research question(s) was (were) answered in a manner appropriate with the objectives; the results are examined critically and provide added value for research and / or professional practice.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'eigenstaendigkeit', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Eigenständigkeit', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Independence', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'eigenstaendigkeitText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Arbeit wurde in selbständiger Arbeitsweise (z.B. eigenständige Lösung der Fragestellungen und aufgetretener Probleme) verfasst.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The thesis was written in an independent way (e.g. independent solutions to the questions and problems that occurred)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'struktur', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Struktur', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Structure', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'strukturText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Arbeit ist schlüssig aufgebaut und gut strukturiert.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The thesis is coherently arranged and well structured.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'stil', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Stil', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Style', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'stilText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der Stil entspricht einer wissenschaftlichen Arbeit. Die Arbeit ist flüssig lesbar und weist eine klare, eindeutige und gendergerechte Sprache auf.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The style is suitable for a piece of scientific work. The thesis is easy to read and has a clear, unambiguous and gender-appropriate language.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'form', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Form', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Form', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'formText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Anforderungen an Gliederung, Verzeichnisse, Textsatz und Grafiken bzw. Tabellen sind nach den geltenden Richtlinien umgesetzt.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The requirements for structure, lists, typesetting and graphics or tables are implemented in accordance with the applicable guidelines.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'literatur', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Literatur', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Sources', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'literaturText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die verwendeten Quellen sind passend, aktuell und werden ausreichend variiert.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The sources used are appropriate, current and sufficiently varied.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zitierregeln', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zitierregeln', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Citation Rules', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zitierregelnText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Zitierregeln werden korrekt angewendet und durchgehend umgesetzt.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The citation rules are correctly applied and implemented throughout.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gesamtpunkte', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Gesamtpunkte', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Total points', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gutachtenZweitBegutachtung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Das Gutachten des/der Zweit-BegutachterIn liegt vor und ist in die Beurteilung eingeflossen.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The second assessor’s assessment has been submitted and is part of the final grade.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'bitteBeurteilen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Bitte beurteilen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Please assess', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'begruendungText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Begründung (verpflichtend nur für die Note "Nicht Genügend")', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Reason (only required for the grade "insufficient")', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'unzureichendErfuellt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'unzureichend erfüllt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'inadequately met', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'genuegendErfuellt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'genügend erfüllt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'adequately met', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gutErfuellt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'gut erfüllt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'well fulfilled', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'sehrGutErfuellt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'sehr gut erfüllt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'very well fulfilled', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'notenschluesselHinweis', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Liegt die Punkteanzahl bei den Kriterien "1 - 5" oder "6 - 10" in Summe unter 50%, ist die Masterarbeit insgesamt als negativ zu beurteilen.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'If, within any of the criteria, the points total is under 50%, the Master’s Thesis is deemed to have failed overall.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zweitBegutachter', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zweit-Begutachter*in', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Second Assessor', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'kurzeSchriftlicheBeurteilung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Kurze schriftliche Beurteilung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Short written assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'fragestellungRelevant', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Fragestellung relevant und aktuell?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Is the question relevant and topical?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'inhaltMethode', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Inhalt und Methode', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Content and Methods', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'aufgabenstellungNachvollziehbar', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Aufgabenstellung nachvollziehbar und gut argumentiert dargestellt?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Is the task presented comprehensibly and is it well argued?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'methodischeVorgangsweiseAngemessen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die methodische Vorgangsweise angemessen und korrekt angewendet?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Has the methodological approach been applied appropriately and correctly?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'mehrwertBerufspraxis', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Liefert das Ergebnis einen Mehrwert für die Berufspraxis?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Does the result provide added value for professional practice?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'eigenstaendigkeitErgebnis', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Eigenständigkeit beim Erreichen des Ergebnisses', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Independence in achieving the result', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'arbeitEigenstaendigVerfasst', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Arbeit eigenständig verfasst worden?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Was the thesis written independently?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'arbeitGutStrukturiert', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Arbeit gut strukturiert?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Is the thesis well structured?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'gliederungInhaltlichVerstaendlich', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ist die Gliederung inhaltlich verständlich und in Bezug auf das Thema schlüssig aufgebaut ("roter Faden")?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 's the structure understandable in terms of content and is it coherent in relation to the topic ("red thread")?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'nameStudierende', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Name des/der Studierenden', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Name of student', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteiltVon', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beurteilt von', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Assessed by', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'personenkennzeichen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Personenkennzeichen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Student number', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteilungGespeichertGesendet', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beurteilung gespeichert und gesendet', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Assessment saved and sent', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteilungGespeichert', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Beurteilung gespeichert', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Assessment saved', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'beurteilungFehler', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Fehler beim Speichern der Beurteilung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Error when saving assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), ); From 1f88bfae4078889beb5881373f61dbde72b99b0f Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 4 Feb 2021 11:21:40 +0100 Subject: [PATCH 031/119] - Projektbetreuer Model: added getBetreuerByToken method - phrasesupdate: added new Projektarbeitsbeurtielung phrases --- .../education/Projektbetreuer_model.php | 19 ++++ system/phrasesupdate.php | 101 ++++++++++++++++++ 2 files changed, 120 insertions(+) diff --git a/application/models/education/Projektbetreuer_model.php b/application/models/education/Projektbetreuer_model.php index 746e4c052..4da88e344 100644 --- a/application/models/education/Projektbetreuer_model.php +++ b/application/models/education/Projektbetreuer_model.php @@ -41,4 +41,23 @@ class Projektbetreuer_model extends DB_Model return error ('Incorrect parameter type'); } } + + /** + * Get Projektbetreuer data by authentification token + * @param $zugangstoken + * @return object + */ + public function getBetreuerByToken($zugangstoken) + { + $qry = ' + SELECT tbl_projektbetreuer.person_id, tbl_projektbetreuer.projektarbeit_id, student_uid + FROM lehre.tbl_projektbetreuer + JOIN lehre.tbl_projektarbeit USING (projektarbeit_id) + WHERE zugangstoken = ? AND zugangstoken_gueltigbis >= NOW() + ORDER BY tbl_projektbetreuer.insertamum DESC, projektarbeit_id DESC + LIMIT 1 + '; + + return $this->execQuery($qry, array($zugangstoken)); + } } diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 833ca1c73..7dff6a675 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -8151,6 +8151,46 @@ Any unusual occurrences ) ) ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'fehlt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'fehlt', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'missing', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'ungueltig', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'ungültig', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'invalid', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), //******************* Projektarbeitsbeurteilung - specific array( 'app' => 'projektarbeitsbeurteilung', @@ -8172,6 +8212,26 @@ Any unusual occurrences ) ) ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'projektarbeitsbeurteilung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Projektarbeitsbeurteilung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Projekt Work Assessment', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'projektarbeitsbeurteilung', 'category' => 'projektarbeitsbeurteilung', @@ -9192,6 +9252,47 @@ Any unusual occurrences ) ) ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'ungueltigerToken', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ungültiger Token', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Invalid Token', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'projektarbeitsbeurteilung', + 'category' => 'projektarbeitsbeurteilung', + 'phrase' => 'zurProjektarbeitsUebersicht', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zur Projektarbeitsübersicht (CIS login)', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Projekt work overview (CIS login)', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + ); From fd79551f0081c669d05b080434ccb094d4c96d02 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 4 Feb 2021 20:37:05 +0100 Subject: [PATCH 032/119] - Pruefungsprotokoll bugfix: replaced bitwise and with logical and --- application/controllers/lehre/Pruefungsprotokoll.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/controllers/lehre/Pruefungsprotokoll.php b/application/controllers/lehre/Pruefungsprotokoll.php index 467a7dc71..21f50acca 100644 --- a/application/controllers/lehre/Pruefungsprotokoll.php +++ b/application/controllers/lehre/Pruefungsprotokoll.php @@ -220,7 +220,7 @@ class Pruefungsprotokoll extends Auth_Controller $nullfields = array('uhrzeit', 'endezeit', 'abschlussbeurteilung_kurzbz', 'protokoll'); foreach ($data as $idx => $item) { - if (in_array($idx, $nullfields) & $item === '') + if (in_array($idx, $nullfields) && $item === '') $data[$idx] = null; } From d84da96669cf4da3324eed26b4dfd0c488ce14d2 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Mon, 8 Feb 2021 09:57:08 +0100 Subject: [PATCH 033/119] display Feiertage and Wochenenden --- cis/private/profile/urlaubstool.php | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/cis/private/profile/urlaubstool.php b/cis/private/profile/urlaubstool.php index 11620a99a..141f9be9e 100644 --- a/cis/private/profile/urlaubstool.php +++ b/cis/private/profile/urlaubstool.php @@ -464,7 +464,6 @@ if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr))) { if($hgfarbe[$i]!='#FFFC7F' && $hgfarbe[$i]!='#bbb' && $hgfarbe[$i]!='#CDDDEE') { - $hgfarbe[$i]='#E9ECEE'; $datensatz[$i]=0; $freigabevon[$i]=$row->freigabevon; @@ -761,11 +760,25 @@ for ($i=0;$i<6;$i++) echo "\n"; if(strlen(stristr($tage[$j+7*$i],"."))>0) { - echo ''; + if($j%6==0 || $j==7) + { + echo ''; + } + else + { + echo ''; + } } else { - echo ''; + if($j%6==0 || $j==7) + { + echo ''; + } + else + { + echo ''; + } } if($tage[$j+7*$i]!='') { @@ -781,11 +794,11 @@ for ($i=0;$i<6;$i++) echo ''.$tage[$j+7*$i].'
'; if(strlen(stristr($tage[$j+7*$i],"."))>0) { - echo ''; + echo ''; } else { - echo ''; + echo ''; } } else From 544def7f5a9b2c8ec242ec6dce3661abe36c1776 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Tue, 9 Feb 2021 04:41:14 +0100 Subject: [PATCH 034/119] - Organisationseinheit Dropdown in zeitaufzeichnung is limited by funktionen, only dizipl. Zuordnung, standardkostenstelle Zuordnung and funktionale Zuordnungen are shown --- cis/private/tools/zeitaufzeichnung.php | 2 +- include/organisationseinheit.class.php | 72 ++++++++++++++++---------- 2 files changed, 45 insertions(+), 29 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 71fdda2bb..8c348a848 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -1145,7 +1145,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) echo ''.$p->t("zeitaufzeichnung/organisationseinheiten").' - "; + $htmlstr .= ""; - if(!is_null($row->babgeschickt)) - { - $path = "../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->betreuer_person_id; - $htmlstr .= ""; - } + if (!is_null($row->babgeschickt)) + $htmlstr .= "".$p->t('abgabetool/projektbeurteilungErstDownload').""; + + if (!is_null($row->babgeschickt) && !is_null($row->zweitbetreuer_abgeschickt)) + $htmlstr .= "/"; if (!is_null($row->zweitbetreuer_abgeschickt)) - { - $path = "../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->zweitbetreuer_betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->zweitbetreuer_person_id; - $htmlstr .= ""; - } - $htmlstr .= ""; + $htmlstr .= "".$p->t('abgabetool/projektbeurteilungZweitDownload').""; + + $htmlstr .= ""; } else { $htmlstr .= ""; From f681827e5dd6a8937cf5796d714b5ab634d11c8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 6 Apr 2021 16:56:19 +0200 Subject: [PATCH 077/119] Personalmeldung Formatierung von Dezimalwerten korrigiert --- vilesci/bis/personalmeldung.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vilesci/bis/personalmeldung.php b/vilesci/bis/personalmeldung.php index d237ab5ff..1591b6464 100644 --- a/vilesci/bis/personalmeldung.php +++ b/vilesci/bis/personalmeldung.php @@ -964,8 +964,8 @@ function _generateXML($person_arr) $xml .= 'verwendung_code. ']]>'; $xml .= 'ba1code. ']]>'; $xml .= 'ba2code. ']]>'; - $xml .= 'vzae. ']]>'; - $xml .= 'jvzae. ']]>'; + $xml .= 'vzae,2,'.',''). ']]>'; + $xml .= 'jvzae,2,'.',''). ']]>'; $xml .= ''; } From 96ba02bd6923d6fa6b9cab559c26dbb588e97302 Mon Sep 17 00:00:00 2001 From: manu Date: Wed, 7 Apr 2021 09:55:55 +0200 Subject: [PATCH 078/119] =?UTF-8?q?bst=5Fzeit=20ins=20Downloaddokumentenar?= =?UTF-8?q?ray=20=C3=BCbernommen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cms/dms.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cms/dms.php b/cms/dms.php index 7e587b6ec..a9f9060ca 100644 --- a/cms/dms.php +++ b/cms/dms.php @@ -79,12 +79,13 @@ if($doc->isLocked($id)) $dokumente_arr[] .= $row->dokument_kurzbz; // An der FHTW wird das vorläufige ZGV Dokument verlangt und kann somit auch heruntergeladen werden - // Auch der Inivtation Letter kann von BewerberInnen heruntergeladen werden + // Auch der Invitation Letter und die Zeitbestätigung können von BewerberInnen heruntergeladen werden if (CAMPUS_NAME == 'FH Technikum Wien') { $dokumente_arr[] .= 'ZgvBaPre'; $dokumente_arr[] .= 'ZgvMaPre'; $dokumente_arr[] .= 'InvitLet'; + $dokumente_arr[] .= 'bst_zeit'; } if ($person_id!=$akte_person || !in_array($akte_dokument_kurzbz, $dokumente_arr)) die('Sie haben keinen Zugriff auf dieses Dokument'); From c2f74b1bba2728927deafac8b747c7a60f89847c Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 7 Apr 2021 18:00:10 +0200 Subject: [PATCH 079/119] - mail to Zweitbegutachter after student upload is only sent when it is the endupload - removed comments --- cis/private/lehre/abgabe_student_details.php | 107 +++++++------------ 1 file changed, 38 insertions(+), 69 deletions(-) diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 0caa1c6d6..6e8433bb2 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -426,27 +426,7 @@ if($command=="update" && $error!=true) { $row_std=$db->db_fetch_object($result_std); -/* $mail_anrede = "Sehr geehrte".($row_betr->anrede=="Herr"?"r":"")." ".$row_betr->anrede." ".$row_betr->first."!\n\n"; - $mail_abgabetext = ($row_std->anrede)." ".trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost)." hat eine Abgabe vorgenommen.\n\n"; - $mail_zurbeurteilung = "Zur Beurteilung der Arbeit:\n"; - $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; - $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$user."\n\n"; - $mail_abschluss = "--------------------------------------------------------------------------\n"; - $mail_abschluss .= "Dies ist ein vom Bachelor-/Masterarbeitsabgabesystem generiertes Info-Mail\nCis->Mein CIS->Projektarbeiten->Bachelor- und Masterarbeitsabgabe\n"; - $mail_abschluss .= "--------------------------------------------------------------------------"; - - $mailtext_erstbetr = $mail_anrede.$mail_abgabetext.$mail_zurbeurteilung.$mail_fulllink.$mail_abschluss; - - // send Mail to 1. Begutachter - $mail = new mail($row_betr->mitarbeiter_uid."@".DOMAIN, "no-reply@".DOMAIN, "Bachelor-/Masterarbeitsbetreuung", - $mailtext_erstbetr); - $mail->setReplyTo($user."@".DOMAIN); - if(!$mail->send()) - { - echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; - }*/ - - // 1. Begutachter ohne Token + // 1. Begutachter mail ohne Token $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$row_std->uid; $maildata = array(); @@ -473,61 +453,50 @@ if($command=="update" && $error!=true) echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; } - // 2. Begutachter mit Token wenn extern - $projektbetreuer = new projektbetreuer(); - $zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid); - - if ($zweitbetr) + // 2. Begutachter mail, wenn Endabgabe, mit Token wenn extern + if ($paabgabetyp_kurzbz == 'end') { - $tokenGenRes = $projektbetreuer->generateZweitbegutachterToken($zweitbetr->person_id, $projektarbeit_id); - - if (!$tokenGenRes) - echo "" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "
 "; - + $projektbetreuer = new projektbetreuer(); $zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid); - if (!$zweitbetr) - echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')."
 "; - - $intern = isset($zweitbetr->uid); - - /*$mail_link = $intern ? $mail_fulllink : $mail_baselink."\n\n"; - $mail_anrede = "Sehr geehrte".($zweitbetr->anrede=="Herr"?"r":"")." ".$zweitbetr->anrede." ".$zweitbetr->first."!\n\n"; - $mail_token = isset($zweitbetr->zugangstoken) && !$intern ? "Zugangstoken: ".$zweitbetr->zugangstoken."\n\n" : ""; - - $mailtext_zweitbetr = $mail_anrede.$mail_abgabetext.$mail_zurbeurteilung.$mail_link.$mail_token.$mail_abschluss; - - $mail = new mail($zweitbetrmail, "no-reply@".DOMAIN, "Masterarbeitsbetreuung", - $mailtext_zweitbetr); - $mail->setReplyTo($user."@".DOMAIN); - if(!$mail->send()) + if ($zweitbetr) { - echo "".$p->t('abgabetool/fehlerMailBegutachter')."
 "; - }*/ + $tokenGenRes = $projektbetreuer->generateZweitbegutachterToken($zweitbetr->person_id, $projektarbeit_id); - $zweitbetmaildata = array(); - $zweitbetmaildata['geehrt'] = "geehrte".($zweitbetr->anrede=="Herr"?"r":""); - $zweitbetmaildata['anrede'] = $zweitbetr->anrede; - $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->voller_name; - $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; - $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; - $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : ""; - $zweitbetmaildata['bewertunglink'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; - $zweitbetmaildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; + if (!$tokenGenRes) + echo "" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "
 "; - $mailres = sendSanchoMail( - 'ParbeitsbeurteilungEndupload', - $zweitbetmaildata, - $zweitbetr->email, - "Masterarbeitsbetreuung", - 'sancho_header_min_bw.jpg', - 'sancho_footer_min_bw.jpg', - $user."@".DOMAIN - ); + $zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid); - if(!$mailres) - { - echo "".$p->t('abgabetool/fehlerMailZweitBegutachter')."
 "; + if (!$zweitbetr) + echo "" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "
 "; + + $intern = isset($zweitbetr->uid); + + $zweitbetmaildata = array(); + $zweitbetmaildata['geehrt'] = "geehrte" . ($zweitbetr->anrede == "Herr" ? "r" : ""); + $zweitbetmaildata['anrede'] = $zweitbetr->anrede; + $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->voller_name; + $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; + $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; + $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : ""; + $zweitbetmaildata['bewertunglink'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $zweitbetmaildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: " . $zweitbetr->zugangstoken . "

" : ""; + + $mailres = sendSanchoMail( + 'ParbeitsbeurteilungEndupload', + $zweitbetmaildata, + $zweitbetr->email, + "Masterarbeitsbetreuung", + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg', + $user . "@" . DOMAIN + ); + + if (!$mailres) + { + echo "" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "
 "; + } } } } From 88dbd77a959a5492461ad4423f51bfd47700d140 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Thu, 8 Apr 2021 09:43:36 +0200 Subject: [PATCH 080/119] bug gefixed, akzeptieren von mehreren sonstigen dokumenten nun ohne fehlermeldung moeglich --- content/student/studentDBDML.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index a80ea171a..becb31e88 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -2296,8 +2296,12 @@ if(!$error) { $dokumente = explode(';',$_POST['dokumente']); $errormsg = ''; + $sonst = 0; foreach ($dokumente as $dokument_kurzbz) { + if ($dokument_kurzbz === 'Sonst' && $sonst !== 0) + continue; + if($dokument_kurzbz!='') { $dok = new dokument(); @@ -2308,6 +2312,8 @@ if(!$error) $dok->insertamum = date('Y-m-d H:i:s'); $dok->insertvon = $user; $dok->new = true; + if ($dokument_kurzbz === 'Sonst') + $sonst++; if(!$dok->save()) { @@ -2501,8 +2507,13 @@ if(!$error) { $dokumente = explode(';',$_POST['dokumente']); $errormsg = ''; + $sonst = 0; + foreach ($dokumente as $dokument_kurzbz) { + if ($dokument_kurzbz === 'Sonst' && $sonst !== 0) + continue; + if($dokument_kurzbz!='') { $dok = new dokument(); @@ -2514,6 +2525,11 @@ if(!$error) { $errormsg .= "Fehler bei $dokument_kurzbz: $dok->errormsg\n"; } + else + { + if ($dokument_kurzbz === 'Sonst') + $sonst++; + } } else { From 07f483f3bfd3fcfe55286566dcad9fcac1f859e9 Mon Sep 17 00:00:00 2001 From: manu Date: Thu, 8 Apr 2021 19:13:19 +0200 Subject: [PATCH 081/119] =?UTF-8?q?Erg=C3=A4nzung=20tablesorter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/tools/projektabgabe.php | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/cis/private/tools/projektabgabe.php b/cis/private/tools/projektabgabe.php index 586380bd6..7f440a34e 100644 --- a/cis/private/tools/projektabgabe.php +++ b/cis/private/tools/projektabgabe.php @@ -35,6 +35,9 @@ require_once('../../../include/datum.class.php'); require_once('../../../include/mail.class.php'); require_once('../../../include/phrasen.class.php'); +include('../../../include/meta/jquery.php'); +include('../../../include/meta/jquery-tablesorter.php'); + $sprache = getSprache(); $p = new phrasen($sprache); @@ -91,20 +94,18 @@ if($aktion!='zip') - - - - - - - + + + + From b29621354f191ea748912328fb8b8d156f8fa382 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Sat, 10 Apr 2021 03:55:05 +0200 Subject: [PATCH 082/119] - abgabetool: added zweitbetreuer mailto Link incl. icons - Bewertunglink is not sent in Parbeit Enduploadmail if older Semester - phrasesupdate Projektarbeitsbeurteilung: added female form --- cis/private/lehre/abgabe_lektor_details.php | 21 ++++++++++++++--- cis/private/lehre/abgabe_student_details.php | 24 ++++++++++++++++---- locale/de-AT/abgabetool.php | 3 ++- locale/en-US/abgabetool.php | 3 ++- locale/it-IT/abgabetool.php | 3 ++- system/phrasesupdate.php | 4 ++-- 6 files changed, 46 insertions(+), 12 deletions(-) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index 84ac87445..06d29fd88 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -130,6 +130,10 @@ $qry_sem="SELECT 1 LIMIT 1"; $result_sem=$db->db_query($qry_sem); $num_rows_sem = $db->db_num_rows($result_sem); +if($num_rows_sem < 0) +{ + echo "Fehler bei Ermittlung der Aktualität der Projektarbeit
 "; +} // Zweitbegutachter holen if($betreuerart=="Erstbegutachter") @@ -203,12 +207,18 @@ echo ' cursor: pointer; outline: inherit; } - #tokenmailimg { + #zweitbetrmailicon { top: 4px; height: 18px; width: 18px; position: relative; } + #tokenmailicon { + top: 2px; + height: 15px; + width: 15px; + position: relative; + } @@ -493,10 +503,13 @@ if (isset($zweitbegutachter) && $zweitbegutachter) // wenn es Zweitbegutachter g $htmlstr .= ""; $htmlstr .= ""; $htmlstr .= ""; + $htmlstr .= " email) . "' alt='" . $p->t('abgabetool/zweitbetreuerMailSenden', $zweitbegutachter->email) . "'/>\n"; $htmlstr .= " \n"; + " . $p->t(\n"; $htmlstr .= ""; } + $htmlstr .= "\n"; $htmlstr .= "\n"; $htmlstr .= "\n"; @@ -703,6 +716,8 @@ function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id, $intern = isset($zweitbetr->uid); $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; $mail_fulllink = "$mail_baselink?projektarbeit_id=".$zweitbegutachter->projektarbeit_id."&uid=".$student->uid; + $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $maildata = array(); $maildata['geehrt'] = "geehrte".($zweitbegutachter->anrede=="Herr"?"r":""); $maildata['anrede'] = $zweitbegutachter->anrede; @@ -710,7 +725,7 @@ function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id, $maildata['student_anrede'] = $student->anrede; $maildata['student_voller_name'] = trim($student->titelpre." ".$student->vorname." ".$student->nachname." ".$student->titelpost); $maildata['parbeituebersichtlink'] = $intern ? "

Zur Projektarbeitsübersicht

" : ""; - $maildata['bewertunglink'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; + $maildata['bewertunglink'] = "

Zur Beurteilung der Arbeit

"; $maildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: ".$zweitbetr->zugangstoken."

" : ""; return sendSanchoMail( diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 6e8433bb2..293da2fa0 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -326,7 +326,6 @@ if($command=="update" && $error!=true) { if($row_zd=@$db->db_fetch_object($result_zd)) { - $htmlstr = "
".$p->t('abgabetool/betreuer').": ".$db->convert_html_chars($betreuer)."
".$p->t('abgabetool/titel').": ".$db->convert_html_chars($titel)."

\n"; $htmlstr .= "\n"; $htmlstr .= "\n"; @@ -424,6 +423,22 @@ if($command=="update" && $error!=true) } else { + // paarbeit sollte nur ab SS2021 online bewertet werden + $qry_sem="SELECT 1 + FROM lehre.tbl_projektarbeit + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) + WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." + AND tbl_studiensemester.start::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021')::date + LIMIT 1"; + + $result_sem=$db->db_query($qry_sem); + $num_rows_sem = $db->db_num_rows($result_sem); + if($num_rows_sem < 0) + { + echo "Fehler bei Ermittlung der Aktualität der Projektarbeit
 "; + } + $row_std=$db->db_fetch_object($result_std); // 1. Begutachter mail ohne Token @@ -436,7 +451,7 @@ if($command=="update" && $error!=true) $maildata['student_anrede'] = $row_std->anrede; $maildata['student_voller_name'] = trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost); $maildata['parbeituebersichtlink'] = "

Zur Projektarbeitsübersicht

"; - $maildata['bewertunglink'] = $mail_fulllink; + $maildata['bewertunglink'] = $num_rows_sem >= 1 ? "

Zur Beurteilung der Arbeit

" : ""; $maildata['token'] = ""; $mailres = sendSanchoMail( @@ -472,6 +487,7 @@ if($command=="update" && $error!=true) echo "" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "
 "; $intern = isset($zweitbetr->uid); + $mail_link = $intern ? $mail_fulllink : $mail_baselink; $zweitbetmaildata = array(); $zweitbetmaildata['geehrt'] = "geehrte" . ($zweitbetr->anrede == "Herr" ? "r" : ""); @@ -480,8 +496,8 @@ if($command=="update" && $error!=true) $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : ""; - $zweitbetmaildata['bewertunglink'] = $mail_link = $intern ? $mail_fulllink : $mail_baselink; - $zweitbetmaildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: " . $zweitbetr->zugangstoken . "

" : ""; + $zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "

Zur Beurteilung der Arbeit

" : ""; + $zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: " . $zweitbetr->zugangstoken . "

" : ""; $mailres = sendSanchoMail( 'ParbeitsbeurteilungEndupload', diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index a130ddcbc..c3257edbe 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -81,8 +81,9 @@ $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Gelesen und akzeptiert'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Erklärung nicht akzeptiert'; $this->phrasen['abgabetool/downloadProjektarbeit']='Dokument herunterladen'; $this->phrasen['abgabetool/zweitBegutachter']='ZweitbegutachterIn'; -$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an ZweitbegutachterIn senden'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an ZweitbegutachterIn noch einmal senden'; $this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail an ZweitbegutachterIn (%s) gesendet'; +$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Mail an ZweitbegutachterIn (%s) senden'; $this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='keine Zustellmail für Zweitbegutachter vorhanden!'; $this->phrasen['abgabetool/projektbeurteilungDownload']='Projektbeurteilung herunterladen'; $this->phrasen['abgabetool/projektbeurteilungErstDownload']='Erst-/Begutachter'; diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index a04477aee..59b10ed4b 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -81,7 +81,8 @@ $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Read and accepted'; $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Declaration not accepted'; $this->phrasen['abgabetool/downloadProjektarbeit']='Download File'; $this->phrasen['abgabetool/zweitBegutachter']='Second assessor'; -$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Send access token to second assessor'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Resend access token to second assessor'; +$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Send mail to second assessor (%s)'; $this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)'; $this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='Second assessor has no delivery mail adress!'; $this->phrasen['abgabetool/projektbeurteilungDownload']='Thesis-Assessment download'; diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php index 66c5058ff..f5afd8da5 100644 --- a/locale/it-IT/abgabetool.php +++ b/locale/it-IT/abgabetool.php @@ -71,7 +71,8 @@ $this->phrasen['abgabetool/upload']='Upload'; $this->phrasen['abgabetool/variablerAbgabetermin']='scadenza consegna variabile'; $this->phrasen['abgabetool/zweitbetreuerBei']='secondo relatore presso'; $this->phrasen['abgabetool/zweitBegutachter']='Second assessor'; -$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Send access token to second assessor'; +$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Resend access token to second assessor'; +$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Send mail to second assessor (%s)'; $this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)'; $this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='Second assessor has no delivery mail adress!'; ?> diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index b0c8b1e3d..b49aa6044 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -9400,7 +9400,7 @@ Any unusual occurrences 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Zur Bewertung des Zweitbegutachters', + 'text' => 'Zur Bewertung des/der Zweitbegutachters*in', 'description' => '', 'insertvon' => 'system' ), @@ -9420,7 +9420,7 @@ Any unusual occurrences 'phrases' => array( array( 'sprache' => 'German', - 'text' => 'Die Beurteilung des Zweitbegutachters liegt noch nicht vor.', + 'text' => 'Die Beurteilung des/der Zweitbegutachters*in liegt noch nicht vor.', 'description' => '', 'insertvon' => 'system' ), From 1f02506eaf9c1c1091998f8e5bfcb8fc408d42cd Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Sat, 10 Apr 2021 04:09:29 +0200 Subject: [PATCH 083/119] =?UTF-8?q?added=20phrase=20for=20Parbeitaktualit?= =?UTF-8?q?=C3=A4t=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/abgabe_lektor_details.php | 2 +- cis/private/lehre/abgabe_student_details.php | 2 +- locale/de-AT/abgabetool.php | 1 + locale/en-US/abgabetool.php | 1 + locale/it-IT/abgabetool.php | 1 + 5 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index 06d29fd88..6b6b5633b 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -132,7 +132,7 @@ $result_sem=$db->db_query($qry_sem); $num_rows_sem = $db->db_num_rows($result_sem); if($num_rows_sem < 0) { - echo "Fehler bei Ermittlung der Aktualität der Projektarbeit
 "; + echo "".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."
 "; } // Zweitbegutachter holen diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index 293da2fa0..a30250435 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -436,7 +436,7 @@ if($command=="update" && $error!=true) $num_rows_sem = $db->db_num_rows($result_sem); if($num_rows_sem < 0) { - echo "Fehler bei Ermittlung der Aktualität der Projektarbeit
 "; + echo "".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."
 "; } $row_std=$db->db_fetch_object($result_std); diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php index c3257edbe..7943868ad 100644 --- a/locale/de-AT/abgabetool.php +++ b/locale/de-AT/abgabetool.php @@ -65,6 +65,7 @@ $this->phrasen['abgabetool/dateneingabeUnvollstaendig']='Die Dateneingabe ist un $this->phrasen['abgabetool/fehlerMailBegutachter']='Fehler beim Versenden des Mails an den Erstbegutachter!'; $this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Fehler beim Versenden des Mails an den Zweitbegutachter!'; $this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Betreuer nicht gefunden. Kein Mail verschickt!'; +$this->phrasen['abgabetool/fehlerAktualitaetProjektarbeit']='Fehler bei Ermittlung der Aktualität der Projektarbeit'; $this->phrasen['abgabetool/keinPDF']='Upload ist keine pdf-Datei! Bitte wiederholen Sie den Fileupload.'; $this->phrasen['abgabetool/dateiZuGross']='Die Datei ist zu groß! Maximale Dateigröße 15 MB'; $this->phrasen['abgabetool/fehlerTerminVorbei']='Die Abgabefrist für diesen Termin ist bereits abgelaufen.'; diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php index 59b10ed4b..c4e6eb7bd 100644 --- a/locale/en-US/abgabetool.php +++ b/locale/en-US/abgabetool.php @@ -64,6 +64,7 @@ $this->phrasen['abgabetool/dateneingabeUnvollstaendig']='Incomplete Data input'; $this->phrasen['abgabetool/fehlerMailBegutachter']='Error sending E-Mail to first Assessor!'; $this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Error sending E-Mail to second Assessor!'; $this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Assessor not found. No E-Mail sent!'; +$this->phrasen['abgabetool/fehlerAktualitaetProjektarbeit']='Error when checking if current thesis'; $this->phrasen['abgabetool/keinPDF']='Upload-File ist not a PDF! Please retry the Fileupload.'; $this->phrasen['abgabetool/dateiZuGross']='The File is too big! Maximum File size: 15 MB'; $this->phrasen['abgabetool/fehlerTerminVorbei']='The deadline for this upload has already expired.'; diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php index f5afd8da5..f7e7d9cf9 100644 --- a/locale/it-IT/abgabetool.php +++ b/locale/it-IT/abgabetool.php @@ -34,6 +34,7 @@ $this->phrasen['abgabetool/fehlerMailZweitBegutachter']='Errore di trasmissione $this->phrasen['abgabetool/fehlerMailStudent']='errore di spedizione della mai agli studenti!'; $this->phrasen['abgabetool/fehlerTerminEintragen']='scadenza non è stata registrata!'; $this->phrasen['abgabetool/fehlerTerminLoeschen']='Errore in sede di cancellazione della scadenza!'; +$this->phrasen['abgabetool/fehlerAktualitaetProjektarbeit']='Error when checking if current thesis'; $this->phrasen['abgabetool/fix']='fisso'; $this->phrasen['abgabetool/fixerAbgabetermin']='scadenza consegna inderogabile'; $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Letto e accettato'; From 456a4e2057071d19e99f29bc13f456f6c44935dd Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Mon, 12 Apr 2021 11:52:01 +0200 Subject: [PATCH 084/119] bugfix for datum validation --- include/bisverwendung.class.php | 112 ++++++++++++++++++++------------ 1 file changed, 71 insertions(+), 41 deletions(-) diff --git a/include/bisverwendung.class.php b/include/bisverwendung.class.php index 9d92db489..5302d7b96 100644 --- a/include/bisverwendung.class.php +++ b/include/bisverwendung.class.php @@ -104,8 +104,8 @@ class bisverwendung extends basis_db $this->verwendung_code = $row->verwendung_code; $this->mitarbeiter_uid = $row->mitarbeiter_uid; $this->hauptberufcode = $row->hauptberufcode; - $this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); - $this->habilitation = $this->db_parse_bool($row->habilitation); + $this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); + $this->habilitation = $this->db_parse_bool($row->habilitation); $this->beginn = $row->beginn; $this->ende = $row->ende; $this->updatevon = $row->updatevon; @@ -177,6 +177,24 @@ class bisverwendung extends basis_db } } + + /** + * Prueft das Datum + * @param $date = string + * @return true wenn ok, sonst false + */ + static public function verifyDate($date, $strict = true) + { + $dateTime = DateTime::createFromFormat('Y-m-d', $date); + if ($strict) { + $errors = DateTime::getLastErrors(); + if (!empty($errors['warning_count'])) { + return false; + } + } + return $dateTime !== false; + } + /** * Prueft die Daten vor dem Speichern * @@ -189,6 +207,17 @@ class bisverwendung extends basis_db $this->errormsg = 'Vertragsstunden sind ungueltig'; return false; } + elseif(!$this->verifyDate($this->beginn) && !empty($this->beginn)) + { + $this->errormsg = 'Start Datum ist kein Valides Datum: '.$this->beginn; + return false; + } + elseif(!$this->verifyDate($this->ende) && !empty($this->ende)) + { + $this->errormsg = 'End Datum ist kein Valides Datum: '.$this->ende; + return false; + } + return true; } @@ -225,49 +254,49 @@ class bisverwendung extends basis_db $qry = "BEGIN;INSERT INTO bis.tbl_bisverwendung (ba1code, ba2code, beschausmasscode, verwendung_code, mitarbeiter_uid, hauptberufcode, hauptberuflich, habilitation, beginn, ende, vertragsstunden, updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig) VALUES (". - $this->db_add_param($this->ba1code, FHC_INTEGER).', '. - $this->db_add_param($this->ba2code, FHC_INTEGER).', '. - $this->db_add_param($this->beschausmasscode, FHC_INTEGER).', '. - $this->db_add_param($this->verwendung_code, FHC_INTEGER).', '. - $this->db_add_param($this->mitarbeiter_uid).', '. - $this->db_add_param($this->hauptberufcode, FHC_INTEGER).', '. - $hauptberuflich.', '. - $this->db_add_param($this->habilitation, FHC_BOOLEAN).', '. - $this->db_add_param($this->beginn).', '. - $this->db_add_param($this->ende).', '. - $this->db_add_param($this->vertragsstunden).', '. - $this->db_add_param($this->updateamum).', '. - $this->db_add_param($this->updatevon).', '. - $this->db_add_param($this->insertamum).', '. - $this->db_add_param($this->insertvon).', '. - $this->db_add_param($this->dv_art).','. - $this->db_add_param($this->inkludierte_lehre).','. - $zeitaufzeichnungspflichtig. ');'; + $this->db_add_param($this->ba1code, FHC_INTEGER).', '. + $this->db_add_param($this->ba2code, FHC_INTEGER).', '. + $this->db_add_param($this->beschausmasscode, FHC_INTEGER).', '. + $this->db_add_param($this->verwendung_code, FHC_INTEGER).', '. + $this->db_add_param($this->mitarbeiter_uid).', '. + $this->db_add_param($this->hauptberufcode, FHC_INTEGER).', '. + $hauptberuflich.', '. + $this->db_add_param($this->habilitation, FHC_BOOLEAN).', '. + $this->db_add_param($this->beginn).', '. + $this->db_add_param($this->ende).', '. + $this->db_add_param($this->vertragsstunden).', '. + $this->db_add_param($this->updateamum).', '. + $this->db_add_param($this->updatevon).', '. + $this->db_add_param($this->insertamum).', '. + $this->db_add_param($this->insertvon).', '. + $this->db_add_param($this->dv_art).','. + $this->db_add_param($this->inkludierte_lehre).','. + $zeitaufzeichnungspflichtig. ');'; } else { //Bestehenden Datensatz aktualisieren $qry= "UPDATE bis.tbl_bisverwendung SET". - " ba1code=".$this->db_add_param($this->ba1code, FHC_INTEGER).",". - " ba2code=".$this->db_add_param($this->ba2code, FHC_INTEGER).",". - " beschausmasscode=".$this->db_add_param($this->beschausmasscode, FHC_INTEGER).",". - " verwendung_code=".$this->db_add_param($this->verwendung_code, FHC_INTEGER).",". - " mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid).",". - " hauptberufcode=".$this->db_add_param($this->hauptberufcode, FHC_INTEGER).",". - " hauptberuflich=".$hauptberuflich.",". - " habilitation=".$this->db_add_param($this->habilitation, FHC_BOOLEAN).",". - " beginn=".$this->db_add_param($this->beginn).",". - " ende=".$this->db_add_param($this->ende).",". - " vertragsstunden=".$this->db_add_param($this->vertragsstunden).",". - " updateamum=".$this->db_add_param($this->updateamum).",". - " updatevon=".$this->db_add_param($this->updatevon).",". - " insertamum=".$this->db_add_param($this->insertamum).",". - " insertvon=".$this->db_add_param($this->insertvon).",". - " dv_art=".$this->db_add_param($this->dv_art).",". - " inkludierte_lehre=".$this->db_add_param($this->inkludierte_lehre).",". - " zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig. - " WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER); + " ba1code=".$this->db_add_param($this->ba1code, FHC_INTEGER).",". + " ba2code=".$this->db_add_param($this->ba2code, FHC_INTEGER).",". + " beschausmasscode=".$this->db_add_param($this->beschausmasscode, FHC_INTEGER).",". + " verwendung_code=".$this->db_add_param($this->verwendung_code, FHC_INTEGER).",". + " mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid).",". + " hauptberufcode=".$this->db_add_param($this->hauptberufcode, FHC_INTEGER).",". + " hauptberuflich=".$hauptberuflich.",". + " habilitation=".$this->db_add_param($this->habilitation, FHC_BOOLEAN).",". + " beginn=".$this->db_add_param($this->beginn).",". + " ende=".$this->db_add_param($this->ende).",". + " vertragsstunden=".$this->db_add_param($this->vertragsstunden).",". + " updateamum=".$this->db_add_param($this->updateamum).",". + " updatevon=".$this->db_add_param($this->updatevon).",". + " insertamum=".$this->db_add_param($this->insertamum).",". + " insertvon=".$this->db_add_param($this->insertvon).",". + " dv_art=".$this->db_add_param($this->dv_art).",". + " inkludierte_lehre=".$this->db_add_param($this->inkludierte_lehre).",". + " zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig. + " WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER); } if($this->db_query($qry)) @@ -341,8 +370,8 @@ class bisverwendung extends basis_db $obj->verwendung_code = $row->verwendung_code; $obj->mitarbeiter_uid = $row->mitarbeiter_uid; $obj->hauptberufcode = $row->hauptberufcode; - $obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); - $obj->habilitation = $this->db_parse_bool($row->habilitation); + $obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); + $obj->habilitation = $this->db_parse_bool($row->habilitation); $obj->beginn = $row->beginn; $obj->ende = $row->ende; $obj->updatevon = $row->updatevon; @@ -770,3 +799,4 @@ class bisverwendung extends basis_db } } ?> + From 72b076c785889700a9f0bbca385276874b6b24c6 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Tue, 13 Apr 2021 13:25:42 +0200 Subject: [PATCH 085/119] added repeat.png image for abgabetool --- skin/images/repeat.png | Bin 0 -> 21827 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 skin/images/repeat.png diff --git a/skin/images/repeat.png b/skin/images/repeat.png new file mode 100644 index 0000000000000000000000000000000000000000..03ec1790b91f186f281e62b4435c38d0acca0eb2 GIT binary patch literal 21827 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 Date: Thu, 15 Apr 2021 11:54:50 +0200 Subject: [PATCH 086/119] Changed fhcomplete.org Wiki Links to fhcomplete.info --- README.md | 2 +- locale/de-AT/dms_link.php | 14 +++++++------- locale/en-US/dms_link.php | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index d5620010a..c5212a353 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # FH-Complete * [FH-Complete Homepage](https://www.fhcomplete.org) -* [Wiki](https://wiki.fhcomplete.org/) +* [Wiki](https://wiki.fhcomplete.info/) * [Changelog](CHANGELOG.md) diff --git a/locale/de-AT/dms_link.php b/locale/de-AT/dms_link.php index 5bf5541dc..8a0d24dac 100644 --- a/locale/de-AT/dms_link.php +++ b/locale/de-AT/dms_link.php @@ -11,11 +11,11 @@ $this->phrasen['dms_link/iconPDF']='46'; //PDF Icon $this->phrasen['dms_link/bedienungsanleitungMailverteiler']='1474'; //Bedienungsanleitung Mailverteiler $this->phrasen['dms_link/berechtigungskonzeptMailverteiler']='1475'; //Berechtigungskonzept Mailverteiler $this->phrasen['dms_link/handbuchUrlaubsverwaltung']='759'; //Handbuch Urlaubsverwaltung -> Leer lassen, falls es keines gibt -$this->phrasen['dms_link/handbuchZeitaufzeichnung']='1545'; //Handbuch Zeitaufzeichnung -> Leer lassen, falls es keines gibt +$this->phrasen['dms_link/handbuchZeitaufzeichnung']='1545'; //Handbuch Zeitaufzeichnung -> Leer lassen, falls es keines gibt $this->phrasen['dms_link/fiktiveNormalarbeitszeit']='2512'; //fiktive Normalarbeitszeit -> Leer lassen, falls es keines gibt $this->phrasen['dms_link/learningAgreementErasmus']='85863'; //Learning Agreement Incomings Erasmus -$this->phrasen['dms_link/learningAgreement']='38866'; //Learning Agreement Incomings NICHT Erasmus -$this->phrasen['dms_link/passwortpolicy']='57972'; //Passwortpolicy +$this->phrasen['dms_link/learningAgreement']='38866'; //Learning Agreement Incomings NICHT Erasmus +$this->phrasen['dms_link/passwortpolicy']='57972'; //Passwortpolicy // Content IDs (=Englisch) $this->phrasen['dms_link/lvPlanFAQ']='6887'; //Hilfe-Link aus dem LV-Plan in die LV-Plan FAQ auf der CIS (CMS-ID) @@ -32,8 +32,8 @@ $this->phrasen['dms_link/lvevaluierungStudierendeCMS']=''; //Beschreibung des Ab $this->phrasen['dms_link/lvevaluierungMitarbeiterCMS']=''; //Beschreibung des Ablaufs der LVEvaluierung für Mitarbeiter //Links auf externe Seiten -$this->phrasen['dms_link/dokuwikiGesamtnote']='https://wiki.fhcomplete.org/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote -$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen -$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende -$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz +$this->phrasen['dms_link/dokuwikiGesamtnote']='https://wiki.fhcomplete.info/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote +$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen +$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende +$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz ?> diff --git a/locale/en-US/dms_link.php b/locale/en-US/dms_link.php index 297feb2b4..287ee5a37 100644 --- a/locale/en-US/dms_link.php +++ b/locale/en-US/dms_link.php @@ -10,11 +10,11 @@ $this->phrasen['dms_link/moodleHandbuch24']='1426'; //Moodle Handbuch $this->phrasen['dms_link/iconPDF']='46'; //PDF Icon $this->phrasen['dms_link/bedienungsanleitungMailverteiler']='1474'; //Bedienungsanleitung Mailverteiler $this->phrasen['dms_link/berechtigungskonzeptMailverteiler']='1475'; //Berechtigungskonzept Mailverteiler -$this->phrasen['dms_link/handbuchUrlaubsverwaltung']='759'; //Handbuch Urlaubsverwaltung +$this->phrasen['dms_link/handbuchUrlaubsverwaltung']='759'; //Handbuch Urlaubsverwaltung $this->phrasen['dms_link/handbuchZeitaufzeichnung']='1545'; //Handbuch Zeitaufzeichnung -> Leer lassen, falls es keines gibt $this->phrasen['dms_link/fiktiveNormalarbeitszeit']='2512'; //fiktive Normalarbeitszeit -> Leer lassen, falls es keines gibt $this->phrasen['dms_link/learningAgreementErasmus']='85863'; //Learning Agreement Incomings Erasmus -$this->phrasen['dms_link/learningAgreement']='38866'; //Learning Agreement Incomings NICHT Erasmus +$this->phrasen['dms_link/learningAgreement']='38866'; //Learning Agreement Incomings NICHT Erasmus // Content IDs (=Deutsch) $this->phrasen['dms_link/lvPlanFAQ']='6887'; //Hilfe-Link aus dem LV-Plan in die LV-Plan FAQ auf der CIS (CMS-ID) @@ -27,8 +27,8 @@ $this->phrasen['dms_link/profilhilfe']=''; //Hilfe-Link aus dem Profil $this->phrasen['dms_link/anleitungMailverteiler']='7578'; //Anleitung für die Benutzung der Mailverteiler und der Berechtigungsschlüssel //Links auf externe Seiten -$this->phrasen['dms_link/dokuwikiGesamtnote']='https://wiki.fhcomplete.org/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote -$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen -$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende -$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://wiki.fhcomplete.org/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz +$this->phrasen['dms_link/dokuwikiGesamtnote']='https://wiki.fhcomplete.info/doku.php?id=cis:gesamtnote'; //Link ins Dokuwiki zur Anleitung Gesamtnote +$this->phrasen['dms_link/abgabetoolLektorHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer LektorInnen +$this->phrasen['dms_link/abgabetoolStudentHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_studierende'; //Abgabetool Handbuch fuer Studierende +$this->phrasen['dms_link/abgabetoolAssistenzHandbuch']='https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_lektoren'; //Abgabetool Handbuch fuer Assistenz ?> From 9699de8c33d2808959ed73ab9e2ced160eb9304b Mon Sep 17 00:00:00 2001 From: Paolo Date: Tue, 20 Apr 2021 14:09:52 +0200 Subject: [PATCH 087/119] Removed commented code --- application/libraries/LDAPLib.php | 1 - 1 file changed, 1 deletion(-) diff --git a/application/libraries/LDAPLib.php b/application/libraries/LDAPLib.php index 0dfcc9498..a119af51e 100644 --- a/application/libraries/LDAPLib.php +++ b/application/libraries/LDAPLib.php @@ -167,7 +167,6 @@ class LDAPLib } // LDAP connection - //$ldapConnection = @ldap_connect($ldapConfigs[self::SERVER], $ldapConfigs[self::PORT]); $ldapConnection = @ldap_connect($ldapConfigs[self::SERVER].':'.$ldapConfigs[self::PORT]); if ($ldapConnection) // if success { From f657ffe59d3646b9aafab2e3c0850a42490d8d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 20 Apr 2021 14:19:04 +0200 Subject: [PATCH 088/119] =?UTF-8?q?Liste=20der=20ganzt=C3=A4gige=20Zeitspe?= =?UTF-8?q?rren=20ohne=20Stundenangabe=20erweitert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/profile/zeitsperre_resturlaub.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index b155516e7..a50c02ade 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -277,13 +277,17 @@ function setBisDatum() function showHideStudeDropDown() { var dd = document.zeitsperre_form.zeitsperretyp_kurzbz; - console.log(dd.options[dd.selectedIndex].value == 'ZA') - if (dd.options[dd.selectedIndex].value == 'ZA' || dd.options[dd.selectedIndex].value == 'Urlaub') - { + + if (dd.options[dd.selectedIndex].value == 'ZA' + || dd.options[dd.selectedIndex].value == 'Urlaub' + || dd.options[dd.selectedIndex].value == 'Krank' + || dd.options[dd.selectedIndex].value == 'DienstF' + || dd.options[dd.selectedIndex].value == 'DienstV') + { document.getElementById('vonStd').style.visibility = 'hidden'; document.getElementById('bisStd').style.visibility = 'hidden'; - } - else + } + else { document.getElementById('vonStd').style.visibility = 'visible'; document.getElementById('bisStd').style.visibility = 'visible'; From a7482425ef689716bc623f63be37d82d10f9fc70 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Tue, 20 Apr 2021 15:57:43 +0200 Subject: [PATCH 089/119] fix inserst typos --- include/bisverwendung.class.php | 83 ++++++++++++++++----------------- 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/include/bisverwendung.class.php b/include/bisverwendung.class.php index 5302d7b96..799cfc93e 100644 --- a/include/bisverwendung.class.php +++ b/include/bisverwendung.class.php @@ -104,8 +104,8 @@ class bisverwendung extends basis_db $this->verwendung_code = $row->verwendung_code; $this->mitarbeiter_uid = $row->mitarbeiter_uid; $this->hauptberufcode = $row->hauptberufcode; - $this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); - $this->habilitation = $this->db_parse_bool($row->habilitation); + $this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); + $this->habilitation = $this->db_parse_bool($row->habilitation); $this->beginn = $row->beginn; $this->ende = $row->ende; $this->updatevon = $row->updatevon; @@ -254,49 +254,49 @@ class bisverwendung extends basis_db $qry = "BEGIN;INSERT INTO bis.tbl_bisverwendung (ba1code, ba2code, beschausmasscode, verwendung_code, mitarbeiter_uid, hauptberufcode, hauptberuflich, habilitation, beginn, ende, vertragsstunden, updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig) VALUES (". - $this->db_add_param($this->ba1code, FHC_INTEGER).', '. - $this->db_add_param($this->ba2code, FHC_INTEGER).', '. - $this->db_add_param($this->beschausmasscode, FHC_INTEGER).', '. - $this->db_add_param($this->verwendung_code, FHC_INTEGER).', '. - $this->db_add_param($this->mitarbeiter_uid).', '. - $this->db_add_param($this->hauptberufcode, FHC_INTEGER).', '. - $hauptberuflich.', '. - $this->db_add_param($this->habilitation, FHC_BOOLEAN).', '. - $this->db_add_param($this->beginn).', '. - $this->db_add_param($this->ende).', '. - $this->db_add_param($this->vertragsstunden).', '. - $this->db_add_param($this->updateamum).', '. - $this->db_add_param($this->updatevon).', '. - $this->db_add_param($this->insertamum).', '. - $this->db_add_param($this->insertvon).', '. - $this->db_add_param($this->dv_art).','. - $this->db_add_param($this->inkludierte_lehre).','. - $zeitaufzeichnungspflichtig. ');'; + $this->db_add_param($this->ba1code, FHC_INTEGER).', '. + $this->db_add_param($this->ba2code, FHC_INTEGER).', '. + $this->db_add_param($this->beschausmasscode, FHC_INTEGER).', '. + $this->db_add_param($this->verwendung_code, FHC_INTEGER).', '. + $this->db_add_param($this->mitarbeiter_uid).', '. + $this->db_add_param($this->hauptberufcode, FHC_INTEGER).', '. + $hauptberuflich.', '. + $this->db_add_param($this->habilitation, FHC_BOOLEAN).', '. + $this->db_add_param($this->beginn).', '. + $this->db_add_param($this->ende).', '. + $this->db_add_param($this->vertragsstunden).', '. + $this->db_add_param($this->updateamum).', '. + $this->db_add_param($this->updatevon).', '. + $this->db_add_param($this->insertamum).', '. + $this->db_add_param($this->insertvon).', '. + $this->db_add_param($this->dv_art).','. + $this->db_add_param($this->inkludierte_lehre).','. + $zeitaufzeichnungspflichtig. ');'; } else { //Bestehenden Datensatz aktualisieren $qry= "UPDATE bis.tbl_bisverwendung SET". - " ba1code=".$this->db_add_param($this->ba1code, FHC_INTEGER).",". - " ba2code=".$this->db_add_param($this->ba2code, FHC_INTEGER).",". - " beschausmasscode=".$this->db_add_param($this->beschausmasscode, FHC_INTEGER).",". - " verwendung_code=".$this->db_add_param($this->verwendung_code, FHC_INTEGER).",". - " mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid).",". - " hauptberufcode=".$this->db_add_param($this->hauptberufcode, FHC_INTEGER).",". - " hauptberuflich=".$hauptberuflich.",". - " habilitation=".$this->db_add_param($this->habilitation, FHC_BOOLEAN).",". - " beginn=".$this->db_add_param($this->beginn).",". - " ende=".$this->db_add_param($this->ende).",". - " vertragsstunden=".$this->db_add_param($this->vertragsstunden).",". - " updateamum=".$this->db_add_param($this->updateamum).",". - " updatevon=".$this->db_add_param($this->updatevon).",". - " insertamum=".$this->db_add_param($this->insertamum).",". - " insertvon=".$this->db_add_param($this->insertvon).",". - " dv_art=".$this->db_add_param($this->dv_art).",". - " inkludierte_lehre=".$this->db_add_param($this->inkludierte_lehre).",". - " zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig. - " WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER); + " ba1code=".$this->db_add_param($this->ba1code, FHC_INTEGER).",". + " ba2code=".$this->db_add_param($this->ba2code, FHC_INTEGER).",". + " beschausmasscode=".$this->db_add_param($this->beschausmasscode, FHC_INTEGER).",". + " verwendung_code=".$this->db_add_param($this->verwendung_code, FHC_INTEGER).",". + " mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid).",". + " hauptberufcode=".$this->db_add_param($this->hauptberufcode, FHC_INTEGER).",". + " hauptberuflich=".$hauptberuflich.",". + " habilitation=".$this->db_add_param($this->habilitation, FHC_BOOLEAN).",". + " beginn=".$this->db_add_param($this->beginn).",". + " ende=".$this->db_add_param($this->ende).",". + " vertragsstunden=".$this->db_add_param($this->vertragsstunden).",". + " updateamum=".$this->db_add_param($this->updateamum).",". + " updatevon=".$this->db_add_param($this->updatevon).",". + " insertamum=".$this->db_add_param($this->insertamum).",". + " insertvon=".$this->db_add_param($this->insertvon).",". + " dv_art=".$this->db_add_param($this->dv_art).",". + " inkludierte_lehre=".$this->db_add_param($this->inkludierte_lehre).",". + " zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig. + " WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER); } if($this->db_query($qry)) @@ -370,8 +370,8 @@ class bisverwendung extends basis_db $obj->verwendung_code = $row->verwendung_code; $obj->mitarbeiter_uid = $row->mitarbeiter_uid; $obj->hauptberufcode = $row->hauptberufcode; - $obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); - $obj->habilitation = $this->db_parse_bool($row->habilitation); + $obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); + $obj->habilitation = $this->db_parse_bool($row->habilitation); $obj->beginn = $row->beginn; $obj->ende = $row->ende; $obj->updatevon = $row->updatevon; @@ -799,4 +799,3 @@ class bisverwendung extends basis_db } } ?> - From 197accbb020d1cd47e0d7fcaccc3e9eb619aa0af Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 22 Apr 2021 13:47:01 +0200 Subject: [PATCH 090/119] Add Titel to Projektexport --- cis/private/tools/zeitaufzeichnung_projektliste.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php index c578ccb88..284eba962 100644 --- a/cis/private/tools/zeitaufzeichnung_projektliste.php +++ b/cis/private/tools/zeitaufzeichnung_projektliste.php @@ -46,7 +46,7 @@ $sprache_obj = new sprache(); $sprache_obj->load($sprache); $sprache_index = $sprache_obj->index; -$uid = get_uid(); +$uid = 'oesi';//get_uid(); //Wenn User Administrator ist und UID uebergeben wurde, dann die Zeitaufzeichnung //des uebergebenen Users anzeigen @@ -57,7 +57,7 @@ if (isset($_GET['uid'])) if ($rechte->isBerechtigt('admin')) { - $uid = $_GET['uid']; + $uid = "oesi";//$_GET['uid']; } else { @@ -90,6 +90,7 @@ $ztauf->getListeUserFromTo($uid, $year.'-'.$month.'-01', $year.'-'.$month.'-'.$d $projektlines = array(); $dayStart = $dayEnd = ''; $projektnames = $projektphasenames = $tosubtract = $allpauseranges = array(); +$projektTiteles = array(); $activitiesToSubtract = ['Pause', 'LehreExtern', 'Arztbesuch', 'Behoerde'];//aktivitaetstypen which should be subtracted fromworktime $ztaufdata = $ztauf->result; $totalmonthsum = 0.00; @@ -281,7 +282,12 @@ for ($i = 0; $i < count($ztaufdata); $i++) //add new projekt to array with unique projekt names if (!in_array($ztaufrow->projekt_kurzbz, $projektnames)) + { $projektnames[] = $ztaufrow->projekt_kurzbz; + $pt = new projekt(); + $pt->load($ztaufrow->projekt_kurzbz); + $projektTiteles[$ztaufrow->projekt_kurzbz] = $pt->titel; + } } } @@ -558,7 +564,8 @@ if ($nrProjects < 1)//no projekts - merge all cells and write notice foreach ($projektnames as $projektname) { //Creating a worksheet - $worksheet =& $workbook->addWorksheet($projektname); + $titel = $projektTiteles[$projektname]; + $worksheet =& $workbook->addWorksheet($projektname.' ('.$titel.')'); $worksheet->setInputEncoding('utf-8'); //general options From 6ddc912cb3a688452b6bc330d8c684027a9fa39c Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 22 Apr 2021 14:23:10 +0200 Subject: [PATCH 091/119] uncomment uid --- cis/private/tools/zeitaufzeichnung_projektliste.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php index 284eba962..c3d800dc1 100644 --- a/cis/private/tools/zeitaufzeichnung_projektliste.php +++ b/cis/private/tools/zeitaufzeichnung_projektliste.php @@ -46,7 +46,7 @@ $sprache_obj = new sprache(); $sprache_obj->load($sprache); $sprache_index = $sprache_obj->index; -$uid = 'oesi';//get_uid(); +$uid = get_uid(); //Wenn User Administrator ist und UID uebergeben wurde, dann die Zeitaufzeichnung //des uebergebenen Users anzeigen @@ -57,7 +57,7 @@ if (isset($_GET['uid'])) if ($rechte->isBerechtigt('admin')) { - $uid = "oesi";//$_GET['uid']; + $uid = $_GET['uid']; } else { From e4f6496387d027cf87513cc60c3a36a4dfbf58c6 Mon Sep 17 00:00:00 2001 From: FHBGLD <33415881+FHBGLD@users.noreply.github.com> Date: Tue, 27 Apr 2021 14:37:32 +0200 Subject: [PATCH 092/119] Update gemeinde.class.php --- include/gemeinde.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/gemeinde.class.php b/include/gemeinde.class.php index b829a7f7f..00b2e0128 100644 --- a/include/gemeinde.class.php +++ b/include/gemeinde.class.php @@ -139,7 +139,7 @@ class gemeinde extends basis_db if($this->db_query($qry)) { //naechste ID aus der Sequence holen - $qry="SELECT currval('tbl_gemeinde_gemeinde_id_seq') as id;"; + $qry="SELECT currval('bis.tbl_gemeinde_gemeinde_id_seq') as id;"; if($this->db_query($qry)) { if($row = $this->db_fetch_object()) @@ -219,4 +219,4 @@ class gemeinde extends basis_db return true; } } -?> \ No newline at end of file +?> From 35f1b00d7a8d6da2d9b7ebe4aeafe3bd735d1eea Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 28 Apr 2021 12:53:57 +0200 Subject: [PATCH 093/119] display correct mitarbeiter ressources --- rdf/ressource.rdf.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rdf/ressource.rdf.php b/rdf/ressource.rdf.php index fce26f36d..5306113b2 100644 --- a/rdf/ressource.rdf.php +++ b/rdf/ressource.rdf.php @@ -19,7 +19,7 @@ */ $projekt_kurzbz=(isset($_GET['projekt_kurzbz'])?$_GET['projekt_kurzbz']:null); -$projekt_phase=(isset($_GET['projekt_phase'])?$_GET['projekt_phase']:null); +$projekt_phase=(isset($_GET['projekt_phase'])?$_GET['projekt_phase']:null); if($projekt_phase != null && (is_numeric($projekt_phase) == false )) die('Ungültige ProjektphasenID'); @@ -81,7 +81,7 @@ $ressource = new ressource(); if($projekt_kurzbz!=null) $ressource->getProjectRessourcen($projekt_kurzbz); else if($projekt_phase!= null) - $ressource->getPhaseRessourcen($projekt_phase); + $ressource->getPhaseRessourcen($projekt_phase); else $ressource->getAllRessourcen(); @@ -171,7 +171,7 @@ function draw_ressource($ressource) else die('Fehler beim Laden der Mitarbeiter-daten'); - $mitarbeiter.="\n\t\t\tressource_id."\" />"; + $mitarbeiter.="\n\t\t\tressource_id.'/'.$ressource->projekt_ressource_id."\" />"; $typ ='Mitarbeiter'; } // Ressource ist ein Student @@ -229,7 +229,7 @@ function draw_ressource($ressource) } echo ' - + ressource_id.']]> bezeichnung.']]> @@ -242,7 +242,7 @@ function draw_ressource($ressource) insertvon.']]> updateamum.']]> updatevon.']]> - aufwand.']]> + aufwand.']]> funktion_kurzbz.']]> projekt_ressource_id.']]> From 898562e742b64d08e3a9bbcf47187516dee6cd97 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 29 Apr 2021 11:06:51 +0200 Subject: [PATCH 094/119] fix bug when deleting ressource from project --- content/projekt/ressource.xml.php | 8 ++- include/ressource.class.php | 88 +++++++++++++++++++++++++++---- soap/ressource_projekt.soap.php | 6 ++- soap/ressource_projekt.wsdl.php | 2 +- 4 files changed, 88 insertions(+), 16 deletions(-) diff --git a/content/projekt/ressource.xml.php b/content/projekt/ressource.xml.php index 966b79a80..d6f6c47c2 100644 --- a/content/projekt/ressource.xml.php +++ b/content/projekt/ressource.xml.php @@ -259,16 +259,19 @@ echo ''; ]]> - + - + '; projektRessource.appendChild(new SOAPObject("projekt_kurzbz")).val(''); } projektRessource.appendChild(new SOAPObject("ressource_id")).val(ressource_id); + projektRessource.appendChild(new SOAPObject("projekt_ressource_id")).val(projekt_ressource_id); soapBody.appendChild(projektRessource); var sr = new SOAPRequest("deleteProjektRessource",soapBody); diff --git a/include/ressource.class.php b/include/ressource.class.php index 2e6915480..a0567a5e9 100644 --- a/include/ressource.class.php +++ b/include/ressource.class.php @@ -86,7 +86,7 @@ class ressource extends basis_db $this->insertamum = $row->insertamum; $this->insertvon = $row->insertvon; $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; + $this->updatevon = $row->updatevon; $this->funktion_kurzbz = $row->funktion_kurzbz; return true; } @@ -130,7 +130,7 @@ class ressource extends basis_db $obj->insertamum = $row->insertamum; $obj->insertvon = $row->insertvon; $obj->updateamum = $row->updateamum; - $obj->updatevon = $row->updatevon; + $obj->updatevon = $row->updatevon; $this->result[] = $obj; } //var_dump($this->result); @@ -174,7 +174,7 @@ class ressource extends basis_db $obj->insertvon = $row->insertvon; $obj->updateamum = $row->updateamum; $obj->updatevon = $row->updatevon; - $obj->aufwand = $row->aufwand; + $obj->aufwand = $row->aufwand; $obj->funktion_kurzbz = $row->funktion_kurzbz; $obj->projekt_ressource_id= $row->projekt_ressource_id; @@ -189,8 +189,8 @@ class ressource extends basis_db return false; } } - - + + /** * * Lädt die Projektressource @@ -203,15 +203,15 @@ class ressource extends basis_db $this->result=array(); if($this->db_query($qry)) - { + { if($row = $this->db_fetch_object()) { $this->ressource_id = $row->ressource_id; $this->beschreibung = $row->beschreibung; - $this->aufwand = $row->aufwand; + $this->aufwand = $row->aufwand; $this->funktion_kurzbz = $row->funktion_kurzbz; - $this->projekt_ressource_id= $row->projekt_ressource_id; - $this->projekt_kurzbz = $row->projekt_kurzbz; + $this->projekt_ressource_id= $row->projekt_ressource_id; + $this->projekt_kurzbz = $row->projekt_kurzbz; $this->projektphase_id = $row->projektphase_id; return true; } @@ -223,7 +223,7 @@ class ressource extends basis_db $this->errormsg = 'Fehler beim Laden der Daten'; return false; } - } + } /** * @@ -256,7 +256,7 @@ class ressource extends basis_db $obj->insertvon = $row->insertvon; $obj->updateamum = $row->updateamum; $obj->updatevon = $row->updatevon; - $obj->aufwand = $row->aufwand; + $obj->aufwand = $row->aufwand; $obj->funktion_kurzbz = $row->funktion_kurzbz; $obj->projekt_ressource_id = $row->projekt_ressource_id; $this->result[] = $obj; @@ -688,5 +688,71 @@ class ressource extends basis_db return false; } } + + /** + * Löscht eine Ressource zu Projekt Zuordnung + * @param type $ressource_id + * @param type $projekt_kurzbz + * @return boolean + */ + public function deleteFromProjektWithProjektRessourceId($ressource_id, $projekt_kurzbz, $project_ressource_id) + { + if($ressource_id == '' || !is_numeric($ressource_id)) + { + $this->errormsg = 'Ressource Id ist keine gültige Zahl'; + return false; + } + /*$qry="DELETE FROM fue.tbl_projekt_ressource WHERE ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false)." + AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz, FHC_STRING, false).';'; + */ + $qry=" + DELETE FROM fue.tbl_projekt_ressource pr + USING fue.tbl_ressource r + WHERE r.ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false). " + AND pr.projekt_ressource_id=".$this->db_add_param($project_ressource_id, FHC_INTEGER, false). " + AND pr.projekt_kurzbz=".$this->db_add_param($projekt_kurzbz, FHC_STRING, false).';'; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Löschen der Daten'; + return false; + } + } + + /** + * Löscht eine Ressource zu Phase Zuordnung + * @param type $ressource_id + * @param type $projekt_kurzbz + * @return boolean + */ + public function deleteFromPhaseWithProjektRessourceId($ressource_id, $projektphase_id, $project_ressource_id) + { + if($ressource_id == '' || !is_numeric($ressource_id)) + { + $this->errormsg = 'Ressource Id ist keine gültige Zahl'; + return false; + } + + if($projektphase_id == '' || !is_numeric($projektphase_id)) + { + $this->errormsg = 'Ressource Id ist keine gültige Zahl'; + return false; + } + + $qry="DELETE FROM fue.tbl_projekt_ressource WHERE ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false)." + AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER, false).';'; + + if($this->db_query($qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Löschen der Daten'; + return false; + } + } } ?> diff --git a/soap/ressource_projekt.soap.php b/soap/ressource_projekt.soap.php index 4c1e13dec..065568269 100644 --- a/soap/ressource_projekt.soap.php +++ b/soap/ressource_projekt.soap.php @@ -70,7 +70,7 @@ function saveProjektRessource($username, $passwort, $projektRessource) $ressource->projekt_ressource_id=$projektRessource->projekt_ressource_id; $ressource->projektphase_id=$projektRessource->projektphase_id; $ressource->projekt_kurzbz=$projektRessource->projekt_kurzbz; - $ressource->ressource_id = $projektRessource->ressource_id; + $ressource->ressource_id = $projektRessource->ressource_id; $ressource->funktion_kurzbz = $projektRessource->funktion_kurzbz; $ressource->beschreibung = $projektRessource->beschreibung; $ressource->aufwand = $projektRessource->aufwand; @@ -113,8 +113,10 @@ function deleteProjektRessource($username, $passwort, $projektRessource) } else { + // von Projekt löschen - if($ressource->deleteFromProjekt($projektRessource->ressource_id, $projektRessource->projekt_kurzbz)) + //if($ressource->deleteFromProjekt($projektRessource->ressource_id, $projektRessource->projekt_kurzbz)) + if($ressource->deleteFromProjektWithProjektRessourceId($projektRessource->ressource_id, $projektRessource->projekt_kurzbz, $projektRessource->projekt_ressource_id)) return "Erfolg"; else return "Fehler beim Löschen"; diff --git a/soap/ressource_projekt.wsdl.php b/soap/ressource_projekt.wsdl.php index bc9071468..5024aa3a6 100644 --- a/soap/ressource_projekt.wsdl.php +++ b/soap/ressource_projekt.wsdl.php @@ -37,7 +37,7 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> - + From c0b07ac1d2d3dac8229e58748b3a6855194f0a51 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 29 Apr 2021 11:12:32 +0200 Subject: [PATCH 095/119] fix bug when deleting ressource from projectphasen --- include/ressource.class.php | 10 ++++++++-- soap/ressource_projekt.soap.php | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/ressource.class.php b/include/ressource.class.php index a0567a5e9..e01be0df4 100644 --- a/include/ressource.class.php +++ b/include/ressource.class.php @@ -743,9 +743,15 @@ class ressource extends basis_db return false; } - $qry="DELETE FROM fue.tbl_projekt_ressource WHERE ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false)." + /*$qry="DELETE FROM fue.tbl_projekt_ressource WHERE ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false)." AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER, false).';'; - + */ + $qry=" + DELETE FROM fue.tbl_projekt_ressource pr + USING fue.tbl_ressource r + WHERE r.ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false). " + AND pr.projekt_ressource_id=".$this->db_add_param($project_ressource_id, FHC_INTEGER, false). " + AND pr.projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER, false).';'; if($this->db_query($qry)) return true; else diff --git a/soap/ressource_projekt.soap.php b/soap/ressource_projekt.soap.php index 065568269..1a9f9b426 100644 --- a/soap/ressource_projekt.soap.php +++ b/soap/ressource_projekt.soap.php @@ -105,7 +105,7 @@ function deleteProjektRessource($username, $passwort, $projektRessource) if($projektRessource->projektphase_id != '') { // von Projektphase löschen - if($ressource->deleteFromPhase($projektRessource->ressource_id, $projektRessource->projektphase_id)) + if($ressource->deleteFromPhaseWithProjektRessourceId($projektRessource->ressource_id, $projektRessource->projektphase_id, $projektRessource->projekt_ressource_id)) return "Erfolg"; else return "Fehler beim Löschen"; From 27549c1a7058b64f7a6a1a65445fbbccb3ce9576 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 29 Apr 2021 13:03:19 +0200 Subject: [PATCH 096/119] fix umlaute und max length also for excel --- .../tools/zeitaufzeichnung_projektliste.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php index c3d800dc1..0856869ee 100644 --- a/cis/private/tools/zeitaufzeichnung_projektliste.php +++ b/cis/private/tools/zeitaufzeichnung_projektliste.php @@ -286,7 +286,10 @@ for ($i = 0; $i < count($ztaufdata); $i++) $projektnames[] = $ztaufrow->projekt_kurzbz; $pt = new projekt(); $pt->load($ztaufrow->projekt_kurzbz); - $projektTiteles[$ztaufrow->projekt_kurzbz] = $pt->titel; + if(!empty($pt->titel)) + $projektTiteles[convertProblemChars($ztaufrow->projekt_kurzbz)] = convertProblemChars($pt->titel); + else + $projektTiteles[convertProblemChars($ztaufrow->projekt_kurzbz)] = 'kein Titel'; } } } @@ -563,9 +566,19 @@ if ($nrProjects < 1)//no projekts - merge all cells and write notice foreach ($projektnames as $projektname) { + + $titel = $projektTiteles[convertProblemChars($projektname)]; + + if ((strlen($titel)+strlen($projektname)) > 30) + { + $maxLength = 31; + $maxLength = ($maxLength - strlen($projektname)); + $titel = substr($titel, 0, $maxLength); + $titel.='...'; + } //Creating a worksheet - $titel = $projektTiteles[$projektname]; - $worksheet =& $workbook->addWorksheet($projektname.' ('.$titel.')'); + + $worksheet =& $workbook->addWorksheet(convertProblemChars($projektname).' ('.$titel.')'); $worksheet->setInputEncoding('utf-8'); //general options From 44be64dccaefb8c7c4e3e980ec1ecd548d98b18f Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Fri, 30 Apr 2021 10:56:16 +0200 Subject: [PATCH 097/119] add titel also to sheet header --- cis/private/tools/zeitaufzeichnung_projektliste.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php index 0856869ee..4621c4a66 100644 --- a/cis/private/tools/zeitaufzeichnung_projektliste.php +++ b/cis/private/tools/zeitaufzeichnung_projektliste.php @@ -569,10 +569,10 @@ foreach ($projektnames as $projektname) $titel = $projektTiteles[convertProblemChars($projektname)]; - if ((strlen($titel)+strlen($projektname)) > 30) + if ((strlen($titel)+strlen($projektname)) > 31) { $maxLength = 31; - $maxLength = ($maxLength - strlen($projektname)); + $maxLength = ($maxLength - 3 - strlen($projektname)); $titel = substr($titel, 0, $maxLength); $titel.='...'; } @@ -580,7 +580,7 @@ foreach ($projektnames as $projektname) $worksheet =& $workbook->addWorksheet(convertProblemChars($projektname).' ('.$titel.')'); $worksheet->setInputEncoding('utf-8'); - + $titel = $projektTiteles[convertProblemChars($projektname)]; //general options $worksheet->setLandscape(); $worksheet->hideGridlines(); @@ -706,7 +706,7 @@ foreach ($projektnames as $projektname) $worksheet->write($zeile, $spalte + 1 + $i, '', $format_bold_centered_toprightline); $worksheet->setMerge($zeile, $spalte, $zeile, $spalte + 1 + $phasenameslength); - $worksheet->write($zeile, $spalte, $projektname, $format_bold_centered_toprightline); + $worksheet->write($zeile, $spalte, $projektname.' ('.$titel.')', $format_bold_centered_toprightline); for ($i = 0; $i < $phasenameslength; $i++) $worksheet->write($zeile + 1, $spalte + 1 + $i, $phasenames[$i], $format_bold_centered_bottomline); From d21773bad523db593f06b0103a1dd5e9270c5917 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 5 May 2021 09:21:32 +0200 Subject: [PATCH 098/119] markierung auch im vor und folgemonat --- cis/private/profile/urlaubstool.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cis/private/profile/urlaubstool.php b/cis/private/profile/urlaubstool.php index 141f9be9e..b15bcebb8 100644 --- a/cis/private/profile/urlaubstool.php +++ b/cis/private/profile/urlaubstool.php @@ -794,11 +794,14 @@ for ($i=0;$i<6;$i++) echo ''.$tage[$j+7*$i].'
'; if(strlen(stristr($tage[$j+7*$i],"."))>0) { - echo ''; + echo ''; } else { - echo ''; + echo ''; } } else From 73c2319933e4eb7ae1f8cefd88b2d0ffa0fc32f6 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Wed, 5 May 2021 16:14:10 +0200 Subject: [PATCH 099/119] =?UTF-8?q?Parbeitsbeurteilung=20Abgabe:=20-=20Mai?= =?UTF-8?q?l=20after=20Zwischenabgabe=20for=20Erstbegutachter=20has=20not?= =?UTF-8?q?=20Beurteilunglink=20-=20added=20Paabgabetyp=20for=20Mail=20aft?= =?UTF-8?q?er=20Abgabe=20-=20Plagiatspr=C3=BCfung=20Button=20links=20to=20?= =?UTF-8?q?newer=20Plagiatschecksite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/abgabe_lektor_details.php | 2 +- cis/private/lehre/abgabe_student_details.php | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index 6b6b5633b..5bd82a8ef 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -475,7 +475,7 @@ $htmlstr .= ""; if($betreuerart!="Zweitbegutachter") { - $htmlstr .= "
"; $htmlstr .= "\n"; $htmlstr .= "\n"; diff --git a/cis/private/lehre/abgabe_student_details.php b/cis/private/lehre/abgabe_student_details.php index a30250435..e9384390b 100644 --- a/cis/private/lehre/abgabe_student_details.php +++ b/cis/private/lehre/abgabe_student_details.php @@ -398,7 +398,7 @@ if($command=="update" && $error!=true) echo $p->t('global/dateiNichtErfolgreichHochgeladen'); } } - //E-Mail an 1.Begutachter und 2.Begutachter + //E-Mail an 1.Begutachter und 2.Begutachter senden if($bid!='' && $bid!=NULL) { $qry_betr="SELECT distinct trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first, @@ -444,14 +444,17 @@ if($command=="update" && $error!=true) // 1. Begutachter mail ohne Token $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung"; $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$row_std->uid; + $abgabetyp = $paabgabetyp_kurzbz == 'end' ? 'Endabgabe' : 'Zwischenabgabe'; + $maildata = array(); $maildata['geehrt'] = "geehrte".($row_betr->anrede=="Herr"?"r":""); $maildata['anrede'] = $row_betr->anrede; $maildata['betreuer_voller_name'] = $row_betr->first; $maildata['student_anrede'] = $row_std->anrede; $maildata['student_voller_name'] = trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost); + $maildata['abgabetyp'] = $abgabetyp; $maildata['parbeituebersichtlink'] = "

Zur Projektarbeitsübersicht

"; - $maildata['bewertunglink'] = $num_rows_sem >= 1 ? "

Zur Beurteilung der Arbeit

" : ""; + $maildata['bewertunglink'] = $num_rows_sem >= 1 && $paabgabetyp_kurzbz == 'end' ? "

Zur Beurteilung der Arbeit

" : ""; $maildata['token'] = ""; $mailres = sendSanchoMail( @@ -495,6 +498,7 @@ if($command=="update" && $error!=true) $zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->voller_name; $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; + $zweitbetmaildata['abgabetyp'] = $abgabetyp; $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : ""; $zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "

Zur Beurteilung der Arbeit

" : ""; $zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($zweitbetr->zugangstoken) && !$intern ? "

Zugangstoken: " . $zweitbetr->zugangstoken . "

" : ""; From 912148815137ff2ccfa72dade90ae96ae50d73c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 6 May 2021 12:57:52 +0200 Subject: [PATCH 100/119] Updated PHPSecLib --- composer.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/composer.lock b/composer.lock index d707ce776..467af9461 100644 --- a/composer.lock +++ b/composer.lock @@ -681,12 +681,12 @@ "version": "0.9.1", "source": { "type": "git", - "url": "https://github.com/njh/easyrdf.git", + "url": "https://github.com/easyrdf/easyrdf.git", "reference": "acd09dfe0555fbcfa254291e433c45fdd4652566" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/njh/easyrdf/zipball/acd09dfe0555fbcfa254291e433c45fdd4652566", + "url": "https://api.github.com/repos/easyrdf/easyrdf/zipball/acd09dfe0555fbcfa254291e433c45fdd4652566", "reference": "acd09dfe0555fbcfa254291e433c45fdd4652566", "shasum": "" }, @@ -796,6 +796,7 @@ "faker", "fixtures" ], + "abandoned": true, "time": "2019-12-12 13:22:17" }, { @@ -1321,16 +1322,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "2.0.23", + "version": "2.0.31", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "c78eb5058d5bb1a183133c36d4ba5b6675dfa099" + "reference": "233a920cb38636a43b18d428f9a8db1f0a1a08f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/c78eb5058d5bb1a183133c36d4ba5b6675dfa099", - "reference": "c78eb5058d5bb1a183133c36d4ba5b6675dfa099", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/233a920cb38636a43b18d428f9a8db1f0a1a08f4", + "reference": "233a920cb38636a43b18d428f9a8db1f0a1a08f4", "shasum": "" }, "require": { @@ -1338,8 +1339,7 @@ }, "require-dev": { "phing/phing": "~2.7", - "phpunit/phpunit": "^4.8.35|^5.7|^6.0", - "sami/sami": "~2.0", + "phpunit/phpunit": "^4.8.35|^5.7|^6.0|^9.4", "squizlabs/php_codesniffer": "~2.0" }, "suggest": { @@ -1409,7 +1409,7 @@ "x.509", "x509" ], - "time": "2019-09-17 03:41:22" + "time": "2021-04-06 13:56:45" }, { "name": "rmariuzzo/jquery-checkboxes", From 7a80a1f1cd1689c225373287359501d99d49ea36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 7 May 2021 11:49:56 +0200 Subject: [PATCH 101/119] Tokenversand Link ist jetzt immer Sichtbar --- cis/private/lehre/abgabe_lektor_details.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cis/private/lehre/abgabe_lektor_details.php b/cis/private/lehre/abgabe_lektor_details.php index 5bd82a8ef..be65ab7cd 100644 --- a/cis/private/lehre/abgabe_lektor_details.php +++ b/cis/private/lehre/abgabe_lektor_details.php @@ -122,7 +122,7 @@ $student_uid = $projektarbeit_obj->student_uid; // paarbeit sollte nur ab SS2021 online bewertet werden $qry_sem="SELECT 1 - FROM lehre.tbl_projektarbeit + FROM lehre.tbl_projektarbeit JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)." @@ -188,16 +188,16 @@ echo ' '.$p->t('abgabetool/abgabetool').' - - + '; + include('../../../include/meta/jquery.php'); + include('../../../include/meta/jquery-tablesorter.php'); + echo '
"; + $htmlstr .= "
"; $htmlstr .= "