Hier nun der HTML-Monatskalender.
<?
/*=============================================
skrGoogleMonatskalender - Martin Heinzel - 29.11.2011
Version: 0.1
Beschreibung:
Mit diesem Skript wird ein Monatskalender erstellt.
Dieser Kalender enthält alle Termine aus dem Google Kalender
in Form eines Farbumschlag. Der aktuelle Tag wird an hand
eines gesonderten Farbumschlages dargestellt.
Änderungen
----------
27.11.2014 von Version 1.0 -> 2.0
Beschreibung:
Script wurde angepasst auf die Google Kalender API V3
tt.mm.yyyy von Version x.x -> x.x
Berschreibung:
================================================*/
// Variablen Deklaration --------------------------------------
// Variablen
//--------------
$Calender_ID = 'Kalender-ID@googlemail.com';
$Client_ID = "1234.apps.googleusercontent.com";
$EMail = "1234@developer.gserviceaccount.com";
$key_file_location = IPS_GetKernelDir()."scripts\\certificates\\Kalender-af58c75d630b.p12";
$arrEvent_Time_akt = array();
$arrEvent_Titel_akt = array();
//-------------------------------------------------------------
//benötigte Funktionen/Klassen
set_include_path(IPS_GetKernelDir()."scripts\\google-api-php-client\\src");
require_once 'google-api-php-client/autoload.php';
//--------------------------- Main ----------------------------
// Die Verbindung zum Kalender aufbauen
$client = new Google_Client();
$client->setApplicationName("Kalender");
$service = new Google_Service_Calendar($client);
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials($EMail, array('https://www.googleapis.com/auth/calendar'), $key);
$client->setAssertionCredentials($cred);
// Event lesen
//==============
// Event ab dem aktuellem Datum
$start_date = date("Y-m")."-01T00:00:00+01:00";
$end_date = date("Y-m")."-".date('t')."T23:59:59+01:00";
// Übergeben der Daten der Suchanfrage
$optParams = array('singleEvents' => True,
'timeMin' => $start_date,
'timeMax' => $end_date,
'orderBy' => 'startTime',
'maxResults' => 30);
// Die Suchanfrage ausführen
$events = $service->events->listEvents($Calender_ID, $optParams);
// Das Ergebnis durchsuchen
foreach ($events->getItems() as $event)
{
// title
$arrEvent_Titel_akt[] = utf8_decode($event->getSummary());
// Auslesen der Startzeit
If($event->getStart()->dateTime <> "")
{
$Date_Time = $event->getStart()->dateTime;
}
else
{
$Date_Time = $event->getStart()->date;
}
// Zerlegen der Startzeit
if(strpos($Date_Time, "T")>0)
{
$arrDate_Time = explode("T", $Date_Time);
$arrEvent_Time_akt[] = $arrDate_Time[0];
}
else
{
$arrEvent_Time_akt[] = $Date_Time;
}
}
$month = date('n');
$year = date('Y');
$browser = calender_month($month, $year, $arrEvent_Time_akt);
//echo $browser;
SetValue(CreateVariableByName($IPS_SELF, "Monatskalender", 3, "~HTMLBox"), $browser);
//------------------------- Main ENDE --------------------------
//------------------------ Funktionen -------------------------
function calender_month($month, $year, $arrEvent_Time)
{
/*=============================================
calender_year - Martin Heinzel - 13.07.2010
Version: 1.0
Beschreibung:
Mit diesem Skript wird ein Monatskalender erstellt.
Dieser Kalender enthält alle Termine aus dem Google
Kalender in Form eines Farbumschlag. Der aktuelle
Tag wird an hand eines gesonderten Farbumschlages
dargestellt.
Änderungen
----------
tt.mm.yyyy von Version x.x -> x.x
Berschreibung:
================================================*/
// Variablen Deklaration --------------------------------------
// Variablen
//--------------
$arr_Month = array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
$key = $month -1;
$act_day = date('j');
$act_month = date('n');
//-------------------------------------------------------------
//--------------------------- Main ----------------------------
//Bitte anpassen
//------------------------------------------
//Hintergrundfarbe Monat
$Style_MonthHeader = 'bgcolor="#C0C0C0"';
//Hintergrundfarbe der Kopfdaten -> Wochentage
$Style_DayHeader = 'bgcolor="#808080"';
//Hintergrundfarbe des aktuellen Tages
$Style_Today = 'bgcolor="#FF00FF"';
//Hintergrundfarbe der Termine
$Style_Appointment = 'bgcolor="#800080"';
//Hintergrundfarbe gesamt
$Style_background = 'background-color:#F6F6F6';
//------------------------------------------
//zusammenstellen des Kopfes
$DayHeader = '<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Mo</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Di</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Mi</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Do</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Fr</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Sa</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">So</font></th>';
//Aussehen der Zellen
$Style_DayCell = 'width="20" height="20" align="center"';
//erstellen der Monatsansicht mit dem Monat und den Tageskopfdaten
$Monatskalender ='<table border="1" summary="Kalender '.$arr_Month[$key].'">
<tr>
<th colspan="7" '.$Style_MonthHeader.'>'.$arr_Month[$key].'</th>
</tr>
<tr>'.$DayHeader.'</tr>';
//wie viele Tage hat dieser Monat
$total_days = date('t', mktime(0, 0, 0, $month, 1, $year));
//an welchem Tag beginnt der Monat -> Da die Woche mit Montag beginnt muss 1 subtrahiert werden
$day_offset = (date('w', mktime(0, 0, 0, $month, 1, $year)))-1;
//Das Ergebnis kann negativ sein. In diesem Fall ist der Tag "Sonntag"
if($day_offset < 0)
{
$day_offset = 6;
}
//initialisieren des Tageszählers
$Day_Count = 1;
//ein Kalenderblatt (ein Monat) bekommt 6 Wochenreihen
for($week = 0; $week < 6; $week++)
{
$Monatskalender .='<tr>';
//eine Woche hat immer noch 7 Tage
for($day = 0; $day < 7; $day++)
{
//Die Tage vor dem ersten müssen mit leeren Zellen aufgefüllt werden
if($day_offset > 0)
{
$Monatskalender .='<td '.$Style_DayCell.'>*</td>';
$day_offset -= 1;
}
else
{
//ausfüllen der Tage mit Tageszahlen
if($Day_Count <= $total_days)
{
//Der aktuelle Tag wird eingefärbt
if($month == $act_month and $Day_Count == $act_day)
{
$Monatskalender .='<td '.$Style_DayCell.' '.$Style_Today.'>'.($Day_Count).'</td>';
}
else
{
//Tage mit einem Termin werden eingefärbt
$StartDay = $Day_Count;
if(strlen($StartDay)< 2) $StartDay = "0".$StartDay;
$StartMonth = $month;
if(strlen($StartMonth)< 2) $StartMonth = "0".$StartMonth;
$Appointment = False;
$Appointment_Time = $year."-".$StartMonth."-".$StartDay;
foreach ($arrEvent_Time as $Event_Time)
{
If($Event_Time == $Appointment_Time) $Appointment = True;
}
if($Appointment)
{
$Monatskalender .='<td '.$Style_DayCell.' '.$Style_Appointment.'>'.($Day_Count).'</td>';
}
else
{
//alle anderen Tagen sind ohne färbung
$Monatskalender .='<td '.$Style_DayCell.'>'.($Day_Count).'</td>';
}
}
$Day_Count += 1;
}
else
{
//alle Tage die über die maximalen Monatstage gehen werden mit leeren Zellen aufgefüllt
$Monatskalender .='<td '.$Style_DayCell.'>*</td>';
}
}
}
//Ende der Wochenreihe
$Monatskalender .='</tr>';
}
//Ende des Monats
$Monatskalender .='</table>';
//nur noch was schickes drum herum
$browser='
<html>
<head>
<style type="text/css" media="screen">
body { '.$Style_background.';
font-family: Arial;
}
</style>
</head>
<body scroll="no">'
.$Monatskalender.
'</body>
</html>';
//und ablegen
return $browser;
}
function CreateVariableByName($id, $name, $type, $profile = "")
{
global $IPS_SELF;
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid === false)
{
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
}
return $vid;
}
//--------------------- Funktionen ENDE ------------------------
?>
Der HTML-Monatskalender für zwei Monate
<?
/*=============================================
skrGoogleMonatskalender - Martin Heinzel - 29.11.2011
Version: 2.0
Beschreibung:
Mit diesem Skript wird ein Monatskalender erstellt.
Dieser Kalender enthält alle Termine aus dem Google Kalender
in Form eines Farbumschlag. Der aktuelle Tag wird an hand
eines gesonderten Farbumschlages dargestellt.
Änderungen
----------
27.11.2014 von Version 1.0 -> 2.0
Beschreibung:
Script wurde angepasst auf die Google Kalender API V3
tt.mm.yyyy von Version x.x -> x.x
Berschreibung:
================================================*/
// Variablen Deklaration --------------------------------------
// Variablen
//--------------
$Calender_ID = 'Kalender-ID@googlemail.com';
$Client_ID = "1234.apps.googleusercontent.com";
$EMail = "1234@developer.gserviceaccount.com";
$key_file_location = IPS_GetKernelDir()."scripts\\certificates\\Kalender-af58c75d630b.p12";
$arrEvent_Time_akt = array();
$arrEvent_Titel_akt = array();
$arrEvent_Time_naechste = array();
$arrEvent_Titel_naechste = array();
//-------------------------------------------------------------
//benötigte Funktionen/Klassen
set_include_path(IPS_GetKernelDir()."scripts\\google-api-php-client\\src");
require_once 'google-api-php-client/autoload.php';
//--------------------------- Main ----------------------------
// Die Verbindung zum Kalender aufbauen
$client = new Google_Client();
$client->setApplicationName("Kalender");
$service = new Google_Service_Calendar($client);
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials($EMail, array('https://www.googleapis.com/auth/calendar'), $key);
$client->setAssertionCredentials($cred);
// Event lesen
//==============
//2014-11-27T20:09:15+01:00
// Event ab dem aktuellem Datum
$start_date = date("Y-m")."-01T00:00:00+01:00";
$end_date = date("Y-m")."-".date('t')."T23:59:59+01:00";
// Übergeben der Daten der Suchanfrage
$optParams = array('singleEvents' => True,
'timeMin' => $start_date,
'timeMax' => $end_date,
'orderBy' => 'startTime',
'maxResults' => 30);
// Die Suchanfrage ausführen
$events = $service->events->listEvents($Calender_ID, $optParams);
// Das Ergebnis durchsuchen
foreach ($events->getItems() as $event)
{
// title
$arrEvent_Titel_akt[] = utf8_decode($event->getSummary());
// Auslesen der Startzeit
If($event->getStart()->dateTime <> "")
{
$Date_Time = $event->getStart()->dateTime;
}
else
{
$Date_Time = $event->getStart()->date;
}
// Zerlegen der Startzeit
if(strpos($Date_Time, "T")>0)
{
$arrDate_Time = explode("T", $Date_Time);
$arrEvent_Time_akt[] = $arrDate_Time[0];
}
else
{
$arrEvent_Time_akt[] = $Date_Time;
}
}
$month = date('n');
$year = date('Y');
$browser = calender_month($month, $year, $arrEvent_Time_akt);
//echo $browser;
SetValue(CreateVariableByName($IPS_SELF, "Monatskalender", 3, "~HTMLBox"), $browser);
// Event lesen
//==============
// Event ab dem aktuellem Datum
$start_date = date("Y-m", mktime(0, 0, 0, date("m")+1, 1, date("Y")))."-01T00:00:00+01:00";
$end_date = date("Y-m", mktime(0, 0, 0, date("m")+1, 1, date("Y")))."-".date('t')."T23:59:59+01:00";
// Übergeben der Daten der Suchanfrage
$optParams = array('singleEvents' => True,
'timeMin' => $start_date,
'timeMax' => $end_date,
'orderBy' => 'startTime',
'maxResults' => 30);
// Die Suchanfrage ausführen
$events = $service->events->listEvents($Calender_ID, $optParams);
// Das Ergebnis durchsuchen
foreach ($events->getItems() as $event)
{
// title
$arrEvent_Titel_naechste[] = utf8_decode($event->getSummary());
// Auslesen der Startzeit
If($event->getStart()->dateTime <> "")
{
$Date_Time = $event->getStart()->dateTime;
}
else
{
$Date_Time = $event->getStart()->date;
}
// Zerlegen der Startzeit
if(strpos($Date_Time, "T")>0)
{
$arrDate_Time = explode("T", $Date_Time);
$arrEvent_Time_naechste[] = $arrDate_Time[0];
}
else
{
$arrEvent_Time_naechste[] = $Date_Time;
}
}
$month = date('n', mktime(0, 0, 0, date("m")+1, 1, date("Y")));
$year = date('Y', mktime(0, 0, 0, date("m")+1, 1, date("Y")));
$browser = calender_month($month, $year, $arrEvent_Time_naechste);
//echo $browser;
SetValue(CreateVariableByName($IPS_SELF, "Monatskal_naechster", 3, "~HTMLBox"), $browser);
//------------------------- Main ENDE --------------------------
//------------------------ Funktionen -------------------------
function calender_month($month, $year, $arrEvent_Time)
{
/*=============================================
calender_year - Martin Heinzel - 13.07.2010
Version: 1.0
Beschreibung:
Mit diesem Skript wird ein Monatskalender erstellt.
Dieser Kalender enthält alle Termine aus dem Google
Kalender in Form eines Farbumschlag. Der aktuelle
Tag wird an hand eines gesonderten Farbumschlages
dargestellt.
Änderungen
----------
tt.mm.yyyy von Version x.x -> x.x
Berschreibung:
================================================*/
// Variablen Deklaration --------------------------------------
// Variablen
//--------------
$arr_Month = array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
$key = $month -1;
$act_day = date('j');
$act_month = date('n');
//-------------------------------------------------------------
//--------------------------- Main ----------------------------
//Bitte anpassen
//------------------------------------------
//Hintergrundfarbe Monat
$Style_MonthHeader = 'bgcolor="#C0C0C0"';
//Hintergrundfarbe der Kopfdaten -> Wochentage
$Style_DayHeader = 'bgcolor="#808080"';
//Hintergrundfarbe des aktuellen Tages
$Style_Today = 'bgcolor="#FF00FF"';
//Hintergrundfarbe der Termine
$Style_Appointment = 'bgcolor="#800080"';
//Hintergrundfarbe gesamt
$Style_background = 'background-color:#F6F6F6';
//------------------------------------------
//zusammenstellen des Kopfes
$DayHeader = '<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Mo</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Di</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Mi</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Do</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Fr</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Sa</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">So</font></th>';
//Aussehen der Zellen
$Style_DayCell = 'width="20" height="20" align="center"';
//erstellen der Monatsansicht mit dem Monat und den Tageskopfdaten
$Monatskalender ='<table border="1" summary="Kalender '.$arr_Month[$key].'">
<tr>
<th colspan="7" '.$Style_MonthHeader.'>'.$arr_Month[$key].'</th>
</tr>
<tr>'.$DayHeader.'</tr>';
//wie viele Tage hat dieser Monat
$total_days = date('t', mktime(0, 0, 0, $month, 1, $year));
//an welchem Tag beginnt der Monat -> Da die Woche mit Montag beginnt muss 1 subtrahiert werden
$day_offset = (date('w', mktime(0, 0, 0, $month, 1, $year)))-1;
//Das Ergebnis kann negativ sein. In diesem Fall ist der Tag "Sonntag"
if($day_offset < 0)
{
$day_offset = 6;
}
//initialisieren des Tageszählers
$Day_Count = 1;
//ein Kalenderblatt (ein Monat) bekommt 6 Wochenreihen
for($week = 0; $week < 6; $week++)
{
$Monatskalender .='<tr>';
//eine Woche hat immer noch 7 Tage
for($day = 0; $day < 7; $day++)
{
//Die Tage vor dem ersten müssen mit leeren Zellen aufgefüllt werden
if($day_offset > 0)
{
$Monatskalender .='<td '.$Style_DayCell.'>*</td>';
$day_offset -= 1;
}
else
{
//ausfüllen der Tage mit Tageszahlen
if($Day_Count <= $total_days)
{
//Der aktuelle Tag wird eingefärbt
if($month == $act_month and $Day_Count == $act_day)
{
$Monatskalender .='<td '.$Style_DayCell.' '.$Style_Today.'>'.($Day_Count).'</td>';
}
else
{
//Tage mit einem Termin werden eingefärbt
$StartDay = $Day_Count;
if(strlen($StartDay)< 2) $StartDay = "0".$StartDay;
$StartMonth = $month;
if(strlen($StartMonth)< 2) $StartMonth = "0".$StartMonth;
$Appointment = False;
$Appointment_Time = $year."-".$StartMonth."-".$StartDay;
foreach ($arrEvent_Time as $Event_Time)
{
If($Event_Time == $Appointment_Time) $Appointment = True;
}
if($Appointment)
{
$Monatskalender .='<td '.$Style_DayCell.' '.$Style_Appointment.'>'.($Day_Count).'</td>';
}
else
{
//alle anderen Tagen sind ohne färbung
$Monatskalender .='<td '.$Style_DayCell.'>'.($Day_Count).'</td>';
}
}
$Day_Count += 1;
}
else
{
//alle Tage die über die maximalen Monatstage gehen werden mit leeren Zellen aufgefüllt
$Monatskalender .='<td '.$Style_DayCell.'>*</td>';
}
}
}
//Ende der Wochenreihe
$Monatskalender .='</tr>';
}
//Ende des Monats
$Monatskalender .='</table>';
//nur noch was schickes drum herum
$browser='
<html>
<head>
<style type="text/css" media="screen">
body { '.$Style_background.';
font-family: Arial;
}
</style>
</head>
<body scroll="no">'
.$Monatskalender.
'</body>
</html>';
//und ablegen
return $browser;
}
function CreateVariableByName($id, $name, $type, $profile = "")
{
global $IPS_SELF;
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid === false)
{
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
}
return $vid;
}
//--------------------- Funktionen ENDE ------------------------
?>
Der HTML-Monatskalender mit Keywords
<?
/*=============================================
skrGoogleMonatskalender - Martin Heinzel - 29.11.2011
Version: 0.1
Beschreibung:
Mit diesem Skript wird ein Monatskalender erstellt.
Dieser Kalender enthält alle Termine aus dem Google Kalender
in Form eines Farbumschlag. Der aktuelle Tag wird an hand
eines gesonderten Farbumschlages dargestellt.
Änderungen
----------
27.11.2014 von Version 1.0 -> 2.0
Beschreibung:
Script wurde angepasst auf die Google Kalender API V3
tt.mm.yyyy von Version x.x -> x.x
Berschreibung:
================================================*/
// Variablen Deklaration --------------------------------------
// Variablen
//--------------
$Calender_ID = 'Kalender-ID@googlemail.com';
$Client_ID = "1234.apps.googleusercontent.com";
$EMail = "1234@developer.gserviceaccount.com";
$key_file_location = IPS_GetKernelDir()."scripts\\certificates\\Kalender-af58c75d630b.p12";
$arrEvent_Time_akt = array();
$arrEvent_Titel_akt = array();
$arrStyle_akt = array();
$Keywords = array("graue","braun","blau", "geburtstag");
$Style = array('bgcolor="#808080"','bgcolor="#D2691E"','bgcolor="#87CEFA"', 'bgcolor="#DC143C"');
//-------------------------------------------------------------
//benötigte Funktionen/Klassen
set_include_path(IPS_GetKernelDir()."scripts\\google-api-php-client\\src");
require_once 'google-api-php-client/autoload.php';
//--------------------------- Main ----------------------------
// Die Verbindung zum Kalender aufbauen
$client = new Google_Client();
$client->setApplicationName("Kalender");
$service = new Google_Service_Calendar($client);
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials($EMail, array('https://www.googleapis.com/auth/calendar'), $key);
$client->setAssertionCredentials($cred);
// Event lesen
//==============
//2014-11-27T20:09:15+01:00
// Event ab dem aktuellem Datum
$start_date = date("Y-m")."-01T00:00:00+01:00";
$end_date = date("Y-m")."-".date('t')."T23:59:59+01:00";
// Übergeben der Daten der Suchanfrage
$optParams = array('singleEvents' => True,
'timeMin' => $start_date,
'timeMax' => $end_date,
'orderBy' => 'startTime',
'maxResults' => 30);
// Die Suchanfrage ausführen
$events = $service->events->listEvents($Calender_ID, $optParams);
// Das Ergebnis durchsuchen
foreach ($events->getItems() as $event)
{
// title
$arrEvent_Titel_akt[] = utf8_decode($event->getSummary());
$title_harm = strtolower(utf8_decode($event->getSummary()));
$Loop_count = 0;
// Style
foreach ($Keywords as $Keyword)
{
if(stristr($title_harm, $Keyword) !== false)
{
$arrStyle_akt[] = $Style[$Loop_count];
break;
}
$Loop_count += 1;
if($Loop_count >= count($Keywords))
{
$arrStyle_akt[] = 'bgcolor="#800080"';
}
}
// Auslesen der Startzeit
If($event->getStart()->dateTime <> "")
{
$Date_Time = $event->getStart()->dateTime;
}
else
{
$Date_Time = $event->getStart()->date;
}
// Zerlegen der Startzeit
if(strpos($Date_Time, "T")>0)
{
$arrDate_Time = explode("T", $Date_Time);
$arrEvent_Time_akt[] = $arrDate_Time[0];
}
else
{
$arrEvent_Time_akt[] = $Date_Time;
}
}
$month = date('n');
$year = date('Y');
$browser = calender_month($month, $year, $arrEvent_Time_akt, $arrStyle_akt);
//echo $browser;
SetValue(CreateVariableByName($IPS_SELF, "Monatskalender", 3, "~HTMLBox"), $browser);
//------------------------- Main ENDE --------------------------
//------------------------ Funktionen -------------------------
function calender_month($month, $year, $arrEvent_Time, $arrStyle)
{
/*=============================================
calender_year - Martin Heinzel - 13.07.2010
Version: 1.0
Beschreibung:
Mit diesem Skript wird ein Monatskalender erstellt.
Dieser Kalender enthält alle Termine aus dem Google
Kalender in Form eines Farbumschlag. Der aktuelle
Tag wird an hand eines gesonderten Farbumschlages
dargestellt.
Änderungen
----------
tt.mm.yyyy von Version x.x -> x.x
Berschreibung:
================================================*/
// Variablen Deklaration --------------------------------------
// Variablen
//--------------
$arr_Month = array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
$key = $month -1;
$act_day = date('j');
$act_month = date('n');
//-------------------------------------------------------------
//--------------------------- Main ----------------------------
//Bitte anpassen
//------------------------------------------
//Hintergrundfarbe Monat
$Style_MonthHeader = 'bgcolor="#C0C0C0"';
//Hintergrundfarbe der Kopfdaten -> Wochentage
$Style_DayHeader = 'bgcolor="#808080"';
//Hintergrundfarbe des aktuellen Tages
$Style_Today = 'bgcolor="#FF00FF"';
//Hintergrundfarbe gesamt
$Style_background = 'background-color:#F6F6F6';
//------------------------------------------
//zusammenstellen des Kopfes
$DayHeader = '<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Mo</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Di</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Mi</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Do</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Fr</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Sa</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">So</font></th>';
//Aussehen der Zellen
$Style_DayCell = 'width="20" height="20" align="center"';
//erstellen der Monatsansicht mit dem Monat und den Tageskopfdaten
$Monatskalender ='<table border="1" summary="Kalender '.$arr_Month[$key].'">
<tr>
<th colspan="7" '.$Style_MonthHeader.'>'.$arr_Month[$key].'</th>
</tr>
<tr>'.$DayHeader.'</tr>';
//wie viele Tage hat dieser Monat
$total_days = date('t', mktime(0, 0, 0, $month, 1, $year));
//an welchem Tag beginnt der Monat -> Da die Woche mit Montag beginnt muss 1 subtrahiert werden
$day_offset = (date('w', mktime(0, 0, 0, $month, 1, $year)))-1;
//Das Ergebnis kann negativ sein. In diesem Fall ist der Tag "Sonntag"
if($day_offset < 0)
{
$day_offset = 6;
}
//initialisieren des Tageszählers
$Day_Count = 1;
//ein Kalenderblatt (ein Monat) bekommt 6 Wochenreihen
for($week = 0; $week < 6; $week++)
{
$Monatskalender .='<tr>';
//eine Woche hat immer noch 7 Tage
for($day = 0; $day < 7; $day++)
{
//Die Tage vor dem ersten müssen mit leeren Zellen aufgefüllt werden
if($day_offset > 0)
{
$Monatskalender .='<td '.$Style_DayCell.'>*</td>';
$day_offset -= 1;
}
else
{
//ausfüllen der Tage mit Tageszahlen
if($Day_Count <= $total_days)
{
//Der aktuelle Tag wird eingefärbt
if($month == $act_month and $Day_Count == $act_day)
{
$Monatskalender .='<td '.$Style_DayCell.' '.$Style_Today.'>'.($Day_Count).'</td>';
}
else
{
//Tage mit einem Termin werden eingefärbt
$StartDay = $Day_Count;
if(strlen($StartDay)< 2) $StartDay = "0".$StartDay;
$StartMonth = $month;
if(strlen($StartMonth)< 2) $StartMonth = "0".$StartMonth;
$Appointment = False;
$Appointment_Time = $year."-".$StartMonth."-".$StartDay;
$Event_Time_LC = 0;
foreach ($arrEvent_Time as $Event_Time)
{
If($Event_Time == $Appointment_Time)
{
$Appointment = True;
$Style_Appointment = $arrStyle[$Event_Time_LC];
}
$Event_Time_LC += 1;
}
if($Appointment)
{
$Monatskalender .='<td '.$Style_DayCell.' '.$Style_Appointment.'>'.($Day_Count).'</td>';
}
else
{
//alle anderen Tagen sind ohne färbung
$Monatskalender .='<td '.$Style_DayCell.'>'.($Day_Count).'</td>';
}
}
$Day_Count += 1;
}
else
{
//alle Tage die über die maximalen Monatstage gehen werden mit leeren Zellen aufgefüllt
$Monatskalender .='<td '.$Style_DayCell.'>*</td>';
}
}
}
//Ende der Wochenreihe
$Monatskalender .='</tr>';
}
//Ende des Monats
$Monatskalender .='</table>';
//nur noch was schickes drum herum
$browser='
<html>
<head>
<style type="text/css" media="screen">
body { '.$Style_background.';
font-family: Arial;
}
</style>
</head>
<body scroll="no">'
.$Monatskalender.
'</body>
</html>';
//und ablegen
return $browser;
}
function CreateVariableByName($id, $name, $type, $profile = "")
{
global $IPS_SELF;
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid === false)
{
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
}
return $vid;
}
//--------------------- Funktionen ENDE ------------------------
?>
Der HTML-Monatskalender für zwei Monate mit Keywords
<?
/*=============================================
skrGoogleMonatskalender - Martin Heinzel - 29.11.2011
Version: 2.0
Beschreibung:
Mit diesem Skript wird ein Monatskalender erstellt.
Dieser Kalender enthält alle Termine aus dem Google Kalender
in Form eines Farbumschlag. Der aktuelle Tag wird an hand
eines gesonderten Farbumschlages dargestellt.
Änderungen
----------
27.11.2014 von Version 1.0 -> 2.0
Beschreibung:
Script wurde angepasst auf die Google Kalender API V3
tt.mm.yyyy von Version x.x -> x.x
Berschreibung:
================================================*/
// Variablen Deklaration --------------------------------------
// Variablen
//--------------
$Calender_ID = 'Kalender-ID@googlemail.com';
$Client_ID = "1234.apps.googleusercontent.com";
$EMail = "1234@developer.gserviceaccount.com";
$key_file_location = IPS_GetKernelDir()."scripts\\certificates\\Kalender-af58c75d630b.p12";
$arrEvent_Time_akt = array();
$arrEvent_Titel_akt = array();
$arrEvent_Time_naechste = array();
$arrEvent_Titel_naechste = array();
$arrStyle_akt = array();
$arrStyle_naechste = array();
$Keywords = array("graue","braun","blau", "geburtstag");
$Style = array('bgcolor="#808080"','bgcolor="#D2691E"','bgcolor="#87CEFA"', 'bgcolor="#DC143C"');
//-------------------------------------------------------------
//benötigte Funktionen/Klassen
set_include_path(IPS_GetKernelDir()."scripts\\google-api-php-client\\src");
require_once 'google-api-php-client/autoload.php';
//--------------------------- Main ----------------------------
// Die Verbindung zum Kalender aufbauen
$client = new Google_Client();
$client->setApplicationName("Kalender");
$service = new Google_Service_Calendar($client);
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials($EMail, array('https://www.googleapis.com/auth/calendar'), $key);
$client->setAssertionCredentials($cred);
// Event lesen
//==============
//2014-11-27T20:09:15+01:00
// Event ab dem aktuellem Datum
$start_date = date("Y-m")."-01T00:00:00+01:00";
$end_date = date("Y-m")."-".date('t')."T23:59:59+01:00";
// Übergeben der Daten der Suchanfrage
$optParams = array('singleEvents' => True,
'timeMin' => $start_date,
'timeMax' => $end_date,
'orderBy' => 'startTime',
'maxResults' => 30);
// Die Suchanfrage ausführen
$events = $service->events->listEvents($Calender_ID, $optParams);
// Das Ergebnis durchsuchen
foreach ($events->getItems() as $event)
{
// title
$arrEvent_Titel_akt[] = utf8_decode($event->getSummary());
$title_harm = strtolower(utf8_decode($event->getSummary()));
$Loop_count = 0;
// Style
foreach ($Keywords as $Keyword)
{
if(stristr($title_harm, $Keyword) !== false)
{
$arrStyle_akt[] = $Style[$Loop_count];
break;
}
$Loop_count += 1;
if($Loop_count >= count($Keywords))
{
$arrStyle_akt[] = 'bgcolor="#800080"';
}
}
// Auslesen der Startzeit
If($event->getStart()->dateTime <> "")
{
$Date_Time = $event->getStart()->dateTime;
}
else
{
$Date_Time = $event->getStart()->date;
}
// Zerlegen der Startzeit
if(strpos($Date_Time, "T")>0)
{
$arrDate_Time = explode("T", $Date_Time);
$arrEvent_Time_akt[] = $arrDate_Time[0];
}
else
{
$arrEvent_Time_akt[] = $Date_Time;
}
}
$month = date('n');
$year = date('Y');
$browser = calender_month($month, $year, $arrEvent_Time_akt, $arrStyle_akt);
//echo $browser;
SetValue(CreateVariableByName($IPS_SELF, "Monatskalender", 3, "~HTMLBox"), $browser);
// Event lesen
//==============
// Event ab dem aktuellem Datum
$start_date = date("Y-m", mktime(0, 0, 0, date("m")+1, 1, date("Y")))."-01T00:00:00+01:00";
$end_date = date("Y-m", mktime(0, 0, 0, date("m")+1, 1, date("Y")))."-".date('t')."T23:59:59+01:00";
// Übergeben der Daten der Suchanfrage
$optParams = array('singleEvents' => True,
'timeMin' => $start_date,
'timeMax' => $end_date,
'orderBy' => 'startTime',
'maxResults' => 30);
// Die Suchanfrage ausführen
$events = $service->events->listEvents($Calender_ID, $optParams);
// Das Ergebnis durchsuchen
foreach ($events->getItems() as $event)
{
// title
$arrEvent_Titel_naechste[] = utf8_decode($event->getSummary());
$title_harm = strtolower(utf8_decode($event->getSummary()));
$Loop_count = 0;
// Style
foreach ($Keywords as $Keyword)
{
if(stristr($title_harm, $Keyword) !== false)
{
$arrStyle_naechste[] = $Style[$Loop_count];
break;
}
$Loop_count += 1;
if($Loop_count >= count($Keywords))
{
$arrStyle_naechste[] = 'bgcolor="#800080"';
}
}
// Auslesen der Startzeit
If($event->getStart()->dateTime <> "")
{
$Date_Time = $event->getStart()->dateTime;
}
else
{
$Date_Time = $event->getStart()->date;
}
// Zerlegen der Startzeit
if(strpos($Date_Time, "T")>0)
{
$arrDate_Time = explode("T", $Date_Time);
$arrEvent_Time_naechste[] = $arrDate_Time[0];
}
else
{
$arrEvent_Time_naechste[] = $Date_Time;
}
}
$month = date('n', mktime(0, 0, 0, date("m")+1, 1, date("Y")));
$year = date('Y', mktime(0, 0, 0, date("m")+1, 1, date("Y")));
$browser = calender_month($month, $year, $arrEvent_Time_naechste, $arrStyle_naechste);
//echo $browser;
SetValue(CreateVariableByName($IPS_SELF, "Monatskal_naechster", 3, "~HTMLBox"), $browser);
//------------------------- Main ENDE --------------------------
//------------------------ Funktionen -------------------------
function calender_month($month, $year, $arrEvent_Time, $arrStyle)
{
/*=============================================
calender_year - Martin Heinzel - 13.07.2010
Version: 1.0
Beschreibung:
Mit diesem Skript wird ein Monatskalender erstellt.
Dieser Kalender enthält alle Termine aus dem Google
Kalender in Form eines Farbumschlag. Der aktuelle
Tag wird an hand eines gesonderten Farbumschlages
dargestellt.
Änderungen
----------
tt.mm.yyyy von Version x.x -> x.x
Berschreibung:
================================================*/
// Variablen Deklaration --------------------------------------
// Variablen
//--------------
$arr_Month = array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
$key = $month -1;
$act_day = date('j');
$act_month = date('n');
//-------------------------------------------------------------
//--------------------------- Main ----------------------------
//Bitte anpassen
//------------------------------------------
//Hintergrundfarbe Monat
$Style_MonthHeader = 'bgcolor="#C0C0C0"';
//Hintergrundfarbe der Kopfdaten -> Wochentage
$Style_DayHeader = 'bgcolor="#808080"';
//Hintergrundfarbe des aktuellen Tages
$Style_Today = 'bgcolor="#FF00FF"';
//Hintergrundfarbe gesamt
$Style_background = 'background-color:#F6F6F6';
//------------------------------------------
//zusammenstellen des Kopfes
$DayHeader = '<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Mo</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Di</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Mi</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Do</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Fr</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Sa</font></th>
<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">So</font></th>';
//Aussehen der Zellen
$Style_DayCell = 'width="20" height="20" align="center"';
//erstellen der Monatsansicht mit dem Monat und den Tageskopfdaten
$Monatskalender ='<table border="1" summary="Kalender '.$arr_Month[$key].'">
<tr>
<th colspan="7" '.$Style_MonthHeader.'>'.$arr_Month[$key].'</th>
</tr>
<tr>'.$DayHeader.'</tr>';
//wie viele Tage hat dieser Monat
$total_days = date('t', mktime(0, 0, 0, $month, 1, $year));
//an welchem Tag beginnt der Monat -> Da die Woche mit Montag beginnt muss 1 subtrahiert werden
$day_offset = (date('w', mktime(0, 0, 0, $month, 1, $year)))-1;
//Das Ergebnis kann negativ sein. In diesem Fall ist der Tag "Sonntag"
if($day_offset < 0)
{
$day_offset = 6;
}
//initialisieren des Tageszählers
$Day_Count = 1;
//ein Kalenderblatt (ein Monat) bekommt 6 Wochenreihen
for($week = 0; $week < 6; $week++)
{
$Monatskalender .='<tr>';
//eine Woche hat immer noch 7 Tage
for($day = 0; $day < 7; $day++)
{
//Die Tage vor dem ersten müssen mit leeren Zellen aufgefüllt werden
if($day_offset > 0)
{
$Monatskalender .='<td '.$Style_DayCell.'>*</td>';
$day_offset -= 1;
}
else
{
//ausfüllen der Tage mit Tageszahlen
if($Day_Count <= $total_days)
{
//Der aktuelle Tag wird eingefärbt
if($month == $act_month and $Day_Count == $act_day)
{
$Monatskalender .='<td '.$Style_DayCell.' '.$Style_Today.'>'.($Day_Count).'</td>';
}
else
{
//Tage mit einem Termin werden eingefärbt
$StartDay = $Day_Count;
if(strlen($StartDay)< 2) $StartDay = "0".$StartDay;
$StartMonth = $month;
if(strlen($StartMonth)< 2) $StartMonth = "0".$StartMonth;
$Appointment = False;
$Appointment_Time = $year."-".$StartMonth."-".$StartDay;
$Event_Time_LC = 0;
foreach ($arrEvent_Time as $Event_Time)
{
If($Event_Time == $Appointment_Time)
{
$Appointment = True;
$Style_Appointment = $arrStyle[$Event_Time_LC];
}
$Event_Time_LC += 1;
}
if($Appointment)
{
$Monatskalender .='<td '.$Style_DayCell.' '.$Style_Appointment.'>'.($Day_Count).'</td>';
}
else
{
//alle anderen Tagen sind ohne färbung
$Monatskalender .='<td '.$Style_DayCell.'>'.($Day_Count).'</td>';
}
}
$Day_Count += 1;
}
else
{
//alle Tage die über die maximalen Monatstage gehen werden mit leeren Zellen aufgefüllt
$Monatskalender .='<td '.$Style_DayCell.'>*</td>';
}
}
}
//Ende der Wochenreihe
$Monatskalender .='</tr>';
}
//Ende des Monats
$Monatskalender .='</table>';
//nur noch was schickes drum herum
$browser='
<html>
<head>
<style type="text/css" media="screen">
body { '.$Style_background.';
font-family: Arial;
}
</style>
</head>
<body scroll="no">'
.$Monatskalender.
'</body>
</html>';
//und ablegen
return $browser;
}
function CreateVariableByName($id, $name, $type, $profile = "")
{
global $IPS_SELF;
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid === false)
{
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
}
return $vid;
}
//--------------------- Funktionen ENDE ------------------------
?>
In $Keywords werden die Schlüsselworte eingetragen.
In $Style wird die dazugehörige Hintergrundfarbe in HTML-Farbcode eingetragen.
Die entsprechende Farbe kann man sich hier zusammensuchen.