From 9b11b19cf9a4d4bf2e16a92141768e1c25ebec18 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Fri, 22 Sep 2023 13:33:54 +0200 Subject: [PATCH 1/9] Zeitsperre: Maxwert bei Bisdatum --- cis/private/profile/zeitsperre_resturlaub.php | 106 +++++++++++------- config/cis.config-default.inc.php | 2 + locale/de-AT/zeitsperre.php | 1 + locale/en-US/zeitsperre.php | 1 + 4 files changed, 69 insertions(+), 41 deletions(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index 46d342971..7f13e0da4 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -79,7 +79,21 @@ else if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GE else $gesperrt_bis = '2015-08-31'; -//echo $gesperrt_bis; +$todayDate = new DateTime(); +$today = strtotime($todayDate->format('Y-m-d')); + +//MaxDatum für BisFeld berechnen: Default 2 Jahre, über Config veränderbar +$maxPeriodeBisDatum = '+2 years'; + +if (defined('CIS_MAXTIME_ENDEDATUM') && CIS_MAXTIME_ENDEDATUM != '') { + $maxPeriodeBisDatum = CIS_MAXTIME_ENDEDATUM; +} +$maxBisDatum = strtotime($maxPeriodeBisDatum, $today); + +$maxBisDatumDate = new DateTime($maxBisDatum); +$maxInterval = $todayDate->diff($maxBisDatumDate); +$diffTageMax = $maxInterval->days; +echo ""; //Stundentabelleholen if(! $result_stunde=$db->db_query("SELECT * FROM lehre.tbl_stunde ORDER BY stunde")) @@ -96,7 +110,7 @@ $num_rows_stunde=$db->db_num_rows($result_stunde); - + @@ -204,65 +218,65 @@ function berechnen() function checkdatum() { - if(document.getElementById('vondatum').value.length<10) + if (document.getElementById('vondatum').value.length < 10) { alert('t('zeitsperre/vonDatumIstUngueltigNullenAngeben');?>'); return false; } - if(document.getElementById('bisdatum').value.length<10) + if (document.getElementById('bisdatum').value.length < 10) { alert('t('zeitsperre/bisDatumIstUngueltigNullenAngeben');?>'); return false; } - var Datum, Tag, Monat,Jahr,vonDatum,bisDatum, diff; + var Datum, Tag, Monat, Jahr, vonDatum, bisDatum, diff, diffmax; - Datum=document.getElementById('vondatum').value; - Tag=Datum.substring(0,2); - Monat=Datum.substring(3,5); - if (parseInt(Monat,10)<1 || parseInt(Monat,10)>12) - { - alert('t('zeitsperre/vonDatumMonat');?>'+ document.getElementById('vondatum').value+ ' t('zeitsperre/istNichtRichtig');?>.'); + Datum = document.getElementById('vondatum').value; + Tag = Datum.substring(0, 2); + Monat = Datum.substring(3, 5); + if (parseInt(Monat, 10) < 1 || parseInt(Monat, 10) > 12) + { + alert('t('zeitsperre/vonDatumMonat');?>' + document.getElementById('vondatum').value + ' t('zeitsperre/istNichtRichtig');?>.'); document.getElementById('vondatum').focus(); - return false; - } + return false; + } - Jahr=Datum.substring(6,10); + Jahr = Datum.substring(6, 10); - vonDatum=Jahr+''+Monat+''+Tag; + vonDatum = Jahr + '' + Monat + '' + Tag; - Datum=document.getElementById('bisdatum').value; - Tag=Datum.substring(0,2); - Monat=Datum.substring(3,5); - if (parseInt(Monat,10)<1 || parseInt(Monat,10)>12) - { - alert('t('zeitsperre/bisDatumMonat');?>'+ document.getElementById('bisdatum').value+ ' t('zeitsperre/istNichtRichtig');?>.'); + Datum = document.getElementById('bisdatum').value; + Tag = Datum.substring(0, 2); + Monat = Datum.substring(3, 5); + if (parseInt(Monat, 10) < 1 || parseInt(Monat, 10) > 12) { + alert('t('zeitsperre/bisDatumMonat');?>' + document.getElementById('bisdatum').value + ' t('zeitsperre/istNichtRichtig');?>.'); document.getElementById('bisdatum').focus(); - return false; - } + return false; + } - Jahr=Datum.substring(6,10); + Jahr = Datum.substring(6, 10); + bisDatum = Jahr + '' + Monat + '' + Tag; - bisDatum=Jahr+''+Monat+''+Tag; + diff = bisDatum - vonDatum; + diffmax = $("#maxdiff").val(); - diff=bisDatum-vonDatum; - - if (vonDatum>bisDatum) - { - alert('t('zeitsperre/vonDatum');?> '+ document.getElementById('vondatum').value+ ' t('zeitsperre/istGroesserAlsBisDatum');?> '+document.getElementById('bisdatum').value); + 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');?>'); + return false; + } else if (diff > 14 && diff < diffmax) { + Check = confirm('t('zeitaufzeichnung/zeitraumAuffallendHoch');?>'); document.getElementById('bisdatum').focus(); - if (Check == false) - return false; - else - return true; - } + if (Check == false) + return false; + else + return true; + } else if (diff >= diffmax){ + alert('t('zeitsperre/bisDatumGroesserMax');?> '); + document.getElementById('bisdatum').focus(); + return false; + } return true; } @@ -445,7 +459,8 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ $date=explode('.',$_POST['bisdatum']); if (@checkdate($date[1], $date[0], $date[2])) { - $bisdatum=$date[2].$date[1].$date[0]; + $bisdatum=$date[2].$date[1].$date[0]; + $bisdatum_iso = $date[2].'-'.$date[1].'-'.$date[0]; } else { @@ -464,6 +479,15 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ $error_msg .= $p->t('zeitsperre/vonDatumGroesserAlsBisDatum').'! '; } + //check if bis-Datum > MaxDatum + $bis = new DateTime($bisdatum); + + if (strtotime($bis->format('Y-m-d')) > $maxBisDatum) + { + $error=true; + $error_msg .= $p->t('zeitsperre/bisDatumGroesserMax',date('d.m.Y', $maxBisDatum)).' '; + } + //von-datum pruefen TODO if($vondatum_iso < $gesperrt_bis && in_array($_POST['zeitsperretyp_kurzbz'],$typen_arr)) { diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php index 27e0a9a70..a2d61dbcb 100644 --- a/config/cis.config-default.inc.php +++ b/config/cis.config-default.inc.php @@ -294,5 +294,7 @@ define ('DEFAULT_ALLIN_DIENSTVERTRAG',[111]); //Echter Dienstvertrag define ('DEFAULT_ECHTER_DIENSTVERTRAG',[103,111]); +//Max-Ende-Datum für Zeitsperren (Aktuelles Datum + angegebenes Intervall +define('CIS_MAXTIME_ENDEDATUM', '+2 years'); ?> diff --git a/locale/de-AT/zeitsperre.php b/locale/de-AT/zeitsperre.php index 463c092cf..c3acd00d0 100644 --- a/locale/de-AT/zeitsperre.php +++ b/locale/de-AT/zeitsperre.php @@ -26,6 +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/resturlaubstage']='Resturlaubstage'; $this->phrasen['zeitsperre/aktuellerStand']='aktueller Stand'; diff --git a/locale/en-US/zeitsperre.php b/locale/en-US/zeitsperre.php index 44123529f..5f54250b8 100644 --- a/locale/en-US/zeitsperre.php +++ b/locale/en-US/zeitsperre.php @@ -26,6 +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/resturlaubstage']='Carry-over days'; $this->phrasen['zeitsperre/aktuellerStand']='Available vacation'; From 9eeeeca62cc261b54e38c4275aa3a861bccd3641 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 25 Sep 2023 09:54:49 +0200 Subject: [PATCH 2/9] Fix format --- cis/private/profile/zeitsperre_resturlaub.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index 7f13e0da4..007ae18f9 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -89,9 +89,9 @@ if (defined('CIS_MAXTIME_ENDEDATUM') && CIS_MAXTIME_ENDEDATUM != '') { $maxPeriodeBisDatum = CIS_MAXTIME_ENDEDATUM; } $maxBisDatum = strtotime($maxPeriodeBisDatum, $today); - -$maxBisDatumDate = new DateTime($maxBisDatum); +$maxBisDatumDate = new DateTime($maxPeriodeBisDatum); $maxInterval = $todayDate->diff($maxBisDatumDate); + $diffTageMax = $maxInterval->days; echo ""; From f71b0e500e9fa43a466d2e39e3c8ee9c28560249 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 25 Sep 2023 14:15:33 +0200 Subject: [PATCH 3/9] Adaptierung Berechnung diff --- cis/private/profile/zeitsperre_resturlaub.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index 007ae18f9..0e9c46cc1 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -230,7 +230,7 @@ function checkdatum() return false; } - var Datum, Tag, Monat, Jahr, vonDatum, bisDatum, diff, diffmax; + var Datum, Tag, Monat, Jahr, vonDatum, bisDatum, vonDatumDate, bisDatumDate, diff, diffTime, diffmax; Datum = document.getElementById('vondatum').value; Tag = Datum.substring(0, 2); @@ -245,6 +245,7 @@ function checkdatum() Jahr = Datum.substring(6, 10); vonDatum = Jahr + '' + Monat + '' + Tag; + vonDatumDate = Jahr + '-' + Monat + '-' + Tag; Datum = document.getElementById('bisdatum').value; Tag = Datum.substring(0, 2); @@ -257,8 +258,13 @@ function checkdatum() Jahr = Datum.substring(6, 10); bisDatum = Jahr + '' + Monat + '' + Tag; + bisDatumDate = Jahr + '-' + Monat + '-' + Tag; - diff = bisDatum - vonDatum; + bisDatumDate = new Date(bisDatumDate); + vonDatumDate = new Date(vonDatumDate); + + diffTime = bisDatumDate.getTime() - vonDatumDate.getTime(); + diff = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); diffmax = $("#maxdiff").val(); if (vonDatum > bisDatum) { From 746ee76a3b30a1d5ea48011ab5ec4ce73deaf545 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 25 Sep 2023 15:11:14 +0200 Subject: [PATCH 4/9] Validierungen Von- und Bis-Felder vilesci --- vilesci/personen/urlaubsverwaltung.php | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/vilesci/personen/urlaubsverwaltung.php b/vilesci/personen/urlaubsverwaltung.php index 274a04b94..be3647732 100644 --- a/vilesci/personen/urlaubsverwaltung.php +++ b/vilesci/personen/urlaubsverwaltung.php @@ -34,6 +34,7 @@ require_once('../../include/datum.class.php'); require_once('../../include/benutzerberechtigung.class.php'); require_once('../../include/addon.class.php'); require_once('../../include/benutzerfunktion.class.php'); +require_once('../../include/phrasen.class.php'); if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); @@ -63,6 +64,17 @@ $message=''; $error=false; $mlAbgeschickt = ''; +//Phrasen +$sprache = getSprache(); +$p = new phrasen($sprache); + +//MaxDatum für BisFeld berechnen: Default 2 Jahre, über Config veränderbar +$maxPeriodeBisDatum = '+2 years'; + +if (defined('MAXTIME_ENDEDATUM') && MAXTIME_ENDEDATUM != '') { + $maxPeriodeBisDatum = MAXTIME_ENDEDATUM; +} + //prüfen, ob addon casetime aktiviert ist $addon_obj = new addon(); $addoncasetime = $addon_obj->checkActiveAddon("casetime"); @@ -205,6 +217,26 @@ if(isset($_POST['save'])) if(!$berechtigt) die('Sie haben keine Berechtigung für diese Aktion'); + //Validierungen Felder Bis-Datum und Von-Datum + if($vondatum > $bisdatum) + { + $errormsg = $p->t('zeitsperre/vonDatumGroesserAlsBisDatum').'! '; + $error=true; + } + + //check if bis-Datum > MaxDatum + $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) + { + $error=true; + $errormsg = $p->t('zeitsperre/bisDatumGroesserMax',date('d.m.Y', $maxBisDatum)).' '; + } + //Speichern der Daten $zeitsperre = new zeitsperre(); @@ -225,6 +257,8 @@ if(isset($_POST['save'])) $zeitsperre->mitarbeiter_uid=$uid; } + + if(!$error) { $zeitsperre->zeitsperretyp_kurzbz=$zeitsperretyp_kurzbz; From b1f3916e49f02fef05893ccf2d355b0926bb4a2e Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 25 Sep 2023 15:33:17 +0200 Subject: [PATCH 5/9] Adaptierung bismax-Validierung --- cis/private/profile/zeitsperre_resturlaub.php | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index 0e9c46cc1..174d341f0 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -79,20 +79,14 @@ else if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GE else $gesperrt_bis = '2015-08-31'; -$todayDate = new DateTime(); -$today = strtotime($todayDate->format('Y-m-d')); - //MaxDatum für BisFeld berechnen: Default 2 Jahre, über Config veränderbar $maxPeriodeBisDatum = '+2 years'; +$diffTageMax = $maxPeriodeBisDatum *365; if (defined('CIS_MAXTIME_ENDEDATUM') && CIS_MAXTIME_ENDEDATUM != '') { $maxPeriodeBisDatum = CIS_MAXTIME_ENDEDATUM; } -$maxBisDatum = strtotime($maxPeriodeBisDatum, $today); -$maxBisDatumDate = new DateTime($maxPeriodeBisDatum); -$maxInterval = $todayDate->diff($maxBisDatumDate); -$diffTageMax = $maxInterval->days; echo ""; //Stundentabelleholen @@ -110,7 +104,7 @@ $num_rows_stunde=$db->db_num_rows($result_stunde); - @@ -488,6 +482,13 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ //check if bis-Datum > MaxDatum $bis = new DateTime($bisdatum); +/* $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) { $error=true; From be3e4e552bc55598e968610f5c4a82a564f917e7 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 25 Sep 2023 15:44:48 +0200 Subject: [PATCH 6/9] Adapt diffTageMax --- cis/private/profile/zeitsperre_resturlaub.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index 174d341f0..861317bfb 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -81,12 +81,11 @@ else //MaxDatum für BisFeld berechnen: Default 2 Jahre, über Config veränderbar $maxPeriodeBisDatum = '+2 years'; -$diffTageMax = $maxPeriodeBisDatum *365; if (defined('CIS_MAXTIME_ENDEDATUM') && CIS_MAXTIME_ENDEDATUM != '') { $maxPeriodeBisDatum = CIS_MAXTIME_ENDEDATUM; } - +$diffTageMax = $maxPeriodeBisDatum *365; echo ""; //Stundentabelleholen From 1809ff30084f8ee3f5ef7e41328122519d65429c Mon Sep 17 00:00:00 2001 From: ma0068 Date: Wed, 27 Sep 2023 08:30:03 +0200 Subject: [PATCH 7/9] accept days, weeks, month and years in config --- cis/private/profile/zeitsperre_resturlaub.php | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index 861317bfb..f85cfcb88 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -79,14 +79,23 @@ else if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GE else $gesperrt_bis = '2015-08-31'; -//MaxDatum für BisFeld berechnen: Default 2 Jahre, über Config veränderbar -$maxPeriodeBisDatum = '+2 years'; +//MaxDatum für BisFeld berechnen: Default 730 Tage (2 Jahre), über Config veränderbar +$maxPeriodeBisDatum = '+730 days'; -if (defined('CIS_MAXTIME_ENDEDATUM') && CIS_MAXTIME_ENDEDATUM != '') { +if (defined('CIS_MAXTIME_ENDEDATUM') && CIS_MAXTIME_ENDEDATUM != '' && CIS_MAXTIME_ENDEDATUM != 0) { $maxPeriodeBisDatum = CIS_MAXTIME_ENDEDATUM; } -$diffTageMax = $maxPeriodeBisDatum *365; -echo ""; + +if (strpos($maxPeriodeBisDatum,'day') != false) + $diffTageMax = $maxPeriodeBisDatum * 1; +elseif (strpos($maxPeriodeBisDatum,'week')!= false) + $diffTageMax = $maxPeriodeBisDatum * 7; +elseif (strpos($maxPeriodeBisDatum,'month')!= false) + $diffTageMax = $maxPeriodeBisDatum * 30; +elseif (strpos($maxPeriodeBisDatum,'year') != false) + $diffTageMax = $maxPeriodeBisDatum * 365; +else + $diffTageMax = 730; //Stundentabelleholen if(! $result_stunde=$db->db_query("SELECT * FROM lehre.tbl_stunde ORDER BY stunde")) @@ -271,7 +280,7 @@ function checkdatum() return false; else return true; - } else if (diff >= diffmax){ + } else if (diff >= diffmax) { alert('t('zeitsperre/bisDatumGroesserMax');?> '); document.getElementById('bisdatum').focus(); return false; @@ -1013,6 +1022,7 @@ echo ""; echo $content_form; echo ''; echo ""; +echo ""; echo ''; echo $content_table; echo ''; From f9af5638f59781496273b2cfe7019f48cae22f09 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Thu, 28 Sep 2023 09:31:40 +0200 Subject: [PATCH 8/9] =?UTF-8?q?Update=20Config:=20Format=20in=20Tagen=20f?= =?UTF-8?q?=C3=BCr=20Validierung=20JS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/profile/zeitsperre_resturlaub.php | 17 ++++------------- config/cis.config-default.inc.php | 4 ++-- config/vilesci.config-default.inc.php | 3 +++ vilesci/personen/urlaubsverwaltung.php | 4 ++-- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index f85cfcb88..bf81562a9 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -81,22 +81,13 @@ else //MaxDatum für BisFeld berechnen: Default 730 Tage (2 Jahre), über Config veränderbar $maxPeriodeBisDatum = '+730 days'; +$diffTageMax = 730; -if (defined('CIS_MAXTIME_ENDEDATUM') && CIS_MAXTIME_ENDEDATUM != '' && CIS_MAXTIME_ENDEDATUM != 0) { - $maxPeriodeBisDatum = CIS_MAXTIME_ENDEDATUM; +if (defined('MAXTIME_FROM_ENDEDATUM') && MAXTIME_FROM_ENDEDATUM != '') { + $maxPeriodeBisDatum = MAXTIME_FROM_ENDEDATUM[0]; + $diffTageMax = MAXTIME_FROM_ENDEDATUM[1]; } -if (strpos($maxPeriodeBisDatum,'day') != false) - $diffTageMax = $maxPeriodeBisDatum * 1; -elseif (strpos($maxPeriodeBisDatum,'week')!= false) - $diffTageMax = $maxPeriodeBisDatum * 7; -elseif (strpos($maxPeriodeBisDatum,'month')!= false) - $diffTageMax = $maxPeriodeBisDatum * 30; -elseif (strpos($maxPeriodeBisDatum,'year') != false) - $diffTageMax = $maxPeriodeBisDatum * 365; -else - $diffTageMax = 730; - //Stundentabelleholen if(! $result_stunde=$db->db_query("SELECT * FROM lehre.tbl_stunde ORDER BY stunde")) die($db->db_last_error()); diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php index a2d61dbcb..a9a5f5a18 100644 --- a/config/cis.config-default.inc.php +++ b/config/cis.config-default.inc.php @@ -294,7 +294,7 @@ define ('DEFAULT_ALLIN_DIENSTVERTRAG',[111]); //Echter Dienstvertrag define ('DEFAULT_ECHTER_DIENSTVERTRAG',[103,111]); -//Max-Ende-Datum für Zeitsperren (Aktuelles Datum + angegebenes Intervall -define('CIS_MAXTIME_ENDEDATUM', '+2 years'); +//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/vilesci.config-default.inc.php b/config/vilesci.config-default.inc.php index fdd971be0..2c56ed6e3 100644 --- a/config/vilesci.config-default.inc.php +++ b/config/vilesci.config-default.inc.php @@ -289,4 +289,7 @@ 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/vilesci/personen/urlaubsverwaltung.php b/vilesci/personen/urlaubsverwaltung.php index be3647732..6aa901aab 100644 --- a/vilesci/personen/urlaubsverwaltung.php +++ b/vilesci/personen/urlaubsverwaltung.php @@ -71,8 +71,8 @@ $p = new phrasen($sprache); //MaxDatum für BisFeld berechnen: Default 2 Jahre, über Config veränderbar $maxPeriodeBisDatum = '+2 years'; -if (defined('MAXTIME_ENDEDATUM') && MAXTIME_ENDEDATUM != '') { - $maxPeriodeBisDatum = MAXTIME_ENDEDATUM; +if (defined('MAXTIME_FROM_ENDEDATUM') && MAXTIME_FROM_ENDEDATUM != '') { + $maxPeriodeBisDatum = MAXTIME_FROM_ENDEDATUM[0]; } //prüfen, ob addon casetime aktiviert ist From 23aeba4620800698b924b2bd6e7e8289d2c489a3 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Fri, 6 Oct 2023 12:30:14 +0200 Subject: [PATCH 9/9] 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