Hoffe alle Fehler sind nun beseitigt. Bitte um kurzes Feadback.
Habe aber erstmal keine weitere Zeit um ein neues Update hochzuladen, da dafür noch weitere Anpassungen notwendig wären. So sollte es aber ersmal gehen.
Bitte entsprechende Codezeilen komplett ersetzen:
//---------------------------------------------------------------------------
//------------------------------ Terminverwaltung ---------------------------
//---------------------------------------------------------------------------
//Datensätze laden oder ersten Datensatz erzeugen
if(file_exists($filename)) //Datensätze laden
{
$termfile = file_get_contents($filename); //Termine in Variable einlesen
$term_arr_komplett = explode("
", $termfile); // nach Zeilenumbruch trennen und in array
}
else //erster Datensatz
{
$term_neu_komplett = ",,,,,,,,,,,,,,,"."
"; // 1 x Platzhalter String erzeugen
$handle=fopen($filename, "w");
fwrite($handle,$term_neu_komplett);
fclose($handle);
SetValueInteger($id_counter,0);
}
$counter_summe = count($term_arr_komplett); // Werte zählen
SetValueInteger($id_counter_summe,$counter_summe-1); //Gesamtsumme der Datensätze
//--------------------------- Datensatz vor ---------------------------------
if($IPS_COMPONENT == "vor" or $IPS_COMPONENT == "vor_10")
{
SetValueString($id_term_meldung,"");
if($IPS_COMPONENT == "vor")
{
$counter = GetValueInteger($id_counter);
$counter = $counter+1;
$werte = count($term_arr_komplett); // Werte zählen
if($counter == $werte){$counter=1;} //Am Ende Zähler auf Anfang
SetValueInteger($id_counter, $counter);
$term_arr = explode(",", $term_arr_komplett[$counter]);
}
if($IPS_COMPONENT == "vor_10")
{
$counter = GetValueInteger($id_counter);
$counter = $counter+10;
if($counter_summe-1 < $counter){return;} // raus wenn Datensatz nicht existiert
$werte = count($term_arr_komplett); // Werte zählen
if($counter == $werte){$counter=$werte-1;}
SetValueInteger($id_counter, $counter);
$term_arr = explode(",", $term_arr_komplett[$counter]);
}
term_anz();
return;
}
//---------------------------- Datensatz zurück -----------------------------
if($IPS_COMPONENT == "zur" or $IPS_COMPONENT == "zur_10")
{
SetValueString($id_term_meldung,"");
if($IPS_COMPONENT == "zur")
{
$counter = GetValueInteger($id_counter);
$counter = $counter-1;
$werte = count($term_arr_komplett); // Werte zählen
if($counter<1){$counter=$werte-1;}
SetValueInteger($id_counter, $counter);
$term_arr = explode(",", $term_arr_komplett[$counter]);
}
if($IPS_COMPONENT == "zur_10")
{
$counter = GetValueInteger($id_counter);
$counter = $counter-10;
if($counter<1){$counter=1;}
SetValueInteger($id_counter, $counter);
$term_arr = explode(",", $term_arr_komplett[$counter]);
}
term_anz();
return;
}
//--------------------------- neuer Datensatz -------------------------------
if($IPS_COMPONENT == "neu")
{
//Counter auf neuen Datensatz setzen
SetValueInteger($id_counter, count($term_arr_komplett)); // Werte zählen
//leerer Datensatz und aktiv gesetzt
$string = array
(
$id_term_stunde,
$id_term_minute,
$id_term_tag,
$id_term_monat
);
foreach($string as $value) SetValueString($value, "0");
$bool = array
(
$id_term_einmalig,
$id_term_jaerlich,
$id_term_mo,
$id_term_di,
$id_term_mi,
$id_term_do,
$id_term_fr,
$id_term_sa,
$id_term_so
);
foreach($bool as $value) SetValueBoolean($value, false);
SetValueBoolean($id_term_aktiv, true);
SetValueString($id_term_inhalt, "");
SetValueString($id_term_meldung,"Bitte neuen Datensatz eingeben");
}
//----------------------------- Datensatz löschen ---------------------------
if($IPS_COMPONENT == "loe")
{
$counter = GetValueInteger($id_counter);
unset ($term_arr_komplett[$counter]);
$term_neu_komplett = implode("
", $term_arr_komplett); // in String zurück
$handle=fopen($filename, "w");
fwrite($handle,$term_neu_komplett);
fclose($handle);
$counter = GetValueInteger($id_counter);
$counter = $counter-1;
if($counter<1){$counter=1;}
SetValueInteger($id_counter, $counter);
$term_arr = explode(",", $term_arr_komplett[$counter]);
//vorherigen Datensatz anzeigen
term_anz();
$counter_summe = count($term_arr_komplett); // Werte zählen
SetValueInteger($id_counter_summe,$counter_summe-1); //Gesatmsumme der Datensätze
SetValueString($id_term_meldung,"Datensatz gelöscht");
SetValueInteger($id_terminmodus, 6);
IPS_RunScript($IPS_SELF);
return;
}
//----------------------------- Datensatz speichern -------------------------
if($IPS_COMPONENT == "speichern")
{
$counter = GetValueInteger($id_counter);
$term_arr[0] = ""; //Timestamp auf Index 0 setzen und an den Anfang des array
term_hol();
//Datensatz prüfen===>
//wenn Stundenwert >24 Uhr oder kleiner 0 Uhr
if((int)$term_stunde > 24 or (int)$term_stunde < 0 or (int)$term_minute >59 or (int)$term_minute < 0)
{
SetValueString($id_term_meldung,"Diese Uhrzeit ist nicht möglich.");
SetValueBoolean($id_err_time, true);
return;
}
//wenn Stundenwert 24 Uhr und min größer 0
if((int)$term_stunde == 24 and (int)$term_minute >0)
{
SetValueString($id_term_meldung,"Diese Uhrzeit ist nicht möglich.");
SetValueBoolean($id_err_time, true);
return;
}
//nach Buchstaben und Sonderzeichen suchen
if(preg_match("/[^0-9]/", $term_arr[11]) or preg_match("/[^0-9]/", $term_arr[12]) or
preg_match("/[^0-9]/", $term_arr[13]) or preg_match("/[^0-9]/", $term_arr[11]))
{
SetValueString($id_term_meldung,"Datum oder Uhrzeit haben ein falsches Format.");
SetValueBoolean($id_err_date, true);
SetValueBoolean($id_err_time, true);
return;
}
else
{
//Zeitstempel aus Datensatz generieren
$term_arr[0] = mktime((int)$term_stunde, (int)$term_minute, 0, (int)$term_monat, (int)$term_tag, 2000);
}
//wenn jährlich und einmalig und wöchentlich nicht gesetzt
if(
$term_jaerlich == false and $term_einmalig == false and
$term_mo == false and $term_di == false and
$term_mi == false and $term_do == false and
$term_fr == false and $term_sa == false and $term_so == false)
{
SetValueString($id_term_meldung,"Wiederholungswert wurde nicht eingegeben.");
SetValueBoolean($id_err_einm_jaerl, true);
SetValueBoolean($id_err_woch, true);
return;
}
//wenn jährlich und einmalig gesetzt
if($term_jaerlich == true and $term_einmalig == true)
{
SetValueString($id_term_meldung,"Der Wert Jährlich und Einmalig kann nicht gleichzeitig gesetzt werden.");
return;
}
//wenn jährlicher oder einmaliger Termin und Monat >12 oder <1
if(
$term_jaerlich == true and (int)$term_monat > 12 or
$term_jaerlich == true and (int)$term_monat < 1 or
$term_einmalig == true and (int)$term_monat > 12 or
$term_einmalig == true and (int)$term_monat < 1)
{
SetValueString($id_term_meldung,"Monatswert größer 12 oder kleiner 1 nicht möglich.");
SetValueBoolean($id_err_date, true);
return;
}
//Anzahl der Tage im Monat errechnen
if($term_monat>0) $mon_days = cal_days_in_month(CAL_GREGORIAN,(int)$term_monat,date("Y"));
//dieses Datum ist nicht möglich
if(
$term_jaerlich == true and (int)$term_tag > $mon_days or
$term_einmalig == true and (int)$term_tag > $mon_days)
{
SetValueString($id_term_meldung,"Dieses Datum ist in ".date("Y")." nicht möglich.");
SetValueBoolean($id_err_date, true);
return;
}
//wenn Wochenwert gesetzt und jährlich gesetzt
if(
$term_jaerlich == true and $term_mo == true or
$term_jaerlich == true and $term_di == true or
$term_jaerlich == true and $term_mi == true or
$term_jaerlich == true and $term_do == true or
$term_jaerlich == true and $term_fr == true or
$term_jaerlich == true and $term_sa == true or
$term_jaerlich == true and $term_so == true)
{
SetValueString($id_term_meldung,"Wöchentlicher Termin in Verbindung mit Einmalig oder Jährlich ist nicht möglich.");
SetValueBoolean($id_err_einm_jaerl, true);
SetValueBoolean($id_err_woch, true);
return;
}
//wenn Wochenwert gesetzt und einmalig gesetzt
if(
$term_einmalig == true and $term_mo == true or
$term_einmalig == true and $term_di == true or
$term_einmalig == true and $term_mi == true or
$term_einmalig == true and $term_do == true or
$term_einmalig == true and $term_fr == true or
$term_einmalig == true and $term_sa == true or
$term_einmalig == true and $term_so == true)
{
SetValueString($id_term_meldung,"Wöchentlicher Termin in Verbindung mit Einmalig oder Jährlich ist nicht möglich.");
SetValueBoolean($id_err_einm_jaerl, true);
SetValueBoolean($id_err_woch, true);
return;
}
//wenn Wochenwert gesetzt und Datum != 0
if(
$term_tag != 0 and $term_mo == true or
$term_tag != 0 and $term_di == true or
$term_tag != 0 and $term_mi == true or
$term_tag != 0 and $term_do == true or
$term_tag != 0 and $term_fr == true or
$term_tag != 0 and $term_sa == true or
$term_tag != 0 and $term_so == true or
$term_monat != 0 and $term_mo == true or
$term_monat != 0 and $term_di == true or
$term_monat != 0 and $term_mi == true or
$term_monat != 0 and $term_do == true or
$term_monat != 0 and $term_fr == true or
$term_monat != 0 and $term_sa == true or
$term_monat != 0 and $term_so == true)
{
SetValueString($id_term_meldung,"Wöchentlicher Termin in Verbindung mit einem Datum ist nicht möglich.");
SetValueBoolean($id_err_date, true);
return;
}
//wenn termin weniger als 2 Zeichen
if(strlen($term_inhalt)<2)
{
SetValueString($id_term_meldung,"dieser Termineintrag ist zu kurz oder wurde nicht mit Enter bestätigt");
SetValueBoolean($id_err_inhalt, true);
return;
}
//wenn Wochenwert gesetzt, Datum auf 0 setzen
if(
$term_mo == true or
$term_di == true or
$term_mi == true or
$term_do == true or
$term_fr == true or
$term_sa == true or
$term_so == true)
{
$term_arr[13] = 0;
$term_arr[14] = 0;
}
//wenn jährlich gesetzt, Zeit auf 0 setzen
if($term_jaerlich)
{
$term_arr[11] = 0;
$term_arr[12] = 0;
}
//Fehler löschen
SetValueBoolean($id_err_date, false);
SetValueBoolean($id_err_time, false);
SetValueBoolean($id_err_einm_jaerl, false);
SetValueBoolean($id_err_woch, false);
SetValueBoolean($id_err_inhalt, false);
$term_neu = implode(",", $term_arr); // in String zurück
$term_arr_komplett[$counter] = $term_neu;
sort($term_arr_komplett); // nach Zeit sortieren
$term_neu_komplett = implode("
", $term_arr_komplett); // in String zurück
$handle=fopen($filename, "w");
fwrite($handle,$term_neu_komplett);
fclose($handle);
SetValueString($id_term_meldung,"Datensatz gespeichert");
$counter = 1;// Datensatz 1 anzeigen
SetValueInteger($id_counter, $counter);
$term_arr = explode(",", $term_arr_komplett[$counter]);
term_anz();
SetValueBoolean($id_term, false); //Terminsymbol löschen
SetValueInteger($id_terminmodus, 6);
IPS_RunScript($IPS_SELF);
}
$counter_summe = count($term_arr_komplett); // Werte zählen
SetValueInteger($id_counter_summe,$counter_summe-1); //Gesatmsumme der Datensätze
//------------------------------- Funktionen --------------------------------
function term_anz() //Datensatz anzeigen
{
global $term_arr;
global $id_term_einmalig, $id_term_jaerlich, $id_term_mo, $id_term_di, $id_term_mi;
global $id_term_do, $id_term_fr, $id_term_sa, $id_term_so, $id_term_aktiv, $id_term_stunde;
global $id_term_minute, $id_term_tag, $id_term_monat, $id_term_inhalt;
global $id_err_date, $id_err_time, $id_err_einm_jaerl, $id_err_woch, $id_err_inhalt;
SetValueBoolean($id_term_einmalig, (bool)$term_arr[1]);
SetValueBoolean($id_term_jaerlich, (bool)$term_arr[2]);
SetValueBoolean($id_term_mo, (bool)$term_arr[3]);
SetValueBoolean($id_term_di, (bool)$term_arr[4]);
SetValueBoolean($id_term_mi, (bool)$term_arr[5]);
SetValueBoolean($id_term_do, (bool)$term_arr[6]);
SetValueBoolean($id_term_fr, (bool)$term_arr[7]);
SetValueBoolean($id_term_sa, (bool)$term_arr[8]);
SetValueBoolean($id_term_so, (bool)$term_arr[9]);
SetValueBoolean($id_term_aktiv, (bool)$term_arr[10]);
SetValueString($id_term_stunde, $term_arr[11]);
SetValueString($id_term_minute, $term_arr[12]);
SetValueString($id_term_tag, $term_arr[13]);
SetValueString($id_term_monat, $term_arr[14]);
SetValueString($id_term_inhalt, $term_arr[15]);
//Fehler löschen für neue Prüfung
SetValueBoolean($id_err_date, false);
SetValueBoolean($id_err_time, false);
SetValueBoolean($id_err_einm_jaerl, false);
SetValueBoolean($id_err_woch, false);
SetValueBoolean($id_err_inhalt, false);
}
function term_hol() //Datensatz holen
{
global $term_arr, $term_einmalig, $term_jaerlich, $term_mo, $term_di, $term_mi;
global $term_do, $term_fr, $term_sa, $term_so, $term_aktiv, $term_stunde;
global $term_minute, $term_tag, $term_monat, $term_inhalt;
global $id_term_arr, $id_term_einmalig, $id_term_jaerlich, $id_term_mo, $id_term_di, $id_term_mi;
global $id_term_do, $id_term_fr, $id_term_sa, $id_term_so, $id_term_aktiv, $id_term_stunde;
global $id_term_minute, $id_term_tag, $id_term_monat, $id_term_inhalt;
$term_einmalig = $term_arr[1] = GetValueBoolean($id_term_einmalig);
$term_jaerlich = $term_arr[2] = GetValueBoolean($id_term_jaerlich);
$term_mo = $term_arr[3] = GetValueBoolean($id_term_mo);
$term_di = $term_arr[4] = GetValueBoolean($id_term_di);
$term_mi = $term_arr[5] = GetValueBoolean($id_term_mi);
$term_do = $term_arr[6] = GetValueBoolean($id_term_do);
$term_fr = $term_arr[7] = GetValueBoolean($id_term_fr);
$term_sa = $term_arr[8] = GetValueBoolean($id_term_sa);
$term_so = $term_arr[9] = GetValueBoolean($id_term_so);
$term_aktiv = $term_arr[10] = GetValueBoolean($id_term_aktiv);
$term_stunde = $term_arr[11] = GetValueString($id_term_stunde);
$term_minute = $term_arr[12] = GetValueString($id_term_minute);
$term_tag = $term_arr[13] = GetValueString($id_term_tag);
$term_monat = $term_arr[14] = GetValueString($id_term_monat);
$term_inhalt = $term_arr[15] = GetValueString($id_term_inhalt);
}
//---------------------------------------------------------------------------