View Source

<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[{zone-template-instance:ZFDEV:Zend Proposal Zone Template}

{zone-data:component-name}
Zend_Service_SlideShare
{zone-data}

{zone-data:proposer-list}
[John Coggeshall|mailto:john@zend.com]
[Darby Felton|mailto:darby@zend.com], Zend liaison
{zone-data}

{zone-data:revision}
1.0 - 1 November 11 2007: Initial Proposal
{zone-data}

{zone-data:overview}
Zend_Service_SlideShare is a component which encapsulates the SlideShare web services in an easy to use PHP API. SlideShare provides
a web site to manage slide show documents, including embedding them within web pages, etc. It has been called "The YouTube of Powerpoint"
{zone-data}

{zone-data:references}
* [SlideShare|http://www.slideshare.net/]
* [SlideShare API Documentation|http://www.slideshare.net/developers]
* [Implementation in Laboratory|http://framework.zend.com/svn/laboratory/library/Zend/Service]
{zone-data}

{zone-data:requirements}
* This component *will* implement the complete SlideShare web service API for working with and adding silde shows to the service
* This component *will* provide an easy to use API which encapsulates the XML communication with the non-standards-based services
* This component *will* use Zend Framework HTTP and Caching facilities as part of its function
{zone-data}

{zone-data:dependencies}
* Zend_Exception
* Zend_Http_Client
* Zend_Cache
{zone-data}

{zone-data:operation}
The component will provide a service object which allows you to retrieve slide show metadata from the SlideShare service through
the means exposed by the SlideShare API. This includes querying the existing slide shows by username, tag, group and slide show ID.
The component will also provide the ability to upload new slide shows into the slideshare database through the same API.
{zone-data}

{zone-data:milestones}
* Milestone 1: \[DONE\] Development of Prototype Component
* Milestone 2: \[DONE\] Development of Zend Framework Proposal
* Milestone 3: \[DONE\] Interaction with Community
* Milestone 4: Review of proposal
* Milestone 5: Formalization of Component to ZF coding standards
{zone-data}

{zone-data:class-list}
* Zend_Service_SlideShare
* Zend_Service_SlideShare_SlideShow
* ZEnd_Service_SlideShare_Exception
{zone-data}

{zone-data:use-cases}
||UC-01||
{code}
// Basic usage to retrieve a slideshow
$ss = new Zend_Service_SlideShare($api_key, $shared_secret);
$retval = $ss->getSlideShowsByUsername('coogle');

foreach($retval as $slideShow) {

print $slideShow->getTitle()."<br/>\n";
}
{code}
||UC-02||
{code}
// Uploading a new slideshow

$ss = new Zend_Service_SlideShare($api_key, $shared_secret, $username, $password);

$slideShow = new Zend_Service_SlideShare_SlideShow();
$slideShow->setTitle('My Slide Show');
$slideShow->setFilename('/path/to/my.ppt');


$ss->uploadSlideShow($slideShow, $make_srcfile_public_dl);
{code}
||UC-03||
{code}
// Find a single slide show

$ss = new Zend_Service_SlideShare($api_key, $shared_secret);
$retval = $ss->getSlideShow($ss_id);
{code}
{zone-data}

{zone-data:skeletons}
{code}
class Zend_Service_SlideShare_Extension extends Zend_Exception {}

class Zend_Service_SlideShare {

/* Getter and Setter methods for properties */
public function __construct($api_key, $shared_secret, $username = null, $password = null);

/**
* @returns boolean
*/
public function uploadSlideShow(Zend_Service_SlideShare_SlideShow $show, $make_src_public = true);

/**
* @returns Zend_Service_SlideShare_SlideShow
*/
public function getSlideShow($ss_id);

/**
* @returns Array of Zend_Service_SlideShare_SlideShow instances
*/
public function getSlideShowsByUsername($username, $offset = null, $limit = null);

/**
* @returns Array of Zend_Service_SlideShare_SlideShow instances
*/
public function getSlideShowsByTag($tag, $offset = null, $limit = null);

/**
* @returns Array of Zend_Service_SlideShare_SlideShow instances
*/
public function getSlideShowsByGroup($group, $offset = null, $limit = null);

}

class Zend_Service_SlideShare_SlideShow {

/* Getter and setter methods for metadata */
}
{code}
{zone-data}

{zone-template-instance}]]></ac:plain-text-body></ac:macro>