.. _zendservice.slideshare: ZendService\SlideShare ======================= The ``ZendService\SlideShare`` component is used to interact with the `slideshare.net`_ web services for hosting slide shows online. With this component, you can embed slide shows which are hosted on this web site within a web site and even upload new slide shows to your account. .. _zendservice.slideshare.basicusage: Getting Started with ZendService\SlideShare -------------------------------------------- In order to use the ``ZendService\SlideShare`` component you must first create an account on the slideshare.net servers (more information can be found `here`_) in order to receive an *API* key, username, password and shared secret value -- all of which are needed in order to use the ``ZendService\SlideShare`` component. Once you have setup an account, you can begin using the ``ZendService\SlideShare`` component by creating a new instance of the ``ZendService\SlideShare`` object and providing these values as shown below: .. code-block:: php :linenos: // Create a new instance of the component $ss = new ZendService\SlideShare\SlideShare('APIKEY', 'SHAREDSECRET', 'USERNAME', 'PASSWORD'); .. _zendservice.slideshare.slideshowobj: The SlideShow object -------------------- All slide shows in the ``ZendService\SlideShare`` component are represented using the ``ZendService\SlideShare\SlideShow`` object (both when retrieving and uploading new slide shows). For your reference a pseudo-code version of this class is provided below. .. code-block:: php :linenos: class ZendService\SlideShare\SlideShow { /** * Retrieves the location of the slide show */ public function getLocation() { return $this->_location; } /** * Gets the transcript for this slide show */ public function getTranscript() { return $this->_transcript; } /** * Adds a tag to the slide show */ public function addTag($tag) { $this->_tags[] = (string)$tag; return $this; } /** * Sets the tags for the slide show */ public function setTags(Array $tags) { $this->_tags = $tags; return $this; } /** * Gets all of the tags associated with the slide show */ public function getTags() { return $this->_tags; } /** * Sets the filename on the local filesystem of the slide show * (for uploading a new slide show) */ public function setFilename($file) { $this->_slideShowFilename = (string)$file; return $this; } /** * Retrieves the filename on the local filesystem of the slide show * which will be uploaded */ public function getFilename() { return $this->_slideShowFilename; } /** * Gets the ID for the slide show */ public function getId() { return $this->_slideShowId; } /** * Retrieves the HTML embed code for the slide show */ public function getEmbedCode() { return $this->_embedCode; } /** * Retrieves the Thumbnail URi for the slide show */ public function getThumbnailUrl() { return $this->_thumbnailUrl; } /** * Sets the title for the Slide show */ public function setTitle($title) { $this->_title = (string)$title; return $this; } /** * Retrieves the Slide show title */ public function getTitle() { return $this->_title; } /** * Sets the description for the Slide show */ public function setDescription($desc) { $this->_description = (string)$desc; return $this; } /** * Gets the description of the slide show */ public function getDescription() { return $this->_description; } /** * Gets the numeric status of the slide show on the server */ public function getStatus() { return $this->_status; } /** * Gets the textual description of the status of the slide show on * the server */ public function getStatusDescription() { return $this->_statusDescription; } /** * Gets the permanent link of the slide show */ public function getPermaLink() { return $this->_permalink; } /** * Gets the number of views the slide show has received */ public function getNumViews() { return $this->_numViews; } } .. note:: The above pseudo-class only shows those methods which should be used by end-user developers. Other available methods are internal to the component. When using the ``ZendService\SlideShare`` component, this data class will be used frequently to browse or add new slide shows to or from the web service. .. _zendservice.slideshare.getslideshow: Retrieving a single slide show ------------------------------ The simplest usage of the ``ZendService\SlideShare`` component is the retrieval of a single slide show by slide show ID provided by the slideshare.net application and is done by calling the ``getSlideShow()`` method of a ``ZendService\SlideShare`` object and using the resulting ``ZendService\SlideShare\SlideShow`` object as shown. .. code-block:: php :linenos: // Create a new instance of the component $ss = new ZendService\SlideShare\SlideShare('APIKEY', 'SHAREDSECRET', 'USERNAME', 'PASSWORD'); $slideshow = $ss->getSlideShow(123456); print "Slide Show Title: {$slideshow->getTitle()}
\n"; print "Number of views: {$slideshow->getNumViews()}
\n"; .. _zendservice.slideshare.getslideshowlist: Retrieving Groups of Slide Shows -------------------------------- If you do not know the specific ID of a slide show you are interested in retrieving, you can retrieving groups of slide shows by using one of three methods: - **Slide shows from a specific account** You can retrieve slide shows from a specific account by using the ``getSlideShowsByUsername()`` method and providing the username from which the slide shows should be retrieved - **Slide shows which contain specific tags** You can retrieve slide shows which contain one or more specific tags by using the ``getSlideShowsByTag()`` method and providing one or more tags which the slide show must have assigned to it in order to be retrieved - **Slide shows by group** You can retrieve slide shows which are a member of a specific group using the ``getSlideShowsByGroup()`` method and providing the name of the group which the slide show must belong to in order to be retrieved Each of the above methods of retrieving multiple slide shows a similar approach is used. An example of using each method is shown below: .. code-block:: php :linenos: // Create a new instance of the component $ss = new ZendService\SlideShare\SlideShare('APIKEY', 'SHAREDSECRET', 'USERNAME', 'PASSWORD'); $starting_offset = 0; $limit = 10; // Retrieve the first 10 of each 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); // Iterate over the slide shows foreach ($ss_user as $slideshow) { print "Slide Show Title: {$slideshow->getTitle}
\n"; } .. _zendservice.slideshare.caching: ZendService\SlideShare Caching policies ---------------------------------------- By default, ``ZendService\SlideShare\SlideShare`` will cache any request against the web service automatically to the filesystem (default path ``/tmp``) for 12 hours. If you desire to change this behavior, you must provide your own :ref:`Zend\Cache\Cache ` object using the ``setCacheObject()`` method as shown: .. code-block:: php :linenos: $frontendOptions = array( 'lifetime' => 7200, 'automatic_serialization' => true); $backendOptions = array( 'cache_dir' => '/webtmp/'); $cache = Zend\Cache\Cache::factory('Core', 'File', $frontendOptions, $backendOptions); $ss = new ZendService\SlideShare\SlideShare('APIKEY', 'SHAREDSECRET', 'USERNAME', 'PASSWORD'); $ss->setCacheObject($cache); $ss_user = $ss->getSlideShowsByUser('username', $starting_offset, $limit); .. _zendservice.slideshare.httpclient: Changing the behavior of the HTTP Client ---------------------------------------- If for whatever reason you would like to change the behavior of the *HTTP* client when making the web service request, you can do so by creating your own instance of the ``Zend\Http\Client`` object (see :ref:`Zend\Http `). This is useful for instance when it is desirable to set the timeout for the connection to something other then default as shown: .. code-block:: php :linenos: $client = new Zend\Http\Client(); $client->setConfig(array('timeout' => 5)); $ss = new ZendService\SlideShare\SlideShare('APIKEY', 'SHAREDSECRET', 'USERNAME', 'PASSWORD'); $ss->setHttpClient($client); $ss_user = $ss->getSlideShowsByUser('username', $starting_offset, $limit); .. _`slideshare.net`: http://www.slideshare.net/ .. _`here`: http://www.slideshare.net/developers/