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

    <para>
        Le composant <classname>Zend_Service_SlideShare</classname> est utilisé dans
        l'interaction avec les services Web de <ulink
        url="http://www.slideshare.net/">slideshare.net</ulink>, plate-forme servant d'hébergement
        de diaporamas. Grâce à ce composant, vous pouvez intégrer des diaporamas de Slideshare, dans
        votre propre site Web, ou même uploader des nouveaux diaporamas sur votre compte Slideshare,
        depuis votre site Web.
    </para>

    <sect2 id="zend.service.slideshare.basicusage">
        <title>Démarrage avec <classname>Zend_Service_SlideShare</classname></title>

        <para>
            Pour utiliser <classname>Zend_Service_SlideShare</classname>, vous devez créer au
            préalable un compte sur slideshare.net (plus d'informations à ce sujet <ulink
            url="http://www.slideshare.net/developers/">ici</ulink>), afin de recevoir votre clé
            d'API et votre login / mot de passe, indispensables pour utiliser le service Web.
        </para>

        <para>
            Une fois votre compte créé, vous pouvez utiliser
            <classname>Zend_Service_SlideShare</classname> en créant une instance de
            <classname>Zend_Service_SlideShare</classname> en lui passant vos identifiants :
        </para>

        <programlisting language="php"><![CDATA[
// Crée une instance du composant
$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');
]]></programlisting>
    </sect2>

    <sect2 id="zend.service.slideshare.slideshowobj">
        <title>L'objet SlideShow</title>

        <para>
            Chaque diaporama issu de <classname>Zend_Service_SlideShare</classname> est
            matérialisé par un objet <classname>Zend_Service_SlideShare_SlideShow</classname> (que
            ce soit pour uploader ou récupérer des diaporamas). Pour information, voici un pseudo
            code de cette classe :
        </para>

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

    /**
     * Récupère l'emplacement du diaporama
     */
    public function getLocation() {
        return $this->_location;
    }

    /**
     * Récupère la transcription du diaporama
     */
    public function getTranscript() {
        return $this->_transcript;
    }

    /**
     * Associe un mot-clé au diaporama
     */
    public function addTag($tag) {
        $this->_tags[] = (string)$tag;
        return $this;
    }

    /**
     * Associe des mots-clés au diaporama
     */
    public function setTags(Array $tags) {
        $this->_tags = $tags;
        return $this;
    }

    /**
     * Récupère tous les mots-clés associés au diaporama
     */
    public function getTags() {
        return $this->_tags;
    }

    /**
     * Règle le nom de fichier du diaporama dans le système
     * de fichiers local (pour l'upload d'un nouveau diaporama)
     */
    public function setFilename($file) {
        $this->_slideShowFilename = (string)$file;
        return $this;
    }

    /**
     * Rècupère le nom de fichier du diaporama dans le système
     * de fichiers local qui sera uploadé
     */
    public function getFilename() {
        return $this->_slideShowFilename;
    }

    /**
     * Récupère l'ID du diaporama
     */
    public function getId() {
        return $this->_slideShowId;
    }

    /**
     * Récupère le code HTML utilisé pour la projection du diaporama
     */
    public function getEmbedCode() {
        return $this->_embedCode;
    }

    /**
     * Récupère l'URI de la vignette du diaporama
     */
    public function getThumbnailUrl() {
        return $this->_thumbnailUrl;
    }

    /**
     * Règle le titre du diaporama
     */
    public function setTitle($title) {
        $this->_title = (string)$title;
        return $this;
    }

    /**
     * Récupère le titre du diaporama
     */
    public function getTitle() {
        return $this->_title;
    }

    /**
     * Régle la description du diaporama
     */
    public function setDescription($desc) {
        $this->_description = (string)$desc;
        return $this;
    }

    /**
     * Récupère la description du diaporama
     */
    public function getDescription() {
        return $this->_description;
    }

    /**
     * Récupère le statut (numérique) du diaporama sur le serveur
     */
    public function getStatus() {
        return $this->_status;
    }

    /**
     * Récupère la description textuelle du statut du diaporama
     * sur le serveur
     */
    public function getStatusDescription() {
        return $this->_statusDescription;
    }

    /**
     * Récupère le lien permanent du diaporama
     */
    public function getPermaLink() {
        return $this->_permalink;
    }

    /**
     * Récupère le nombre de diapositives que le diaporama comprend
     */
    public function getNumViews() {
        return $this->_numViews;
    }
}
]]></programlisting>

        <note>
            <para>
                La classe présentée ci dessus ne montre que les méthodes qui sont sensées être
                utilisées par les développeurs. D'autres méthodes internes au composant
                existent.
            </para>
        </note>

        <para>
            Lors de l'utilisation de <classname>Zend_Service_SlideShare</classname>, la classe
            de données Slideshow sera souvent utilisée pour parcourir, ajouter, ou modifier des
            diaporamas.
        </para>
    </sect2>

    <sect2 id="zend.service.slideshare.getslideshow">
        <title>Récupérer un diaporama simplement</title>

        <para>
            La manière la plus simple d'utiliser
            <classname>Zend_Service_SlideShare</classname> est la récupération d'un diaporama depuis
            son ID, fournit par le service slideshare.net, ceci est effectué via la méthode
            <methodname>getSlideShow()</methodname> de l'objet <classname>Zend_Service_SlideShare</classname>.
            Le résultat de cette méthode est un objet de type
            <classname>Zend_Service_SlideShare_SlideShow</classname>.
        </para>

        <programlisting language="php"><![CDATA[
// Création d'une instance du composant
$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');

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

print "Titre du diaporama : {$slideshow->getTitle()}<br/>\n";
print "Nombre de diapositives : {$slideshow->getNumViews()}<br/>\n";
]]></programlisting>
    </sect2>

    <sect2 id="zend.service.slideshare.getslideshowlist">
        <title>Récupérer des groupes de diaporamas</title>

        <para>
            Si vous ne connaissez pas l'ID spécifique d'un diaporama vous intéressant, il est
            possible de récupérer des groupes de diaporamas, en utilisant une de ces trois méthodes
            :
        </para>

        <itemizedlist mark="opencircle">
            <listitem>
                <para><emphasis>Diaporamas depuis un compte spécifique</emphasis></para>

                <para>
                    La méthode <methodname>getSlideShowsByUsername()</methodname> va retourner tous les
                    diaporamas depuis un compte utilisateur.
                </para>
            </listitem>

            <listitem>
                <para><emphasis>Diaporamas contenant des tags spécifiques</emphasis></para>

                <para>
                    La méthode <code>getSlideShowsByTag</code> va retourner un ensemble de
                    diaporamas comportant certains tags (mots-clés).
                </para>
            </listitem>

            <listitem>
                <para><emphasis>Diaporamas depuis un groupe</emphasis></para>

                <para>
                    La méthode <code>getSlideShowsByGroup</code> récupère tous les diaporamas
                    d'un groupe donné.
                </para>
            </listitem>
        </itemizedlist>

        <para>Voici un exemple utilisant les méthodes décrites ci-dessus :</para>

        <programlisting language="php"><![CDATA[
// Crée une nouvelle instance du composant
$ss = new Zend_Service_SlideShare('APIKEY',
                                  'SHAREDSECRET',
                                  'USERNAME',
                                  'PASSWORD');

$starting_offset = 0;
$limit = 10;

// Récupère les 10 premiers de chaque type
$ss_user = $ss->getSlideShowsByUser('username', $starting_offset, $limit);
$ss_tags = $ss->getSlideShowsByTag('zend', $starting_offset, $limit);
$ss_group = $ss->getSlideShowsByGroup('mygroup', $starting_offset, $limit);

// Itère sur les diaporamas
foreach($ss_user as $slideshow) {
   print "Titre du diaporama : {$slideshow->getTitle}<br/>\n";
}
]]></programlisting>
    </sect2>

    <sect2 id="zend.service.slideshare.caching">
        <title>Politique de cache de <classname>Zend_Service_SlideShare</classname></title>

        <para>
            Par défaut, <classname>Zend_Service_SlideShare</classname> va mettre en cache
            toute requête concernant le service Web, dans le système de fichier (par défaut :
            <code>/tmp</code>), ceci pour une durée de 12 heures. Si vous voulez changer ce
            comportement, vous devez passer votre propre objet <xref linkend="zend.cache" /> en
            utilisant la méthode <code>setCacheObject</code> :
        </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>Changer le comportement du client HTTP</title>

        <para>
            Si pour une raison quelconque vous souhaitez changer le comportement de l'objet
            client <acronym>HTTP</acronym> utilisé pour interroger le service Web, vous pouvez créer votre propre
            instance de <classname>Zend_Http_Client</classname> (voyez <xref
            linkend="zend.http" />). Ceci peut être utile par exemple pour spécifier un timeout ou
            toute autre chose :
        </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>