# Zend_Service_SlideShare

Le composant `Zend_Service_SlideShare` est utilisé dans l'interaction avec les services Web de slideshare.net, 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.

## Démarrage avec `Zend_Service_SlideShare`

Pour utiliser `Zend_Service_SlideShare`, vous devez créer au préalable un compte sur slideshare.net (plus d'informations à ce sujet ici), afin de recevoir votre clé d'API et votre login / mot de passe, indispensables pour utiliser le service Web.

Une fois votre compte créé, vous pouvez utiliser `Zend_Service_SlideShare` en créant une instance de `Zend_Service_SlideShare` en lui passant vos identifiants :

    // Crée une instance du composant
    $ss = new Zend_Service_SlideShare('APIKEY',
                                      'SHAREDSECRET',
                                      'USERNAME',
                                      'PASSWORD');

## L'objet SlideShow

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

    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;
        }
    }

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.

Lors de l'utilisation de `Zend_Service_SlideShare`, la classe de données Slideshow sera souvent utilisée pour parcourir, ajouter, ou modifier des diaporamas.

## Récupérer un diaporama simplement

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

    // 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";

## Récupérer des groupes de diaporamas

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 :

- Diaporamas depuis un compte spécifique

  La méthode `getSlideShowsByUsername()` va retourner tous les diaporamas depuis un compte utilisateur.

- Diaporamas contenant des tags spécifiques

  La méthode `getSlideShowsByTag` va retourner un ensemble de diaporamas comportant certains tags (mots-clés).

- Diaporamas depuis un groupe

  La méthode `getSlideShowsByGroup` récupère tous les diaporamas d'un groupe donné.

Voici un exemple utilisant les méthodes décrites ci-dessus :

    // 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";
    }

## Politique de cache de `Zend_Service_SlideShare`

Par défaut, `Zend_Service_SlideShare` va mettre en cache toute requête concernant le service Web, dans le système de fichier (par défaut : `/tmp`), ceci pour une durée de 12 heures. Si vous voulez changer ce comportement, vous devez passer votre propre objet en utilisant la méthode `setCacheObject` :

    $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);

## Changer le comportement du client HTTP

Si pour une raison quelconque vous souhaitez changer le comportement de l'objet client HTTP utilisé pour interroger le service Web, vous pouvez créer votre propre instance de `Zend_Http_Client` (voyez ). Ceci peut être utile par exemple pour spécifier un timeout ou toute autre chose :

    $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);