<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.service.twitter" xmlns:xi="http://www.w3.org/2001/XInclude">
    <title>Zend_Service_Twitter</title>

    <sect2 id="zend.service.twitter.introduction">
        <title>Einführung</title>

        <para>
            <classname>Zend_Service_Twitter</classname> bietet einen Client für die <ulink
                url="http://apiwiki.twitter.com/Twitter-API-Documentation"><acronym>REST</acronym>
                <acronym>API</acronym> von Twitter</ulink>.
            <classname>Zend_Service_Twitter</classname> erlaubt es eine öffentliche Zeitachse
            abzufragen. Wenn man einen Benutzernamen und ein OAuth Details für Twitter angibt, ist
            es auch erlaubt den eigenen Status zu erhalten und zu aktualisieren, Freunden zu
            antworten, Nachrichten an Freunde schicken, Tweets als Favoriten markieren und vieles
            mehr.
        </para>

        <para>
            <classname>Zend_Service_Twitter</classname> implementiert einen <acronym>REST</acronym>
            Service und alle Methoden geben eine Instanz von
            <classname>Zend_Rest_Client_Result</classname> zurück.
        </para>

        <para>
            <classname>Zend_Service_Twitter</classname> ist in Untersektionen geteilt damit man
            einfachst erkennen kann welcher Typ von Aufrufen angefragt wird.
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <code>account</code> stellt sicher das die eigenen Zugangsdaten gültig sind,
                    prüft das <acronym>API</acronym> Limit und beendet die aktuelle Session für den
                    authentifizierten Benutzer.
                </para>
            </listitem>

            <listitem>
                <para>
                    <code>status</code> empfängt die öffentlichen und die Zeitlinien von Benutzern,
                    und zeigt den authentifizierten Benutzer an, aktualsiert Ihn, zerstört Ihn und
                    empfängt Antworten.
                </para>
            </listitem>

            <listitem>
                <para>
                    <code>user</code> empfängt Freunde und Verfolger des authentifizierten
                    Benutzers und gibt erweiterte Informationen über den angegebenen Benutzer
                    zurück.
                </para>
            </listitem>

            <listitem>
                <para>
                    <code>directMessage</code> empfängt die direkten Nachrichten des
                    authentifizierten Benutzers, löscht direkte Nachrichten und sendet neue direkte
                    Nachrichten.
                </para>
            </listitem>

            <listitem>
                <para>
                    <code>friendship</code> erstellt und entfernt Freundschaften für den
                    authentifizierten Benutzer.
                </para>
            </listitem>

            <listitem>
                <para>
                    <code>favorite</code> zeigt, erstellt und entfernt favorisierte Tweets.
                </para>
            </listitem>

            <listitem>
                <para>
                    <code>block</code> blockiert und entfernt die Blockierung von Benutzern welche
                    einem folgen.
                </para>
            </listitem>
        </itemizedlist>
    </sect2>

    <sect2 id="zend.service.twitter.authentication">
        <title>Authentifizierung</title>

        <para>
            Mit der Ausnahme des Holens der öffentlichen Zeitlinie benötigt
            <classname>Zend_Service_Twitter</classname> eine Authentifizierung als gültiger
            Benutzer. Das wird erreicht indem das OAuth Authentifizierungs Protokoll verwendet wird.
            OAuth ist der einzige unterstützte Authentifizierungsmodus für Twitter ab August 2010.
            Die OAuth Implementierung welche von <classname>Zend_Service_Twitter</classname>
            verwendet wird ist <classname>Zend_OAuth</classname>.
        </para>

        <example id="zend.service.twitter.authentication.example">
            <title>Erstellung der Twitter Klasse</title>

            <para>
                <classname>Zend_Service_Twitter</classname> muss sich selbst authorisieren, durch
                den Benutzer, bevor es mit der Twitter API verwendet werden kann (außer für die
                öffentlichen Bereiche). Das muss durch Verwendung von OAuth durchgeführt werden da
                Twitter seine grundsätzliche HTTP Authentifizierung mit August 2010 deaktiviert hat.
            </para>

            <para>
                Es gibt zwei Optionen um Authorisierung zu ermöglichen. Der erste ist die
                Implementierung des Workflows von <classname>Zend_Oauth</classname> über
                <classname>Zend_Service_Twitter</classname> welche zu einem internen
                <classname>Zend_Oauth_Consumer</classname> Objekt weiterleitet. Bitte sehen Sie in
                die Dokumentation von <classname>Zend_Oauth</classname> für ein vollständiges
                Beispiel dieses Workflows - man kann alle dokumentierten Methoden von
                <classname>Zend_Oauth_Consumer</classname> auf
                <classname>Zend_Service_Twitter</classname> aufrufen inklusive der Optionen des
                Constructors. Man kann <classname>Zend_Oauth</classname> auch direkt verwenden und
                nur den sich ergebenden Zugriffstoken an <classname>Zend_Service_Twitter</classname>
                übergeben. Das ist der normale Workflow sobald man einen wiederverwendbaren
                Zugriffstoken für einen bestimmten Twitter Benutzer bereitgestellt bekommt. Der sich
                ergebende Token für den Zugriff mit OAuth sollte für die zukünftige Verwendung in
                einer Datenbank gespeichert werden (andernfalls muss man sich für jede neue Instanz
                von <classname>Zend_Service_Twitter</classname> authorisieren). Man sollte im Kopf
                behalten dass die Authorisierung über OAuth dazu führt dass der Benutzer zu Twitter
                umgeleitet wird um seine Bestätigung zur beantragten Authorisierung zu geben (das
                wird für gespeicherte Zugriffstokens nicht wiederholt). Das benötigt zusätzliche
                Arbeit (z.B. Umleiten von Benutzern und Bereitstellen einer Callback URL) über den
                vorherigen HTTP Authentofizierungs Mechanismus bei dem ein Benutzer Anwendungen nur
                erlaubt seinen Benutzernamen und sein Passwort zu speichern.
            </para>

            <para>
                Das folgende Beispiel demonstriert das Setup von
                <classname>Zend_Service_Twitter</classname> welchem ein bereits bereitgestellter
                OAuth Zugriffstoken angegeben wird. Der Zugriffstoken ist ein Serialisiertes Objekt,
                damit man dass serialisierte Objekt in einer Datenbank speichern kann, und es zum
                Zeitpunkt des Empfangs deserialisiert bevor die Objekte an
                <classname>Zend_Service_Twitter</classname> übergeben werden. Die Dokumentation von
                <classname>Zend_Oauth</classname> demonstriert den Workflow wenn Objekte involviert
                sind.
            </para>

            <programlisting language="php"><![CDATA[
/**
 * Wir nehmen an dass $serializedToken der serialisierte Token ist welchen wir
 * von einer Datenbank oder sogar von $_SESSION bekommen haben
 * (wenn dem einfachen dokumentierten Beispiel von Zend_Oauth gefolgt wird)
 */
$token = unserialize($serializedToken);

$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));

// Die Daten des Benutzers mit Twitter prüfen
$response = $twitter->account->verifyCredentials();
]]></programlisting>
        </example>

        <note>
            <para>
                Um sich bei Twitter zu authentifizieren, MÜSSEN ALLE Anwendungen bei Twitter
                registriert werden um einen Kunden Schlüssel und ein Kunden Geheimnis zu
                erhalten welches benutzt wird wenn mit OAuth authentifiziert wird. Diese können
                nicht zwischen mehreren Anwendungen wiederverwendet werden - man muss jede neue
                Anwendung separat registrieren. Zugriffstoken von Twitter haben kein
                Ablaufdatum, deshalb ist deren Speicherung in einer Datenbank zu empfehlen (sie
                können natürlich aktualisiert werden indem der OAuth Prozess der Authorisierung
                wiederholt wird). Das kann nur getan werden indem mit dem betreffenden Benutzer,
                welchem der Zugriffstoken gehört, interagiert wird.
            </para>

            <para>
                Die vorher gezeigte pre-OAuth Version von
                <classname>Zend_Service_Twitter</classname> erlaubte die Übergabe eines
                Benutzernamens als ersten Parameter statt in einem Array. Dies wird nicht länger
                unterstützt.
            </para>
        </note>
    </sect2>

    <sect2 id="zend.service.twitter.account">
        <title>Account Methoden</title>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>verifyCredentials()</methodname> testet ob die
                    angegebenen Benutzerdaten gültig sind, und das mit einem minimalen Overhead.
                </para>

                <example id="zend.service.twitter.account.verifycredentails">
                    <title>Die Angaben prüfen</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->account->verifyCredentials();
]]></programlisting>
                </example>
            </listitem>

            <listitem>
                <para>
                    <methodname>endSession()</methodname> meldet Benutzer aus der
                    Clientanwendung ab.
                </para>

                <example id="zend.service.twitter.account.endsession">
                    <title>Beenden von Sessions</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->account->endSession();
]]></programlisting>
                </example>
            </listitem>

            <listitem>
                <para>
                    <methodname>rateLimitStatus()</methodname> gibt die restliche Anzahl von
                    <acronym>API</acronym> Anfragen zurück die der authentifizierte Benutzer noch
                    hat, bevor das <acronym>API</acronym> Limit für die aktuelle Stunde erreicht
                    ist.
                </para>

                <example id="zend.service.twitter.account.ratelimitstatus">
                    <title>Status des Rating Limits</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->account->rateLimitStatus();
]]></programlisting>
                </example>
            </listitem>
        </itemizedlist>
    </sect2>

    <sect2 id="zend.service.twitter.status">
        <title>Status Methoden</title>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>publicTimeline()</methodname> gibt die 20 letzten Statusmeldungen
                    von nicht geschützten Benutzern mit einem eigenen Benutzericon zurück. Die
                    öffentliche Zeitlinie wird von Twitter alle 60 Sekunden gecacht.
                </para>

                <example id="zend.service.twitter.status.publictimeline">
                    <title>Empfangen der öffentlichen Zeitlinie</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->status->publicTimeline();
]]></programlisting>
                </example>
            </listitem>

            <listitem>
                <para>
                    <methodname>friendsTimeline()</methodname> gibt die 20 letzten Statusmeldungen
                    zurück die von authentifizierten Benutzer und deren Freunde gesendet wurden.
                </para>

                <example id="zend.service.twitter.status.friendstimeline">
                    <title>Empfangen der Zeitlinie von Freunden</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->status->friendsTimeline();
]]></programlisting>
                </example>

                <para>
                    Die <methodname>friendsTimeline()</methodname> Methode akzeptiert ein Array
                    von optionalen Parameters um die Abfrage zu verändern.
                </para>

                <itemizedlist>
                    <listitem>
                        <para>
                            <code>since</code> grenzt die zurückgegeben Ergebnisse auf jene
                            Statusmeldungen ein die nach dem spezifizierten Datum/Zeit (bis zu 24
                            Stunden alt) erstellt wurden.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>page</code> spezifiziert die Seite die man zurückbekommen will.
                        </para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <methodname>userTimeline()</methodname> gibt die 20 letzten Statusmeldungen
                    zurück die von authentifizierten Benutzern geschrieben wurden.
                </para>

                <example id="zend.service.twitter.status.usertimeline">
                    <title>Empfangen der Zeitlinie von Benutzern</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->status->userTimeline();
]]></programlisting>
                </example>

                <para>
                    Die <methodname>userTimeline()</methodname> Methode akzeptiert ein Array von
                    optionalen Parametern um die Abfrage zu verändern.
                </para>

                <itemizedlist>
                    <listitem>
                        <para>
                            <code>id</code> spezifiziert die ID oder den Bildschirmnamen des
                            Benutzers für den die friends_timeline zurückzugeben ist.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>since</code> grenzt die zurückzugebenden Ergebnisse auf jene
                            Stati ein die nach dem spezifizierten Datum/Zeit (bis zu 24 Stunden als)
                            erstellt wurden.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>page</code> spezifiziert welche Seite zurückgegeben werden soll.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>count</code> spezifiziert die Anzahl der Stati die man erhalten
                            will. Kann nicht größer als 200 sein.
                        </para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <methodname>show()</methodname> gibt einen einzelnen Status zurück, der durch
                    den ID Parameter, wie anbei, spezifiziert wird. Der Author des Status wird auch
                    zurückgegeben.
                </para>

                <example id="zend.service.twitter.status.show">
                    <title>Den Status eines Benutzers sehen</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->status->show(1234);
]]></programlisting>
                </example>
            </listitem>

            <listitem>
                <para>
                    <methodname>update()</methodname> aktualisiert den Status des authentifizierten
                    Benutzers. Diese Methode erwartet das der aktualisierte Status übergeben wird
                    den man an Twitter übermitteln will.
                </para>

                <example id="zend.service.twitter.status.update">
                    <title>Aktualisieren des Benutzerstatus</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->status->update('Mein größter Tweet');
]]></programlisting>
                </example>

                <para>
                    Die <methodname>update()</methodname> Methode akzeptiert einen zweiten
                    optionalen Parameter.
                </para>

                <itemizedlist>
                    <listitem>
                        <para>
                            <code>in_reply_to_status_id</code> spezifiziert die ID eines bestehenden
                            Status auf den dieser Status als Antwort gesendet werden soll.
                        </para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <methodname>replies()</methodname> gibt die 20 letzten Antworten/@replies
                    (Statusaktualisierungen die mit @username anfangen) für den authentifizierten
                    Benutzer zurück.
                </para>

                <example id="zend.service.twitter.status.replies">
                    <title>Zeigt Benutzerantworten</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->status->replies();
]]></programlisting>
                </example>

                <para>
                    Die <methodname>replies()</methodname> Methode akzeptiert ein Array von
                    optionalen Parametern um die Anfrage zu verändern.
                </para>

                <itemizedlist>
                    <listitem>
                        <para>
                            <code>since</code> grenzt die Ergebnisse die man erhält auf jene ein,
                            deren Stati nach dem spezifizierten Datum/Zeit (bis zu 24 Stunden alt)
                            erstellt wurden.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>page</code> spezifiziert welche Seite soll zurückgegeben werden.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>since_id</code> gibt nur Stati zurück die eine größere ID (das
                            ist die aktuellere) als die spezifizierte ID haben.
                        </para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <methodname>destroy()</methodname> entfernt den Status der durch den benötigten
                    <code>id</code> Parameter spezifiziert ist.
                </para>

                <example id="zend.service.twitter.status.destroy">
                    <title>Löschen eines Benutzerstatus</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->status->destroy(12345);
]]></programlisting>
                </example>
            </listitem>
        </itemizedlist>
    </sect2>

     <sect2 id="zend.service.twitter.user">
        <title>Benutzermethoden</title>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>friends()</methodname> gibt bis zu 100 Freunde des authentifizierten
                    Benutzers zurück, die zuletzt aktualisiert haben, und jeden von Ihnen mit dem
                    aktuellen Status.
                </para>

                <example id="zend.service.twitter.user.friends">
                    <title>Empfangen von Benutzerfreunden</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->user->friends();
]]></programlisting>
                </example>

                <para>
                    Die <methodname>friends()</methodname> Methode akzeptiert ein Array von
                    optionalen Parameter um die Abfrage zu verändern.
                </para>

                <itemizedlist>
                    <listitem>
                        <para>
                            <code>id</code> spezifiziert die ID oder den Bildschirmnamen des
                            Benutzers von dem die Liste an Freunden zurückgegeben werden soll.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>since</code> grenzt die zurückzugebenden Ergebnisse auf jene
                            Stati ein die nach dem spezifizierten Datum/Zeit (bis zu 24 Stunden als)
                            erstellt wurden.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>page</code> spezifiziert welche Seite soll zurückgegeben werden.
                        </para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <methodname>followers()</methodname> gibt die Verfolger des authentifizierten
                    Benutzers zurück, und jeden von Ihnen mit seinem aktuellen Status.
                </para>

                <example id="zend.service.twitter.user.followers">
                    <title>Empfangen der Verfolger eines Benutzers</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->user->followers();
]]></programlisting>
                </example>

                <para>
                    Die <methodname>followers()</methodname> Methode akzeptiert ein Array von
                    optionalen Parametern welche die Anfrage verändern.
                </para>

                <itemizedlist>
                    <listitem>
                        <para>
                            <code>id</code> spezifiziert die ID oder den Bildschirmnamen des
                            Benutzers von dem die Liste an Verfolgern zurückgegeben werden soll.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>page</code> spezifiziert welche Seite soll zurückgegeben werden.
                        </para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <methodname>show()</methodname> gibt erweiterte Informationen über einen
                    angegebenen Benutzer zurück, der durch eine ID oder einen Bildschirmnamen
                    spezifiziert wird wie durch den anbei benötigten <code>id</code> Parameter.
                </para>

                <example id="zend.service.twitter.user.show">
                    <title>Zeigt Benutzerinformationen</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->user->show('myfriend');
]]></programlisting>
                </example>
            </listitem>
        </itemizedlist>
    </sect2>

    <sect2 id="zend.service.twitter.directmessage">
        <title>Methoden zur direkten Benachrichtigung</title>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>messages()</methodname> gibt eine Liste der 20 letzten direkten
                    Nachrichten für den authentifizierten Benutzer zurück.
                </para>

                <example id="zend.service.twitter.directmessage.messages">
                    <title>Empfangen der letzten empfangenen direkten Nachrichten</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->directMessage->messages();
]]></programlisting>
                </example>

                <para>
                    Die <methodname>message()</methodname> Methode akzeptiert ein Array von
                    optionalen Parametern um die Anfrage zu verändern.
                </para>

                <itemizedlist>
                    <listitem>
                        <para>
                            <code>since_id</code> gibt nur direkte Nachrichten mit einer ID zurück,
                            die größer als (das ist aktueller als) die spezifizierte ID sind.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>since</code> grenzt die zurückzugebenden Ergebnisse auf jene
                            Stati ein die nach dem spezifizierten Datum/Zeit (bis zu 24 Stunden als)
                            erstellt wurden.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>page</code> spezifiziert welche Seite soll zurückgegeben werden.
                        </para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <methodname>sent()</methodname> gibt eine Liste der 20 letzten direkten
                    Nachrichten zurück die vom authentifizierten Benutzer gesendet wurden.
                </para>

                <example id="zend.service.twitter.directmessage.sent">
                    <title>Empfangen der letzten gesendeten direkten Nachrichten</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->directMessage->sent();
]]></programlisting>
                </example>

                <para>
                    Die <methodname>sent()</methodname> Methode akzeptiert ein Array von
                    optionalen Parametern um die Abfrage zu verändern.
                </para>

                <itemizedlist>
                    <listitem>
                        <para>
                            <code>since_id</code> gibt nur direkte Nachrichten mit einer ID zurück,
                            die größer als (das ist aktueller als) die spezifizierte ID sind.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>since</code> grenzt die zurückzugebenden Ergebnisse auf jene
                            Stati ein die nach dem spezifizierten Datum/Zeit (bis zu 24 Stunden als)
                            erstellt wurden.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>page</code> spezifiziert welche Seite soll zurückgegeben werden.
                        </para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <methodname>new()</methodname> sendet eine neue direkte Nachricht vom
                    authentifizierten Benutzer zum spezifizierten Benutzer. Benötigt sowohl den
                    Benutzer also auch den Text Parameter wie unten gezeigt.
                </para>

                <example id="zend.service.twitter.directmessage.new">
                    <title>Senden einer direkten Nachricht</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->directMessage->new('myfriend', 'mymessage');
]]></programlisting>
                </example>
            </listitem>

            <listitem>
                <para>
                    <methodname>destroy()</methodname> entfernt eine direkte Nachricht die im
                    benötigten <code>id</code> Parameter spezifiziert wird. Der authentifizierte
                    Benutzer muß der Empfänger der spezifizierten direkten Nachricht sein.
                </para>

                <example id="zend.service.twitter.directmessage.destroy">
                    <title>Löschen einer direkten Nachricht</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->directMessage->destroy(123548);
]]></programlisting>
                </example>
            </listitem>
        </itemizedlist>
    </sect2>

    <sect2 id="zend.service.twitter.friendship">
        <title>Methoden für die Freundschaft</title>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>create()</methodname> befreundet den im <code>id</code> Parameter
                    spezifizierten Benutzer mit dem authentifizierten Benutzer.
                </para>

                <example id="zend.service.twitter.friendship.create">
                    <title>Erstellung eines Freundes</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->friendship->create('mynewfriend');
]]></programlisting>
                </example>
            </listitem>

            <listitem>
                <para>
                    <methodname>destroy()</methodname> beendet die Freundschaft des im
                    <code>id</code> Parameter spezifizierten Benutzers, mit dem authentifizierten
                    Benutzer.
                </para>

                <example id="zend.service.twitter.friendship.destroy">
                    <title>Löschen eines Freundes</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->friendship->destroy('myoldfriend');
]]></programlisting>
                </example>
            </listitem>

            <listitem>
                <para>
                    <methodname>exists()</methodname> testet ob eine Freundschaft zwischen dem
                    authentifizierten Benutzer und dem im <code>id</code> Parameter übergebenen
                    Benutzer existiert.
                </para>

                <example id="zend.service.twitter.friendship.exists">
                    <title>Prüfen ob eine Freundschaft existiert</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->friendship->exists('myfriend');
]]></programlisting>
                </example>
            </listitem>
        </itemizedlist>
    </sect2>

    <sect2 id="zend.service.twitter.favorite">
        <title>Methoden für Favoriten</title>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>favorites()</methodname> gibt die 20 letzten Stati von Favoriten für
                    den authentifizierten oder durch den <code>id</code> Parameter spezifizierten
                    Benutzer zurück.
                </para>

                <example id="zend.service.twitter.favorite.favorites">
                    <title>Favoriten empfangen</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->favorite->favorites();
]]></programlisting>
                </example>

                <para>
                    Die <methodname>favorites()</methodname> Methode akzeptiert ein Array von
                    optionalen Parametern um die Abfrage zu modifizieren.
                </para>

                <itemizedlist>
                    <listitem>
                        <para>
                            <code>id</code> spezifiziert die ID oder der Bildschirmname des
                            Benutzers von dem die Liste der bevorzugten Stati zurückgegeben
                            werden soll.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>page</code> spezifiziert welche Seite soll zurückgegeben werden.
                        </para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <methodname>create()</methodname> favorisiert den mit dem <code>id</code>
                    Parameter spezifizierten Status für den authentifizierten Benutzer
                </para>

                <example id="zend.service.twitter.favorite.create">
                    <title>Favoriten erstellen</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->favorite->create(12351);
]]></programlisting>
                </example>
            </listitem>

            <listitem>
                <para>
                    <methodname>destroy()</methodname> entfernt die Favorisierung des des mit dem
                    <code>id</code> Parameter spezifizierten Status für den authentifizierten
                    Benutzer.
                </para>

                <example id="zend.service.twitter.favorite.destroy">
                    <title>Entfernt Favoriten</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->favorite->destroy(12351);
]]></programlisting>
                </example>
            </listitem>
        </itemizedlist>
    </sect2>

    <sect2 id="zend.service.twitter.block">
        <title>Blockierende Methoden</title>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>exists()</methodname> retourniert ob der authentifizierende Benutzer
                    einen Zielbenutzer blockiert und kann optional das Objekt des blockierten
                    Benutzers zurückgeben wenn ein Block existiert.
                </para>

                <example id="zend.service.twitter.block.exists">
                    <title>Prüfen ob ein Block existiert</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));

// gibt true oder false zurück
$response = $twitter->block->exists('blockeduser');

// gibt die Info des blockierten Benutzers zurück wenn dieser blockiert ist
$response2 = $twitter->block->exists('blockeduser', true);
]]></programlisting>
                </example>

                <para>
                    Die <methodname>favorites()</methodname> Methode akzeptiert einen optionalen
                    zweiten Parameter.
                </para>

                <itemizedlist>
                    <listitem>
                        <para>
                            <code>returnResult</code> spezifiziert ob das Objekt des
                            Benutzers zurückgegeben werden soll, oder einfach nur
                            <constant>TRUE</constant> oder <constant>FALSE</constant>.
                        </para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <methodname>create()</methodname> blockiert den Benutzer der im <code>id</code>
                    Parameter als authentifizierter Benutzer spezifiziert wurde und löscht eine
                    Freundschaft zum blockierten Benutzer wenn eine existiert. Gibt den blockierten
                    Benutzer im angeforderten Format zurück wenn es erfolgreich war
                </para>

                <example id="zend.service.twitter.block.create">
                    <title>Einen Benutzer blockieren</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->block->create('usertoblock);
]]></programlisting>
                </example>
            </listitem>

            <listitem>
                <para>
                    <methodname>destroy()</methodname> entfernt die Blockierung des Benutzers der
                    im <code>id</code> Parameter für den authentifizierten Benutzer spezifiziert
                    wurde. Gibt den un-blockierten Benutzer im angeforderten Format zurück wenn
                    diese erfolgreich war.
                </para>

                <example id="zend.service.twitter.block.destroy">
                    <title>Entfernung einer Blockierung</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));
$response = $twitter->block->destroy('blockeduser');
]]></programlisting>
                </example>
            </listitem>

            <listitem>
                <para>
                    <methodname>blocking()</methodname> gibt ein Array von Benutzerobjekten zurück
                    die der authentifizierte Benutzer blockiert.
                </para>

                <example id="zend.service.twitter.block.blocking">
                    <title>Wen blockiert man</title>

                    <programlisting language="php"><![CDATA[
$twitter = new Zend_Service_Twitter(array(
    'username' => 'johndoe',
    'accessToken' => $token
));

// gibt die komplette Benutzerliste zurück
$response = $twitter->block->blocking(1);

// gibt ein Array von nummerischen Benutzer IDs zurück
$response2 = $twitter->block->blocking(1, true);
]]></programlisting>
                </example>

                <para>
                    Die <methodname>favorites()</methodname> Methode akzeptiert zwei optionale
                    Parameter.
                </para>

                <itemizedlist>
                    <listitem>
                        <para>
                            <code>page</code> spezifiziert die man zurück erhalten will. Eine
                            einzelne Seite enthält 20 Id's.
                        </para>
                    </listitem>

                    <listitem>
                        <para>
                            <code>returnUserIds</code> spezifiziert ob ein Array von nummerischen
                            Benutzer Id's zurückzugeben ist welche der authenzifizierte Benutzer
                            blockiert, oder ein Array von Benutzerobjekten.
                        </para>
                    </listitem>
                </itemizedlist>
            </listitem>
        </itemizedlist>
    </sect2>

    <xi:include href="Zend_Service_Twitter_Search.xml" />
</sect1>
