From 9250485cb37b77eb81ad776c9e133ef3f60ea414 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 3 Sep 2020 15:22:46 +0200 Subject: [PATCH 01/97] 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 02/97] 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 03/97] 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 04/97] 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 05/97] 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 06/97] 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 07/97] 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 08/97] 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 09/97] 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 10/97] 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 11/97] 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 12/97] 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 13/97] 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 14/97] 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 15/97] 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 16/97] 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 17/97] 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 18/97] 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 01032c63d3a04c40f32ff182d37269d5e38dd74f Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 4 Nov 2020 15:29:36 +0100 Subject: [PATCH 19/97] Update der Person in ALMA Tabelle, wenn Personen zusammengelegt werden MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Falls nur die zu löschende Person in ALMA vorhanden ist, mit der zu behaltenden Person ersetzen. Falls bereits die zu ersetzende UND zu löschende Person in ALMA vorhanden sind, muss erst direkt im ALMA Bibliothekssystem und in der tbl_alma gelöscht werden. Signed-off-by: Cris --- vilesci/stammdaten/personen_wartung.php | 47 +++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index c143a1390..6f4e25cc4 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -135,6 +135,52 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p } else { + // Wenn Person in ALMA Bibliothek vorkommt, ggf. die Person dort übernehmen + $alma_has_personToKeep = false; + $alma_has_personToDelete = false; + $alma_update_obj = new StdClass(); + $alma_query_upd = ''; + + $alma_query = " + SELECT * + FROM sync.tbl_alma + WHERE ( + person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR + person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . " + )"; + + + if ($result = $db->db_query($alma_query)) + { + while ($row = $db->db_fetch_object($result)) + { + if ($row->person_id == $personToKeep) + { + $alma_has_personToKeep = true; + } + if ($row->person_id == $personToDelete) + { + $alma_has_personToDelete = true; + $alma_update_obj = $row; + } + } + } + + // Falls nur die zu löschende Person in ALMA vorhanden ist, mit der zu behaltenden Person ersetzen + if ($alma_has_personToDelete && !$alma_has_personToKeep) + { + $alma_query_upd = " + UPDATE sync.tbl_alma + SET person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " + WHERE alma_match_id = " . $alma_update_obj->alma_match_id . " + AND person_id = " . $alma_update_obj->person_id . ";"; + } + // Falls bereits doppelte Einträge in ALMA vorhanden sind, manuell lösen + elseif ($alma_has_personToDelete && $alma_has_personToKeep) + { + die('Es sind bereits beide Personen in ALMA vorhanden. Bitte zuerst direkt im ALMA Bibliotheksystem und in der tbl_alma lösen.'); + } + $personToDelete_obj = new person(); if ($personToDelete_obj->load($personToDelete)) { @@ -346,6 +392,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p $sql_query_upd1 .= "UPDATE system.tbl_person_lock SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE wawi.tbl_betriebsmittelperson SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE wawi.tbl_konto SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; + $sql_query_upd1 .= $alma_query_upd; $sql_query_upd1 .= "DELETE FROM public.tbl_person WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; From 56c958319ddb124fea5945256c6d4c80fbcc83c0 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Thu, 12 Nov 2020 15:49:45 +0100 Subject: [PATCH 20/97] 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 adb96ed33f0b7ca4f843d027f8e1a64e1fa98ad1 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 16 Nov 2020 15:11:08 +0100 Subject: [PATCH 21/97] Automatisch Personen in tbl_sap_students zusammenlegen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wenn doppelt angelegte Personen zusammengeführt werden, wird nun ggf auch in der Tabelle tbl_sap_students die hinterlegte Person upgedatet. Ausnahme: wenn in der tbl_sap_students die Person auch schon doppelt angelegt ist. In diesem Fall gibt es ein exit mit der Aufforderung, dies direkt (manuell) in der tbl_sap_students zu ändern. Signed-off-by: cris-technikum --- vilesci/stammdaten/personen_wartung.php | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index 6f4e25cc4..9cc0bba15 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -181,6 +181,53 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p die('Es sind bereits beide Personen in ALMA vorhanden. Bitte zuerst direkt im ALMA Bibliotheksystem und in der tbl_alma lösen.'); } + + // Wenn Person in SAP students vorkommt, ggf. die Person dort übernehmen + $sap_students_has_personToKeep = false; + $sap_students_has_personToDelete = false; + $sap_students_update_obj = new StdClass(); + $sap_students_query_upd = ''; + + $sap_students_query = " + SELECT * + FROM sync.tbl_sap_students + WHERE ( + person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR + person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . " + )"; + + if ($result = $db->db_query($sap_students_query)) + { + while ($row = $db->db_fetch_object($result)) + { + if ($row->person_id == $personToKeep) + { + $sap_students_has_personToKeep = true; + } + if ($row->person_id == $personToDelete) + { + $sap_students_has_personToDelete = true; + $sap_students_update_obj = $row; + } + } + } + + // Wenn die zu löschende Person in SAP students eingetragen ist, dann mit der zu behaltenden Person überschreiben + if ($sap_students_has_personToDelete && !$sap_students_has_personToKeep) + { + $sap_students_query_upd = " + UPDATE sync.tbl_sap_students + SET person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " + WHERE sap_user_id = " . $db->db_add_param($sap_students_update_obj->sap_user_id, FHC_STRING) . " + AND person_id = " . $sap_students_update_obj->person_id . ";"; + } + // Wenn doppelte Personeneinträge in SAP students vorhanden sind (zu löschende UND zu behaltende Person), + // dann manuell lösen + elseif ($sap_students_has_personToDelete && $sap_students_has_personToKeep) + { + die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_students lösen.'); + } + $personToDelete_obj = new person(); if ($personToDelete_obj->load($personToDelete)) { @@ -393,6 +440,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p $sql_query_upd1 .= "UPDATE wawi.tbl_betriebsmittelperson SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE wawi.tbl_konto SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= $alma_query_upd; + $sql_query_upd1 .= $sap_students_query_upd; $sql_query_upd1 .= "DELETE FROM public.tbl_person WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; From 4cbbd662b6f34722845bed3c48453911419b6610 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 16 Nov 2020 17:48:24 +0100 Subject: [PATCH 22/97] Automatisch Personen in tbl_sap_mitarbeiter zusammenlegen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wenn doppelt angelegte Personen zusammengeführt werden, wird nun ggf auch in der Tabelle tbl_sap_mitarbeiter die hinterlegte Person upgedatet. Ausnahme: wenn in der tbl_sap_mitarbeiter die Person auch schon doppelt angelegt ist. In diesem Fall gibt es ein exit mit der Aufforderung, dies direkt (manuell) in der tbl_sap_mitarbeiter zu ändern. Signed-off-by: cris-technikum --- vilesci/stammdaten/personen_wartung.php | 145 ++++++++++++++++++------ 1 file changed, 110 insertions(+), 35 deletions(-) diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index 9cc0bba15..fdf3c0531 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -182,51 +182,117 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p } - // Wenn Person in SAP students vorkommt, ggf. die Person dort übernehmen - $sap_students_has_personToKeep = false; - $sap_students_has_personToDelete = false; - $sap_students_update_obj = new StdClass(); - $sap_students_query_upd = ''; + // Prüfen, ob Person Mitarbeiter oder Student ist + $uid_toDelete = new Benutzer(); + $uid_toDelete->getBenutzerFromPerson($personToDelete); + $uid_toDelete = $uid_toDelete->result[0]->uid; - $sap_students_query = " + $mitarbeiter = new Mitarbeiter(); + $is_Mitarbeiter = $mitarbeiter->load($uid_toDelete); + + // Wenn Person Mitarbeiter ist, gegebenenfalls die SAP Mitarbeiter Tabelle updaten + if($is_Mitarbeiter) + { + $uid_toKeep = new Benutzer(); + $uid_toKeep->getBenutzerFromPerson($personToKeep); + $uid_toKeep = $uid_toKeep->result[0]->uid; + + // Wenn Person in SAP students vorkommt, ggf. die Person dort übernehmen + $sap_mitarbeiter_has_uidToKeep = false; + $sap_mitarbeiter_has_uidToDelete = false; + $sap_mitarbeiter_update_obj = new StdClass(); + $sap_mitarbeiter_query_upd = ''; + + $sap_mitarbeiter_query = " + SELECT * + FROM sync.tbl_sap_mitarbeiter + WHERE ( + mitarbeiter_uid = " . $db->db_add_param($uid_toKeep) . " OR + mitarbeiter_uid = " . $db->db_add_param($uid_toDelete) . " + )"; + + if ($result = $db->db_query($sap_mitarbeiter_query)) + { + while ($row = $db->db_fetch_object($result)) + { + if ($row->mitarbeiter_uid == $uid_toKeep) + { + $sap_mitarbeiter_has_uidToKeep = true; + } + if ($row->mitarbeiter_uid == $uid_toDelete) + { + $sap_mitarbeiter_has_uidToDelete = true; + $sap_mitarbeiter_update_obj = $row; + } + } + } + + // Wenn die zu löschende Person in SAP students eingetragen ist, dann mit der zu behaltenden Person überschreiben + if ($sap_mitarbeiter_has_uidToDelete && !$sap_mitarbeiter_has_uidToKeep) + { + $sap_mitarbeiter_query_upd = " + UPDATE sync.tbl_sap_mitarbeiter + SET mitarbeiter_uid = " . $db->db_add_param($uid_toKeep) . " + WHERE sap_eeid = " . $db->db_add_param($sap_mitarbeiter_update_obj->sap_eeid) . " + AND mitarbeiter_uid = " . $db->db_add_param($sap_mitarbeiter_update_obj->mitarbeiter_uid) . ";"; + } + // Wenn doppelte Personeneinträge in SAP students vorhanden sind (zu löschende UND zu behaltende Person), + // dann manuell lösen + elseif ($sap_mitarbeiter_has_uidToDelete && $sap_mitarbeiter_has_uidToKeep) + { + die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_mitarbeiter lösen.'); + } + + } + // Wenn Person Student ist, gegebenenfalls die SAP Studenten Tabelle updaten + else + { + $sap_students_has_personToKeep = false; + $sap_students_has_personToDelete = false; + $sap_students_update_obj = new StdClass(); + $sap_students_query_upd = ''; + + $sap_students_query = " SELECT * FROM sync.tbl_sap_students WHERE ( person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . " )"; - - if ($result = $db->db_query($sap_students_query)) - { - while ($row = $db->db_fetch_object($result)) - { - if ($row->person_id == $personToKeep) - { - $sap_students_has_personToKeep = true; - } - if ($row->person_id == $personToDelete) - { - $sap_students_has_personToDelete = true; - $sap_students_update_obj = $row; - } - } - } - - // Wenn die zu löschende Person in SAP students eingetragen ist, dann mit der zu behaltenden Person überschreiben - if ($sap_students_has_personToDelete && !$sap_students_has_personToKeep) - { - $sap_students_query_upd = " + + if ($result = $db->db_query($sap_students_query)) + { + while ($row = $db->db_fetch_object($result)) + { + if ($row->person_id == $personToKeep) + { + $sap_students_has_personToKeep = true; + } + if ($row->person_id == $personToDelete) + { + $sap_students_has_personToDelete = true; + $sap_students_update_obj = $row; + } + } + } + + // Wenn die zu löschende Person in SAP students eingetragen ist, dann mit der zu behaltenden Person überschreiben + if ($sap_students_has_personToDelete && !$sap_students_has_personToKeep) + { + $sap_students_query_upd = " UPDATE sync.tbl_sap_students SET person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE sap_user_id = " . $db->db_add_param($sap_students_update_obj->sap_user_id, FHC_STRING) . " AND person_id = " . $sap_students_update_obj->person_id . ";"; - } - // Wenn doppelte Personeneinträge in SAP students vorhanden sind (zu löschende UND zu behaltende Person), - // dann manuell lösen - elseif ($sap_students_has_personToDelete && $sap_students_has_personToKeep) - { - die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_students lösen.'); - } + } + // Wenn doppelte Personeneinträge in SAP students vorhanden sind (zu löschende UND zu behaltende Person), + // dann manuell lösen + elseif ($sap_students_has_personToDelete && $sap_students_has_personToKeep) + { + die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_students lösen.'); + } + } + $personToDelete_obj = new person(); if ($personToDelete_obj->load($personToDelete)) @@ -440,7 +506,16 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p $sql_query_upd1 .= "UPDATE wawi.tbl_betriebsmittelperson SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE wawi.tbl_konto SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= $alma_query_upd; - $sql_query_upd1 .= $sap_students_query_upd; + // Wenn Person Mitarbeiter ist, ggf. SAP Mitarbeiter updaten + if ($is_Mitarbeiter) + { + $sql_query_upd1 .= $sap_mitarbeiter_query_upd; + } + // Wenn Person Student ist, ggf. SAP Studententabelle updaten + if (!$is_Mitarbeiter) + { + $sql_query_upd1 .= $sap_students_query_upd; + } $sql_query_upd1 .= "DELETE FROM public.tbl_person WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; From 34e3756d744817dfbd7f4f2e909b88403989339e Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 18 Nov 2020 13:14:59 +0100 Subject: [PATCH 23/97] Mitarbeiter zusammenlegen entfernt / Extension-Tabellen auf Vorhandensein pruefen - Mitarbeiter zusammenlegen entfernt. - Bevor Personen auch in extenstions zusammengelegt werden: pruefen, ob die entsprechenden Tabellen existieren. (diese sind nur vorhanden, wenn extensions FHC-Core-ALMA, FHC-Core-SAP installiert sind) Signed-off-by: cris-technikum --- vilesci/stammdaten/personen_wartung.php | 146 ++++++++++++------------ 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index 9cc0bba15..2c4c4f0fa 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -135,97 +135,97 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p } else { - // Wenn Person in ALMA Bibliothek vorkommt, ggf. die Person dort übernehmen - $alma_has_personToKeep = false; - $alma_has_personToDelete = false; - $alma_update_obj = new StdClass(); - $alma_query_upd = ''; - - $alma_query = " - SELECT * - FROM sync.tbl_alma - WHERE ( - person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR - person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . " - )"; - - - if ($result = $db->db_query($alma_query)) + // Prüfen, ob tbl_alma existiert (also ob ALMA extension installiert ist) + if($result = @$db->db_query("SELECT 1 FROM sync.tbl_alma LIMIT 1")) { - while ($row = $db->db_fetch_object($result)) + // Wenn Person in ALMA Bibliothek vorkommt, ggf. die Person dort übernehmen + $alma_has_personToKeep = false; + $alma_has_personToDelete = false; + $alma_update_obj = new StdClass(); + $alma_query_upd = ''; + + $alma_query = " + SELECT * + FROM sync.tbl_alma + WHERE ( + person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR + person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . " + )"; + + if ($result = $db->db_query($alma_query)) { - if ($row->person_id == $personToKeep) + while ($row = $db->db_fetch_object($result)) { - $alma_has_personToKeep = true; - } - if ($row->person_id == $personToDelete) - { - $alma_has_personToDelete = true; - $alma_update_obj = $row; + if ($row->person_id == $personToKeep) + { + $alma_has_personToKeep = true; + } + if ($row->person_id == $personToDelete) + { + $alma_has_personToDelete = true; + $alma_update_obj = $row; + } } } - } - - // Falls nur die zu löschende Person in ALMA vorhanden ist, mit der zu behaltenden Person ersetzen - if ($alma_has_personToDelete && !$alma_has_personToKeep) + + // Falls nur die zu löschende Person in ALMA vorhanden ist, mit der zu behaltenden Person ersetzen + if ($alma_has_personToDelete && !$alma_has_personToKeep) + { + $alma_query_upd = " + UPDATE sync.tbl_alma + SET person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " + WHERE alma_match_id = " . $alma_update_obj->alma_match_id . " + AND person_id = " . $alma_update_obj->person_id . ";"; + } + // Falls bereits doppelte Einträge in ALMA vorhanden sind (zu löschende und zu behaltende), manuell lösen + elseif ($alma_has_personToDelete && $alma_has_personToKeep) + { + die('Es sind bereits beide Personen in ALMA vorhanden. Bitte zuerst direkt im ALMA Bibliotheksystem und in der tbl_alma lösen.'); + } + } + + // Prüfen, ob tbl_sap_students exisitiert + if($result = @$db->db_query("SELECT 1 FROM sync.tbl_sap_students LIMIT 1")) { - $alma_query_upd = " - UPDATE sync.tbl_alma - SET person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " - WHERE alma_match_id = " . $alma_update_obj->alma_match_id . " - AND person_id = " . $alma_update_obj->person_id . ";"; - } - // Falls bereits doppelte Einträge in ALMA vorhanden sind, manuell lösen - elseif ($alma_has_personToDelete && $alma_has_personToKeep) - { - die('Es sind bereits beide Personen in ALMA vorhanden. Bitte zuerst direkt im ALMA Bibliotheksystem und in der tbl_alma lösen.'); - } - - - // Wenn Person in SAP students vorkommt, ggf. die Person dort übernehmen - $sap_students_has_personToKeep = false; - $sap_students_has_personToDelete = false; - $sap_students_update_obj = new StdClass(); - $sap_students_query_upd = ''; - - $sap_students_query = " + // Wenn Person in SAP students vorkommt, ggf. die Person dort übernehmen + $sap_students_has_personToKeep = false; + $sap_students_has_personToDelete = false; + $sap_students_update_obj = new StdClass(); + $sap_students_query_upd = ''; + + $sap_students_query = " SELECT * FROM sync.tbl_sap_students WHERE ( person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . " )"; - - if ($result = $db->db_query($sap_students_query)) - { - while ($row = $db->db_fetch_object($result)) - { - if ($row->person_id == $personToKeep) - { - $sap_students_has_personToKeep = true; - } - if ($row->person_id == $personToDelete) - { - $sap_students_has_personToDelete = true; - $sap_students_update_obj = $row; + + if ($result = $db->db_query($sap_students_query)) { + while ($row = $db->db_fetch_object($result)) { + if ($row->person_id == $personToKeep) { + $sap_students_has_personToKeep = true; + } + if ($row->person_id == $personToDelete) { + $sap_students_has_personToDelete = true; + $sap_students_update_obj = $row; + } } } - } - - // Wenn die zu löschende Person in SAP students eingetragen ist, dann mit der zu behaltenden Person überschreiben - if ($sap_students_has_personToDelete && !$sap_students_has_personToKeep) - { - $sap_students_query_upd = " + + // Wenn die zu löschende Person in SAP students eingetragen ist, dann mit der zu behaltenden Person überschreiben + if ($sap_students_has_personToDelete && !$sap_students_has_personToKeep) { + $sap_students_query_upd = " UPDATE sync.tbl_sap_students SET person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE sap_user_id = " . $db->db_add_param($sap_students_update_obj->sap_user_id, FHC_STRING) . " AND person_id = " . $sap_students_update_obj->person_id . ";"; - } - // Wenn doppelte Personeneinträge in SAP students vorhanden sind (zu löschende UND zu behaltende Person), - // dann manuell lösen - elseif ($sap_students_has_personToDelete && $sap_students_has_personToKeep) - { - die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_students lösen.'); + } + // Wenn doppelte Personeneinträge in SAP students vorhanden sind (zu löschende UND zu behaltende Person), + // dann manuell lösen + elseif ($sap_students_has_personToDelete && $sap_students_has_personToKeep) { + die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_students lösen.'); + } } $personToDelete_obj = new person(); From 32a174d8362513be8f03a0f625470c30a3d03e15 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Mon, 30 Nov 2020 11:09:49 +0100 Subject: [PATCH 24/97] 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 25/97] =?UTF-8?q?Zeiterfassung:=20Tages=C3=BCbergreifende?= =?UTF-8?q?=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 26/97] =?UTF-8?q?Zeitsperren:=20User=20bekommt=20Warnhinwe?= =?UTF-8?q?is=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 27/97] =?UTF-8?q?Zeiterfassung:=20Zeitausgleich=20und=20Kr?= =?UTF-8?q?ankenstand=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 29/97] 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 c3ab40282b1035d7e97efd058c2020b4427f8915 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Wed, 16 Dec 2020 16:39:43 +0100 Subject: [PATCH 30/97] add azgrelevant column and alter zeitaufzeichnung column in bis.tbl_bisverwendung --- system/dbupdate_3.3.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 2336ebad4..dafec165d 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4465,6 +4465,21 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE } } +// ADD COLUMN azgrelevant in bis.tbl_bisverwendung +if(!$result = @$db->db_query("SELECT incoming FROM bis.tbl_bisverwendung LIMIT 1")) +{ + $qry = " + ALTER TABLE bis.tbl_bisverwendung ADD COLUMN azgrelevant boolean; + UPDATE bis.tbl_bisverwendung SET azgrelevant = zeitaufzeichnungspflichtig; + UPDATE bis.tbl_bisverwendung SET zeitaufzeichnungspflichtig = true WHERE ba1code=103; + "; + + if(!$db->db_query($qry)) + echo 'bis.tbl_bisverwendung: '.$db->db_last_error().'
'; + else + echo '
bis.tbl_bisverwendung Spalte azgrelevant hinzugefügt.'; +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; From 30960adf8179e2131ce5df4e2b262e87c380ca88 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Mon, 21 Dec 2020 08:55:33 +0100 Subject: [PATCH 31/97] fix typo in query --- system/dbupdate_3.3.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index dafec165d..e01105db6 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4466,7 +4466,7 @@ if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE } // ADD COLUMN azgrelevant in bis.tbl_bisverwendung -if(!$result = @$db->db_query("SELECT incoming FROM bis.tbl_bisverwendung LIMIT 1")) +if(!$result = @$db->db_query("SELECT azgrelevant FROM bis.tbl_bisverwendung LIMIT 1")) { $qry = " ALTER TABLE bis.tbl_bisverwendung ADD COLUMN azgrelevant boolean; From d62b1bead4692c7f9f97ea1bcf1aaa922a48e989 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Mon, 21 Dec 2020 09:27:23 +0100 Subject: [PATCH 32/97] change table --- include/bisverwendung.class.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/include/bisverwendung.class.php b/include/bisverwendung.class.php index 9d92db489..798b2213b 100644 --- a/include/bisverwendung.class.php +++ b/include/bisverwendung.class.php @@ -47,6 +47,7 @@ class bisverwendung extends basis_db public $dv_art; public $inkludierte_lehre; public $zeitaufzeichnungspflichtig; + public $azgrelevant; public $ba1bez; public $ba2bez; @@ -122,6 +123,7 @@ class bisverwendung extends basis_db $this->dv_art = $row->dv_art; $this->inkludierte_lehre = $row->inkludierte_lehre; $this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig); + $this->azgrelevant = $this->db_parse_bool($row->azgrelevant); return true; } else @@ -359,7 +361,7 @@ class bisverwendung extends basis_db $obj->dv_art = $row->dv_art; $obj->inkludierte_lehre = $row->inkludierte_lehre; $obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig); - + $obj->azgrelevant = $this->db_parse_bool($row->azgrelevant); $this->result[] = $obj; } return true; @@ -416,6 +418,7 @@ class bisverwendung extends basis_db $obj->dv_art = $row->dv_art; $obj->inkludierte_lehre = $row->inkludierte_lehre; $obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig); + $obj->azgrelevant = $this->db_parse_bool($row->azgrelevant); $this->result[] = $obj; } @@ -474,6 +477,7 @@ class bisverwendung extends basis_db $obj->dv_art = $row->dv_art; $obj->inkludierte_lehre = $row->inkludierte_lehre; $obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig); + $obj->azgrelevant = $this->db_parse_bool($row->azgrelevant); $this->result[] = $obj; } @@ -525,6 +529,7 @@ class bisverwendung extends basis_db $this->dv_art = $row->dv_art; $this->inkludierte_lehre = $row->inkludierte_lehre; $this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig); + $this->azgrelevant = $this->db_parse_bool($row->azgrelevant); } return true; } @@ -578,6 +583,7 @@ class bisverwendung extends basis_db $this->dv_art = $row->dv_art; $this->inkludierte_lehre = $row->inkludierte_lehre; $this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig); + $this->azgrelevant = $this->db_parse_bool($row->azgrelevant); } return true; } @@ -640,6 +646,7 @@ class bisverwendung extends basis_db $obj->dv_art = $row->dv_art; $obj->inkludierte_lehre = $row->inkludierte_lehre; $obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig); + $obj->azgrelevant = $this->db_parse_bool($row->azgrelevant); $this->result[] = $obj; } From 8441345d7a5e228300d611384bcd7ad574516736 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Tue, 19 Jan 2021 13:22:47 +0100 Subject: [PATCH 33/97] add azgrelevant to save method in bisverwendungclass --- include/bisverwendung.class.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/include/bisverwendung.class.php b/include/bisverwendung.class.php index 798b2213b..774fe413f 100644 --- a/include/bisverwendung.class.php +++ b/include/bisverwendung.class.php @@ -220,13 +220,21 @@ class bisverwendung extends basis_db { $zeitaufzeichnungspflichtig = 'null'; } + if(is_bool($this->azgrelevant)) + { + $azgrelevant = $this->db_add_param($this->azgrelevant, FHC_BOOLEAN); + } + else + { + $azgrelevant = 'null'; + } if($new) { //Neuen Datensatz anlegen $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 (". + updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig, azgrelevant) 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).', '. @@ -244,7 +252,8 @@ class bisverwendung extends basis_db $this->db_add_param($this->insertvon).', '. $this->db_add_param($this->dv_art).','. $this->db_add_param($this->inkludierte_lehre).','. - $zeitaufzeichnungspflichtig. ');'; + $zeitaufzeichnungspflichtig.','. + $azgrelevant. ');'; } else @@ -268,7 +277,8 @@ class bisverwendung extends basis_db " 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. + " zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig.",". + " azgrelevant =". $azgrelevant. " WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER); } From 943961127faaa084fc2947f41de8f79fcf6ac9a4 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Tue, 19 Jan 2021 16:15:03 +0100 Subject: [PATCH 34/97] implement checkbox --- content/mitarbeiter/mitarbeiterDBDML.php | 8 +++++++- content/mitarbeiter/mitarbeiteroverlay.js.php | 2 ++ .../mitarbeiter/mitarbeiterverwendungdialog.js.php | 14 +++++++++++++- .../mitarbeiterverwendungdialog.xul.php | 4 ++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/content/mitarbeiter/mitarbeiterDBDML.php b/content/mitarbeiter/mitarbeiterDBDML.php index 6bb1513d0..eb7ba6650 100644 --- a/content/mitarbeiter/mitarbeiterDBDML.php +++ b/content/mitarbeiter/mitarbeiterDBDML.php @@ -174,7 +174,13 @@ if(!$error) elseif($_POST['zeitaufzeichnungspflichtig']=='false') $verwendung->zeitaufzeichnungspflichtig = false; else - $verwendung->zeitaufzeichnungspflichtig = ''; + $verwendung->azgrelevant = ''; + if($_POST['azgrelevant']=='true') + $verwendung->azgrelevant = true; + elseif($_POST['azgrelevant']=='false') + $verwendung->azgrelevant = false; + else + $verwendung->azgrelevant = ''; if($verwendung->save()) { diff --git a/content/mitarbeiter/mitarbeiteroverlay.js.php b/content/mitarbeiter/mitarbeiteroverlay.js.php index d0aa4f40d..adf7bdf90 100644 --- a/content/mitarbeiter/mitarbeiteroverlay.js.php +++ b/content/mitarbeiter/mitarbeiteroverlay.js.php @@ -1210,6 +1210,7 @@ function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_ui dv_art = dialog.getElementById('mitarbeiter-verwendung-detail-textbox-dv_art').value; inkludierte_lehre = dialog.getElementById('mitarbeiter-verwendung-detail-textbox-inkludierte_lehre').value; zeitaufzeichnungspflichtig = dialog.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked; + azgrelevant = dialog.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked; if(verwendung_code=='1') { @@ -1268,6 +1269,7 @@ function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_ui req.add('dv_art', dv_art); req.add('inkludierte_lehre', inkludierte_lehre); req.add('zeitaufzeichnungspflichtig', zeitaufzeichnungspflichtig); + req.add('azgrelevant', azgrelevant); var response = req.executePOST(); diff --git a/content/mitarbeiter/mitarbeiterverwendungdialog.js.php b/content/mitarbeiter/mitarbeiterverwendungdialog.js.php index 841f167e9..123f471f8 100644 --- a/content/mitarbeiter/mitarbeiterverwendungdialog.js.php +++ b/content/mitarbeiter/mitarbeiterverwendungdialog.js.php @@ -70,6 +70,7 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id) dv_art = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#dv_art" )); inkludierte_lehre = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#inkludierte_lehre" )); zeitaufzeichnungspflichtig = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zeitaufzeichnungspflichtig" )); + azgrelevant = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#azgrelevant" )); } else { @@ -112,6 +113,14 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id) { zeitaufzeichnungspflichtig='Nein'; } + if (azgrelevant=='Ja') + { + azgrelevant='Ja'; + } + else + { + azgrelevant='Nein'; + } } document.getElementById('mitarbeiter-verwendung-detail-menulist-beschart1').value=ba1code; @@ -138,7 +147,10 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id) document.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked=true; else document.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked=false; - + if(azgrelevant=='Ja') + document.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked=true; + else + document.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked=false; MitarbeiterVerwendungDetailToggleHauptberuf(); MitarbeiterVerwendungVerwendungChange(); } diff --git a/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php b/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php index bc87a097d..492b2f838 100644 --- a/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php +++ b/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php @@ -167,6 +167,10 @@ echo ' + + From d9cbea680e4c30660842bda00064b45ac5d188bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 25 Feb 2021 15:25:41 +0100 Subject: [PATCH 35/97] Fixed Loading of AZG Relevant Checkbox in FAS Fixed missing Column Warning in DB Update --- .../mitarbeiter/mitarbeiterverwendungdialog.xul.php | 2 +- rdf/bisverwendung.rdf.php | 10 ++++++++-- system/dbupdate_3.3.php | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php b/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php index 492b2f838..197df7d27 100644 --- a/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php +++ b/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php @@ -168,7 +168,7 @@ echo ' - diff --git a/rdf/bisverwendung.rdf.php b/rdf/bisverwendung.rdf.php index 81eb1f444..16e6daba5 100644 --- a/rdf/bisverwendung.rdf.php +++ b/rdf/bisverwendung.rdf.php @@ -84,12 +84,17 @@ function draw_row($row) $hauptberuflich = $row->hauptberuflich?'Ja':'Nein'; else $hauptberuflich = ''; - + if(is_bool($row->zeitaufzeichnungspflichtig)) $zeitaufzeichnungspflichtig = $row->zeitaufzeichnungspflichtig?'Ja':'Nein'; else $zeitaufzeichnungspflichtig = ''; - + + if(is_bool($row->azgrelevant)) + $azgrelevant = $row->azgrelevant?'Ja':'Nein'; + else + $azgrelevant = ''; + echo ' @@ -119,6 +124,7 @@ function draw_row($row) dv_art.']]> inkludierte_lehre.']]> + '; diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 3e6b82111..97bae6eab 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4471,8 +4471,8 @@ if(!$result = @$db->db_query("SELECT azgrelevant FROM bis.tbl_bisverwendung LIMI $qry = " ALTER TABLE bis.tbl_bisverwendung ADD COLUMN azgrelevant boolean; UPDATE bis.tbl_bisverwendung SET azgrelevant = zeitaufzeichnungspflichtig; - UPDATE bis.tbl_bisverwendung SET zeitaufzeichnungspflichtig = true WHERE ba1code=103; - "; + UPDATE bis.tbl_bisverwendung SET zeitaufzeichnungspflichtig = true WHERE ba1code=103 AND beschausmasscode!=5; + "; if(!$db->db_query($qry)) echo 'bis.tbl_bisverwendung: '.$db->db_last_error().'
'; From 95c2e4bf9cbaecae638bae66206939844f0fc568 Mon Sep 17 00:00:00 2001 From: OliiverHacker Date: Fri, 26 Feb 2021 00:25:59 +0100 Subject: [PATCH 36/97] fix true false --- .../mitarbeiter/mitarbeiterverwendungdialog.js.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/mitarbeiter/mitarbeiterverwendungdialog.js.php b/content/mitarbeiter/mitarbeiterverwendungdialog.js.php index 123f471f8..1119c468d 100644 --- a/content/mitarbeiter/mitarbeiterverwendungdialog.js.php +++ b/content/mitarbeiter/mitarbeiterverwendungdialog.js.php @@ -88,7 +88,7 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id) var predicateNS = "http://www.technikum-wien.at/mitarbeiter/rdf"; fixangestellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#fixangestellt" )); - + azgrelevant = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#azgrelevant" )); //neuer Datensatz wird angelegt MitarbeiterVerwendungDetailNeu='true'; @@ -113,13 +113,13 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id) { zeitaufzeichnungspflichtig='Nein'; } - if (azgrelevant=='Ja') + if (!azgrelevant) { - azgrelevant='Ja'; + azgrelevant='Nein'; } else { - azgrelevant='Nein'; + azgrelevant='Ja'; } } @@ -147,10 +147,10 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id) document.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked=true; else document.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked=false; - if(azgrelevant=='Ja') - document.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked=true; - else + if(azgrelevant=='Nein') document.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked=false; + else + document.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked=true; MitarbeiterVerwendungDetailToggleHauptberuf(); MitarbeiterVerwendungVerwendungChange(); } From fb7835de57adb18f4e89a03b365e795744330d4f Mon Sep 17 00:00:00 2001 From: ma0048 Date: Mon, 8 Mar 2021 12:53:59 +0100 Subject: [PATCH 37/97] added new zeitwuensche permission --- system/checkroles.php | 2 +- system/checksystem.php | 1 + vilesci/personen/lektor_uebersicht.php | 3 ++- vilesci/personen/zeitwunsch.php | 15 ++++++++++++--- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/system/checkroles.php b/system/checkroles.php index 54839437e..1f57857a1 100644 --- a/system/checkroles.php +++ b/system/checkroles.php @@ -54,7 +54,7 @@ $data = array 'rolle_kurzbz' => 'admin', 'berechtigung' => array ( - 'admin', 'assistenz', 'basis/addon', 'basis/ampel', 'basis/ampeluebersicht', 'basis/benutzer', 'basis/berechtigung', 'basis/betriebsmittel', 'basis/cms', 'basis/cms_review', 'basis/cms_sperrfreigabe', 'basis/cronjob', 'basis/dms', 'basis/fas', 'basis/ferien', 'basis/fhausweis','basis/firma', 'basis/infoscreen', 'basis/moodle', 'basis/moodle','basis/news', 'basis/notiz', 'basis/organisationseinheit', 'basis/ort', 'basis/orgform', 'basis/person', 'basis/planner', 'basis/service', 'basis/statistik', 'basis/studiengang', 'basis/tempus', 'basis/testtool', 'basis/variable', 'basis/vilesci', 'buchung/typen', 'buchung/mitarbeiter', 'inout/incoming', 'inout/outgoing', 'inout/uebersicht', 'lehre', 'lehre/abgabetool', 'lehre/freifach', 'lehre/lehrfach', 'lehre/lehrveranstaltung', 'lehre/lvplan', 'lehre/lvinfo', 'lehre/pruefungsanmeldungAdmin', 'lehre/pruefungsbeurteilung', 'lehre/pruefungsbeurteilungAdmin', 'lehre/pruefungsterminAdmin', 'lehre/pruefungsfenster', 'lehre/reihungstest', 'lehre/reservierung', 'lehre/studienordnung', 'lehre/studienordnungInaktiv', 'lehre/studienplan', 'lehre/vorrueckung', 'lv-plan', 'lv-plan/gruppenentfernen', 'lv-plan/lektorentfernen', 'mitarbeiter', 'mitarbeiter/bankdaten', 'mitarbeiter/personalnummer', 'mitarbeiter/stammdaten', 'mitarbeiter/urlaube', 'mitarbeiter/zeitsperre', 'news', 'planner', 'preinteressent', 'raumres', 'reihungstest', 'sdTools', 'soap/lv', 'soap/lvplan', 'soap/mitarbeiter', 'soap/ort', 'soap/pruefungsfenster', 'soap/student', 'soap/studienordnung', 'soap/benutzer', 'soap/buchungen', 'student/bankdaten', 'student/anrechnung', 'student/anwesenheit', 'student/dokumente', 'student/noten', 'system/phrase', 'system/vorlage', 'system/vorlagestudiengang', 'student/stammdaten', 'student/vorrueckung', 'system/developer', 'system/loginasuser', 'user', 'veranstaltung', 'vertrag/mitarbeiter', 'vertrag/typen', 'wawi/berichte', 'wawi/bestellung', 'wawi/bestellung_advanced', 'wawi/budget', 'wawi/delete_advanced', 'wawi/firma', 'wawi/freigabe', 'wawi/freigabe_advanced', 'wawi/inventar', 'wawi/konto', 'wawi/kostenstelle', 'wawi/rechnung', 'wawi/rechnung_freigeben', 'wawi/rechnung_transfer', 'wawi/storno' + 'admin', 'assistenz', 'basis/addon', 'basis/ampel', 'basis/ampeluebersicht', 'basis/benutzer', 'basis/berechtigung', 'basis/betriebsmittel', 'basis/cms', 'basis/cms_review', 'basis/cms_sperrfreigabe', 'basis/cronjob', 'basis/dms', 'basis/fas', 'basis/ferien', 'basis/fhausweis','basis/firma', 'basis/infoscreen', 'basis/moodle', 'basis/moodle','basis/news', 'basis/notiz', 'basis/organisationseinheit', 'basis/ort', 'basis/orgform', 'basis/person', 'basis/planner', 'basis/service', 'basis/statistik', 'basis/studiengang', 'basis/tempus', 'basis/testtool', 'basis/variable', 'basis/vilesci', 'buchung/typen', 'buchung/mitarbeiter', 'inout/incoming', 'inout/outgoing', 'inout/uebersicht', 'lehre', 'lehre/abgabetool', 'lehre/freifach', 'lehre/lehrfach', 'lehre/lehrveranstaltung', 'lehre/lvplan', 'lehre/lvinfo', 'lehre/pruefungsanmeldungAdmin', 'lehre/pruefungsbeurteilung', 'lehre/pruefungsbeurteilungAdmin', 'lehre/pruefungsterminAdmin', 'lehre/pruefungsfenster', 'lehre/reihungstest', 'lehre/reservierung', 'lehre/studienordnung', 'lehre/studienordnungInaktiv', 'lehre/studienplan', 'lehre/vorrueckung', 'lv-plan', 'lv-plan/gruppenentfernen', 'lv-plan/lektorentfernen', 'mitarbeiter', 'mitarbeiter/bankdaten', 'mitarbeiter/personalnummer', 'mitarbeiter/stammdaten', 'mitarbeiter/urlaube', 'mitarbeiter/zeitsperre', 'mitarbeiter/zeitwuensche', 'news', 'planner', 'preinteressent', 'raumres', 'reihungstest', 'sdTools', 'soap/lv', 'soap/lvplan', 'soap/mitarbeiter', 'soap/ort', 'soap/pruefungsfenster', 'soap/student', 'soap/studienordnung', 'soap/benutzer', 'soap/buchungen', 'student/bankdaten', 'student/anrechnung', 'student/anwesenheit', 'student/dokumente', 'student/noten', 'system/phrase', 'system/vorlage', 'system/vorlagestudiengang', 'student/stammdaten', 'student/vorrueckung', 'system/developer', 'system/loginasuser', 'user', 'veranstaltung', 'vertrag/mitarbeiter', 'vertrag/typen', 'wawi/berichte', 'wawi/bestellung', 'wawi/bestellung_advanced', 'wawi/budget', 'wawi/delete_advanced', 'wawi/firma', 'wawi/freigabe', 'wawi/freigabe_advanced', 'wawi/inventar', 'wawi/konto', 'wawi/kostenstelle', 'wawi/rechnung', 'wawi/rechnung_freigeben', 'wawi/rechnung_transfer', 'wawi/storno' ) ) ); diff --git a/system/checksystem.php b/system/checksystem.php index 3253dd5d4..5f03a55ef 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -171,6 +171,7 @@ $berechtigungen = array( array('mitarbeiter/stammdaten','Stammdaten der Mitarbeiter'), array('mitarbeiter/urlaube','Mit diesem Recht werden im CIS die Urlaube von allen Mitarbeiter sichtbar'), array('mitarbeiter/zeitsperre','Zeitsperren- und Urlaubsverwaltung'), + array('mitarbeiter/zeitwuensche','Berechtigung um Zeitwünsche zu editieren'), array('news','News eintragen'), array('planner','Planner Verwaltung'), array('preinteressent','Verwaltung der Preinteressenten'), diff --git a/vilesci/personen/lektor_uebersicht.php b/vilesci/personen/lektor_uebersicht.php index 0a1f9b1cc..f96bbac27 100644 --- a/vilesci/personen/lektor_uebersicht.php +++ b/vilesci/personen/lektor_uebersicht.php @@ -106,7 +106,8 @@ if(!isset($_GET['searchstr'])) $email=$row->uid.'@'.DOMAIN; echo "$email"; - echo "Edit"; + if($rechte->isBerechtigt('student/stammdaten', null, 's') || $rechte->isBerechtigt('mitarbeiter/stammdaten', null, 's')) + echo "Edit"; echo ""; if ($row->lektor) { diff --git a/vilesci/personen/zeitwunsch.php b/vilesci/personen/zeitwunsch.php index 36f1c5e87..b5f88f97f 100644 --- a/vilesci/personen/zeitwunsch.php +++ b/vilesci/personen/zeitwunsch.php @@ -157,7 +157,13 @@ $updatevon = 0; ?> isBerechtigt('mitarbeiter/zeitwuensche', null, 'suid')) + $readonly = ''; + + for ($j=1; $j<7; $j++) { echo ''.$tagbez[1][$j].''; for ($i=0;$i<$num_rows_stunde;$i++) @@ -166,7 +172,7 @@ $updatevon = 0; if ($index=="") $index=1; $bgcolor=$cfgStdBgcolor[$index+3]; - echo ''; + echo ''; } echo ''; } @@ -189,7 +195,10 @@ $updatevon = 0;

- + isBerechtigt('mitarbeiter/zeitwuensche', null, 'suid')) + echo '' + ?>

From e33eb2e9a9eba33b97758f03c53bb5f8849585e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 9 Mar 2021 13:23:56 +0100 Subject: [PATCH 38/97] =?UTF-8?q?Zeitraumabfragen=20f=C3=BCr=20Projektphas?= =?UTF-8?q?en=20korrigiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/tools/zeitaufzeichnung.php | 24 +- .../tools/zeitaufzeichnung_projektphasen.php | 12 +- include/projektphase.class.php | 232 ++++++++---------- 3 files changed, 129 insertions(+), 139 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 2a534dbea..83ae23fc3 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -543,7 +543,13 @@ echo ' var projphasenhtml = ""; for (var i = 0; i < json.length; i++) { - projphasenhtml += "