Erweiterung Prüfung auf vorhandene Zeitsperren: ganzes Intervall statt ausschließlich vonTag

This commit is contained in:
ma0068
2023-01-09 14:34:15 +01:00
parent 2ef3d696e6
commit a631fdfeb1
2 changed files with 42 additions and 8 deletions
+17 -8
View File
@@ -382,19 +382,28 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
$von = $_POST['vondatum'];
$von2 = new DateTime($von);
$von2 = $von2->format('Y-m-d');
$bis = $_POST['bisdatum'];
$bis2= new DateTime($bis);
$bis2 = $bis2->format('Y-m-d');
$zeitsperre = new zeitsperre();
$zsInterval = $zeitsperre->getDatesFromRange($von2, $bis2);
if ($zeitsperre->getSperreByDate($uid, $von2, null, zeitsperre::NUR_BLOCKIERENDE_ZEITSPERREN))
foreach ($zsInterval as $day)
{
foreach ($zeitsperre->result as $z)
if ($zeitsperre->getSperreByDate($uid, $day, null, zeitsperre::NUR_BLOCKIERENDE_ZEITSPERREN))
{
// Beim editieren nicht mit dem eigenen Eintrag kollidieren
if($_GET['type'] == 'edit_sperre' && $z->zeitsperre_id == $_GET['id'])
continue;
foreach ($zeitsperre->result as $z)
{
// Beim editieren nicht mit dem eigenen Eintrag kollidieren
if($_GET['type'] == 'edit_sperre' && $z->zeitsperre_id == $_GET['id'])
continue;
$typ = $z->zeitsperretyp_kurzbz;
$error = true;
$error_msg .= $p->t('zeitsperre/zeitsperreEingetragen', [$von, $typ]);
$typ = $z->zeitsperretyp_kurzbz;
$date = new DateTime($day);
$date = $date->format('d.m.Y');
$error = true;
$error_msg .= $p->t('zeitsperre/zeitsperreEingetragen', [$date, $typ]).'<br>';
}
}
}
}
+25
View File
@@ -642,5 +642,30 @@ class zeitsperre extends basis_db
return true;
}
}
/**
* liefert alle Tage eines Zeitintervalls
*
* @param $startDate Startdatum im Format Y-m-d
* @param $endDate Endedatum im Format Y-m-d
* @return $dateArray
*/
public function getDatesFromRange($startDate, $endDate)
{
$dateArray = array();
$interval = new DateInterval('P1D');
$realEnd = new DateTime($endDate);
$realEnd->add($interval);
$period = new DatePeriod(new DateTime($startDate), $interval, $realEnd);
foreach($period as $date)
{
$dateArray[] = $date->format('Y-m-d');
}
return $dateArray;
}
}
?>