| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15215 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.gdata.introduction">
- <title>Einführung</title>
- <para>
- Die APIs von Google Data bieten ein programmtechnisches Interface zu einigen von Google's Online
- Services. Das Google Data Protokoll basiert auf dem
- <ulink url="http://ietfreport.isoc.org/idref/draft-ietf-atompub-protocol/">Atom Publishing Protokoll</ulink>
- und erlaubt Client Anwendungen das Empfangen von passenden Anfragen zu Daten, senden von Daten,
- modifizieren von Daten und löschen von Daten wobei Standard HTTP und das Atom Syndication Format verwendet
- wird. Die <classname>Zend_Gdata</classname> Komponente ist ein PHP 5 Interface für den Zugriff auf Daten von Google von PHP
- aus. Die <classname>Zend_Gdata</classname> Komponente unterstützt auch den Zugriff auf andere Services die das Atom
- Publishing Protokoll implementieren.
- </para>
- <para>
- Siehe <ulink url="http://code.google.com/apis/gdata/">http://code.google.com/apis/gdata/</ulink> für
- mehr Informationen über die Google Data API.
- </para>
- <para>
- Die Services auf die durch <classname>Zend_Gdata</classname> zugegriffen werden kann beinhalten unter anderem:
- <itemizedlist>
- <listitem>
- <para>
- <link linkend="zend.gdata.calendar">Google Kalender</link> ist eine populäre online
- Kalender Anwendung.
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.gdata.spreadsheets">Google Tabellenkalkulation</link> bietet ein
- gemeinschaftliches online Tabellenkalkulations Tool welches als einfacher Datenspeicher
- für eigene Anwendungen verwendet werden kann.
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.gdata.docs">Google Dokumenten Liste</link> bietet eine online Liste von
- allen Tabellenkalkulationen, Wortbearbeitungs Dokumenten, und Präsentationen die in einem
- Google Account gespeichert sind.
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.gdata.gapps">Google Versorgung</link> bietet die Möglichkeit
- Benutzerdaten, Spitznamen und Emaillisten auf einer Google Apps gehosten Domain zu
- erstellen, erhalten, aktualisieren und zu löschen.
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.gdata.gbase">Google Base</link>
- bietet die Möglichkeit Elemente in Google Base zu empfangen, senden, aktualisieren und
- zu löschen.
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.gdata.youtube">YouTube</link>
- bietet die Möglichkeit Videos, Kommentare, Favoriten, Einschreibungen, Benutzerprofile
- und vieles mehr zu Suchen und zu Empfangen.
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.gdata.photos">Picasa Web Album</link> bietet eine online Photo
- Sharing Anwendung.
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://code.google.com/apis/blogger/developers_guide_php.html">Google Blogger</ulink>
- ist ein populärer Internet Provider von "push-button Veröffentlichung" und
- Verbreitung.
- </para>
- </listitem>
- <listitem>
- <para>
- Google CodeSearch erlaubt das Suchen von öffentlichem Source Code für viele Projekte.
- </para>
- </listitem>
- <listitem>
- <para>
- Google Notebook erlaubt das sehen von veröffentlichten Notebook Inhalten.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <note>
- <title>Nicht unterstützte Services</title>
- <para>
- <classname>Zend_Gdata</classname> bietet kein Interface zu irgendwelchen anderen Google Services wie Search, Gmail,
- Translation oder Maps. Nur Services die das Google Data API unterstützen werden unterstützt.
- </para>
- </note>
- <sect2 id="zend.gdata.introduction.structure">
- <title>Struktur von Zend_Gdata</title>
- <para>
- <classname>Zend_Gata</classname> besteht aus verschiedenen Typen von Klassen:
- <itemizedlist>
- <listitem>
- <para>
- Service Klassen - abgeleitet von <classname>Zend_Gdata_App</classname>. Diese beinhalten auch andere Klassen
- wie <classname>Zend_Gdata</classname>, <classname>Zend_Gdata_Spreadsheeps</classname>, usw. Diese Klassen erlauben die Interaktion
- mit APP oder GData Services und bieten die Möglichkeit Feeds und Einträge zu empfangen,
- Einträge zu senden, zu aktualisieren und zu löschen.
- </para>
- </listitem>
- <listitem>
- <para>
- Abfrage Klassen - abgeleitet von <classname>Zend_Gdata_Query</classname>. Diese beinhalten auch andere Klassen
- für spezielle Services, wie <classname>Zend_Gdata_Spreadsheet_ListQuery</classname> und
- <classname>Zend_Gdata_Spreadsheets_CellQuery</classname>. Abfrage Klassen bieten Methoden die verwendet werden
- können um Abfragen für Daten zu erstellen die von GData Services empfangen werden.
- Die Methoden inkludieren Getter und Setter wie <code>setUpdatedMin()</code>,
- <code>setStartIndex()</code>, und <code>getPublishedMin()</code>. Die Abfrage Klassen
- haben auch eine Methode um eine URL zu erhalten die die erstellte Abfrage repräsentieren.
- -- <code>getQueryUrl</code>. Alternativ kann man die Abfrage String Komponente der URL
- erhalten indem die <code>getQueryString()</code> Methode verwendet wird.
- </para>
- </listitem>
- <listitem>
- <para>
- Feed Klassen - abgeleitet von <classname>Zend_Gdata_App_Feed</classname>. Diese beinhalten auch andere
- Klassen wie <classname>Zend_Gdata_Feed</classname>, <classname>Zend_Gdata_Spreadsheets_SpreadsheetFeed</classname>, und
- <classname>Zend_Gdata_Spreadsheets_ListFeed</classname>. Diese Klassen repräsentieren Feeds von Einträgen
- die von Services empfangen wurden. Sie werden primär verwendet um Daten die von
- Services zurückgegeben werden zu erhalten.
- </para>
- </listitem>
- <listitem>
- <para>
- Eingabe Klassen - abgeleitet von <classname>Zend_Gdata_App_Entry</classname>. Diese beinhalten auch andere
- Klassen wie <classname>Zend_Gdata_Entry</classname>, und <classname>Zend_Gdata_Spreadsheets_ListEntry</classname>. Diese Klassen
- repräsentieren Einträge die von Services empfangen oder für die Erstellung von Daten,
- die an Services geschickt werden, verwendet werden. Zusätzlich zur Möglichkeit die
- Eigenschaften eines Eintrages (wie den Zellen Wert der Tabellenkalkulation) zu setzen,
- kann das Objekt des Eintrages verwendet werden um Aktualisierungs- oder Löschanfragen
- an ein Service zu senden. Zum Beispiel kann <code>$entry->save()</code> aufgerufen werden
- um Änderungen die an einem Eintrage durchgeführt wurden zu einem Service zurück
- zu speichern von welche der Eintrag initiiert wurde, oder <code>$entry->delete()</code>
- um einen Eintrag von einem Server zu löschen.
- </para>
- </listitem>
- <listitem>
- <para>
- Andere Daten Modell Klassen - abgeleitet von <classname>Zend_Gdata_App_Extension</classname>. Diese beinhalten
- Klassen wie <classname>Zend_Gdata_App_Extension_Title</classname> (repräsentiert das atom:title XML Element),
- <classname>Zend_Gdata_Extension_When</classname> (repräsentiert das gd:when XML Element das von dem GData Event
- "Kind" verwendet wird), und <classname>Zend_Gdata_Extension_Cell</classname> (repräsentiert das gs:cell XML
- Element das von Google Tabellenkalkulation verwendet wird). Diese Klassen werden pur
- verwendet um von den Server zurückgegebene Daten zu speichern und für die Erstellung von
- Daten die an Services gesendet werden. Diese beinhalten Getter und Setter wie
- <code>setText()</code> um den Kindtext Node eines Elements zu setzen,
- <code>getText()</code> um den Text Node eines Elements zu erhalten,
- <code>getStartTime()</code> um das Startzeit Attribut eines When Elements oder anderen
- ähnlichen Methoden zu empfangen. Die Daten Modell Klassen beinhalten auch Methoden
- wie <code>getDOM()</code> um eine DOM Repräsentation des Elements und aller Kinder zu
- erhalten, und <code>transferFromDOM()</code> um eine Daten Modell Repräsentation des
- DOM Baumes zu erstellen.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.services">
- <title>Mit Google Services interagieren</title>
- <para>
- Google Daten Services basieren auf dem Atom Publishing Protokoll (APP) und dem Atom Syndication
- Format. Um mit APP oder den Google Services zu interagieren indem <classname>Zend_Gdata</classname> verwendet wird,
- müssen Service Klassen wie <classname>Zend_Gdata_App</classname>, <classname>Zend_Gdata</classname>, <classname>Zend_Gdata_Spreadsheets</classname>, usw. verwendet
- werden. Diese Service Klassen bieten Methoden um Daten von Services als Feeds zu empfangen, neue
- Einträge in Feeds einzufügen, Einträge zu aktuslieieren und Einträge zu löschen.
- </para>
- <para>
- Achtung: Ein komplettes Beispiel davon wie mit <classname>Zend_Gdata</classname> gearbeitet werden kann ist im
- <code>demos/Zend/Gdata</code> Verzeichnis vorhanden. Dieses Beispiel läuft von der Kommandozeile
- aus, aber die enthaltenen Methoden sind einfach in einem Web Anwendung zu portieren.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introdduction.magicfactory">
- <title>Instanzen von Zend_Gdata Klassen erhalten</title>
- <para>
- Der Zend Framework Namensstandard erzwingt das alle Klassen nach der Verzeichnis Struktur benannt
- werden in welcher sie vorhanden sind. Zum Beispiel eine Erweiterung die zu Tabellenkalkulation
- gehört und in <code>Zend/Gdata/Spreadsheets/Extension/...</code> gespeichert ist, muß als Ergebnis
- <classname>Zend_Gdata_Spreadsheets_Extension_...</classname> benannt werden. Das verursacht eine Menge an
- Tipparbeit wenn versucht wird eine neue Instanz eines Zellen Elements zu erstellen!
- </para>
- <para>
- Wir haben eine magische Fabriksmethode in alle Service Klassen (wie <classname>Zend_Gdata_App</classname>, <classname>Zend_Gdata</classname>,
- <classname>Zend_Gdata_Spreadsheets</classname>) implementiert welche die Erstellung neuer Instanzen von Daten Modellen,
- Abfragen und anderen Klassen viel einfacher macht. Diese magische Fabriksmethode ist durch die
- Verwendung der magischen <code>__call</code> Methode implementiert um auf alle Versuche
- <code>$service->newXXX(arg1, arg2, ...)</code> aufzurufen, angewendet zu werden. Basieren auf dem
- Wert von XXX, wird eine Suche in allen registrierten 'Paketen', für die gewünschte Klasse,
- durchgeführt. Hier sind einige Beispiele:
- </para>
- <programlisting role="php"><![CDATA[
- $ss = new Zend_Gdata_Spreadsheets();
- // Erstellt ein Zend_Gdata_App_Spreadsheets_CellEntry
- $entry = $ss->newCellEntry();
- // Erstellt ein Zend_Gdata_App_Spreadsheets_Extension_Cell
- $cell = $ss->newCell();
- $cell->setText('Mein Zellenwert');
- $cell->setRow('1');
- $cell->setColumn('3');
- $entry->cell = $cell;
- // ... $entry kann dann verwendet werden um eine Aktualisierung
- // an eine Google Tabellenkalkulation zu senden
- ]]></programlisting>
- <para>
- Jede Service Klasse im abgeleiteten Baum ist dafür verantwortlich das die richtigen 'Pakete'
- (Verzeichnisse) registriert werden, in welchen dann durch den Aufruf der matischen Fabriksmethode,
- gesucht wird.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.authentication">
- <title>Google Data Client Authentifizierung</title>
- <para>
- Die meisten Google Daten Services erfordern das sich die Client Anwendung auf dem Google Server
- authentifiziert bevor auf private Daten zugegriffen, oder Daten gespeichert oder gelöscht werden
- können. Es gibt zwei Implementationen der Authentifizierung für Google Daten:
- <link linkend="zend.gdata.authsub">AuthSub</link> und
- <link linkend="zend.gdata.clientlogin">ClientLogin</link>. <classname>Zend_Gdata</classname> bietet Klassen Interfaces
- für beide dieser Methoden.
- </para>
- <para>
- Die meisten anderen Typen von Abfragen auf Google Daten Servicen benötigen keine Authentifizierung.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.dependencies">
- <title>Abhängigkeiten</title>
- <para>
- <classname>Zend_Gdata</classname> verwendet <link linkend="zend.http.client">Zend_Http_Client</link> um Anfragen an
- google.com zu senden und Ergebnisse zu erhalten. Die Antworter der meisten Google Data Anfragen
- werden als Subklasse von <classname>Zend_Gdata_App_Feed</classname> oder <classname>Zend_Gdata_App_Entry</classname> Klassen zurückgegeben.
- </para>
- <para>
- <classname>Zend_Gdata</classname> nimmt an das die PHP Anwendung auf einem Host läuft der eine direkte Verbindung zum
- Internet hat. Der <classname>Zend_Gdata</classname> Client arbeitet indem er zu Google Daten Servern Kontakt aufnimmt.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.creation">
- <title>Erstellen eines neuen Gdata Klienten</title>
- <para>
- Man muß ein neues Objekt der Klasse <classname>Zend_Gdata_App</classname>, <classname>Zend_Gdata</classname>, oder einer dessen Subklassen
- erstellen die Helfer Methoden für servicespezifische Verhaltensweisen anbieten.
- </para>
- <para>
- Der einzige optionale Parameter für den Konstruktor von <classname>Zend_Gdata_App</classname> ist eine Instanz von
- <link linkend="zend.http.client">Zend_Http_Client</link>. Wenn dieser Parameter nicht
- übergeben wird, erstellt <classname>Zend_Gdata</classname> ein standardmäßiges <classname>Zend_Http_Client</classname> Objekt, welches keine
- Zugangsdaten zugeordnet hat um auf private Feeds zugreifen zu können. Die Spezifizierung des
- <classname>Zend_Http_Client</classname> Objektes erlaubt es auch Konfigurationsoptionen an das Client Objekt zu übergeben.
- </para>
- <programlisting role="php"><![CDATA[
- $client = new Zend_Http_Client();
- $client->setConfig( ...options... );
- $gdata = new Zend_Gdata($client);
- ]]></programlisting>
- <para>
- Beginnend mit Zend Framework 1.7, wurde die Unterstützung für die Versionierung des Protkolls
- hinzugefügt. Das erlaut dem Client und Server neue Fesatures zu unterstützen, wärend die
- Rückwärts Kompatibilität gewahrt bleibt. Wärend die meisten Services das für dich selbst
- durchführen, wenn man eine <classname>Zend_Gdata</classname> Instanz direkt erstellt (als Gegensatz zu einer Ihrer
- Unterklassen), kann es sein das man die gewünschte Version des Protokolls spezifizieren will um
- auf spezielle Serverfunktionalitäten zugreifen zu können.
- </para>
- <programlisting role="php"><![CDATA[
- $client = new Zend_Http_Client();
- $client->setConfig( ...options... );
- $gdata = new Zend_Gdata($client);
- $gdata->setMajorProtocolVersion(2);
- $gdata->setMinorProtocolVersion(null);
- ]]></programlisting>
- <para>
- Siehe auch die Sektion über Authentifizierung für Methoden, um ein authentifiziertes
- <classname>Zend_Http_Client</classname> Objekt zu erstellen.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.parameters">
- <title>Übliche Abfrage Parameter</title>
- <para>
- Es können Parameter spezifiziert werden um Abfragen mit <classname>Zend_Gdata</classname> anzupassen. Abfrageparameter
- werden spezifiziert indem Subklassen von <classname>Zend_Gdata_Query</classname> verwendet werden. Die <classname>Zend_Gdata_Query</classname>
- Klasse beinhaltet Methoden um alle Abfrageparameter zu setzen die von Gdata Services verwendet
- werden. Individuelle Services, wie Tabellenkalkulationen, bieten auch Abfrageklassen zu definierten
- Parametern welche an das spezielle Service und die Feeds angepasst sind. Tabellenkalkulationen
- beinhalten eine CellQuery Klasse um den Zellen Feed abzufragen und eine ListQuery Klasse um den
- Listen Feed abzufragen, da verschiedene Abfrageparameter für jeder dieser Feedtypen möglich sind.
- Die GData-weiten Parameter werden anbei beschrieben.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Der <code>q</code> Parameter spezifiziert eine komplette Textabfrage. Der Wert dieses
- Parameters ist ein String.
- </para>
- <para>
- Dieser Parameter kann mit der <code>setQuery()</code> Methode gesetzt werden.
- </para>
- </listitem>
- <listitem>
- <para>
- Der <code>alt</code> Parameter spezifiziert den Feed Typ. Der Wert dieses Parameters kann
- <code>atom</code>, <code>rss</code>, <code>json</code>, oder <code>json-in-script</code>
- sein. Wenn dieser Parameter nicht spezifiziert wird, ist der Standard Feedtyp
- <code>atom</code>. <classname>Zend_Http_Client</classname> könnte verwendet werden um Feeds in anderen
- Formaten zu empfangen, indem die von der <classname>Zend_Gdata_Query</classname> Klasse oder deren
- Subklassen erzeugten Abfrage URLs verwendet werden.
- </para>
- <para>
- Dieser Parameter kann mit der <code>setAlt()</code> Methode gesetzt werden.
- </para>
- </listitem>
- <listitem>
- <para>
- Der <code>maxResults</code> Parameter begrenzt die Anzahl an Einträgen im Feed. Der Wert
- dieses Parameters ist ein Integer. Die zurückgegebene Anzahl an Einträgen im Feed wird
- diesen Wert nicht überschreiten.
- </para>
- <para>
- Dieser Parameter kann mit der <code>setMaxResults()</code> Methode gesetzt werden.
- </para>
- </listitem>
- <listitem>
- <para>
- Der <code>startIndex</code> Parameter spezifiziert die ordinale Nummer des ersten
- Eintrags der im Feed zurückgegeben wird. Einträge vor dieser Nummer werden übergangen.
- </para>
- <para>
- Dieser Parameter kann mit der <code>setStartIndex()</code> Methode gesetzt werden.
- </para>
- </listitem>
- <listitem>
- <para>
- Die Parameter <code>updatedMin</code> und <code>updatedMax</code> spezifizieren Grenzen
- für das Datum der Einträge. Wenn ein Wert für <code>updatedMin</code> spezifiziert wird,
- werden keine Einträge die vor dem spezifizierten Datum aktualisiert wurden, im Feed
- inkludiert. Genauso werden keine Einträge inkludiert die nach einem Datum aktualisiert
- wurden wenn <code>updatedMax</code> spezifiziert wird.
- </para>
- <para>
- Es können nummerische Zeitstempel, oder eine Variation von Datum/Zeit String
- Repräsentationen als Wert für diese Parameter verwendet werden.
- </para>
- <para>
- Diese Parameter kkönnen mit den <code>setUpdatedMin()</code> und <code>setUpdatedMax()</code>
- Methoden gesetzt werden.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Es gibt eine <code>get</code> Funktion für jede <code>set</code> Funktion.
- </para>
- <programlisting role="php"><![CDATA[
- $query = new Zend_Gdata_Query();
- $query->setMaxResults(10);
- echo $query->getMaxResults(); // gibt 10 zurück
- ]]></programlisting>
- <para>
- Die <classname>Zend_Gdata</classname> Klasse implementiert auch "magische" Getter und Setter Methoden, es kann also der
- Name des Parameters als virtuelles Mitglied der Klasse verwendet werden.
- </para>
- <programlisting role="php"><![CDATA[
- $query = new Zend_Gdata_Query();
- $query->maxResults = 10;
- echo $query->maxResults; // gibt 10 zurück
- ]]></programlisting>
- <para>
- Es können alle Parameter mit der <code>resetParameters()</code> Funktion gelöscht werden. Das
- ist nützlich wenn ein <classname>Zend_Gdata</classname> Objekt für mehrfache Abfragen wiederverwendet werden soll.
- </para>
- <programlisting role="php"><![CDATA[
- $query = new Zend_Gdata_Query();
- $query->maxResults = 10;
- // ...den Feed empfangen...
- $query->resetParameters(); // löscht alle Parameter
- // ...einen anderen Feed empfangen...
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.gdata.introduction.getfeed">
- <title>Einen Feed empfangen</title>
- <para>
- Die <code>getFeed()</code> Funktion kann verwendet werden um einen Feed von einer spezifizierten
- URI zu empfangen. Diese Funktion gibt eine Instanz der Klasse, die als zweites Argument an
- getFeed übergeben wurde, zurück, welche standardmäßig Zend_Gdata_Feed ist.
- </para>
- <programlisting role="php"><![CDATA[
- $gdata = new Zend_Gdata();
- $query = new Zend_Gdata_Query(
- 'http://www.blogger.com/feeds/blogID/posts/default');
- $query->setMaxResults(10);
- $feed = $gdata->getFeed($query);
- ]]></programlisting>
- <para>
- Siehe spätere Sektionen für spezielle Funktionen in jeder Helfer Klasse für Google Daten Services.
- Diese Funktionen helfen Feeds von einer URI zu empfangen die für das angeforderte Service zuständig
- ist.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.paging">
- <title>Mit Mehrfach-Seiten Feeds arbeiten</title>
- <para>
- Wenn man einen Feed empfängt der eine große Anzahl an Einträgen enthält, kann dieser Feed in viele
- kleinere "Seiten" von Feeds gebrochen werden. Wenn das passiert, enthält jede Seite einen Link zur
- nächsten Seite der Serie. Auf diesen Link kann mit Hilfe von <code>getLink('next')</code>
- zugegriffen werden. Das folgende Beispiel zeigt wie auf die nächste Seite eines Feeds empfangen
- werden kann:
- </para>
- <programlisting role="php"><![CDATA[
- function getNextPage($feed) {
- $nextURL = $feed->getLink('next');
- if ($nextURL !== null) {
- return $gdata->getFeed($nextURL);
- } else {
- return null;
- }
- }
- ]]></programlisting>
- <para>
- Wenn man es vorzieht nicht mit Seiten in der eigenen Anwendung zu arbeiten, kann die erste Seite des
- Feeds an <classname>Zend_Gdata_App::retrieveAllEntriesForFeed()</classname> übergeben werden, welche alle
- Einträge von jeder Seite in einen einzelnen Feed zusammenfasst. Dieses Beispiel zeigt wie diese
- Funktion verwendet werden kann:
- </para>
- <programlisting role="php"><![CDATA[
- $gdata = new Zend_Gdata();
- $query = new Zend_Gdata_Query(
- 'http://www.blogger.com/feeds/blogID/posts/default');
- $feed = $gdata->retrieveAllEntriesForFeed($gdata->getFeed($query));
- ]]></programlisting>
- <para>
- Es gilt zu beachten das wenn diese Funktion aufgerufen wird, dies eine sehr lange Zeit benötigen
- kann im große Feeds zu komplettieren. Es kann notwendig sein PHP's Limit der Ausführungszeit zu
- vergrößern mithilfe von <code>set_time_limit()</code> zu vergrößern.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.usefeedentry">
- <title>Arbeiten mit Daten in Feeds und Einträgen</title>
- <para>
- Nachdem ein Feed empfangen wurde, können die Daten von dem Feed oder den Einträgen die in dem
- Feed enthalten sind, gelesen werden, indem entweder die in jeder Daten Modell Klasse definierten
- Zugriffsmethoden oder die magischen Zugriffsmethoden verwendet werden. Hier ist ein Beispiel:
- </para>
- <programlisting role="php"><![CDATA[
- $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
- $gdata = new Zend_Gdata($client);
- $query = new Zend_Gdata_Query(
- 'http://www.blogger.com/feeds/blogID/posts/default');
- $query->setMaxResults(10);
- $feed = $gdata->getFeed($query);
- foreach ($feed as $entry) {
- // Die magischen Zugriffsmethoden verwenden
- echo 'Titel: ' . $entry->title->text;
- // Die definierten Zugriffsmethoden verwenden
- echo 'Inhalt: ' . $entry->getContent()->getText();
- }
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.gdata.introduction.updateentry">
- <title>Einträge aktualisieren</title>
- <para>
- Nachdem ein Eintrag empfangen wurde, kann dieser Eintrag aktualisiert und die Änderungen an den
- Server zurück gespeichert werden. Hier ist ein Beispiel:
- </para>
- <programlisting role="php"><![CDATA[
- $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
- $gdata = new Zend_Gdata($client);
- $query = new Zend_Gdata_Query(
- 'http://www.blogger.com/feeds/blogID/posts/default');
- $query->setMaxResults(10);
- $feed = $gdata->getFeed($query);
- foreach ($feed as $entry) {
- // Dem Titel 'NEU' hinzufügen
- echo 'Alter Titel: ' . $entry->title->text;
- $entry->title->text = $entry->title->text . ' NEU';
- // Den Eintrag auf dem Server aktualisieren
- $newEntry = $entry->save();
- echo 'New Title: ' . $newEntry->title->text;
- }
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.gdata.introduction.post">
- <title>Einträge an Google Server schicken</title>
- <para>
- The <classname>Zend_Gdata</classname> object has a function <code>insertEntry()</code>
- with which you can upload data to save new entries
- to Google Data services.
- </para>
- <para>
- Die Daten Modell Klassen jedes Services kann verwendet werden um einen entsprechenden
- Eintrag zu erstellen und an Google's Services zu schicken. Die
- <code>insertEntry()</code> Funktion akzeptiert ein Kind von
- <classname>Zend_Gdata_App_Entry</classname> als Daten die an den Service geschickt werden. Die
- Methode gibt ein Kind von <classname>Zend_Gdata_App_Entry</classname> zurück welches den Status
- des Eintrages repräsentiert der vom Server zurückgegeben wurde.
- </para>
- <para>
- Alternativ, kann die XML Struktur eines Eintrages als String konstruiert und dieser String an die
- <code>insertEntry()</code> Funktion übergeben werden.
- </para>
- <programlisting role="php"><![CDATA[
- $gdata = new Zend_Gdata($authenticatedHttpClient);
- $entry = $gdata->newEntry();
- $entry->title = $gdata->newTitle('Füßball im Park spielen');
- $content =
- $gdata->newContent('Wir besuchen den Part und spielen Fußball');
- $content->setType('text');
- $entry->content = $content;
- $entryResult = $gdata->insertEntry($entry,
- 'http://www.blogger.com/feeds/blogID/posts/default');
- echo 'Die <id> des resultierenden Eintrages ist: ' . $entryResult->id->text;
- ]]></programlisting>
- <para>
- Um Einträge zu senden, muß ein authentifizierter <classname>Zend_Http_Client</classname> verwendet werden der mit Hilfe der
- <classname>Zend_Gdata_AuthSub</classname> oder <classname>Zend_Gdata_ClientLogin</classname> Klassen erstellt wurde.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.delete">
- <title>Einträge auf einem Google Server löschen</title>
- <para>
- Option 1: Das <classname>Zend_Gdata</classname> Objekt hat eine <code>delete()</code> Funktion mit der Einträge von Google
- Daten Services gelöscht werden können. Der bearbeitete URL Wert eines Feed Eintrages kann der
- <code>delete()</code> Methode übergeben werden.
- </para>
- <para>
- Option 2: Alternativ kann <code>$entry->delete()</code> an einem Eintrag der von einem Google
- Service empfangen wurde, aufgerufen werden.
- </para>
- <programlisting role="php"><![CDATA[
- $gdata = new Zend_Gdata($authenticatedHttpClient);
- // ein Google Daten Feed
- $feedUri = ...;
- $feed = $gdata->getFeed($feedUri);
- foreach ($feed as $feedEntry) {
- // Option 1 - den Eintrag direkt löschen
- $feedEntry->delete();
- // Option 2 - den eintrag durch Übergabe der bearbeiteten URL an
- // $gdata->delete() löschen
- // $gdata->delete($feedEntry->getEditLink()->href);
- }
- ]]></programlisting>
- <para>
- Um Einträge zu löschen, muß ein authentifizierter <classname>Zend_Http_Client</classname> verwendet werden der mit Hilfe der
- <classname>Zend_Gdata_AuthSub</classname> oder <classname>Zend_Gdata_ClientLogin</classname> Klassen erstellt wurde.
- </para>
- </sect2>
- </sect1>
|