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

    <title>Einführung</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 API 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 role="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 role="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
            <code>getSlideShow()</code> 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 role="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 <code>getSlideShowsByUsername()</code> 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 <code>getSlideShowsByTag</code> Methode und
                    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 <code>getSlideShowsByGroup</code> 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 role="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 <code>/tmp</code>) für
            12 Stunden. Wenn man das Verhalten ändern will, muß eine eigenes
            <xref linkend="zend.cache" /> Objekt durch Verwendung der <code>setCacheObject</code>
            Methode angegeben werden wie anbei gezeigt:
        </para>

        <programlisting role="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 HTTP 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  <xref linkend="zend.http" />). 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 role="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>
