<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.service.slideshare">
    <title>Zend_Service_SlideShare</title>

    <para>
        Die <classname>Zend_Service_SlideShare</classname> wird verwendet um mit dem
        <ulink url="http://www.slideshare.net/">slideshare.net</ulink> Web Service für das
        Online-Hosten von Slideshows zu interagieren. Mit dieser Komponente kann eine Slideshow
        die in dieser Website gehostet wird in einer Website eingebettet und sogar neue
        Slideshows zum eigenen Account hochgeladen werden.
    </para>

    <sect2 id="zend.service.slideshare.basicusage">
        <title>Mit Zend_Service_SlideShare beginnen</title>

        <para>
            Um die <classname>Zend_Service_SlideShare</classname> Komponente zu verwenden muß zuerst
            ein Account auf den slideshare.net Servern erstellt werden (mehr Informationen können
            <ulink url="http://www.slideshare.net/developers/">hier</ulink> gefunden werden) um
            einen <acronym>API</acronym> Schlüssel, Benutzername, Passwort und einen geteilten
            geheimen Wert zu erhalten -- diese werden alle benötigt um die
            <classname>Zend_Service_SlideShare</classname> Komponente zu verwenden.
        </para>

        <para>
            Sobald ein Account erstellt wurde, kann die
            <classname>Zend_Service_SlideShare</classname> Komponente verwendet werden durch die
            Erstellung eines <classname>Zend_Service_SlideShare</classname> Objektes und dem
            anbieten dieser Werte wie anbei gezeigt:
        </para>

        <programlisting language="php"><![CDATA[
// Erstellt eine neue Instanz der Komponente
$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');
]]></programlisting>
    </sect2>

    <sect2 id="zend.service.slideshare.slideshowobj">
        <title>Das SlideShow Objekt</title>

        <para>
            Alle Slideshows in der <classname>Zend_Service_SlideShare</classname> werden
            repräsentiert durch die Verwendung des
            <classname>Zend_Service_SlideShare_SlideShow</classname> Objektes (sowohl beim Empfangen
            als auch beim Hochladen neuer Slideshows). Zur Referenz ist eine Pseudo-Code Version
            dieser Klasse anbei zu sehen.
        </para>

        <programlisting language="php"><![CDATA[
class Zend_Service_SlideShare_SlideShow {

    /**
     * Empfängt den Ort der Slideshow
     */
    public function getLocation() {
        return $this->_location;
    }

    /**
     * Erhält das Transcript für die Slideshow
     */
    public function getTranscript() {
        return $this->_transcript;
    }

    /**
     * Fügt ein Tag zu der Slideshow hinzu
     */
    public function addTag($tag) {
        $this->_tags[] = (string)$tag;
        return $this;
    }

    /**
     * Setzt die Tags für die Slideshow
     */
    public function setTags(Array $tags) {
        $this->_tags = $tags;
        return $this;
    }

    /**
     * Erhält alle Tags die mit der Slideshow assoziiert sind
     */
    public function getTags() {
        return $this->_tags;
    }

    /**
     * Setzt den Dateinamen im Lokalen Filesystem der Slideshow
     * (für das Hochladen einer neuen Slideshow)
     */
    public function setFilename($file) {
        $this->_slideShowFilename = (string)$file;
        return $this;
    }

    /**
     * Empfängt den Dateinamen auf dem lokalen Dateisystem der Slideshow
     * die hochgeladen werden soll
     */
    public function getFilename() {
        return $this->_slideShowFilename;
    }

    /**
     * Empfängt die ID für die Slideshow
     */
    public function getId() {
        return $this->_slideShowId;
    }

    /**
     * Empfängt den eingebetteten HTML Code für die Slideshow
     */
    public function getEmbedCode() {
        return $this->_embedCode;
    }

    /**
     * Empfängt die Thumbnail URi für die Slideshow
     */
    public function getThumbnailUrl() {
        return $this->_thumbnailUrl;
    }

    /**
     * Setzt den Titel für die Slideshow
     */
    public function setTitle($title) {
        $this->_title = (string)$title;
        return $this;
    }

    /**
     * Empfängt den Titel der Slideshow
     */
    public function getTitle() {
        return $this->_title;
    }

    /**
     * Setzt die Beschreibung für die Slideshow
     */
    public function setDescription($desc) {
        $this->_description = (string)$desc;
        return $this;
    }

    /**
     * Empfängt die Beschreibung der Slideshow
     */
    public function getDescription() {
        return $this->_description;
    }

    /**
     * Erhält den nummerischen Status der Slideshow auf dem Server
     */
    public function getStatus() {
        return $this->_status;
    }

    /**
     * Erhält die textuelle Beschreibung des Status der Slideshow
     * auf dem Server
     */
    public function getStatusDescription() {
        return $this->_statusDescription;
    }

    /**
     * Erhält den permanenten Link der Slideshow
     */
    public function getPermaLink() {
        return $this->_permalink;
    }

    /**
     * Erhält die Anzahl der Aufrufe der Slideshow
     */
    public function getNumViews() {
        return $this->_numViews;
    }
}
]]></programlisting>

        <note>
            <para>
                Die obige Pseudo-Klasse zeigt nur die Methoden welche von End-Benutzer
                Entwicklern verwendet werden sollten. Andere vorhandene Methoden sind
                intern für die Komponente.
            </para>
        </note>

        <para>
            Wenn die <classname>Zend_Service_SlideShare</classname> Komponente verwendet wird, wird
            diese Daten Klasse sehr oft verwendet um nachzusehen oder neue Slideshows zu oder
            von einem Webservice hinzuzufügen.
        </para>
    </sect2>

    <sect2 id="zend.service.slideshare.getslideshow">
        <title>Empfangen einer einzelnen Slideshow</title>

        <para>
            Die einfachste Verwendung der <classname>Zend_Service_SlideShare</classname> Komponente
            ist der Empfang einer einzelnen Slideshow durch die Slideshow ID die von der
            slideshare.net Anwendung angeboten wird und kann durch den Aufruf der
            <methodname>getSlideShow()</methodname> auf einem
            <classname>Zend_Service_SlideShare</classname> Objekt und der Verwendung des
            resultierenden <classname>Zend_Service_SlideShare_SlideShow</classname> Objektes wie
            gezeigt durchgeführt werden.
        </para>

        <programlisting language="php"><![CDATA[
// Erstellt eine neue Instanz der Komponente
$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');

$slideshow = $ss->getSlideShow(123456);

print "Slide Show Titel: {$slideshow->getTitle()}<br/>\n";
print "Anzahl an Besuchen: {$slideshow->getNumViews()}<br/>\n";
]]></programlisting>
    </sect2>

    <sect2 id="zend.service.slideshare.getslideshowlist">
        <title>Empfangen von Gruppen von Slideshows</title>

        <para>
            Wenn die spezielle ID einer Slideshow die einen interessiert und die man empfangen will
            nicht kennt, kann man auch Gruppen von Slideshows empfangen durch Verwendung einer der
            drei Methoden:
        </para>

        <itemizedlist mark="opencircle">
            <listitem>
                <para>
                    <emphasis>Slideshows von einem speziellen Account</emphasis>
                </para>

                <para>
                    Slideshows können von einem speziellen Account empfangen werden durch
                    Verwendung der <methodname>getSlideShowsByUsername()</methodname> Methode und
                    der Angabe des Benutzernamens von dem die Slideshow empfangen werden soll
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Slideshows mit einem speziellen Tag</emphasis>
                </para>

                <para>
                    Slideshows können empfangen werden wenn Sie ein oder mehrere spezielle Tags
                    enthalten durch die Verwendung der <methodname>getSlideShowsByTag()</methodname>
                    Methode und der Angabe von ein oder mehreren Tags welche der Slideshow
                    zugeordnet sein müssen um Sie zu empfangen
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>Slideshows durch Gruppen</emphasis>
                </para>

                <para>
                    Man kann Slideshows empfangen welche Mitglied einer speziellen Gruppe sind
                    durch Verwendung der <methodname>getSlideShowsByGroup()</methodname> Methode und
                    der Angabe des Namens der Gruppe welcher die Slideshow angehören muß um Sie zu
                    Empfangen
                </para>
            </listitem>
        </itemizedlist>

        <para>
            Jede der obigen Methoden des Empfangens mehrerer Slideshows zeigt das ein ähnlicher
            Ansatz verwendet wird. Ein Beispiel der Verwendung jeder Methode wird anbei gezeigt:
        </para>

        <programlisting language="php"><![CDATA[
// Erstellt eine neue Instanz der Komponente
$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');

$starting_offset = 0;
$limit = 10;

// Empfängt die ersten 10 jeden Typs
$ss_user = $ss->getSlideShowsByUser('username', $starting_offset, $limit);
$ss_tags = $ss->getSlideShowsByTag('zend', $starting_offset, $limit);
$ss_group = $ss->getSlideShowsByGroup('mygroup', $starting_offset, $limit);

// Durch die Slideshows iterieren
foreach($ss_user as $slideshow) {
   print "Slide Show Titel: {$slideshow->getTitle}<br/>\n";
}
]]></programlisting>
    </sect2>

    <sect2 id="zend.service.slideshare.caching">
        <title>Zend_Service_SlideShare Caching Policy</title>

        <para>
            Standardmäßig cached <classname>Zend_Service_SlideShare</classname> jede Anfrage an den
            Webservice automatisch in das Dateisystem (Standardpfad <filename>/tmp</filename>) für
            12 Stunden. Wenn man das Verhalten ändern will, muß eine eigenes <link
                linkend="zend.cache">Zend_Cache</link> Objekt durch Verwendung der
            <methodname>setCacheObject()</methodname> Methode angegeben werden wie anbei gezeigt:
        </para>

        <programlisting language="php"><![CDATA[
$frontendOptions = array(
                        'lifetime' => 7200,
                        'automatic_serialization' => true);
$backendOptions  = array(
                        'cache_dir' => '/webtmp/');

$cache = Zend_Cache::factory('Core',
                             'File',
                             $frontendOptions,
                             $backendOptions);

$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');
$ss->setCacheObject($cache);

$ss_user = $ss->getSlideShowsByUser('username', $starting_offset, $limit);
]]></programlisting>
    </sect2>

    <sect2 id="zend.service.slideshare.httpclient">
        <title>Das Verhalten des HTTP Clients ändern</title>

        <para>
            Wenn das Verhalten des <acronym>HTTP</acronym> Clients, aus welchen Gründen auch immer,
            geändert werden soll wenn eine Anfrage an den Webservice durchgeführt wird, kann das
            durch die Erstellung einer eigenen Instanz eines <classname>Zend_Http_Client</classname>
            Objektes durchgeführt werden (siehe <link linkend="zend.http">Zend_Http</link>). Das ist
            zum Beispiel nützlich wenn es gewünscht ist das Timeout für die Verbindung auf etwas
            anderes als den Standardwert zu setzen wie anbei gezeigt:
        </para>

        <programlisting language="php"><![CDATA[
$client = new Zend_Http_Client();
$client->setConfig(array('timeout' => 5));

$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');
$ss->setHttpClient($client);
$ss_user = $ss->getSlideShowsByUser('username', $starting_offset, $limit);
]]></programlisting>
    </sect2>
</sect1>
