ne geht leider auch nicht,im log keine Fehlermeldung und wenn ich das Bild aufrufe habe ich nur ein weisses Bild ohne Fehlermeldung.
Hab noch was zum Thema Tablet .Bei Chrome geht noch kein Vollbild,aber bei Boat Browser geht Vollbild,sieht aus wie beim Bilderrahmen.
Musste die Auflösung in der config.ini nochmal ändern in 960*550 jetzt ist es perfekt.
Knusterus
Soderle jetzt hab ich mir aus der Orginalen und deiner php eine neue gebaut und die Biotonne geht schon mal.
Die Farbabfrage hat auch geklappt,vielen Dank für das Script.
hier meine fertige php
Hier noch ein Bild zum Beweis
Anhang anzeigen 69151
So jetzt nur noch die restlichen Symbole
Knusterus
Hab noch was zum Thema Tablet .Bei Chrome geht noch kein Vollbild,aber bei Boat Browser geht Vollbild,sieht aus wie beim Bilderrahmen.
Musste die Auflösung in der config.ini nochmal ändern in 960*550 jetzt ist es perfekt.
Knusterus
Soderle jetzt hab ich mir aus der Orginalen und deiner php eine neue gebaut und die Biotonne geht schon mal.
Die Farbabfrage hat auch geklappt,vielen Dank für das Script.
hier meine fertige php
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() {
// get calendar entries
try
{
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; // predefined service name for calendar
$client = Zend_Gdata_ClientLogin::getHttpClient($this->config['user'], $this->config['password'],$service);
}
catch (Exception $e)
{
die ('Folgender Fehler trat auf: ' . $e->getMessage());
}
$cal = new Zend_Gdata_Calendar($client);
$calendarList = $cal->getCalendarListFeed();
// 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');
// read calendars
foreach ($calendarList as $calendar)
{
// skip unselected calendars
if (!$calendar->selected->getValue())
continue;
// calendar color
$color = $calendar->color;
// get calendar id
$cal_id = substr(strrchr($calendar->id, '/'), 1 );
// set query parameter
$startDate=strftime( '%Y-%m-%d');
$endDate = strftime( '%Y-%m-%d', strtotime("+".$this->config['number_of_days']." day", time() ) );
$query = $cal->newEventQuery();
$query->setUser($cal_id); // set calendar id
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setStartMin($startDate);
$query->setStartMax($endDate);
$query->setSortOrder('ascending');
$query->setSingleEvents(true);
$entries = $cal->getCalendarEventFeed($query);
foreach ($entries as $entry)
{
// get entry data
$title = $entry->title;
$begin = strtotime($entry->when[0]->startTime);
$end = strtotime($entry->when[0]->endTime);
$location = $entry->where[0]->valueString;
// add to database
$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' => 18,
'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-3, 0, 0, imagesx($icon), imagesy($icon));
ImageDestroy($icon);
$yoffset += 26;
// 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 += 20;
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));
imagettftextboxopt($image, 14, 0, 50, $yoffset+4, $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+30, $yoffset-5, 0, 0, imagesx($icon), imagesy($icon));
ImageDestroy($icon);
}else{
// ------------------------------------------- Geburtstag ----------------------------------------
if (($row['color']) == "#711616") {
$icon = ImageCreateFromPNG ( 'resources/icons/birth.png' );
ImageCopy($image, $icon, $xoffset+30, $yoffset, 0, 0, imagesx($icon), imagesy($icon));
ImageDestroy($icon);
}else{
// ------------------------------------------- Namenstag ----------------------------------------
if (($row['color']) == "#182C57") {
$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+36, $yoffset+8);
}
}
}
imagettftextboxopt($image, 12, 0, $xoffset+50, $yoffset, $style['textcolor'], $style['font'], $text, $opt_entry);
$yoffset += 25;
$letzter_eintrag = $currently_displayed_day;
}
$yoffset += 15;
}
// 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());
}
}
Hier noch ein Bild zum Beweis
Anhang anzeigen 69151
So jetzt nur noch die restlichen Symbole
Knusterus