Hi,
in meinem 3 Jahre alten Script habe ich heute noch einen Fehler gefunden weil die Zeit heute umgestellt wurde und ich Morgen einen Termin habe. Bei ganztägigen Terminen lege ich die Startzeit 2 Stunden vor und die Endzeit 2 Stunden zurück damit der Termin auch bei Zeitumstellung im Tag liegt.
Hier mal meine aktuelle Version:
<?php
//error_reporting(E_ERROR | E_PARSE | E_NOTICE);
ICCR_UpdateCalendar(14290);
$calendar = ICCR_GetCachedCalendar(14290);
$calendar_array = json_decode($calendar, true);
$heute = mktime(0, 0, 0, date("m") , date("d") + 0, date("Y"));
$heute_flag = true;
$morgen = $heute + 86400;
$morgen_flag = true;
$uebermorgen = $morgen + 86400;
$uebermorgen_flag = true;
$ende = $uebermorgen + 86400;
$text = "";
SetValue(10677, false);
foreach ($calendar_array as $entry) {
if ($entry["Status"] == 'CANCELLED') continue;
if ($entry["allDay"] == false){
$stunde = date('G', $entry["From"]);
$minute = date('i', $entry["From"]);
if ($minute < 10) $minute = "";
$zeit = $stunde." Uhr ".$minute . " ";
}
else{
$entry["From"] = mktime(0, 0, 0, date("m", $entry["From"]) , date("d", $entry["From"]), date("Y", $entry["From"]));
$entry["To"] = mktime(0, 0, 0, date("m", $entry["To"]) , date("d", $entry["To"]), date("Y", $entry["To"]));
$entry["From"] += 7200;
$entry["To"] -= 7200;
}
if (($entry["From"] >= $heute) && ($entry["To"] < $morgen)){
$pos = strpos($entry["Name"], "Geburtstag", 0);
if ($pos === false) {
if (($entry["allDay"]) && (date('G') < 13)){
if ($heute_flag){
$text .= "Heute ".PHP_EOL;
$heute_flag = false;
}
if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
$text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL;
}
else{
$text .= $entry["Name"] ." ".PHP_EOL;
}
if (strpos($entry["Name"], "Urlaub") !== false) SetValue(10677, true);
}
else if (time() < ($entry["From"] + 1800)){
if ($heute_flag){
$text .= "Heute ".PHP_EOL;
$heute_flag = false;
}
$text .= "um ".$zeit;
if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
$text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL;
}
else{
$text .= $entry["Name"] ." ".PHP_EOL;
}
}
}
}
else if (($entry["From"] <= $heute) && ($entry["To"] >= $morgen)){
if ($heute_flag){
$text .= "Heute ".PHP_EOL;
$heute_flag = false;
}
if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
$text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL;
}
else{
$text .= $entry["Name"] ." ".PHP_EOL;
}
if (strpos($entry["Name"], "Urlaub") !== false) SetValue(10677, true);
}
if ($entry["From"] > $ende){
break;
}
}
foreach ($calendar_array as $entry) {
if ($entry["Status"] == 'CANCELLED') continue;
if ($entry["allDay"] == false){
$stunde = date('G', $entry["From"]);
$minute = date('i', $entry["From"]);
if ($minute < 10) $minute = "";
$zeit = $stunde." Uhr ".$minute . " ";
}
else{
$entry["From"] = mktime(0, 0, 0, date("m", $entry["From"]) , date("d", $entry["From"]), date("Y", $entry["From"]));
$entry["To"] = mktime(0, 0, 0, date("m", $entry["To"]) , date("d", $entry["To"]), date("Y", $entry["To"]));
$entry["From"] += 7200;
$entry["To"] -= 7200;
}
if (($entry["From"] >= $morgen) && ($entry["To"] < $uebermorgen)){
$pos = strpos($entry["Name"], "Geburtstag", 0);
if ($pos === false) {
if ($entry["allDay"]){
if ($morgen_flag){
$text .= "Morgen ".PHP_EOL;
$morgen_flag = false;
}
if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
$text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL;
}
else{
$text .= $entry["Name"] ." ".PHP_EOL;
}
}
else if (time() < $entry["To"]){
if ($morgen_flag){
$text .= "Morgen ".PHP_EOL;
$morgen_flag = false;
}
$text .= "um ".$zeit;
if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
$text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL;
}
else{
$text .= $entry["Name"] ." ".PHP_EOL;
}
}
}
}
else if (($entry["From"] <= $morgen) && ($entry["To"] >= $uebermorgen)){
if ($morgen_flag){
$text .= "Morgen ".PHP_EOL;
$morgen_flag = false;
}
if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
$text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL;
}
else{
$text .= $entry["Name"] ." ".PHP_EOL;
}
}
if ($entry["From"] > $ende){
break;
}
}
foreach ($calendar_array as $entry) {
if ($entry["Status"] == 'CANCELLED') continue;
if ($entry["allDay"] == false){
$stunde = date('G', $entry["From"]);
$minute = date('i', $entry["From"]);
if ($minute < 10) $minute = "";
$zeit = $stunde." Uhr ".$minute . " ";
}
else{
$entry["From"] += 7200;
$entry["To"] -= 7200;
$entry["From"] = mktime(0, 0, 0, date("m", $entry["From"]) , date("d", $entry["From"]), date("Y", $entry["From"]));
$entry["To"] = mktime(0, 0, 0, date("m", $entry["To"]) , date("d", $entry["To"]), date("Y", $entry["To"]));
}
if (($entry["From"] >= $uebermorgen) && ($entry["To"] < $ende)){
$pos = strpos($entry["Name"], "Geburtstag", 0);
if ($pos === false) {
if ($entry["allDay"]){
if ($uebermorgen_flag){
$text .= "Übermorgen ".PHP_EOL;
$uebermorgen_flag = false;
}
if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
$text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL;
}
else{
$text .= $entry["Name"] ." ".PHP_EOL;
}
}
else if (time() < $entry["To"]){
if ($uebermorgen_flag){
$text .= "Übermorgen ".PHP_EOL;
$uebermorgen_flag = false;
}
$text .= "um ".$zeit;
if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
$text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL;
}
else{
$text .= $entry["Name"] ." ".PHP_EOL;
}
}
}
}
else if (($entry["From"] <= $uebermorgen) && ($entry["To"] >= $ende)){
if ($uebermorgen_flag){
$text .= "Übermorgen ".PHP_EOL;
$uebermorgen_flag = false;
}
if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
$text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL;
}
else{
$text .= $entry["Name"] ." ".PHP_EOL;
}
}
if ($entry["From"] > $ende){
break;
}
}
//if (strlen($text) < 2) $text = "Ralf Du hast Heute zum Glück keine Termine";
//print PHP_EOL.PHP_EOL.$text;
$html_text = '';
$html_text = str_replace(PHP_EOL, '<br>', $text);
$html_text = str_replace('Heute', '<strong>Heute</strong>', $html_text);
$html_text = str_replace('Morgen', '<strong>Morgen</strong>', $html_text);
$html_text = str_replace('Übermorgen', '<strong>Übermorgen</strong>', $html_text);
$text = str_replace('Morgen', '<break time="1s"/>' . 'Morgen', $text);
$text = str_replace('Übermorgen', '<break time="1s"/>' . 'Übermorgen', $text);
SetValue(27911, $text);
//SetValue(13874, '<p style="font-size: 1em;background-color:black;color:white;line-height:1.5em">'.$html_text.'</p>');
SetValue(13874, '<p style="font-size: 0.5em;color:white;line-height:1em">'.$html_text.'</p>');
?>
Falls ihr ein ähnliches oder abgewandeltes Script schon benutzt sucht nach ganztägigen Terminen und fügt bei den Zeiten ein
$entry["From"] += 7200;
$entry["To"] -= 7200;
hinzu-
Ralf