So hab mal schnell die Termin.ips geupdatet. Ist jetzt auf dem aktuellen Stand und zeigt auch Termine für morgen an.![:smiley: :smiley:](https://community.symcon.de/images/emoji/win10/smiley.png?v=9)
Deine Sprachausgabe oder was Du für die einzelnen Terminmodis so machst bitte wieder einfügen.
include(IPS_GetScriptFile("Konstanten"));
//--------------------- Termine für Designer bereinigen -----------------------
$var_integer = array
(
"term_anz1_stunde",
"term_anz1_minute",
"term_anz1_tag",
"term_anz1_monat",
"term_anz2_stunde",
"term_anz2_minute",
"term_anz2_tag",
"term_anz2_monat",
"term_anz3_stunde",
"term_anz3_minute",
"term_anz3_tag",
"term_anz3_monat",
"term_anz4_stunde",
"term_anz4_minute",
"term_anz4_tag",
"term_anz4_monat",
"term_anz5_stunde",
"term_anz5_minute",
"term_anz5_tag",
"term_anz5_monat"
);
foreach($var_integer as $value)
{
SetValueInteger($value, 0);
}
$var_string = array
(
"term_anz1_inhalt",
"term_anz2_inhalt",
"term_anz3_inhalt",
"term_anz4_inhalt",
"term_anz5_inhalt"
);
foreach($var_string as $value)
{
SetValueString($value, "-");
}
$var_bool = array
(
"Term",
"Term_mor",
"Term_mod1_Ansage",
"Term_mod2_Ansage",
"Term_mod3_Ansage",
"Term_mod4_Ansage",
"Term_mod5_Ansage",
"Term_mod6_Ansage"
);
foreach($var_bool as $value)
{
SetValueBoolean($value, false);
}
//------------------------------ Daten holen ----------------------------------
$termfile = file_get_contents(IPS_GetKernelDir()."termine.txt"); //Termine in Variable einlesen
$term_arr_komplett = explode("
", $termfile); // nach Zeilenumbruch trennen und in array
//----------------------------- Termine suchen --------------------------------
$Term_Zahl = 0;
$erg = "";
//alle Termine durchlaufen
foreach($term_arr_komplett as $value)
{
$term_arr = explode(",", $value); // einzelnen Datensatz in Daten zerlegen
$term_mo = (bool)$term_arr[3];
$term_di = (bool)$term_arr[4];
$term_mi = (bool)$term_arr[5];
$term_do = (bool)$term_arr[6];
$term_fr = (bool)$term_arr[7];
$term_sa = (bool)$term_arr[8];
$term_so = (bool)$term_arr[9];
$term_aktiv = (bool)$term_arr[10];
$term_stunde = (int)$term_arr[11];
$term_minute = (int)$term_arr[12];
$term_tag = (int)$term_arr[13];
$term_monat = (int)$term_arr[14];
$term_inhalt = $term_arr[15];
if($term_aktiv) //wenn aktiver Termin gefunden => prüfen
{
//Timestamp von heute
$heute = mktime (0,0,0,date("m"),date("d"),date("y"));
//Timestamp des Termins aus der for Schleife
$termin_dat = mktime (0,0,0, $term_monat, $term_tag ,date("y"));
//schauen ob Termin auf heute($erg = 0) oder morgen fällt ($erg = -1)
$diff = $heute-$termin_dat;
$erg = $diff/((60*60)*24);
//heutigen Tag ermitteln
$tag = (date("w"));
//wiederkehrende Wöchentliche Termine die auf heute fallen prüfen
if ($tag == 0 and $term_so == 1 or $tag == 1 and $term_mo == 1 or
$tag == 2 and $term_di == 1 or $tag == 3 and $term_mi == 1 or
$tag == 4 and $term_do == 1 or $tag == 5 and $term_fr == 1 or
$tag == 6 and $term_sa == 1)
{
$erg = 0;
}
//wiederkehrende Wöchentliche Termine die auf morgen fallen prüfen
if ($tag == 6 and $term_so == 1 or $tag == 0 and $term_mo == 1 or
$tag == 1 and $term_di == 1 or $tag == 2 and $term_mi == 1 or
$tag == 3 and $term_do == 1 or $tag == 4 and $term_fr == 1 or
$tag == 5 and $term_sa == 1)
{
$erg = -1;
}
//------------------ Termine für den Designer Startscreen ----------------
if ($erg == 0 or $erg == -1)
{
SetValueInteger("Term_Zahl", $Term_Zahl+1);
$Term_Zahl = GetValueInteger("Term_Zahl");
SetValueInteger("term_anz".$Term_Zahl."_stunde",$term_stunde);
SetValueInteger("term_anz".$Term_Zahl."_minute",$term_minute);
SetValueInteger("term_anz".$Term_Zahl."_tag",$term_tag);
SetValueInteger("term_anz".$Term_Zahl."_monat",$term_monat);
SetValueString("term_anz".$Term_Zahl."_inhalt",$term_inhalt);
}
//------------------- Termine für die einzelnen Modi vorlesen ------------
$Terminmodus = GetValueInteger("Terminmodus");
//---------------------- jährliche Termine ermitteln ---------------------
if((int)$term_arr[11] != 0) //einmaliger Termin zu einer bestimmten Zeit
{
$jetzt = mktime (date("H"),date("i"),0,date("m"),date("d"),date("y"));
$term_ber = mktime ((int)$term_arr[11],(int)$term_arr[12],0,date("m"),date("d"),date("y"));
}
else //jährlicher Termin
{
$term_ber =0;
$jetzt =0;
}
//--- Terminmodus 1 ---------
if($Terminmodus == 1 and $erg == -1)
{
SetValueBoolean("Term_mod1_Ansage", true);
}
//--- Terminmodus 2 ---------
if($Terminmodus == 2 and $erg == -1)
{
SetValueBoolean("Term_mod2_Ansage", true);
SetValueBoolean("Term_mor", true);
}
//--- Terminmodus 3 ---------
if($Terminmodus == 3 and $erg == 0 and $term_ber >= $jetzt)
{
SetValueBoolean("Term_mod3_Ansage", true);
}
//--- Terminmodus 4 ---------
if ($Terminmodus == 4 and $erg == 0 and $term_ber >= $jetzt)
{
SetValueBoolean("Term_mod4_Ansage", true);
}
//--- Terminmodus 5 ---------
if ($Terminmodus == 5 and $erg == 0 and $term_ber >= $jetzt)
{
SetValueBoolean("Term_mod5_Ansage", true);
SetValueString("Ansagetext_wav_SK2", "Achtung Termin heute".$term_inhalt.",Sprache");
SK2_wait(2); // Laufzeit der Winamp Ausgabe
}
//--- Terminmodus 6 ---------
if ($Terminmodus == 6 and $erg == 0 and $term_ber >= $jetzt)
{
SetValueBoolean("Term_mod6_Ansage", true);
}
}
//---------------------------------------------------------------------------
} // foreach Schleife beenden
//---------------------------- Feiertage --------------------------------------
$feiertag = array
(
"Ostersonntag",
"Ostermontag",
"Karfreitag",
"Christi Himmelfahrt",
"Pfingstsonntag",
"Pfingstmontag",
"Neujahr",
"Tag der Arbeit",
"Tag der deutschen Einheit",
"Reformationstag",
"Heiligabend",
"1. Weihnachtsfeiertag",
"2. Weihnachtsfeiertag",
"Silvester"
);
foreach($feiertag as $value)
{
$feiert = explode(".", TT_Feiertage($value, (int)date("Y"))); // in array (tag.monat.jahr)
//Timestamp von heute
$heute = mktime (0,0,0,date("m"),date("d"),date("y"));
//Timestamp des Feiertages
$termin_dat = mktime (0,0,0,(int)$feiert[1],(int)$feiert[0],date("y"));
//schauen ob Termin auf heute($erg = 0) oder morgen fällt ($erg = -1)
$diff = $heute-$termin_dat;
$erg = $diff/((60*60)*24);
//Feiertag gefunden => hier speichern
if ($erg == 0)
{
SetValueInteger("Term_Zahl", $Term_Zahl+1);
$Term_Zahl = GetValueInteger("Term_Zahl");
SetValueInteger("term_anz".$Term_Zahl."_stunde", 0);
SetValueInteger("term_anz".$Term_Zahl."_minute", 0);
SetValueInteger("term_anz".$Term_Zahl."_tag", (int)date("d"));
SetValueInteger("term_anz".$Term_Zahl."_monat", (int)date("m"));
SetValueString("term_anz".$Term_Zahl."_inhalt",$value);
}
//--------------------- Feiertag für die einzelnen Modi vorlesen ------------
//--- Terminmodus 1 ---------
if($erg == -1 and $Terminmodus == 1)
{
SetValueBoolean("Term_mod1_Ansage", true);
}
//--- Terminmodus 2 ---------
if($erg == -1 and $Terminmodus == 2)
{
SetValueBoolean("Term_mod2_Ansage", true);
}
//--- Terminmodus 3 ---------
if($erg == 0 and $Terminmodus == 3)
{
SetValueBoolean("Term_mod3_Ansage", true);
}
//--- Terminmodus 4 ---------
if ($erg == 0 and $Terminmodus == 4)
{
SetValueBoolean("Term_mod4_Ansage", true);
}
//--- Terminmodus 5 ---------
if ($erg == 0 and $Terminmodus == 5)
{
SetValueBoolean("Term_mod5_Ansage", true);
}
//--- Terminmodus 6 ---------
if ($erg == 0 and $Terminmodus == 6)
{
SetValueBoolean("Term_mod6_Ansage", true);
}
//---------------------------------------------------------------------------
if ("term_anz1_inhalt" != "-")
{
SetValueBoolean("Term", true);
}
} //for Schleife beenden
//------------------------- Terminmodus beenden -------------------------------
SetValueInteger("Terminmodus", 0);
IPS_SetScriptTimer("Termin", 0);
//-----------------------------------------------------------------------------