Zend_Service_Simpy

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 :

  1. // Crée une instance du composant
  2. $ss = new Zend_Service_SlideShare('APIKEY',
  3.                                   'SHAREDSECRET',
  4.                                   'USERNAME',
  5.                                   '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 :

  1. class Zend_Service_SlideShare_SlideShow {
  2.  
  3.     /**
  4.      * Récupère l'emplacement du diaporama
  5.      */
  6.     public function getLocation() {
  7.         return $this->_location;
  8.     }
  9.  
  10.     /**
  11.      * Récupère la transcription du diaporama
  12.      */
  13.     public function getTranscript() {
  14.         return $this->_transcript;
  15.     }
  16.  
  17.     /**
  18.      * Associe un mot-clé au diaporama
  19.      */
  20.     public function addTag($tag) {
  21.         $this->_tags[] = (string)$tag;
  22.         return $this;
  23.     }
  24.  
  25.     /**
  26.      * Associe des mots-clés au diaporama
  27.      */
  28.     public function setTags(Array $tags) {
  29.         $this->_tags = $tags;
  30.         return $this;
  31.     }
  32.  
  33.     /**
  34.      * Récupère tous les mots-clés associés au diaporama
  35.      */
  36.     public function getTags() {
  37.         return $this->_tags;
  38.     }
  39.  
  40.     /**
  41.      * Règle le nom de fichier du diaporama dans le système
  42.      * de fichiers local (pour l'upload d'un nouveau diaporama)
  43.      */
  44.     public function setFilename($file) {
  45.         $this->_slideShowFilename = (string)$file;
  46.         return $this;
  47.     }
  48.  
  49.     /**
  50.      * Rècupère le nom de fichier du diaporama dans le système
  51.      * de fichiers local qui sera uploadé
  52.      */
  53.     public function getFilename() {
  54.         return $this->_slideShowFilename;
  55.     }
  56.  
  57.     /**
  58.      * Récupère l'ID du diaporama
  59.      */
  60.     public function getId() {
  61.         return $this->_slideShowId;
  62.     }
  63.  
  64.     /**
  65.      * Récupère le code HTML utilisé pour la projection du diaporama
  66.      */
  67.     public function getEmbedCode() {
  68.         return $this->_embedCode;
  69.     }
  70.  
  71.     /**
  72.      * Récupère l'URI de la vignette du diaporama
  73.      */
  74.     public function getThumbnailUrl() {
  75.         return $this->_thumbnailUrl;
  76.     }
  77.  
  78.     /**
  79.      * Règle le titre du diaporama
  80.      */
  81.     public function setTitle($title) {
  82.         $this->_title = (string)$title;
  83.         return $this;
  84.     }
  85.  
  86.     /**
  87.      * Récupère le titre du diaporama
  88.      */
  89.     public function getTitle() {
  90.         return $this->_title;
  91.     }
  92.  
  93.     /**
  94.      * Régle la description du diaporama
  95.      */
  96.     public function setDescription($desc) {
  97.         $this->_description = (string)$desc;
  98.         return $this;
  99.     }
  100.  
  101.     /**
  102.      * Récupère la description du diaporama
  103.      */
  104.     public function getDescription() {
  105.         return $this->_description;
  106.     }
  107.  
  108.     /**
  109.      * Récupère le statut (numérique) du diaporama sur le serveur
  110.      */
  111.     public function getStatus() {
  112.         return $this->_status;
  113.     }
  114.  
  115.     /**
  116.      * Récupère la description textuelle du statut du diaporama
  117.      * sur le serveur
  118.      */
  119.     public function getStatusDescription() {
  120.         return $this->_statusDescription;
  121.     }
  122.  
  123.     /**
  124.      * Récupère le lien permanent du diaporama
  125.      */
  126.     public function getPermaLink() {
  127.         return $this->_permalink;
  128.     }
  129.  
  130.     /**
  131.      * Récupère le nombre de diapositives que le diaporama comprend
  132.      */
  133.     public function getNumViews() {
  134.         return $this->_numViews;
  135.     }
  136. }

Note: 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.

  1. // Création d'une instance du composant
  2. $ss = new Zend_Service_SlideShare('APIKEY',
  3.                                   'SHAREDSECRET',
  4.                                   'USERNAME',
  5.                                   'PASSWORD');
  6.  
  7. $slideshow = $ss->getSlideShow(123456);
  8.  
  9. print "Titre du diaporama : {$slideshow->getTitle()}<br/>\n";
  10. 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 :

  1. // Crée une nouvelle instance du composant
  2. $ss = new Zend_Service_SlideShare('APIKEY',
  3.                                   'SHAREDSECRET',
  4.                                   'USERNAME',
  5.                                   'PASSWORD');
  6.  
  7. $starting_offset = 0;
  8. $limit = 10;
  9.  
  10. // Récupère les 10 premiers de chaque type
  11. $ss_user = $ss->getSlideShowsByUser('username', $starting_offset, $limit);
  12. $ss_tags = $ss->getSlideShowsByTag('zend', $starting_offset, $limit);
  13. $ss_group = $ss->getSlideShowsByGroup('mygroup', $starting_offset, $limit);
  14.  
  15. // Itère sur les diaporamas
  16. foreach($ss_user as $slideshow) {
  17.    print "Titre du diaporama : {$slideshow->getTitle}<br/>\n";
  18. }

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 Zend_Cache en utilisant la méthode setCacheObject :

  1. $frontendOptions = array(
  2.                         'lifetime' => 7200,
  3.                         'automatic_serialization' => true);
  4. $backendOptions  = array(
  5.                         'cache_dir' => '/webtmp/');
  6.  
  7. $cache = Zend_Cache::factory('Core',
  8.                              'File',
  9.                              $frontendOptions,
  10.                              $backendOptions);
  11.  
  12. $ss = new Zend_Service_SlideShare('APIKEY',
  13.                                   'SHAREDSECRET',
  14.                                   'USERNAME',
  15.                                   'PASSWORD');
  16. $ss->setCacheObject($cache);
  17.  
  18. $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 Zend_Http). Ceci peut être utile par exemple pour spécifier un timeout ou toute autre chose :

  1. $client = new Zend_Http_Client();
  2. $client->setConfig(array('timeout' => 5));
  3.  
  4. $ss = new Zend_Service_SlideShare('APIKEY',
  5.                                   'SHAREDSECRET',
  6.                                   'USERNAME',
  7.                                   'PASSWORD');
  8. $ss->setHttpClient($client);
  9. $ss_user = $ss->getSlideShowsByUser('username', $starting_offset, $limit);

Zend_Service_Simpy