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

Hey ihr beiden,

kopiert mal den Zend Ordner (meiner heisst "ZendGdata" OHNE "" natürlich) in die selbe ebene wo sich die index.php befindet und passt die config.ini so an:

Code:
zendfw_path = "[COLOR="#FF0000"]ZendGdata/library[/COLOR]"

Schaut ob es dann geht....
 
Hi Thomas

Tja leider habe ich keinen Ordner.
Wie kann ich den denn installieren.Mein server läuft auf einener virt.Maschine unter Linux

Knusterus

Ich habe mir jetzt eine Version ZendGdata-1.12.3 runtergeladen und ins var Verzeichnis kopiert.
Den library Ordner habe ich in das Verzeichnis von Spoo3ner kopiert.
Wenn ich jetzt den Kalender aktiviere kommt "Grafik kann nicht angezeigt werden,weil sie Fehler enthält."
Es sind auch keine neue Fehlerlogs vorhanden.
Knusterus
 
Zuletzt bearbeitet:
Ich war schneller wars auch richtig??

So habe jetzt noch mal das Orginal Plugin getestet ,kein Fehler aber auch kein Kalender.

Knusterus
 
Zuletzt bearbeitet:
He bei mir geht es ,allerdings nur die Standartvariante,Geil!!!!
Anhang anzeigen 69125

Jetzt muss nur noch der modifizierte auch funktionieren.
Wo liegt da der Fehler?
Danke Euch für Eure hilfe

Knusterus
 
Sorry, zur modifizierten kann ich nix sagen. Welche ist es den überhaupt? Poste die mal und die dazugehörige Fehlermeldung
 
Also ich habe sie gerade nochmal reinkopiert. Jetzt habe ich wieder mein Bild ,ohne Fehler aber ohne Kalender.
Die Aktuallieserung dauert auch manchmal ein bischen.
Schauen wir mal wie es morgen ausieht.
Für heute ist es gut.:weg:

Ich hänge die modifizierte nochmal mit dran
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', strtotime("-7 day", time() ));
			$endDate = strftime( '%Y-%m-%d', strtotime("+34 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()) UNION SELECT * FROM `if_wkw` WHERE (`end` > NOW()) ORDER BY `begin`,`id` 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-5, $style['textcolor'], $style['font'], "Nächste Termine", $opt_header);
			$icon = ImageCreateFromPNG ( 'resources/icons/clock.png' );
			ImageCopy($image, $icon, 20, $yoffset-8, 0, 0, imagesx($icon), imagesy($icon));
			ImageDestroy($icon);
			$yoffset += 21;
			
			// 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;

      $result_arr = array(); 
      
			while ($row = mysql_fetch_assoc($result)) {
      
    $result_arr[] = array($row['id'], $row['color'],$row['begin'], $row['end'],$row['title'], $row['location']);
      
				$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_r ($result_arr);
        if (strtotime($result_arr[$counter-1][2])> strtotime("+".$this->config['number_of_days']." day")) 
        {
        $yoffset += 20;
        break;
        }
        //echo strtotime($result_arr[1][2]);
        //echo 'Result: '.strtotime($result_arr[$counter-1][2]);
        //echo ' 3Day: '.strtotime("+3 day").'      ';
        
//        if ((($row['color']) != "#AB8B00") && (($row['color']) != "#1B887A"))
//        {

// ----------------------------------------- DAYNAME --------------------------------------------
				// 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)) {
        if ($counter!=1)  $yoffset += 22;
        if ((($result_arr[$counter-2][1]) != "#A32929")&&(($result_arr[$counter-2][1]) != "birth")&&($counter!=1))
          $yoffset -= 18;        
        $abst=0; $mull=0;$multiday=0;
					// update currently_displayed_day
					$currently_displayed_day = strtotime($begin_date);
					// print day name
          if (($row['color']) == "#1B887A") {$feiert=', '.$row['title'];
          				$colorArray = htmlColorToRgb($row['color']);
				$color = ImageColorAllocate ($image, $colorArray[0], $colorArray[1], $colorArray[2]);
          } else {$feiert='';  $color=$style['textcolor'];}
					if( $begin_date == $today )
						$dayname = "Heute".$feiert;
					else if( $begin_date == $tomorrow )
						$dayname = "Morgen".$feiert;
					else
						$dayname = strftime("%A, ".$formatDate, strtotime($begin_date)).$feiert;
          imagettftextboxopt($image, 14, 0, 50, $yoffset+4, $color, $style['fontb'], $dayname, $opt_day);
          }
// ------------------------------------------------------------------------------------------------
          
          // Ersten Tag darstellen
// 					if ((strtotime($result_arr[$counter-2][2]) < $currently_displayed_day)&&(strtotime($result_arr[$counter-2][2]) > 0))
//{$yoffset += 22; imagettftextboxopt($image, 14, 0, 50, $yoffset+4, $style['textcolor'], $style['fontb'], $dayname, $opt_day);}


// ---------------------------------------------- Muellabfuhr ---------------------------------          
          // Icon für Müllabfuhr
          if (($row['color']) == "#A32929")
                {
                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'], 'Gelbe S') !== false)
          			$icon = ImageCreateFromPNG ( 'resources/icons/gelber_sack.png' ); 
                if (strpos($row['title'], 'Restm') !== false)
          			$icon = ImageCreateFromPNG ( 'resources/icons/tonne_schwarz.png' );                                               
			          if ($mull==0) ImageCopy($image, $icon, 25, $yoffset+1, 0, 0, imagesx($icon), imagesy($icon));
                else  ImageCopy($image, $icon, 9, $yoffset+1, 0, 0, imagesx($icon), imagesy($icon));
			          ImageDestroy($icon);
                $mull++;
                
//                  if (($rest==0)||((strtotime($result_arr[$counter-2][2]) < $currently_displayed_day)&&(strtotime($result_arr[$counter-2][2]) > 0)))  {imagettftextboxopt($image, 14, 0, 50, $yoffset+4, $style['textcolor'], $style['fontb'], $dayname, $opt_day); $yoffset += 22;}
$multiday=0;
                  continue;
                }
// -----------------------------------------------------------------------------------------------                
                
// ------------------------------------------- Geburtstag ----------------------------------------
                if (($row['color']) == "birth")
                {
					$tbreite = imagettfbbox ( 14, 0, $style['fontb'], $dayname);
          //echo 'last:'.strtotime($result_arr[$counter-2][3]).'    ';
          //echo 'cur:'.$currently_displayed_day.'     ';
          //echo 'date:'.$row['end'].'     ';
          if ((strtotime($result_arr[$counter-2][2])) == ($currently_displayed_day)) { 
          $a=imagettfbbox ( 11, 0, $style['font'], $result_arr[$counter-2][4]);
          $abst=$abst+$a[2]+10;} else {$abst=0;}
          
          $colorArray = htmlColorToRgb('#757575');
				  $color = ImageColorAllocate ($image, $colorArray[0], $colorArray[1], $colorArray[2]);
          
          imagettftextboxopt($image, 11, 0, $tbreite[2]+60+$abst, $yoffset+5, $color, $style['font'], $row['title'], $opt_entry);

//imagettftextboxopt($image, 8, 0, 50, 100+$yoffset+(12*$counter), $style['textcolor'], $style['font'], 'if('.strtotime($result_arr[$counter-2][2]).'<'.$currently_displayed_day.'_'.$row['title'].'_'.$daypr, $opt_day);

/*          if ((strtotime($result_arr[$counter-2][2]) < $currently_displayed_day)&&($daypr==0)&&(strtotime($result_arr[$counter-2][2]) > 0)) {
               		imagettftextboxopt($image, 14, 0, 50, $yoffset+4, $style['textcolor'], $style['fontb'], $dayname, $opt_day);
					        $yoffset += 22; $daypr=1; $abst=0;}
                  else
                            $daypr=0;
                  
                  $birth++;*/
                  $multiday=0;
          continue;
          
          }
// ---------------------------------------------------------------------------------------------

          
/*					if ((strtotime($result_arr[$counter-2][2]) < $currently_displayed_day)&&(strtotime($result_arr[$counter-2][2]) > 0))
{$yoffset += 22; imagettftextboxopt($image, 14, 0, 50, $yoffset+4, $style['textcolor'], $style['fontb'], $dayname, $opt_day);}
          if ($counter==1)  $yoffset += 22;
          $mull=0;*/
					
				//}

        
// ---------------------------------------- TERMIN ----------------------------------------------
        if ($multiday!=1) $yoffset += 22; 
        //$multiday=0;
				// 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.", ";//$multiday=1;
            }					
					$text = $text.$end_time.")";
				}
				$multiday=1;
				// determine button color
				$colorArray = htmlColorToRgb($row['color']);
				$color = ImageColorAllocate ($image, $colorArray[0], $colorArray[1], $colorArray[2]);
				// print appointment text and button
        $tbreite = imagettfbbox ( 14, 0, $style['font'], $text);
//				drawGlassButton($image, $color, 32+$tbreite[2]/2, $yoffset+8, $tbreite[2]+40);
        drawGlassButton($image, $color, 51, $yoffset+10);
        //drawGlassButton($image, $color, 15+$tbreite[2], $yoffset+10);
        //drawGlassButton($image, $color, 65, $yoffset+10);
        //imagefilledrectangle($image, 51, $yoffset+2, $tbreite[2]+15, $yoffset+18, $color);
        
          for ($i = 51; $i <= $tbreite[2]+15; $i++)
          {
        drawGlassButton($image, $color, $i, $yoffset+10);
        }
        
				imagettftextboxopt($image, 12, 0, 50, $yoffset, $style['textcolor'], $style['font'], $text, $opt_entry);
				
				$yoffset += 18;
// ----------------------------------------------------------------------------------------				
			
/*			
      } elseif (($row['color']) != "#1B887A") {
      
				// 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, ".$row['title'];
					else if( $begin_date == $tomorrow )
						$dayname = "Morgen, ".$row['title'];
					else
						$dayname = strftime("%A, ".$formatDate, strtotime($begin_date)).", ".$row['title'];

        // determine Day color
				$colorArray = htmlColorToRgb($row['color']);
				$color = ImageColorAllocate ($image, $colorArray[0], $colorArray[1], $colorArray[2]);
            
					imagettftextboxopt($image, 14, 0, 50, $yoffset+4, $color, $style['fontb'], $dayname, $opt_day);
					$yoffset += 24;
          
				}				

			}      
      else {
      				// 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, ".$row['title'];
					else if( $begin_date == $tomorrow )
						$dayname = "Morgen, ".$row['title'];
					else
						$dayname = strftime("%A, ".$formatDate, strtotime($begin_date)).", ".$row['title'];

        // determine Day color
				$colorArray = htmlColorToRgb($row['color']);
				$color = ImageColorAllocate ($image, $colorArray[0], $colorArray[1], $colorArray[2]);
            					          if (($row['color']) == "#A32929")
                {
                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'], 'Gelbe S') !== false)
          			$icon = ImageCreateFromPNG ( 'resources/icons/gelber_sack.png' ); 
                if (strpos($row['title'], 'M&uuml;lltonne') !== false)
          			$icon = ImageCreateFromPNG ( 'resources/icons/tonne_schwarz.png' );                                               
			          ImageCopy($image, $icon, 25, $yoffset+1, 0, 0, imagesx($icon), imagesy($icon));
			          ImageDestroy($icon);
               		imagettftextboxopt($image, 14, 0, 50, $yoffset+4, $color, $style['fontb'], $dayname, $opt_day);
					        $yoffset += 24;
                  continue;
                }
					imagettftextboxopt($image, 14, 0, 50, $yoffset+4, $color, $style['fontb'], $dayname, $opt_day);
          $yoffset += 24;
      }
      }*/
      }
			//$yoffset += 22;

      
      
		}
			        if ((($result_arr[$counter][1]) == "#A32929")||(($result_arr[$counter][1]) == "birth"))
          $yoffset += 18;
		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('Error, insert query failed: '.mysql_error());
	}
	
}

Dann sag ich nochmal vielen Dank und einen schönen Abend

Knusterus

@spoo3ner

Du hattest mir mal den Code fürs Tablet geschickt,Wo kommt der denn hin??
PHP:
<html>
    <head>
    
        <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
        <meta http-equiv="refresh"  content="5">        
            <title>InfoFrame</title>
    </head>
    <body style="background-color:#333333">
        <img src="info.jpg">
    </body>
</html>

Knusterus
 
Zuletzt bearbeitet:
@ Knusterus
Na das sieht doch schonmal gut aus... Weiter so!
 
Ich hänge die modifizierte nochmal mit dran

Falls es Dich beruhigt: Bei mir läuft deine Modifizierte auch nicht. ;) Also ist alles in Ordnung.

Wo genau hast Du diese her? Oder hast Du die selber so modifiziert? Wieso benutzt Du diese bzw. willst diese unbedingt benutzen und nicht die Originale die ohne Probleme läuft?
 
@MaverrickTM
Tja langsam wird es, dank Deiner und der Unterstützung der anderen Jungs.Vielen dank an dieser Stelle nochmal dafür!!!!:dance:

@Spoon3er
jo das teste ich gleich mal,danke für die Erklärung

@ht81

Tja ich würde schon gern den modifizierten verwenden.
mir gefielen die Symbole für die Müllabfuhr so gut.
die php war von hier
http://www.ip-phone-forum.de/showthread.php?t=206194&page=34
Post 668
da steht noch was von Googlefarbe ,aber das betrifft ja nur das Geburtstagsmodul oder??
Warum geht der Müllkalender nicht??

Knusterus
 
@Spoon3er

Also dein Code funtzt super,vielen Dank .Ich habe die Zeit allerdings auf 20sec. raufgesetzt das reicht.Dann habe ich noch das Ausgabeformat auf 1280*800 hochgesetzt und jetzt passt es genau aufs Tablet.
Das einzige was stört ist der BrowserRahmen.Gibt es denn da auch noch ne Möglichkeit den wegzubekommen???Ich nutze Chrome für Android.

Also ich habe nochmal ein bißchen rumgespiel aber der modifizierte Kalender läuft nicht.Habt ihr ne Idee warum nicht??
Liegt es vielleicht an der Farbeinstellung.??Wo finde ich denn die Datenbank ,wo die Googlefarbe abgelegt ist??

Knusterus
 
Also mal zu deiner php: Warum komentierst du, sorry aber absolut planlos, sachen aus dieser php aus?
Mal ein tip: bennene deine calenderplugin.php in zb calenderplugin.php.bak und erstelle eine neue calenderplugin.php, kopiere den Inhalt aus post 668 in diese. Dann aktualliesierst Du das Infoframe, gehst in die infoframe datenbank, suchst if_calendar, suchst weiter nach einem eintrag für zB die Biotonne, kopierst "color" und fügst es bei der if abfrage ein.
PHP:
if (($row['color']) == "#1B887A")
hier deine color nummer eintragen....

Ansonsten kann ich nur noch einmal betonen: Wenn du nicht so viel Ahnung von all dem ganzen php gedöns hast, dann kommentier doch nicht sooooo krass sachen aus einer php aus... Wenn du ZB eine Klammer zuviel auskommentierst bekommst du sofort einen weißen Bildschirm usw....

Dein plugin hat fast nix mehr mit dem geposteten zu tun. Unteranderem hast du die komplette müllabfuhr auskommentiert. Deine Abfrage für den müllplugin beginnt mit einem elseif. Dieses eseif setzt voraus, daß davor schon eine if abfrage steht, die bei dir nicht da steht. Du zeichnest erst das farbige Glasicon um danach ein müllabfuhr icon zu zeichenen. usw.... Ich hab jetzt ca 10sec auf das script geschaut und das kann so nicht funktionieren, selbst wenn du die kommentare wieder aktivierst :(
btw: Dui brauchst natürlich die icons. Ich hoffe die hast du schon heruntergeladen und auch in den icons-ordner extrahiert. :)

Zu deiner Vollbild-geschichte: Ne keine Ahnung, einfach mal google befragen? Bei den meisten browsern unter windows kann man zB mit F11 die Seite maximieren. Aber wie es bei deinem tablet, mit was auch immer für einem betreibssystem funktioniert, kann ich dir nicht sagen...
 
Hi

Das stimmt ich habe keine Ahnung von dem Gedöns,das ist richtig.Allerdings auskommentiert hab ich da echt nix.Ich habe den Inhalt nur aus dem Post kopiert und in meine eingefügt.Vielleicht ist da was schief gegangen.
Sagst Du mir bitte noch ,wo ich die Datenbank finde??

Knusterus
 
deine mysql datenbank wo immer du die auch hast... stichwort: phpMyAdmin.
 
phpmyadmin hab ich ihm nicht installiert. Wenn ich Die tage dazu komme, hole ich es nach.
 
phpmyadmin hab ich ihm nicht installiert. Wenn ich Die tage dazu komme, hole ich es nach.
Eigentlich auch nicht nötig :)

PHP:
 <?php
 // load configuration
$config = parse_ini_file("config.ini", true);
$sysconfig = $config['System'];
 
 mysql_connect($sysconfig['db_host'], $sysconfig['db_user'],$sysconfig['db_password']) or die ("Verbindung nicht möglich");
 mysql_select_db($sysconfig['db_name']) or die ("Die Datenbank existiert nicht.");
 $query = "SELECT * FROM if_calendar";
 $fetch = mysql_query($query) or die ("nicht moeglich");	
 while ($row = mysql_fetch_assoc($fetch)) {
  echo $row['title'].'    '.$row['color'].'<br>';
}
?>
Erstelle eine Datei zb dbAbfrage.php im Infoframe-Ordner neben der index.php und fügen den code ein.
rufe diese dann im browser auf mit zb http://192.168.178.60/infoframe/dbAbfrage.php

Im Browser werden dann alle Einträge aus der if_calendar Datenbank wie folgt angezeigt:
titel color
titel color
...
usw

Es werden natürlich nur Einträge angezeit, wenn auch welche in der db stehen, sprich wenn die Abfrage und das Speichern der Daten aus dem Google-Kalender funktionieren.
Bei mir sieht es dann unteranderem zB so aus:

Die Nummer dahinter muss dann, wie ich paat posts weiter oben schon geschrieben habe dementsprechend in die calnderPlugin.php eingefügt werden.
 

Anhänge

  • dbabfrage.jpg
    dbabfrage.jpg
    41.3 KB · Aufrufe: 14
Hallo Spoon3er
Danke für deine Hilfe.
Leider funktioniert es nicht.
Ich habe jetzt eine neue Calender.php erstellt.Rufe ich dann mein Browserbild auf kommt die Meldung
"Die Grafik... kann nicht angezeigt werden weil sie Fehler enthält."
Im Log Ordner sind aber keine Fehlerdatein.
Ich hänge jetzt meine php nochmal mit an,vielleicht schleicht sich doch durchs Kopieren ein Fehler.
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 += 27;
                }
                
                // 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.")";
                }
 // ------------------------------------------- Müllabfuhr----------------------------------------                   
                 if (($row['color']) == "#1B887A")
                {
                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'], 'Gelben 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, 23, $yoffset-6, 0, 0, imagesx($icon), imagesy($icon));
                ImageDestroy($icon);
                }
                else{  
// ------------------------------------------- Geburtstag ----------------------------------------     
                
                if (($row['color']) == "#5229A3")
                { $icon = ImageCreateFromPNG ( 'resources/icons/birth.png' );
                ImageCopy($image, $icon, 23, $yoffset+0, 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, 32, $yoffset+8);
                }
                }
                imagettftextboxopt($image, 12, 0, 50, $yoffset, $style['textcolor'], $style['font'], $text, $opt_entry);
                $yoffset += 22;

            }
            $yoffset += 15;
            
            
        }
        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('Error, insert query failed: '.mysql_error());
    }
    
}

Geht die Calender.php bei Dir??

Knusterus
 
ne, die geht bei mir auch nicht. Obwohl inhaltlich fast indentisch mit meiner... im error log steht was von falscher imagesx. Deswegen kann kein icon erstellt werden und dadrucht gitb es die Fehlerausgabe...
Versuch mal diese hier. Bei mit läuft es mit der hier.
 

Anhänge

  • CalendarPlugin.zip
    3.7 KB · Aufrufe: 8
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.