owncloud - die Zentrale für Kalender und Adressbuch

Hello.

Wollte nur mal danke sagen für das tolle Script.

Gruß aus dem Waldviertel
chris

So ich hoffe ich habe alles gefunden.

Einige Einschränkungen.
Es ist möglich in einem Termin mehrerer Erinnerungen zu plazieren.
Entweder Zeit xx vor den Termin oder zu einem bestimmten Termin.
Bei Zeit xx vor dem Termin werte ich nur den ersten Eintrag aus.,
Termine zu einem bestimmten Termin werte ich gar nicht aus.

Neu sind Feiertage.
Bitte entsprechendes Bundesland auswählen.
Feiertag wird nur angezeigt, wenn an dem Tag ein Termin vorliegt.

Es können jetzt auch die Farben richtig eingestellt werden.
Der heutige Tage kann andersfarbig dargestellt werden als die restlichen Tage.
z.B. rote Schrift oder Hintergrund.

Update:
Ist etwas umfangreicher.
Bitte alles ab euren Kaledender Array austauschen.
Also alles ab

// Allgemeine Daten

Version 1.06

  • Bugfix: Alte Termine wurden nicht immer angezeigt.
  • Bugfix: Farben überarbeitet und funktionstüchtig gemacht
  • Bugfix: Erinnerung wurde bei mehrfachen Erinnerungen nicht sauber ausgewertet. Es wird NUR die erste Erinnerung genutzt. Erinnerung mit festen Termin wird ignoriert.
  • Neu: Feiertage werden ausgewertet und an Tagen MIT Terminen im Titel angezeigt

Das sieht verdammt gut aus. Außer: Das Ä beim Ganztägig wird verhunzt dargestellt. Im Termintext passt es. Ist aber evtl. noch ein Problem von IPS4.
Wie ich das jetzt mit meinen 14-tägigen und halbjährlichen Terminen hinbekomme, muss ich mal testen.

Vielen Dank nochmal!!

Das Problem mit Umlauten ist nur bei IPS4 unter Linux ein Problem.

Ich nutze IPS4 aber unter Windows 7

PS: Kann es sein das Erinnerungen nicht angezeigt werden und Mails nicht mehr versendet werden?

und noch einer
wie kann das sein (Umlaut)?

Das ist ja Spannend.
Gleiches IPS4?
Aber Unterschiedliche Kalender?

Wie sieht der Termin in der .ics Datei aus?

ja, gleiches IPS4
gleiches Konto, zwei Kalender

Eintrag Umlaut ok:

BEGIN:VEVENT
CREATED:20151230T173956Z
DTEND;VALUE=DATE:20160103
DTSTAMP;VALUE=DATE-TIME:20151230T182741Z
DTSTART;VALUE=DATE:20160102
LAST-MODIFIED;VALUE=DATE-TIME:20151230T182741Z
SEQUENCE:1
SUMMARY:Test dienst
TRANSP:OPAQUE
UID:C6D3381B-50B9-4D8A-99E3-6CDE0449210E
CLASS:PUBLIC
DESCRIPTION:Erinnerung
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Erinnerung
TRIGGER:PT9H
UID:33B60953-7DDE-408E-9063-5A7A44858CCD
X-WR-ALARMUID:33B60953-7DDE-408E-9063-5A7A44858CCD
END:VALARM
END:VEVENT

Eintrag Umlaut falsch:

BEGIN:VEVENT
CREATED:20151229T194952Z
DTEND;VALUE=DATE:20160101
DTSTAMP:20151230T090622Z
DTSTART;VALUE=DATE:20151231
LAST-MODIFIED:20151230T090621Z
RRULE:FREQ=YEARLY
SEQUENCE:0
SUMMARY:Sylvester
TRANSP:OPAQUE
UID:84327EAC-F1F3-4196-A872-E0AFDDBABFC6
BEGIN:VALARM
ACKNOWLEDGED:20151230T090621Z
ACTION:DISPLAY
DESCRIPTION:Erinnerung
TRIGGER:-PT15H
UID:9A4C6BD1-FE79-4170-B7C4-CF294FC7A05E
X-WR-ALARMUID:9A4C6BD1-FE79-4170-B7C4-CF294FC7A05E
END:VALARM
BEGIN:VALARM
ACTION:NONE
TRIGGER;VALUE=DATE-TIME:19760401T005545Z
END:VALARM
END:VEVENT

Stimmt ja den Text „Ganztägig“ erzeuge ich ja im Script.

Sind die konfigurationen der Variablen als HTML Boxen gleich?

PS: Kann es sein das Erinnerungen nicht angezeigt werden und Mails nicht mehr versendet werden?

Denke schon:


Bekommst Du Scriptfehler?
Hast Du Bis auf Dein KalenderArray im Script alles ausgetauscht?

Nein, keine
Alles ausgetauscht.
Sieht jetzt so aus:

<?
// PFLICHT Daten zu owncloud
// https://www.symcon.de/forum/threads/26735-owncloud-die-Zentrale-für-Kalender-und-Adressbuch?p=276144#post276144
$url              = "http://nas-server/owncloud/";    // Root URL bzw. IP zu owncloud

$kalender = array(                                       // Hier die einzelnen Kalender eintragen
						'1' => array(
						      'KalenderName'  => 'Home',         // Kalender Name wie er in der Visualisierung angezeigt wird
						      'UserName'      => 'xxxxx',         // Benutzername in owncloud
						      'Password'		 => 'xxxxxxx',  // passendes Password zum Benutzernamen
						      'KalenderID' 	 => 1,               // 1 KalenderID in owncloud (in owncloud kann ein Benutzer meherere Kalender besitzen)
						      'EMailID'       => '22433',
						),
//##############################################################
						'2' => array(
						      'KalenderName'  => 'Dienstplan',
						      'UserName'      => xxxxx',
						      'Password'      => 'xxxxxxx',
						      'KalenderID'    => 2,
						      'EMailID'       => '22433',
						),
//						'3' => array(
//						      'KalenderName'  => 'USER3',
//						      'UserName'      => '',
//						      'Password'      => '',
//						      'KalenderID'    => 1,
//                      'EMailID'       => '22433',
//						),
//##############################################################

					);

// Version 1.06 vom 30.12.2015

/* * Definiert das Bundesland für die Feiertage
	*  Fuer c_Property_Bundesland bitte folgende Abkuerzungen benutzen:
	*  BW = Baden-Württemberg
	*  BY = Bayern
	*  BE = Berlin
	*  BB = Brandenburg
	*  HB = Bremen
	*  HH = Hamburg
	*  HE = Hessen
	*  MV = Mecklenburg-Vorpommern
	*  NI = Niedersachsen
	*  NW = Nordrhein-Westfalen
	*  RP = Rheinland-Pfalz
	*  SL = Saarland
	*  SN = Sachsen
	*  ST = Sachen-Anhalt
	*  SH = Schleswig-Holstein
	*  TH = Thüringen
	*/
$bland				= "SN";


// Allgemeine Daten
$debug            = false;             // Debug Ausgabe
$filewrite        = false;             // erstellt parallel ein ungefiltertes TextFile in Kernel\media\owncloud_ID.txt
$htmlfilewrite    = false;             // erstellt parallel ein html File in Kernel\media\owncloud_ID.html
$maxDays          = 180;               // Max. anzuzeigende Tage im Kalender und nächsten Termine
$abfrageintervall = 1;                 // Abfrage Intervall in Minuten bei Email Versand MUß auf 1min stehen
$visualisierung   = 0;                 // Einzelne Kalender in 0 = einem Ordner, 1 = Kategorien, 2 = in Dummy Instanzen

//Hier den Style wählen
$viewReminder = true; 						// (true/false) Anzeige der Erinnerung Ein/Aus

/******** Farbnamen, RGB-Formatierung, Hex-Zahlen möglich *********/
$StyleText[1] = "lightgray"; 				// Textfarbe Datum
$StyleText[2] = "gray"; 					// Textfarbe Wochentag
$StyleText[3] = "lightblue";  			// Textfarbe Termin sonstige
$StyleText[4] = "red"; 						// Textfarbe Termin Heute
$StyleText[5] = "rgba(31,50,79,0)";    // Texthintergrung Heute default: rgba(31,50,79,0)
$StyleText[6] = "lightgreen";				      // Textfarbe Datum wenn Feiertag

$StyleText[7] = "#213245";    			// Verlaufsfarbe rechts
$StyleText[8] = "100%";       			// Übergang rechts
$StyleText[9] = "rgba(31,50,79,0)"; 	// Verlaufsfarbe links
$StyleText[10] = "40%";        			// Übergang links

/*** xx-small, x-small, small, normal, large, x-large, xx-large ***/
/************** oder Angabe in pt - z.B. "12pt" *******************/
$StyleText[11] = "xx-large"; 					// Textgröße Datum
$StyleText[12] = "xx-large"; 					// Textgröße Wochentag
$StyleText[13] = "xx-large"; 				// Textgröße Eintrag


/*****************************************************************/
/*******  Für Update ab hier alles ersetzen und 1x ausführen *****/
/*****************************************************************/
/****************** Ab hier bitte nichts mehr ändern *************/
/*****************************************************************/

	// Wochentage auf Deutsch
	$tag[0] = "Sonntag";
	$tag[1] = "Montag";
	$tag[2] = "Dienstag";
	$tag[3] = "Mittwoch";
	$tag[4] = "Donnerstag";
	$tag[5] = "Freitag";
	$tag[6] = "Samstag";


	if($_IPS['SENDER'] == "Execute")
	{
		//Verzeichnisse anlegen
		$adir = CreateCategoryByName(0, 'ACSoft', 'AC-Soft');
		$cdir = CreateCategoryByName($adir, 'Cloud', 'Cloud');
		$sdir = CreateCategoryByName($cdir, 'Scripte', 'Scripte');
		$ddir = CreateCategoryByName($cdir, 'Data', 'Data');
		$vdir = CreateCategoryByName($cdir, 'Visualisierung', 'Visualisierung');

      foreach ($kalender as $Nummer=>$Data) {

             // Update der alten Ident zur neuen
			   $mdir = @IPS_GetObjectIDByIdent($Nummer, $ddir);
				if ($mdir !== false) { IPS_SetIdent($mdir, 'Kalender_'.$Nummer); }

				// neue Ident finden
				$mdir = CreateCategoryByName($ddir, 'Kalender_'.$Nummer, 'Kalender_'.$Data['KalenderName']);

				//Variablen anlegen
				$vheute  		= CreateVariableByName($mdir, "Heute", "Heute", 3, "~TextBox", 10);
				$vmorgen 		= CreateVariableByName($mdir, "Morgen", "Morgen", 3, "~TextBox", 20);
				$vuemorgen 		= CreateVariableByName($mdir, "UeMorgen", 			"ÜberMorgen", 3, "~TextBox", 22);
				$vueuemorgen 	= CreateVariableByName($mdir, "UeueMorgen", 	"ÜberüberMorgen", 3, "~TextBox", 24);
				$vheutemorgen 	= CreateVariableByName($mdir, "HeuteMorgen", "Heute & Morgen", 3, "", 30);
				$vnext 			= CreateVariableByName($mdir, "NaechstenTermine", "Nächsten Termine", 3, "~TextBox", 40);
				$vkalender 		= CreateVariableByName($mdir, "Kalender", "Kalender", 3, "~HTMLBox", 50);


				if ($visualisierung == 2) // Dummy
				{
					$wdir = CreateInstanceByName($vdir, 'Kalender', 'Kalender');
					//Links erstellen
//					CreateLinkByName($wdir, 'Heute', $vheute, 10);
//					CreateLinkByName($wdir, 'Morgen', $vmorgen, 20);
//					CreateLinkByName($wdir, 'Heute & Morgen', $vheutemorgen, 30);
//					CreateLinkByName($wdir, 'Nächsten Termine', $vnext, 40);

					// Update der alten Ident zur neuen
				   $ldir = @IPS_GetObjectIDByIdent($Nummer, $wdir);
					if ($ldir !== false) { IPS_SetIdent($ldir, 'Kalender_'.$Nummer); }
					CreateLinkByName($wdir, 'Kalender_'.$Nummer, $vkalender, 50);

				} else if ($visualisierung == 1){ // Kategory
					$wdir = CreateCategoryByName($vdir, $Data['KalenderName'], $Data['KalenderName']);
					//Links erstellen
//					CreateLinkByName($wdir, 'Heute', $vheute, 10);
//					CreateLinkByName($wdir, 'Morgen', $vmorgen, 20);
//					CreateLinkByName($wdir, 'Heute & Morgen', $vheutemorgen, 30);
//					CreateLinkByName($wdir, 'Nächsten Termine', $vnext, 40);

					// Update der alten Ident zur neuen
				   $ldir = @IPS_GetObjectIDByIdent($Nummer, $wdir);
					if ($ldir !== false) { IPS_SetIdent($ldir, 'Kalender_'.$Nummer); }
					CreateLinkByName($wdir, 'Kalender_'.$Nummer, 'Kalender', $vkalender, 50);

				} else {
					$wdir = $vdir;
					//Links erstellen
//					CreateLinkByName($wdir, 'Heute', $vheute, 10);
//					CreateLinkByName($wdir, 'Morgen', $vmorgen, 20);
//					CreateLinkByName($wdir, 'Heute & Morgen', $vheutemorgen, 30);
//					CreateLinkByName($wdir, 'Nächsten Termine', $vnext, 40);

					// Update der alten Ident zur neuen
				   $ldir = @IPS_GetObjectIDByIdent($Nummer, $wdir);
					if ($ldir !== false) { IPS_SetIdent($ldir, 'Kalender_'.$Nummer); }
					CreateLinkByName($wdir, 'Kalender_'.$Nummer, "Kalender ".$Data['KalenderName'], $vkalender, 50);
				}
		}

//		$kscript 		= CreateScriptByName($kdir, "config");


		// Script verschieben
		IPS_SetParent($_IPS['SELF'], $sdir);
		IPS_SetName($_IPS['SELF'], 'Cloud Script');

		// Timer erstellen
		CreateTimer_Profile('Cloud Timer','CloudTimer', $_IPS['SELF'], 0, 0, 0, true);
	}




if(($_IPS['SENDER'] == "TimerEvent") || ($_IPS['SENDER'] == "Execute"))
{
		foreach ($kalender as $Nummer=>$Data) {
					$date = "";
					$heute = "";
					$morgen = "";
					$uemorgen = "";
					$ueuemorgen = "";
					$heuteumorgen = "";
					$next = "";
					$calcData = "";
					$calDataTxt = "";
					$thisData = "";

					ReadCalendar($url, $Data['KalenderID'], $Data['UserName'], $Data['Password']);
					if ($calcData != "")
					{
							usort($calcData, 'DateCompare');

							// Starte Tabellenansicht
							$calDataTxt = "<table style='border-spacing:0px; width:100%'>"
											 ."
	<tr>"
											 ."
		<td>"
											 ."
		</td>"
											 ."
		<td style='text-align:right; font-size:xx-small;'>owncloud Script V 1.06"
											 ."
		</td>"
											 ."
	</tr>";
							$check_date = "";
							foreach($calcData as $thisData)
							{
							      // Email Versand bei Erinnerungszeit
							      if ($thisData['DatumTxt']." ".$thisData['ReminderTimeTxt'] == date("d.m.Y H:i", time()))
									{
											if ($Data['EMailID'] <> "")
													SMTP_SendMail($Data['EMailID'], "Termin Erinnerung: ".$thisData['Bezeichnung'], "     Uhrzeit: ".$thisData['ZeitTxt']."
\r Bezeichnung: ".$thisData['Bezeichnung']."
\rBeschreibung: ".$thisData['Beschreibung']."
\r");
									}


								   if($thisData['DatumTxt'] == date("d.m.Y", time()))
									{
									      if ($heute == "")
									      {
											      $heute = $thisData['ZeitTxt']." ".$thisData['Bezeichnung'];
									      }else{
							      	         $heute = $heute.chr(13).chr(10).$thisData['ZeitTxt']." ".$thisData['Bezeichnung'];
											}
									}

								   if($thisData['DatumTxt'] == date("d.m.Y", time()+(24 * 60 * 60)))
									{
									      if ($morgen == "")
									      {
											      $morgen = $thisData['ZeitTxt']." ".$thisData['Bezeichnung'];
									      }else{
							      	         $morgen = $morgen.chr(13).chr(10).$thisData['ZeitTxt']." ".$thisData['Bezeichnung'];
											}
									}

								   if($thisData['DatumTxt'] == date("d.m.Y", time()+(2 * 24 * 60 * 60)))
									{
									      if ($uemorgen == "")
									      {
											      $uemorgen = $thisData['ZeitTxt']." ".$thisData['Bezeichnung'];
									      }else{
							      	         $uemorgen = $uemorgen.chr(13).chr(10).$thisData['ZeitTxt']." ".$thisData['Bezeichnung'];
											}
									}

								   if($thisData['DatumTxt'] == date("d.m.Y", time()+(3 * 24 * 60 * 60)))
									{
									      if ($ueuemorgen == "")
									      {
											      $ueuemorgen = $thisData['ZeitTxt']." ".$thisData['Bezeichnung'];
									      }else{
							      	         $ueuemorgen = $ueuemorgen.chr(13).chr(10).$thisData['ZeitTxt']." ".$thisData['Bezeichnung'];
											}
									}

								   if(strtotime($thisData['DatumTxt']) >= strtotime(date("d.m.Y", time()+(2*24 * 60 * 60))))
									{
									      if ($next == "")
											{
												      $next = $thisData['Bezeichnung'];
											}else{
														$next = $next.chr(13).chr(10).$thisData['Bezeichnung'];
											}
									}
									if ($heute == "") { $heuteumorgen = $morgen; } else { $heuteumorgen = $heute.chr(13).chr(10).$morgen; }

									if(strtotime($thisData['EndDatumTxt']) >= strtotime(date("d.m.Y", time())))//date("d.m.Y", strtotime("yesterday")))
								   {
								        if($check_date != "" and $thisData['DatumTxt'] != $check_date)$calDataTxt .= "
			</table>
		</th>
	</tr>";
								        if($thisData['DatumTxt'] != $check_date)
								        {
								            if     ($thisData['DatumTxt'] == date("d.m.Y")) $headerTxt = "Heute:";
								            elseif ($thisData['DatumTxt'] == date("d.m.Y", strtotime("+1 day"))) $headerTxt = "Morgen:";
								            else    $headerTxt = $thisData['DatumTxt']." in ".seDay($thisData['DatumTxt'],date("d.m.Y"),"dmY",".")." Tagen";

								            $calDataTxt  .= "
"
																	."
	<tr>
		<td style=' padding:4px;"
																   ."
					background-color:".$StyleText[7].";"
																	."
					background: -moz-linear-gradient(left, ".$StyleText[9]." ".$StyleText[10].", ".$StyleText[7]." ".$StyleText[8].");"
																	."
					background: -webkit-gradient(linear, left top, right top, color-stop(4%,".$StyleText[9]."), color-stop(".$StyleText[8].",".$StyleText[7]."));"
																	."
					background: -webkit-linear-gradient(left, ".$StyleText[9]." ".$StyleText[10].", ".$StyleText[7]." ".$StyleText[8].");"
																	."
					background: -o-linear-gradient(left, ".$StyleText[9]." ".$StyleText[10].", ".$StyleText[7]." ".$StyleText[8].");"
																	."
					background: -ms-linear-gradient(left, ".$StyleText[9]." ".$StyleText[10].", ".$StyleText[7]." ".$StyleText[8].");"
																	."
					background: linear-gradient(to right, ".$StyleText[9]." ".$StyleText[10]."), ".$StyleText[7]." ".$StyleText[8].";'>";

												if (get_Feiertag(strtotime($thisData['DatumTxt']))){
														$calDataTxt  .= "
				<span style='color:".$StyleText[6].";font-weight:200;font-size:".$StyleText[11]."'>".$headerTxt." ( Feiertag )";
												}else{
														$calDataTxt  .= "
				<span style='color:".$StyleText[1].";font-weight:200;font-size:".$StyleText[11]."'>".$headerTxt;
												}

										   	$calDataTxt  .= "
				</span>
		</td>"
									                        ."
		<td style=' text-align:right; width:100px; padding:4px;background-color:".$StyleText[7]."'>"
																	."
				<span style='color:".$StyleText[2].";font-weight:normal;font-size:".$StyleText[12]."'>".$tag[date("w", strtotime($thisData['DatumTxt']))]
										   	               ."
				</span>"
																	."
		</td>"
									                        ."
	</tr>"
									                        ."
	<tr>"
									                        ."
		<th colspan='2' style='text-align:left; padding-left:20px; padding-right:0px; padding-bottom:10px; padding-top:0px;'>";
	   										if($thisData['DatumTxt'] == date("d.m.Y"))
	   										{
     											            $calDataTxt  .= "
			<table style='border-spacing:0px; width:100%; padding:5px; border:1px solid #1f3247; background-color: ".$StyleText[5]."; '>";
												}else{
						                      			$calDataTxt  .= "
			<table style='border-spacing:0px; width:100%; padding:5px; border:1px solid #1f3247; background-color: ".$StyleText[9]."; '>";
												}

								            $check_date = $thisData['DatumTxt'];
								        }
							           $calDataTxt .= SetEintrag($thisData);
								    }
							}
							$calDataTxt .= "
		</table>"
			   							."
		</th>"
										   ."
	</tr>"
										   ."
</table>"; // Tabelle schließen

					$adir = IPS_GetObjectIDByIdent('ACSoft', 0);
					$cdir = IPS_GetObjectIDByIdent('Cloud', $adir);
					$ddir = IPS_GetObjectIDByIdent('Data', $cdir);
				   $mdir = IPS_GetObjectIDByIdent('Kalender_'.$Nummer, $ddir);

//      			if ($debug) IPS_LogMessage("owncloud", "name: ".$Data['KalenderName'].", mdir:$mdir, kalender:".IPS_GetObjectIDByIdent("Kalender",$mdir)."
");
//      			if ($debug) print "name: ".$Data['KalenderName'].", mdir:$mdir, kalender:".IPS_GetObjectIDByIdent("Kalender",$mdir)."
";

					SetValue(IPS_GetObjectIDByIdent("Heute",$mdir), $heute);
					SetValue(IPS_GetObjectIDByIdent("Morgen",$mdir), $morgen);
					SetValue(IPS_GetObjectIDByIdent("UeMorgen",$mdir), $uemorgen);
					SetValue(IPS_GetObjectIDByIdent("UeueMorgen",$mdir), $ueuemorgen);
					SetValue(IPS_GetObjectIDByIdent("HeuteMorgen",$mdir), $heuteumorgen);
					SetValue(IPS_GetObjectIDByIdent("NaechstenTermine",$mdir), $next);
					SetValue(IPS_GetObjectIDByIdent("Kalender",$mdir), $calDataTxt);

					if ($htmlfilewrite == true)
					{
							$file_txt = IPS_GetKernelDir()."media\\owncloud_".$id.".html";
							$fp = fopen($file_txt, 'wb');
							fwrite($fp, $calDataTxt);
							fclose($fp);
					}

			}
	}
}


/*****************************************************************/
/*                  F u n k t i o n e  n                         */
/*****************************************************************/

	function CreateTimer_Profile ($Name, $Ident, $ParentId, $Stunde=0, $Minute=0, $Position=0, $Status=true) {
		Global  $abfrageintervall, $debug;
		$TimerId = @IPS_GetObjectIDByIdent($Ident, $ParentId);
		if ($TimerId === false) {
 			$TimerId = IPS_CreateEvent(1 );
			IPS_SetParent($TimerId, $ParentId);
			IPS_SetName($TimerId, $Name);
			IPS_SetIdent($TimerId, $Ident);
			if ( IPS_GetKernelVersion() >= "3.10"){
				if (!IPS_SetEventCyclic($TimerId, 0 , 0,0,0,2,$abfrageintervall)) {
					Error ("IPS_SetEventCyclic failed !!!");
				}
				if (!IPS_SetEventCyclicTimeFrom($TimerId, intval($Stunde), intval($Minute), 0)) {
					Error ("IPS_SetEventCyclicTimeBounds $TimerId with Time $zeit failed !!!");
				}
				if (!IPS_SetEventCyclicDateFrom($TimerId, 0, 0, 0)) {
					Error ("IPS_SetEventCyclicTimeBounds $TimerId with DefaultDate failed !!!");
				}
			}else{
				if (!IPS_SetEventCyclicTimeBounds($TimerId, mktime($Stunde, $Minute, 0), 0)) {
					Error ("IPS_SetEventCyclicTimeBounds failed !!!");
				}
			}

			IPS_SetPosition($TimerId, $Position);
			if ($debug) IPS_LogMessage("owncloud", "Created Wecker Timer ".$Name."=".$TimerId);
		}

		if (!IPS_SetEventCyclic($TimerId, 0 , 0,0,0,2,$abfrageintervall)) {
			Error ("IPS_SetEventCyclic failed !!!");
		}
   	IPS_SetEventActive($TimerId, $Status);
		return $TimerId;
	}

	function CreateScriptByName($id, $ident, $name)
	{
		 Global $_IPS;
	    $vscr = @IPS_GetObjectIDByIdent($ident, $id);
	    if($vscr === false)
	    {
			 $vscr = IPS_CreateScript(0);
			 IPS_SetParent($vscr, $id);
			 IPS_SetName($vscr, $name);
			 IPS_SetIdent($vscr, $ident);
          IPS_SetInfo($vscr, "this variable was created by script #".$_IPS['SELF']);
			 IPS_SetScriptFile($vscr, "AC-Cloud.php");
		 }
	    return $vscr;
	}

	function CreateLinkByName($id, $ident, $name, $target, $position)
	{
		 Global $_IPS;

    	 $vlnk = @IPS_GetObjectIDByIdent($ident, $id);
	    if($vlnk === false)
	    {
			 $vlnk = IPS_CreateLink();
			 IPS_SetParent($vlnk, $id);
			 IPS_SetName($vlnk, $name);
			 IPS_SetIdent($vlnk, $ident);
          IPS_SetInfo($vlnk, "this variable was created by script #".$_IPS['SELF']);
			 IPS_SetPosition($vlnk, $position);
			 IPS_SetLinkTargetID($vlnk, $target);
		 }
	    return $vlnk;
	}

	function CreateInstanceByName($id, $ident, $name)
	{
		 Global $_IPS;
	    $vinst = @IPS_GetObjectIDByIdent($ident, $id);
	    if($vinst === false)
	    {
			 $vinst = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
			 IPS_SetParent($vinst, $id);
			 IPS_SetName($vinst, $name);
			 IPS_SetIdent($vinst, $ident);
          IPS_SetInfo($vinst, "this variable was created by script #".$_IPS['SELF']);
		 }
	    return $vinst;
	}

	function CreateCategoryByName($id, $ident, $name)
	{
		 Global $_IPS;

	    $vdir = @IPS_GetObjectIDByIdent($ident, $id);
	    if($vdir === false)
	    {
			 $vdir = IPS_CreateCategory();
			 IPS_SetParent($vdir, $id);
			 IPS_SetName($vdir, $name);
			 IPS_SetIdent($vdir, $ident);
          IPS_SetInfo($vdir, "this variable was created by script #".$_IPS['SELF']);
		 }
	    return $vdir;
	}

	function CreateVariableByName($id, $ident, $name, $type, $profile = "", $position = 0)
	{
		 Global $_IPS;
	    $vid = @IPS_GetObjectIDByIdent($ident, $id);
	    if($vid === false)
	    {
	        $vid = IPS_CreateVariable($type);
	        IPS_SetParent($vid, $id);
	        IPS_SetName($vid, $name);
	 		  IPS_SetIdent($vid, $ident);
			  IPS_SetPosition($vid, $position);
	        IPS_SetInfo($vid, "this variable was created by script #".$_IPS['SELF']);
	        if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
	    }
	    return $vid;
	}


	function SetEintrag($thisData)
	{
	   global $tag, $deco, $StyleText, $viewReminder;
	   if($thisData['ZeitTxt'] == "00:00")
	   {
	        if($thisData['DatumTxt'] == $thisData['EndDatumTxt']) $thisData['ZeitTxt']="Ganztägig";
	        else $thisData['ZeitTxt']="bis ".substr($tag[date("w", strtotime($thisData['EndDatumTxt']))],0,2).", ".$thisData['EndDatumTxt'];
		}

		if (($viewReminder) && ($thisData['ReminderTimeTxt'] <> ""))
		{
				$remind = "(".$thisData['ReminderTimeTxt'].")  ";
		}else
		{
				$remind = "          ";
		}

	    if($thisData['DatumTxt'] == date("d.m.Y"))
	    {
	        return "
				<tr>"
			        ."
					<td>"
					  ."
						<span style='font-weight:normal;font-size:".$StyleText[13]."; color:".$StyleText[4]."'>".$thisData['Bezeichnung']
					  ."
						</span>"
					  ."
					</td>"
					  ."
					<td style='text-align:right;'>"
					  ."
						<span style='font-weight:normal;font-size:".$StyleText[13]."; color:".$StyleText[4]."'>".$remind.$thisData['ZeitTxt']
					  ."
						</span>"
					  ."
					</td>"
					  ."
				</tr>";
	    }
	    else
	    {
	        return "
				<tr>"
			  		  ."
					<td>"
					  ."
						<span style='font-weight:normal;font-size:".$StyleText[13].";color:".$StyleText[3]."'>".$thisData['Bezeichnung']
					  ."
						</span>"
					  ."
					</td>"
	              ."
					<td style='text-align:right'>"
					  ."
						<span style='font-weight:normal;font-size:".$StyleText[13].";color:".$StyleText[3]."'>".$remind.$thisData['ZeitTxt']
					  ."
						</span>"
					  ."
					</td>"
					  ."
				</tr>";
	    }
	}

	function seDay($begin,$end,$format,$sep)
	{

		$pos1	= strpos($format, 'd');
		$pos2	= strpos($format, 'm');
		$pos3	= strpos($format, 'Y');

		$begin	= explode($sep,$begin);
		$end		= explode($sep,$end);

		$first 	= GregorianToJD($end[$pos2],$end[$pos1],$end[$pos3]);
		$second	= GregorianToJD($begin[$pos2],$begin[$pos1],$begin[$pos3]);

		if($first > $second)
			return $first - $second;
		else
			return $second - $first;

	}


	function DateCompare($a, $b)
	{
	    if ( $a['Datum'] == $b['Datum'] ) return 0;
	    if ( $a['Datum'] < $b['Datum'] )  return -1;
	    return 1;
	}


	function ReadCalendar($url, $id, $username, $password)
	{
				global $calcData, $debug, $filewrite;
 				$ch = curl_init();
				curl_setopt ($ch, CURLOPT_URL, $url."/index.php/apps/calendar/export.php?calid=".$id);
				curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
				curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
				curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,20);
				curl_setopt ($ch, CURLOPT_TIMEOUT, 120);
				curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
				curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
				//curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
				//curl_setopt ($ch, CURLOPT_REFERER, $url);
				//curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
				//curl_setopt ($ch, CURLOPT_FAILONERROR, true);
				//curl_setopt ($ch, CURLOPT_POST, 1);
				curl_setopt ($ch, CURLOPT_USERPWD, $username.':'.$password);
				$result = curl_exec ($ch);
				curl_close($ch);

				if ($filewrite == true)
				{
						$file_txt = IPS_GetKernelDir()."media\\owncloud_".$id.".txt";
						$fp = fopen($file_txt, 'wb');
						fwrite($fp, $result);
						fclose($fp);
				}

				$kalender_arr_komplett = explode("BEGIN:VEVENT", $result);

				//alle Datensätze durchlaufen
				foreach($kalender_arr_komplett as $key => $value)
				{
						if (($value <> "") && ($key > 0)) // Leere Einträge filtern
						{
								$value = str_replace(chr(10),'',$value);
								$sresult = explode(chr(13), $value);
								$startTime = '';
								$endTime = '';
								$reminderTime = -1;
								$rruleFreq = '';
								$rruleCount = '';
								$rruleEnd = '';
								$rruleEndtxt = '';
								$rruleDays = '';
								$rruleMonth = '';
								$rruleMonthDay = '';
								$rruleIntervall = '';
								$thisData = '';
								$thisData['Beschreibung'] = '';

								if ($debug) IPS_LogMessage("owncloud", "T:$key
");
				            foreach($sresult as $svalue)
								{
									if ($svalue <> "")
									{
										$xvalue = explode(':',$svalue);
								      $xvalue[0] = str_replace(chr(13),'',$xvalue[0]);
										if ($xvalue[0] == "SUMMARY")
										{
												$title = "";
												for($i = 1; $i < (count($xvalue) ); $i++)
												{
															if ($i > 1) $title .= ":";
															$title.= iconv('UTF-8','ISO-8859-15',$xvalue[$i]);
												}
												$thisData['Bezeichnung'] = $title;

										}

										// Start Datum/Zeit filtern
										if (substr($xvalue[0],0,7) == "DTSTART")
										{
												if (strlen($xvalue[1]) == 8)
												{
														$startyear = substr($xvalue[1],0,4);
														$startmonth = substr($xvalue[1],4,2);
														$startday = substr($xvalue[1],6,2);
										   	   	$startTime = strtotime( "$startday.$startmonth.$startyear 00:00" );
												}
												else
												{
														$startyear = substr($xvalue[1],0,4);
														$startmonth = substr($xvalue[1],4,2);
														$startday = substr($xvalue[1],6,2);
														$starthour = substr($xvalue[1],9,2);
														$startminute = substr($xvalue[1],11,2);
										   	   	$startTime = strtotime( "$startday.$startmonth.$startyear $starthour:$startminute" );
										   	}
										}

										// Ende Datum/Zeit filtern
										if (substr($xvalue[0],0,5) == "DTEND")
										{
											if (strlen($xvalue[1]) == 8)
											{
													$endyear = substr($xvalue[1],0,4);
													$endmonth = substr($xvalue[1],4,2);
													$endday = substr($xvalue[1],6,2);
								   	   		$endTime = strtotime( "$endday.$endmonth.$endyear 00:00" );
											}
											else
											{
													$endyear = substr($xvalue[1],0,4);
													$endmonth = substr($xvalue[1],4,2);
													$endday = substr($xvalue[1],6,2);
													$endhour = substr($xvalue[1],9,2);
													$endminute = substr($xvalue[1],11,2);
								   	   		$endTime = strtotime( "$endday.$endmonth.$endyear $endhour:$endminute" );
											}
										}

										if (substr($xvalue[0],0,5) == "RRULE")
										{
											$rrule = explode(';',$xvalue[1]);
							            foreach($rrule as $xrule)
											{
											      if ($xrule == "FREQ=DAILY") $rruleFreq = "täglich";
											      if ($xrule == "FREQ=WEEKLY") $rruleFreq = "wöchentlich";
											      if ($xrule == "FREQ=MONTHLY") $rruleFreq = "monatlich";
											      if ($xrule == "FREQ=YEARLY") $rruleFreq = "jährlich";
											      if (substr($xrule,0,6) == "COUNT=") $rruleCount = substr($xrule,6,strlen($xrule));
											      if (substr($xrule,0,6) == "BYDAY=") $rruleDays = substr($xrule,6,strlen($xrule));
											      if (substr($xrule,0,8) == "BYMONTH=") $rruleMonth = substr($xrule,8,strlen($xrule));
											      if (substr($xrule,0,11) == "BYMONTHDAY=") $rruleMonthDay = substr($xrule,11,strlen($xrule));
											      if (substr($xrule,0,9) == "INTERVAL=") $rruleIntervall = substr($xrule,9,strlen($xrule));
											      if (substr($xrule,0,6) == "UNTIL=")
													{
															$ryear = substr($xrule,6,4);
															$rmonth = substr($xrule,10,2);
															$rday = substr($xrule,12,2);
															$rhour = substr($xrule,15,2);
															$rminute = substr($xrule,17,2);
						   								$rruleEnd  = strtotime( "$rday.$rmonth.$ryear" );
															$rruleEndtxt = "$rday.$rmonth.$ryear";
													}
											}
										}

										if ((substr($xvalue[0],0,11) == "DESCRIPTION") && ($thisData['Beschreibung'] == ''))
										{
		   								$thisData['Beschreibung'] = iconv('UTF-8','ISO-8859-15',$xvalue[1]);
										}

										if (substr($xvalue[0],0,8) == "LOCATION")
										{
		   								$thisData['Ort'] = iconv('UTF-8','ISO-8859-15',$xvalue[1]);
										}

										if (substr($xvalue[0],0,10) == "CATEGORIES")
										{
		   								$thisData['Kategorie'] = $xvalue[1];
										}


										if ((substr($xvalue[0],0,7) == "TRIGGER") )
										{
												if ((substr($xvalue[0],14,8) == "DURATION") && ($reminderTime == -1))
												{
													   if (substr($xvalue[1],strlen($xvalue[1])-1,strlen($xvalue[1])) == "S")
													   {
													   		$reminderTime = substr($xvalue[1],3,strlen($xvalue[1])-4);
													   }
													   else if (substr($xvalue[1],strlen($xvalue[1])-1,strlen($xvalue[1])) == "M")
													   {
													   		$reminderTime = substr($xvalue[1],3,strlen($xvalue[1])-4);
													   }
													   else if (substr($xvalue[1],strlen($xvalue[1])-1,strlen($xvalue[1])) == "H")
													   {
													   		$reminderTime = substr($xvalue[1],3,strlen($xvalue[1])-1) * 60;
														}
													   else if (substr($xvalue[1],strlen($xvalue[1])-1,strlen($xvalue[1])) == "D")
													   {
													   		$reminderTime = substr($xvalue[1],3,strlen($xvalue[1])-1) * 60 * 24;
														}
												}
										}
									}
								}

								$thisData['Datum'] = $startTime;
								$thisData['ZeitTxt'] = date("H:i", $startTime);
								$thisData['DatumTxt'] = date("d.m.Y", $startTime);

								if ($endTime>0)
								{
										$thisData['EndZeitTxt'] = date("H:i", $endTime);
										$thisData['EndDatumTxt'] = date("d.m.Y", $endTime);
										if($thisData['ZeitTxt'] == "00:00" && $thisData['EndZeitTxt'] == "00:00")
										$thisData['EndDatumTxt'] = date("d.m.Y", strtotime($thisData['EndDatumTxt']."-1 day"));
								}
								else
								{
										$thisData['EndZeitTxt'] = '';
										$thisData['EndDatumTxt'] = '';
								}

								if ($reminderTime >= 0)
								{
								      $reminder = $startTime - ($reminderTime *60);
										$thisData['ReminderTime'] = $reminder;
										$thisData['ReminderTimeTxt'] = date("H:i", $reminder);
								}else{
										$thisData['ReminderTime'] = '';
										$thisData['ReminderTimeTxt'] = '';
								}

								$thisData['RRuleFreq'] = $rruleFreq;
								$thisData['RRuleEnd'] = $rruleEnd;
								$thisData['RRuleEndTxt'] = $rruleEndtxt;
								$thisData['RRuleCount'] = $rruleCount;
								$thisData['RRuleDays'] = $rruleDays;
								$thisData['RRuleMonth'] = $rruleMonth;
								$thisData['RRuleMonthDay'] = $rruleMonthDay;

								if ($debug)	print_r($thisData);

								CheckWiederholungen($thisData);


						}
				}
	}

	function formatTag($DateItem) {
		$Translation = array(
		    'Mon'       => 'MO',
		    'Tue'       => 'TH',
		    'Wed'       => 'WE',
		    'Thu'       => 'TH',
		    'Fri'       => 'FR',
		    'Sat'       => 'SA',
		    'Sun'       => 'SU',
		);
		return $Translation[$DateItem];
	}


   function CheckWiederholungen($Data)
   {
			global $calcData, $maxDays;

//if($Data['Bezeichnung'] == "Neujahr Web") print_r($Data);

         // Zeitlich mit Enddatum begrenzte Wiederholungen
			if ($Data['RRuleFreq'] <> '' && $Data['RRuleEnd'] <> '')
			{
			      $day = strtotime($Data['DatumTxt']);
					$rend = strtotime($Data['RRuleEndTxt']);
			      while ($rend >= $day)
			      {
				         if (($Data['RRuleDays'] == '') || (strpos($Data['RRuleDays'],formatTag(date("D", $day))) !== false ))
				         {
			                  $Data['DatumTxt'] = date("d.m.Y", $day);
			                  $Data['Datum'] = strtotime($Data['DatumTxt']." ".$Data['ZeitTxt']);
			                  $Data['EndDatumTxt'] = date("d.m.Y", $day);
			                  $Data['ReminderTime'] = strtotime($Data['DatumTxt']." ".$Data['ReminderTimeTxt']);
									if (( $Data['Datum'] >= time()) && ( $Data['Datum'] <= strtotime("+$maxDays day") )) $calcData[] = $Data;
							}
							if ($Data['RRuleFreq'] == 'täglich') $day = strtotime("+1 day",$day);
							if ($Data['RRuleFreq'] == 'wöchentlich') $day = strtotime("+7 day",$day);
							if ($Data['RRuleFreq'] == 'monatlich') $day = strtotime("+1 month",$day);
							if ($Data['RRuleFreq'] == 'jährlich') $day = strtotime("+1 year",$day);
					}
			}
			// Zeitlich mit Anzahl begrenzte Wiederholungen
			elseif ($Data['RRuleFreq'] <> '' && $Data['RRuleCount'] <> '')
			{
			      $day = strtotime($Data['DatumTxt']);
			      $count = 0;
			      while ($count <= $Data['RRuleCount']+1)
			      {
				         if (($Data['RRuleDays'] == '') || (strpos($Data['RRuleDays'],formatTag(date("D", $day))) !== false ))
				         {
			                  $Data['DatumTxt'] = date("d.m.Y", $day);
			                  $Data['Datum'] = strtotime($Data['DatumTxt']." ".$Data['ZeitTxt']);
			                  $Data['EndDatumTxt'] = date("d.m.Y", $day);
			                  $Data['ReminderTime'] = strtotime($Data['DatumTxt']." ".$Data['ReminderTimeTxt']);
									if (( $Data['Datum'] >= time()) && ( $Data['Datum'] <= strtotime("+$maxDays day")))  $calcData[] = $Data;
							}
							if ($Data['RRuleFreq'] == 'täglich') $day = strtotime("+1 day",$day);
							if ($Data['RRuleFreq'] == 'wöchentlich') $day = strtotime("+7 day",$day);
							if ($Data['RRuleFreq'] == 'monatlich') $day = strtotime("+1 month",$day);
							if ($Data['RRuleFreq'] == 'jährlich') $day = strtotime("+1 year",$day);
							$count++;
					}
			}
			// Zeitlich unbegrenzte Wiederholungen
			elseif ($Data['RRuleFreq'] <> '' && $Data['RRuleCount'] == '' && $Data['RRuleEnd'] == '')
			{

					$day = strtotime($Data['DatumTxt']);
			      do
			      {
				         if (($Data['RRuleDays'] == '') || (strpos($Data['RRuleDays'],formatTag(date("D", $day))) !== false ))
				         {
			                  $Data['DatumTxt'] = date("d.m.Y", $day);
			                  $Data['Datum'] = strtotime($Data['DatumTxt']." ".$Data['ZeitTxt']);
			                  $Data['EndDatumTxt'] = date("d.m.Y", $day);
			                  $Data['ReminderTime'] = strtotime($Data['DatumTxt']." ".$Data['ReminderTimeTxt']);
									if (( $day >= time()) && ( $day <= strtotime("+$maxDays day") ))	$calcData[] = $Data;
							}
							if ($Data['RRuleFreq'] == 'täglich') $day = strtotime("+1 day",$day);
							if ($Data['RRuleFreq'] == 'wöchentlich') $day = strtotime("+7 day",$day);
							if ($Data['RRuleFreq'] == 'monatlich') $day = strtotime("+1 month",$day);
							if ($Data['RRuleFreq'] == 'jährlich') $day = strtotime("+1 year",$day);
					} while ( $day <= strtotime("+$maxDays day"));
			}

			// ohne Wiederholungen
			else
			{
					if (( $Data['Datum'] >= strtotime(date("d.m.Y"))) && ( $Data['Datum'] <= strtotime("+$maxDays day")))
					{
							$calcData[] = $Data;
					}
			}

	}

	// ----------------------------------------------------------------------------------------------------------------------------
	function get_Feiertag( $date ){
		if ($date == "") $date = mktime(0,0,0,date("m"),date("d"),date("y"));
		$Fdays = getHolidays(Date('Y', $date));
		$return = false;
		foreach($Fdays as $value) {
			list($key, $value) = each($Fdays);

			//schauen ob Termin auf heute($erg = 0) oder morgen fällt ($erg = -1)
			$diff       = $date-$value;
			$erg        = $diff/((60*60)*24);
			//Feiertag gefunden
			if ($erg == 0) {$return = true; print "Feiertage 
";}
		}
		return $return;
	}

	// ----------------------------------------------------------------------------------------------------------------------------
  		function getEasterSundayTime($year)	{
   		$p = floor($year/100);
   		$r = floor($year/400);
   		$o = floor(($p*8+13)/25)-2;
   		$w = (19*($year%19)+(13+$p-$r-$o)%30)%30;
   		$e = ($w==29?28:$w);
   		if ($w==28&&($year%19)>10) $e=27;
   		$day = (2*($year%4)+4*($year%7)+6*$e+(4+$p-$r)%7)%7+22+$e;
   		$month = ($day>31?4:3);
   		if ($day>31) $day-=31;
   		return mktime(0, 0, 0, $month, $day, $year);
  		}

	// ----------------------------------------------------------------------------------------------------------------------------
  		function getHolidays($year) {
			Global $bland;

    		$time = getEasterSundayTime($year);
			$days[""] 									= 0;
		 	$days["Neujahr"] 							= mktime(0, 0, 0, 1, 1, $year);
    		$days["Karfreitag"] 						= $time-(86400*2);
    		$days["Ostersonntag"] 					= $time;
    		$days["Ostermontag"] 					= $time+(86400 /*[Objekt #20864 existiert nicht]*/);
    		$days["Tag der Arbeit"]        		= mktime(0, 0, 0, 5, 1, $year);
    		$days["Christi Himmelfahrt"] 			= $time+(86400*39);
    		$days["Pfingstsonntag"] 				= $time+(86400*49);
    		$days["Pfingstmontag"] 					= $time+(86400*50);
    		$days["Tag der deutschen Einheit"] 	= mktime(0, 0, 0, 10, 3, $year);
    		$days["Buß- und Bettag"] 				= mktime(0, 0, 0, 11, 26+(7-date('w', mktime(0, 0, 0, 11, 26, $year)))-11, $year); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    		$days["1. Weihnachtsfeiertag"] 		= mktime(0, 0, 0, 12, 25, $year);
    		$days["2. Weihnachtsfeiertag"] 		= mktime(0, 0, 0, 12, 26, $year);

			//*******************************
			// Fester $Feiertag in BW, BY, ST
			//*******************************
			if (($bland == "BW") or ($bland == "BY") or ($bland == "ST")) {
		    		$days["Heilige 3 Könige"] 			= mktime(0, 0, 0, 1, 6, $year); //!!!!!!!!!!!!!!!!!!!!!!!
			}

			//***************************************
			// Fester $Feiertag in BB, MV, SA, ST, TH
			//***************************************
			if (($bland == "BB") or ($bland == "MV") or ($bland == "SA") or ($bland == "ST") or ($bland == "TH")) {
		    		$days["Reformationstag"] 			   = mktime(0, 0, 0, 10, 31, $year); //!!!!!!!!!!!!!!!!!!!!!
			}

			//***************************************
			// Fester $Feiertag in BW, BY, NW, RP, SL
			//***************************************
			if (($bland == "BW") or ($bland == "BY") or ($bland == "NW") or ($bland == "RP") or ($bland == "SL")) {
		    		$days["Allerheiligen"] 					= mktime(0, 0, 0, 11, 1, $year);
			}

			//*******************************************
			// Fester $Feiertag in BY (nicht überall), SL
			//*******************************************
			if (($bland == "BY") or ($bland == "SL")) {
		    		$days["Maria Himmelfahrt"] 			= mktime(0, 0, 0, 08, 15, $year); //!!!!!!!!!!!!!!!!!!!!!
			}

			//**********************************************************************
			// Bewegliche Feiertage BW, BY, HE, NW, RP, SL, (SA, TH nicht überall)
			//**********************************************************************
			if (($bland == "BW") or ($bland == "BY") or ($bland == "HE") or ($bland == "NW") or ($bland == "RP") or ($bland == "SL") or ($bland == "SA") or ($bland == "TH")) {
			    		$days["Fronleichnam"] 				= $time+(86400*60); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
			}

    		return $days;
		}

?>

Welches Nas hast Du?

Nimm mal bitte zum testen andere Textgrössen.

Sonst ist mir nicht aufgefallen. Gucke aber nur mit Handy.

Ich habe ein QNAP TS-469 Pro
Ändern der Schrift hat nichts geändert.

Die 1.06 „upgedated“ und nach einigen Anpassungen läuft sie dann auch wieder. TOP Script :).

Die Aussage

Alles ab
/** …

passt nicht, da du ja Parameter im Kalender- und StyleText-Array sowie zwei Variablen ergänzt hast ;).

Wenn du noch einen StyleText für die Tabelle ergänzen könntest:

$calDataTxt = "<table style='border-spacing:0px; width:100%; font-family: Arial;'.$StyleText[xx]>"

dann könnte man die Darstellung auch relativ einfach für das Dashboard anpassen.

Und wenn du in der folgenden Zeile auch noch eine Funktion (ModifyTitle) ergänzen könnest, über die man eigene Anpassungen im Titel durchführen kann, dann müsste ich im Code überhaupt nichts mehr ändern :D.

$title.= iconv('UTF-8','ISO-8859-15',ModifyTitle($xvalue[$i]));

Hintergrund: Ich nutze nur einen „Firmenkalender“ in dem meine privaten Termine mit „PR *“ beginnen, was ich bei der Anzeige Zuhause nicht benötige.

Version 1.07:

  • Bugfix: Termine mit Wiederholung wurden in ‚Heute‘ nicht angezeigt.
  • Bugfix: Umlaut bei Ganztägig war in IPS4 nicht korrekt
  • Neu: Schriftgöße für ‚Heutige‘ Termine wählbar <$StyleText[14]>
  • Neu: Abgelaufene Termine in der ‚Heute‘ Ansicht können ausgeblendet werden <$visualoldtimes>
  • Neu: Es können jetzt beliebig viele Erinnerungen angelegt werden.
  • Neu: Eine Erinnerung kann dynamisch (z.B.15min vorher oder nachher) oder statisch (absoluter Zeitpunkt) erfolgen
  • Neu: Dynamische Erinnerungen werden in Abhängigkeit der Terminwiederholung mitgeführt.
  • Neu: Alle Erinnerungen werden in Klammern ohne Datum angezeigt.
  • Neu: Bei jeder Erinnerung wird eine Mail verschickt, sofern Mailversand aktiviert wurde.

Zusätzlich zum gewohnt update müssen im Konfig Bereich 2 Erganzüngen durchgeführt werden.

  1. Nach
$visualisierung   = 0;                 // Einzelne Kalender in 0 = einem Ordner, 1 = Kategorien, 2 = in Dummy Instanzen

Folgendes Ergängen:

$visualisierung   = 0;                 // Einzelne Kalender in 0 = einem Ordner, 1 = Kategorien, 2 = in Dummy Instanzen
$visualoldtimes   = true;              // Sollen abgelaufene Termine von Heute angezeigt werden false = Termine nach Endzeit, werden nicht mehr angezeigt AB V1.07

  1. Nach
$StyleText[13] = "normal"; 				// Textgröße Eintrag

Folgendes Ergängen:

$StyleText[13] = "normal"; 				// Textgröße Eintrag
$StyleText[14] = "x-large"; 				// Textgröße Heutiger Eintrag AB V1.07

.

@ralf Hi zu spät gesehen
1.
Update siehe owncloud - die Zentrale für Kalender und Adressbuch - Seite 7

Kann ich in die nächste Version einbauen. Ist ja nucht viel.

Wo soll das dann das Script eingetragen werden?
In Konfigbereich passt es nicht, da eine Funktion.
Und im Funkrionsbereich müßte ich es mitführen, was kein anderer benutzt.
Hast Du einige sinnige Idee?

Super, Umlaute passen.
Erinnerungen werden aber immer noch nicht angezeigt und gemailt. Erstellt habe ich diese unter IOS.
So siehts aus:
Erinnerung 5min vorher:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:ownCloud Calendar 0.6.6
X-WR-CALNAME:testmail
BEGIN:VEVENT
CREATED:20160102T134048Z
DTEND;TZID=Europe/Berlin:20160102T155000
DTSTAMP:20160102T134050Z
DTSTART;TZID=Europe/Berlin:20160102T145000
LAST-MODIFIED:20160102T134048Z
SEQUENCE:0
SUMMARY:testmail
TRANSP:OPAQUE
UID:87C5F77A-6481-4EA5-B596-4DE36A2861CF
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Erinnerung
TRIGGER:-PT5M
UID:E0F396C1-F6C4-44CC-88C1-AAB09CAF3757
X-WR-ALARMUID:E0F396C1-F6C4-44CC-88C1-AAB09CAF3757
END:VALARM
END:VEVENT
END:VCALENDAR

Erinnerung Am Ereignistag (09:00)

BEGIN:VCALENDAR
VERSION:2.0
PRODID:ownCloud Calendar 0.6.6
X-WR-CALNAME:testmail2
BEGIN:VEVENT
CREATED:20160102T134307Z
DTEND;VALUE=DATE:20160104
DTSTAMP:20160102T135634Z
DTSTART;VALUE=DATE:20160103
LAST-MODIFIED:20160102T135300Z
SEQUENCE:1
SUMMARY:testmail2
TRANSP:OPAQUE
UID:A2F476A0-A564-48FF-B135-D687DABBECDA
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Erinnerung
TRIGGER:PT9H
UID:E48AA55D-B301-44A5-89F9-BC76C06BDF66
X-WR-ALARMUID:E48AA55D-B301-44A5-89F9-BC76C06BDF66
END:VALARM
END:VEVENT
END:VCALENDAR

Erinnerung 1Tag vorher (09:00)

BEGIN:VCALENDAR
VERSION:2.0
PRODID:ownCloud Calendar 0.6.6
X-WR-CALNAME:Geb. Angelika (1966)
BEGIN:VEVENT
CREATED:20150205T200155Z
DTEND;VALUE=DATE:20150221
DTSTAMP:20150219T171646Z
DTSTART;VALUE=DATE:20150220
LAST-MODIFIED:20150219T122505Z
RRULE:FREQ=YEARLY
SEQUENCE:0
SUMMARY:Geb. Angelika (1966)
TRANSP:OPAQUE
UID:e3ef79b187
BEGIN:VALARM
ACKNOWLEDGED:20150219T122505Z
ACTION:DISPLAY
DESCRIPTION:Erinnerung
TRIGGER:-PT15H
UID:DC089DD0-C52F-44BB-BBA9-489859B9CAA2
X-WR-ALARMUID:DC089DD0-C52F-44BB-BBA9-489859B9CAA2
END:VALARM
BEGIN:VALARM
ACTION:NONE
TRIGGER;VALUE=DATE-TIME:19760401T005545Z
END:VALARM
END:VEVENT
END:VCALENDAR

Version 1.08:

  • Bugfix: Termine ohne Wiederholung wurden die Erinnerungen nicht erzeugt.
  • Neu: Tabellen Kopf kann ergänzt werden $StyleText[20] Muß in Konfig ergänzt werden
  • Neu: Die TerminTitel können über ein Userscript modifiziert werden. Dazu wird ein Userscript erstellt. Da können die Titel manipuliert werden (Ralf sein Wunsch)
  • Neu: Die HTML Ausgabe kann in einer Datei gespeichert werden. $htmlfilewrite Ziel: \media\owncloud_xx.html. Schon seit einigen Versionen drin.

Folgende Zeilen müssen geändert werden:

$StyleText[14] = "x-large"; 				// Textgröße Heutiger Eintrag AB V1.07

Ändern zu:

$StyleText[14] = "x-large"; 				// Textgröße Heutiger Eintrag AB V1.07

$StyleText[20] = "font-family: Arial;"; // Style der Tabelle änderbar

So ich hoffe die letzten Fehler sind raus.

@ralf: Ich hoffe es passt so. Alle wünsche umgesetzt.

Sorry, Erinnerungen werden immer noch nicht angezeigt.