InfoFrame: Digitaler Bilderrahmen (Anzeige von Anrufen, E-Mails, Termine, Wetter...)

Volker, bist Du weiter gekommen? Habe heute den ganzen Tag versucht das Problem in den Griff zu bekommen. Leider ohne Erfolg.
Dieses IRC funktioniert leider auch nicht so gut. Spooner ist leider nicht Online und Orca hat vorhin nicht auf mein IRC reagiert. Irgendwie scheint das IRC nicht zuverlässig zu sein. Bin auch gestern immer wieder rausgefolgen :(
 
Hallo Thomas
ne leider nicht,ich habe heute das Googleprojekt nochmal gelöscht und alles nochmal neu angelegt,aber es hat nichts gebracht.
Tut mir leid,ich hätte Dir gern eine bessere Auskunft gegeben.
Wie sieht es bei dir aus?

Volker
 
Du wirst lachen. Genau das gleiche habe ich Heute auch gemacht. Gelöscht und alles nochmals frisch erstellt. Leide alles ohne Erfolg. Ich habe es hinbekommen das Google die Anfrage erfasst, jedoch genau nur 1 mal und dann nie mehr :( Keine Ahnung was da falsch läuft. Hoffe das Orca oder Spooner noch eine Zündende Idee haben.
 
Ja das hoffe ich auch,vielleicht gibt es ja noch ne Lösung.

Volker
 
Sorry Leute,
bin heute erst spät nach Hause. Ich hoffe morgen klappts früher bei mir...
Vielleicht können wir morgen mal über Teamviewer arbeiten...
Gruß Daniel
 
Hallo,
scheint so, als würde ich um oAuth2.0 nicht herumkommen, leider.

Nachdem hier alle von Problemen berichten, hatte ich schon Angst alles direkt auf den Infoframe zu schieben und habe mir erst nur mal die wichtigen Zeilen zum Testen genommen und Quick and Dirty eine KalenderAusgabe aus Spoon3ers Code gemacht, ohne Datenbank, etc..... Funktioniert (fast) prächtig. Einzig die öffentlichen Kalender und Geburtstage zu den Kontakten werden nicht angezeigt (muss ich vielleicht dem Projekt Zgriff auf meine Kontakte erlauben?).

PHP:
<?php

require_once 'C:/xampp/php/google-api-php-client-master/autoload.php';
session_start();
$client_id = "client bla";
$service_account_name = "noch mehr bla";

try
{
    $client = new Google_Client();
    $client->setApplicationName("InfoFrame");
    $service = new Google_Service_Calendar($client);
}
catch (Exception $e)
{
    die ('Folgender Fehler trat auf: ' . $e->getMessage());
}
if (isset($_SESSION['service_token']))
    $client->setAccessToken($_SESSION['service_token']);
$key = file_get_contents("InfoFrame.p12");
$cred = new Google_Auth_AssertionCredentials($service_account_name, array('https://www.googleapis.com/auth/calendar'), $key);

$client->setAssertionCredentials($cred);
if ($client->getAuth()->isAccessTokenExpired())
    $client->getAuth()->refreshTokenWithAssertion($cred);

$_SESSION['service_token'] = $client->getAccessToken();
//set startDate, endDate, eventParams
$now = new DateTime('NOW');
$clone = clone $now;
$clone = date_modify($clone, '+1 month');
$startDate = date_format($now, DateTime::W3C);
$endDate = date_format($clone, DateTime::W3C);
$eventParams = array('timeMin' => $startDate,
                     'timeMax' => $endDate,
                     'singleEvents' => 'true');

//get Calendar Id´s	
$calendarList = $service->calendarList->listCalendarList();


foreach ($calendarList->getItems() as $calendarListEntry)
{
    $calendarID = $calendarListEntry->getID();
    $color = $calendarListEntry->getBackgroundColor();
    $events = $service->events->listEvents($calendarID, $eventParams);	    
    foreach ($events->getItems() as $event)
    {
        if (!empty($event['modelData']['start']['dateTime']))
        {
            $begin = date_format(date_create($event['modelData']['start']['dateTime']), 'Y-m-d H:i:s');
            $end = date_format(date_create($event['modelData']['end']['dateTime']), 'Y-m-d H:i:s');
        }
        else
        {
            $begin = $event['modelData']['start']['date'];
            $end = $event['modelData']['end']['date'];
        }			  	
        $title = $event->getSummary();	
        echo $color . " " . $begin . " " . $end . " " . $title . "\n";	
    }
}
 
Hallo Spoon3er,

du hattest irgenwo mal erwähnt, dass Du bereits die MySQL API von mysql auf mysqli umgestellt hast. Ich habe das bisher vor mir hergeschoben, weil ich mich nicht entscheiden konnte ob mysqli oder PDO. Mysqli sieht mir sympathischer aus, PDO hätte den Vorteil unglaublich leicht auf SQLite3 portierbar zu sein. Vielleicht kannst Du mir den entscheidenen Ruck geben, warum hast Du mysqli gewählt?

Gruß...
 
PHP:
Warning: require_once(library/magpierss/rss_parse.inc): failed to open stream: No such file or directory in /xxx/xxxx/xxx/xxx/infoframe/plugins/FeedPlugin.php on line 22

Fatal error: require_once(): Failed opening required 'library/magpierss/rss_parse.inc' (include_path='.:/usr/local/lib/php') in /xxx/xxxx/xxx/xxx/infoframe/plugins/FeedPlugin.php on line 22

kann mir jemand diese Fehlermeldung erklären?
 
Er findet irgendwas nicht. Schau mal bitte in der FeedPlugin.php auf Zeile 22 nach was er will.

Edit: Er such nach "library/magpierss/rss_parse.inc" Schaue bitte ob der Pfad bei Dir existiert und das er nicht schreib / ausführ geschützt ist.
 
Zuletzt bearbeitet von einem Moderator:
Gibt es so etwas auch für ein Tablet?
 
Hallo Spoon3er, Vielleicht kannst Du mir den entscheidenen Ruck geben, warum hast Du mysqli gewählt?

Ich hab damals mysqli genommen, weil mit die sysntax bekannt war. Würde ich jetzt portieren würde ich auf jeden Fall PDO nehmen weil es um einiges leichter X-kompatibel ist. Hab in letzter Zeit viel mit BB und .NET rumgeiert und selbst da kommt man mit PDO schneller ans ziel :)

PHP:
Fatal error: require_once(): Failed opening required 'library/magpierss/rss_parse.inc' (include_path='.:/usr/local/lib/php') in /xxx/xxxx/xxx/xxx/infoframe/plugins/FeedPlugin.php on line 22

kann mir jemand diese Fehlermeldung erklären?

Das script sucht "/usr/local/lib/php/library/maggpierss/rss_parse.inc." Da wird es aber nicht liegen
Wahrscheinlicher liegt es unter Dein/pfad/zum/inforame/ordner/magpierss/rss_parse.inc"

Ob der ordner "Infoframe" bei dir im Server_root Verzeichnis liegt kann ichd ir nicht sagen, das weißt nur du. (Also kannst du aus dem Ordner "Infoframe" noch weiter nach oben auf deinem Webserver?)

Der php-befehel für den Server-root ist $_SERVER['DOCUMENT_ROOT'].
Ist "Infoframe" im Root-Verzeichnis könntest du mit:
PHP:
require_once($_SERVER['DOCUMENT_ROOT'].'infoframe/library/magpierss/rss_parse.inc');
ans Ziel kommen.

wenn Infoframe nicht im Root-verzeichnuis liegt musst du die Verzeichnisse vor Infoframe rannhängen. Sowas in der Art:
PHP:
require_once($_SERVER['DOCUMENT_ROOT'].'Ordner1/ordner2/infoframe/library/magpierss/rss_parse.inc');

achte auf Groß- und Kleinschreibung. So wie es auf deinem Server steht
 
@bolle: wenn ich Dich richtig verstanden habe dann ging es doch alles schon mal. Und auf einmal nicht? Oder hast Du vielleicht irgendwie etwas Verschoben? Oder in der config.ini unter Zent den Pfad geändert?
 
So Fehler gefunden!!! Ein falscher Pfad im CalendarPlugin...und alles hängt ich auf... ;-

require_once '../zendfw/googleapi/autoload.php'; das war der Weg zum ZIEL!!
 
Zuletzt bearbeitet:
Sorry bolle, aber was hat das Calender Plugin mit dem Benzin Plugin zu tun? Bzw. mir erschließt sich der Zusammenhang nicht so ganz
 
Keine Ahnung , auf alle Fälle, war ein Fehler in CalendarPlugin bzw. der Pfad falsch.dieser falsche Pfad wirkte sich auf alles andere aus! Pfad geändert und siehe da- Feeds und Benzinplugin funktionieren wieder einwandfrei. Kalender aktualisiert sich ebenso bei neuen Einträgen...
 
Hallo zusammen,

falls es noch von Interesse ist.

Ich habe das CalendarPlugin von Spooner ein wenig umgestaltet, um es vorweg zu nehmen, es ist jetzt etwas dümmer.
Genau wie das alte Plugin werden bei jedem Update stumpf ist Trumpf alle Kalendereinträge gelöscht und neu eingetragen. Dafür ist das einzige, was geändert werden muss die Funktion doUpdate, der Rest des Plugins und die Datenbank ist unverändert.
Zusätzlich habe ich noch den Eintrag calendar_ID_1 in die ini gepackt, da öffentliche Kalender nicht mehr "freiwillig" angezeigt werden. Für mehrere öffentl. Kalender müssen entsprechend mehrere calendar_ID_* eingetragen werden.

Ansonsten gilt alles, was Spoon3er bereits in seinem HOWTO beschrieben hat.
  1. google-api-php-client-master muss installiert werden
  2. bei https://console.developers.google.com/project registrieren
  3. die Kalender freigeben

An dieser Stelle noch ein Danke an Spoon3er für seine Arbeit.

Code:
[CalendarPlugin]
client_id = "blah"
account_name = "blah"
project_name = "InfoFrame"
key_file= "cache/InfoFrame.p12"
calendar_ID_1 = "de.german#[email protected]"
calendar_ID_color_1 = "#ffff00"
number_of_days = 7

die neue function doUpdate()
PHP:
	public function doUpdate()
	{
		require_once '/usr/share/google-api-php-client-master/autoload.php';
		// get calendar entries
		session_start();
		$client_id = $this->config['client_id'];
		$service_account_name = $this->config['account_name'];
		
		try
		{
			$client = new Google_Client();
			$client->setApplicationName($this->config['project_name']);
			$cal = new Google_Service_Calendar($client);
		}
		catch (Exception $e)
		{
			die ('Folgender Fehler trat auf: ' . $e->getMessage());
		}
		
		if (isset($_SESSION['service_token']))
			$client->setAccessToken($_SESSION['service_token']);
		$key = file_get_contents($this->config['key_file']);
		$cred = new Google_Auth_AssertionCredentials($service_account_name, array('https://www.googleapis.com/auth/calendar'), $key);

		$client->setAssertionCredentials($cred);
		if ($client->getAuth()->isAccessTokenExpired())
			$client->getAuth()->refreshTokenWithAssertion($cred);

		$_SESSION['service_token'] = $client->getAccessToken();
		
		//set startDate, endDate, eventParams
		$cal_date = new DateTime('NOW');
		$startDate = date_format($cal_date, DateTime::W3C);
		$cal_date = date_modify($cal_date, "+".$this->config['number_of_days']." day");
		$endDate = date_format($cal_date, DateTime::W3C);
		$eventParams = array('timeMin' => $startDate,
							 'timeMax' => $endDate,
							 'singleEvents' => 'true');

		//get Calendar Id´s	
		$calendarList = $cal->calendarList->listCalendarList();
		// delete all old calendar entries
		mysql_query("START TRANSACTION", $this->dbconn);
		$query = "Delete from if_calendar";
		mysql_query($query, $this->dbconn) or die('Error, delete query failed');
		
		// get all calendars
		foreach ($calendarList->getItems() as $calendar)
		{
			$calendarID = $calendar->getID();
			$color = $calendar->getBackgroundColor();
			$entries = $cal->events->listEvents($calendarID, $eventParams);	    
			foreach ($entries->getItems() as $entry)
			{
				if (!empty($entry['modelData']['start']['dateTime']))
				{
					$begin = strtotime($entry['modelData']['start']['dateTime']);
					$end = strtotime($entry['modelData']['end']['dateTime']);
				}
				else
				{
					$begin = strtotime($entry['modelData']['start']['date']);
					$end = strtotime($entry['modelData']['end']['date']);
				}			  	
				$title = $entry->getSummary();	
				$location = $entry->getLocation();
				$this->addCalendar($color, $begin, $end, $title, $location);
			}
		}
		
		// get all public calendars
		$calender_num = 0;
		while ($calendarID = $this->config['calendar_ID_' . ++$calender_num])
		{	
			$color = $this->config['calendar_ID_color_' . $calender_num];
			$entries = $cal->events->listEvents($calendarID, $eventParams);	    
			foreach ($entries->getItems() as $entry)
			{
				if (!empty($entry['modelData']['start']['dateTime']))
				{
					$begin = strtotime($entry['modelData']['start']['dateTime']);
					$end = strtotime($entry['modelData']['end']['dateTime']);
				}
				else
				{
					$begin = strtotime($entry['modelData']['start']['date']);
					$end = strtotime($entry['modelData']['end']['date']);
				}			  	
				$title = $entry->getSummary();	
				$location = $entry->getLocation();
				$this->addCalendar($color, $begin, $end, $title, $location);
			}
		}
		mysql_query("COMMIT", $this->dbconn);
	}
 
So, habe mich eben noch mal hingesetzt und jetzt funktioniert's.

@Spoon3er
Vielen Dank dafür
 
hallo zusammen

Ich habe nochmal ein bißchen getestet ,aber ich ich bringe das neue Plugin nicht zum Laufen.Ich bekomme keinen Kontakt zu Google .
Habe schon Firewall und Antivirus ausgeschaltet,aber es will nicht funktionieren.Habe auch das neue Plugin von marvin424 getestet ,geht leider auch nicht.Hat denn jemand noch eine Tipp??

Volker
 
Ich habe nicht alle Posts in der Vergangenheit gelesen, vielleicht ist es ja schon erwähnt worden: die Emailadresse in account_name ist NICHT deine Google email sondern die Email, die im developer center unter der client ID.
 
Ja das weis ich ich vermute mal irgendwo einen falschen Pfad.So sieht meine config.ini aus
Code:
db_host = "localhost"
db_name = "infoframe"
db_user = "root"
db_password = "passwort"
zendfw_path = "c:\xampp\htdocs\zendfw\library\"
google_api_path = "c:\xampp\htdocs\zendfw\google-api-php-client\"
image_width = 800
image_height = 600
; updateintervall der Plugins (Mail, Kalender, Wetter...) in Minuten
updatetime = 30



[CalendarPlugin]
client_id = "381048971205-c2a97vdgml3oi9q8ev5vdutsvn4f538p.apps.googleusercontent.com"
account_name = "381048971205-c2a97vdgml3oi9q8ev5vdutsvn4f538p@developer.gserviceaccount.com"
project_name = "InfoFrame"
key_file= "c:\xampp\htdocs\infoframe\Infoframe-3999c7729ff4.p12"
calendar_ID_1 = "de.german#[email protected]"
calendar_ID_color_1 = "#ffff00"
number_of_days = 7

mein Calenderplugin sieht so aus
PHP:
<?php
/***************************************************************************
 * InfoFrame (image generator for digital picture frames)
 * Copyright (C) 2009  Tobias Kolb
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see http://www.gnu.org/licenses/
 ***************************************************************************/

require_once 'Zend/Loader.php';

Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');


class CalendarPlugin implements IPlugin
{
    private $dbconn = NULL;
	private $config = NULL;
	
	public function __construct($dbconn, $config) {
		$this->dbconn = $dbconn;
		$this->config = $config;
	}
	
	
 public function doUpdate()
    {
        require_once 'zendfw/google-api-php-client/autoload.php';
        // get calendar entries
        session_start();
        $client_id = $this->config['client_id'];
        $service_account_name = $this->config['account_name'];
        
        try
        {
            $client = new Google_Client();
            $client->setApplicationName($this->config['project_name']);
            $cal = new Google_Service_Calendar($client);
        }
        catch (Exception $e)
        {
            die ('Folgender Fehler trat auf: ' . $e->getMessage());
        }
        
        if (isset($_SESSION['service_token']))
            $client->setAccessToken($_SESSION['service_token']);
        $key = file_get_contents($this->config['key_file']);
        $cred = new Google_Auth_AssertionCredentials($service_account_name, array('https://www.googleapis.com/auth/calendar'), $key);

        $client->setAssertionCredentials($cred);
        if ($client->getAuth()->isAccessTokenExpired())
            $client->getAuth()->refreshTokenWithAssertion($cred);

        $_SESSION['service_token'] = $client->getAccessToken();
        
        //set startDate, endDate, eventParams
        $cal_date = new DateTime('NOW');
        $startDate = date_format($cal_date, DateTime::W3C);
        $cal_date = date_modify($cal_date, "+".$this->config['number_of_days']." day");
        $endDate = date_format($cal_date, DateTime::W3C);
        $eventParams = array('timeMin' => $startDate,
                             'timeMax' => $endDate,
                             'singleEvents' => 'true');

        //get Calendar Id´s    
        $calendarList = $cal->calendarList->listCalendarList();
        // delete all old calendar entries
        mysql_query("START TRANSACTION", $this->dbconn);
        $query = "Delete from if_calendar";
        mysql_query($query, $this->dbconn) or die('Error, delete query failed');
        
        // get all calendars
        foreach ($calendarList->getItems() as $calendar)
        {
            $calendarID = $calendar->getID();
            $color = $calendar->getBackgroundColor();
            $entries = $cal->events->listEvents($calendarID, $eventParams);        
            foreach ($entries->getItems() as $entry)
            {
                if (!empty($entry['modelData']['start']['dateTime']))
                {
                    $begin = strtotime($entry['modelData']['start']['dateTime']);
                    $end = strtotime($entry['modelData']['end']['dateTime']);
                }
                else
                {
                    $begin = strtotime($entry['modelData']['start']['date']);
                    $end = strtotime($entry['modelData']['end']['date']);
                }                  
                $title = $entry->getSummary();    
                $location = $entry->getLocation();
                $this->addCalendar($color, $begin, $end, $title, $location);
            }
        }
        
        // get all public calendars
        $calender_num = 0;
        while ($calendarID = $this->config['calendar_ID_' . ++$calender_num])
        {    
            $color = $this->config['calendar_ID_color_' . $calender_num];
            $entries = $cal->events->listEvents($calendarID, $eventParams);        
            foreach ($entries->getItems() as $entry)
            {
                if (!empty($entry['modelData']['start']['dateTime']))
                {
                    $begin = strtotime($entry['modelData']['start']['dateTime']);
                    $end = strtotime($entry['modelData']['end']['dateTime']);
                }
                else
                {
                    $begin = strtotime($entry['modelData']['start']['date']);
                    $end = strtotime($entry['modelData']['end']['date']);
                }                  
                $title = $entry->getSummary();    
                $location = $entry->getLocation();
                $this->addCalendar($color, $begin, $end, $title, $location);
            }
        }
        mysql_query("COMMIT", $this->dbconn); 
		
		
	}
	
	public function doOutput($image, $style, $updateData, &$yoffset) {
		if ($updateData)
			$this->doUpdate();

		$query = "SELECT * FROM `if_calendar` WHERE (`end` > NOW()) ORDER BY `begin` ASC";
		$result = mysql_query($query, $this->dbconn);
		if (mysql_num_rows($result) > 0) {

			// define styles
			$opt_header = array(
				'width' => imagesx($image)-290,
				'line_height' => 8,
				'align' => ALIGN_LEFT
			);
			
			$opt_day = array(
				'width' => imagesx($image)-290,
				'height' => 14,
				'line_height' => 14,
				'align' => ALIGN_LEFT
			);

			$opt_entry = array(
				'width' => imagesx($image)-290,
				'height' => 12,
				'line_height' => 12,
				'align' => ALIGN_LEFT,
				'word_wrap_hyphen' => '...',
				'aggressive_word_wrap' => true,
			);

			// print header
			imagettftextboxopt($image, 18, 0, 50, $yoffset, $style['textcolor'], $style['font'], "Nächste Termine", $opt_header);
			$icon = ImageCreateFromPNG ( 'resources/icons/clock.png' );
			ImageCopy($image, $icon, 20, $yoffset-12, 0, 0, imagesx($icon), imagesy($icon));
			ImageDestroy($icon);
			$yoffset += 14;
			
			// print calendar
			$counter = 0;
			$formatDate = "%d.%m.%Y";
			$formatTime = "%H:%M";
			$today = strftime( $formatDate );
			$tomorrow  = strftime( $formatDate, strtotime("+1 day", time() ) );
			$currently_displayed_day = 0;

			while ($row = mysql_fetch_assoc($result)) {
				$counter++;
				
				// if end of screen is reached and more than one items left -> cut off and show hint "x more appointments..."
				$rest = (mysql_num_rows($result) - $counter) + 1;
				if (($yoffset >= (imagesy($image) - 36)) && ($rest > 1)) {
					$text = "... $rest weitere Termine";
					imagettftextboxopt($image, 14, 0, 24, $yoffset, $style['textcolor'], $style['fontb'], $text, $opt_entry);
					$yoffset += 0;
					break;
				}
				
				// print day name
				$begin_date = strftime( $formatDate, strtotime($row['begin']));
				// if begin day is before today set begin to today
				if (strtotime($begin_date) < strtotime($today))
					$begin_date = $today;
				// now if begin is after $currently_displayed_day update $currently_displayed_day
				if (strtotime($begin_date) > $currently_displayed_day) {
					// update currently_displayed_day
					$currently_displayed_day = strtotime($begin_date);
					// print day name
					if( $begin_date == $today )
						$dayname = "Heute";
					else if( $begin_date == $tomorrow )
						$dayname = "Morgen";
					else
						//$dayname = strftime("%A, ".$formatDate, strtotime($begin_date));
                                                $dayname = datumDeutsch(strftime("%A, ".$formatDate, strtotime($begin_date)));

					imagettftextboxopt($image, 14, 0, 50, $yoffset-1, $style['textcolor'], $style['fontb'], $dayname, $opt_day);
					$yoffset += 22;
				}
				
				// build appointment time text
				$end_date = strftime( $formatDate, strtotime($row['end']));
				$begin_time = strftime( $formatTime, strtotime($row['begin']));
				$end_time = strftime( $formatTime, strtotime($row['end']));
				$text = $row['title'];
				if ($row['location'] != null)
					$text = $text . ", " . $row['location'];
				if (($begin_time == "00:00") && ($end_time == "00:00")) {
					// all day event (substract 1 second to get the real end date at 23:59) 
					$end_date = strftime( $formatDate, strtotime($row['end'])-1);
					// if all day event is longer than one day -> print end date
					if (strtotime($end_date) != $currently_displayed_day)
						$text = $text." (bis ".$end_date.")";
						
				} else {
					// normal event with start and end time
					$text = $text." (".$begin_time." - ";
					// if event ends not this day -> display end date additionally to time
					if (strtotime($end_date) != $currently_displayed_day)
						$text = $text.$end_date.", ";					
					$text = $text.$end_time.")";
				}
				
               // roundboxtrans_middel($image, $xleft, $xend, $yoffset+2, $yoffset_abstand, $yoffset_end, $inhalt_zeilen_hoehe);
               // roundboxtrans_bottom($image, $xleft, $xend, $yoffset, $yoffset_diff, $yoffset_abstand, $yoffset_end, $radius, $bottom_zeilen_hoehe);
               /*
             if ($letzter_eintrag == $currently_displayed_day) {
             	if (strlen($text) >= 15) $xoffset = 150;
               	$xoffset += 130;
               	$yoffset -= 25;
              }else{ 
              	$xoffset = 0;             
              	roundboxtrans_middel($image, $xleft, $xend, $yoffset, $yoffset_abstand+1, $yoffset_end, $inhalt_zeilen_hoehe+1);
            }
            */   
// ------------------------------------------- Müllabfuhr----------------------------------------                   
                 if (($row['color']) == "#711616") {
                	if (strpos($row['title'], 'Blaue') !== false)
                      $icon = ImageCreateFromPNG ( 'resources/icons/tonne_blau.png' );
                	if (strpos($row['title'], 'Biotonne') !== false)
                      $icon = ImageCreateFromPNG ( 'resources/icons/tonne_gruen.png' ); 
                	if (strpos($row['title'], 'Gelber Sack') !== false)
                      $icon = ImageCreateFromPNG ( 'resources/icons/gelber_sack.png' ); 
                	if (strpos($row['title'], 'Restabfall') !== false)
                      $icon = ImageCreateFromPNG ( 'resources/icons/tonne_schwarz.png' );                                               
                	ImageCopy($image, $icon, $xoffset+25, $yoffset-20, 0, 0, imagesx($icon), imagesy($icon));
                	ImageDestroy($icon);
                }  
// ------------------------------------------- Geburtstag ----------------------------------------     
				if (($row['color']) == "#711616") {  
					if (strpos($row['title'], 'Geburtstag') !== false)
						$icon = ImageCreateFromPNG ( 'resources/icons/birth.png' );
					ImageCopy($image, $icon, $xoffset+25, $yoffset-15, 0, 0, imagesx($icon), imagesy($icon));
					ImageDestroy($icon);
				}
// ------------------------------------------- Namenstag ----------------------------------------     
				if (($row['color']) == "#711616") {
					$icon = ImageCreateFromPNG ( 'resources/icons/name.png' );
					ImageCopy($image, $icon, $xoffset+27, $yoffset+1, 0, 0, imagesx($icon), imagesy($icon));
					ImageDestroy($icon);
				} else {
// ------------------------------------------- Standard - Button ----------------------------------------                
					// determine button color
					$colorArray = htmlColorToRgb($row['color']);
					$color = ImageColorAllocate ($image, $colorArray[0], $colorArray[1], $colorArray[2]);
					// print appointment text and button                             
					drawGlassButton($image, $color, $xoffset+30, $yoffset-2);
				}
                imagettftextboxopt($image, 12, 0, $xoffset+50, $yoffset-6, $style['textcolor'], $style['font'], $text, $opt_entry);
                $yoffset += 10; 
								$letzter_eintrag =  $currently_displayed_day;                        
          }
            $yoffset += 2;           
        }
       // roundboxtrans_bottom($image, $xleft, $xend, $yoffset, $yoffset_diff, $yoffset_abstand+16, $yoffset_end, $radius, $bottom_zeilen_hoehe);
        mysql_free_result($result);

    }

    private function addCalendar($color, $begin, $end, $title, $location) {
        $query = "INSERT INTO `if_calendar` (`id`, `color`, `begin`, `end`, `title`, `location`) 
                  VALUES (NULL,
                  '".mysql_real_escape_string($color)."', FROM_UNIXTIME($begin), FROM_UNIXTIME($end),
                  '".mysql_real_escape_string($title)."',
                  '".mysql_real_escape_string($location)."'
                  )";
        mysql_query($query, $this->dbconn) or die('CalendarPlugin: '.mysql_error());
    }
    
}

Vielleicht siehst Du ja einen Fehler.Ich habe auch das OrginalPlugin von Spoo3ner mit den Änderungen in der config.ini getestet auch keine Funktion.
bei mir läuft das ganze lokal auf einem extra Rechner.

Volker
 
Kostenlos!

Statistik des Forums

Themen
248,888
Beiträge
2,304,093
Mitglieder
378,571
Neuestes Mitglied
Heiko2026