From 23aeba4620800698b924b2bd6e7e8289d2c489a3 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Fri, 6 Oct 2023 12:30:14 +0200 Subject: [PATCH] Verwendung von datetime-funktionen anstelle von strtotime, Adaptierung config-eintrag, update Phrasen --- cis/private/profile/zeitsperre_resturlaub.php | 32 +++++++------------ config/cis.config-default.inc.php | 3 -- config/global.config-default.inc.php | 3 ++ config/vilesci.config-default.inc.php | 3 -- locale/de-AT/zeitsperre.php | 2 +- locale/en-US/zeitsperre.php | 2 +- vilesci/personen/urlaubsverwaltung.php | 19 +++++------ 7 files changed, 25 insertions(+), 39 deletions(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index bf81562a9..ffd179401 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -79,13 +79,11 @@ else if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GE else $gesperrt_bis = '2015-08-31'; -//MaxDatum für BisFeld berechnen: Default 730 Tage (2 Jahre), über Config veränderbar -$maxPeriodeBisDatum = '+730 days'; -$diffTageMax = 730; +//Default-Wert für Max-Intervall in Tagen für Zeitsperre, über Config veränderbar +$maxDauerZS = 730; -if (defined('MAXTIME_FROM_ENDEDATUM') && MAXTIME_FROM_ENDEDATUM != '') { - $maxPeriodeBisDatum = MAXTIME_FROM_ENDEDATUM[0]; - $diffTageMax = MAXTIME_FROM_ENDEDATUM[1]; +if (defined('CIS_ZEITSPERREN_MAX_DAUER') && CIS_ZEITSPERREN_MAX_DAUER != '') { + $maxDauerZS = CIS_ZEITSPERREN_MAX_DAUER; } //Stundentabelleholen @@ -258,13 +256,14 @@ function checkdatum() diffTime = bisDatumDate.getTime() - vonDatumDate.getTime(); diff = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); - diffmax = $("#maxdiff").val(); + diffmax = 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 && diff < diffmax) { + } + else if (diff > 14 && diff < diffmax) { Check = confirm('t('zeitaufzeichnung/zeitraumAuffallendHoch');?>'); document.getElementById('bisdatum').focus(); if (Check == false) @@ -276,7 +275,6 @@ function checkdatum() document.getElementById('bisdatum').focus(); return false; } - return true; } @@ -478,20 +476,15 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ $error_msg .= $p->t('zeitsperre/vonDatumGroesserAlsBisDatum').'! '; } - //check if bis-Datum > MaxDatum + //check if bis-Datum zu weit in der Zukunft $bis = new DateTime($bisdatum); + $von = new DateTime($vondatum); -/* $todayDate = new DateTime(); - $today = strtotime($todayDate->format('Y-m-d'));*/ - - $vonDate = new DateTime($vondatum); - $von = strtotime($vonDate->format('Y-m-d')); - $maxBisDatum = strtotime($maxPeriodeBisDatum, $von); - - if (strtotime($bis->format('Y-m-d')) > $maxBisDatum) + $intervall = $bis->diff($von); + if ($intervall->days >= $maxDauerZS) { $error=true; - $error_msg .= $p->t('zeitsperre/bisDatumGroesserMax',date('d.m.Y', $maxBisDatum)).' '; + $error_msg = $p->t('zeitsperre/bisDatumGroesserMax'); } //von-datum pruefen TODO @@ -1013,7 +1006,6 @@ echo ""; echo $content_form; echo ''; echo ""; -echo ""; echo ''; echo $content_table; echo ''; diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php index a9a5f5a18..346af8801 100644 --- a/config/cis.config-default.inc.php +++ b/config/cis.config-default.inc.php @@ -294,7 +294,4 @@ define ('DEFAULT_ALLIN_DIENSTVERTRAG',[111]); //Echter Dienstvertrag define ('DEFAULT_ECHTER_DIENSTVERTRAG',[103,111]); -//Max-Ende-Datum für Zeitsperren (Parameter 1: Intervall serverside, Parameter 2: Tage clientside) -define('MAXTIME_FROM_ENDEDATUM', ['+2 years', 730]); - ?> diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index 8990bbd81..c4da2f6e3 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -47,6 +47,9 @@ define('CIS_PROFIL_STUDIENINFORMATION_ANZEIGEN',true); // Zeitaufzeichnung gesperrt_bis Datum YYYY-MM-DD define('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS',''); +// maximale Dauer einer Zeitsperre in Tagen +define('CIS_ZEITSPERREN_MAX_DAUER', 730); + // Anzeige des Links zur Noteneingabe in der LVA Uebersicht define('CIS_LVALISTE_NOTENEINGABE_ANZEIGEN',true); diff --git a/config/vilesci.config-default.inc.php b/config/vilesci.config-default.inc.php index 2c56ed6e3..fdd971be0 100644 --- a/config/vilesci.config-default.inc.php +++ b/config/vilesci.config-default.inc.php @@ -289,7 +289,4 @@ define ('DEFAULT_LEHRMODUS','regulaer'); //Echter Dienstvertrag define ('DEFAULT_ECHTER_DIENSTVERTRAG',[103,110]); -//Max-Ende-Datum für Zeitsperren (Parameter 1: Intervall serverside, Parameter 2: Tage clientside) -define('MAXTIME_FROM_ENDEDATUM', ['+2 years', 730]); - ?> diff --git a/locale/de-AT/zeitsperre.php b/locale/de-AT/zeitsperre.php index c3acd00d0..413cd5be5 100644 --- a/locale/de-AT/zeitsperre.php +++ b/locale/de-AT/zeitsperre.php @@ -26,7 +26,7 @@ $this->phrasen['zeitsperre/vonDatumMonat']='Von-Datum Monat'; $this->phrasen['zeitsperre/bisDatumMonat']='Bis-Datum Monat'; $this->phrasen['zeitsperre/istGroesserAlsBisDatum']='ist größer als das Bis-Datum'; $this->phrasen['zeitsperre/vonDatum']='Von-Datum'; -$this->phrasen['zeitsperre/bisDatumGroesserMax']='Datumswert liegt zu weit in der Zukunft, nicht zulässig!'; +$this->phrasen['zeitsperre/bisDatumGroesserMax']='BisDatum liegt zu weit in der Zukunft, nicht zulässig!'; $this->phrasen['zeitsperre/resturlaubstage']='Resturlaubstage'; $this->phrasen['zeitsperre/aktuellerStand']='aktueller Stand'; diff --git a/locale/en-US/zeitsperre.php b/locale/en-US/zeitsperre.php index 5f54250b8..31cdef6f8 100644 --- a/locale/en-US/zeitsperre.php +++ b/locale/en-US/zeitsperre.php @@ -26,7 +26,7 @@ $this->phrasen['zeitsperre/vonDatumMonat']='From-date month'; $this->phrasen['zeitsperre/bisDatumMonat']='To-date month'; $this->phrasen['zeitsperre/istGroesserAlsBisDatum']='is later than To-date'; $this->phrasen['zeitsperre/vonDatum']='From-date'; -$this->phrasen['zeitsperre/bisDatumGroesserMax']='Date value is too far in the future, action not permitted'; +$this->phrasen['zeitsperre/bisDatumGroesserMax']='TO-Date value is too far in the future, action not permitted'; $this->phrasen['zeitsperre/resturlaubstage']='Carry-over days'; $this->phrasen['zeitsperre/aktuellerStand']='Available vacation'; diff --git a/vilesci/personen/urlaubsverwaltung.php b/vilesci/personen/urlaubsverwaltung.php index 6aa901aab..20b2d293c 100644 --- a/vilesci/personen/urlaubsverwaltung.php +++ b/vilesci/personen/urlaubsverwaltung.php @@ -68,13 +68,12 @@ $mlAbgeschickt = ''; $sprache = getSprache(); $p = new phrasen($sprache); -//MaxDatum für BisFeld berechnen: Default 2 Jahre, über Config veränderbar -$maxPeriodeBisDatum = '+2 years'; +//Default-Wert für Max-Intervall in Tagen für Zeitsperre, über Config veränderbar +$maxDauerZS = 730; -if (defined('MAXTIME_FROM_ENDEDATUM') && MAXTIME_FROM_ENDEDATUM != '') { - $maxPeriodeBisDatum = MAXTIME_FROM_ENDEDATUM[0]; +if (defined('CIS_ZEITSPERREN_MAX_DAUER') && CIS_ZEITSPERREN_MAX_DAUER != '') { + $maxDauerZS = CIS_ZEITSPERREN_MAX_DAUER; } - //prüfen, ob addon casetime aktiviert ist $addon_obj = new addon(); $addoncasetime = $addon_obj->checkActiveAddon("casetime"); @@ -224,17 +223,15 @@ if(isset($_POST['save'])) $error=true; } - //check if bis-Datum > MaxDatum + //Check if Bisdatum zu weit in der Zukunft $von = new DateTime($vondatum); $bis = new DateTime($bisdatum); - $vonTime = strtotime($von->format('Y-m-d')); - $maxBisDatum = strtotime($maxPeriodeBisDatum, $vonTime); - $maxBisDatumDate = new DateTime($maxPeriodeBisDatum); - if (strtotime($bis->format('Y-m-d')) > $maxBisDatum) + $intervall = $bis->diff($von); + if ($intervall->days > $maxDauerZS) { $error=true; - $errormsg = $p->t('zeitsperre/bisDatumGroesserMax',date('d.m.Y', $maxBisDatum)).' '; + $errormsg = $p->t('zeitsperre/bisDatumGroesserMax'); } //Speichern der Daten