<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.thebuble.org/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Bubble Sweat Bubble - Tag - zend framework</title>
  <link>http://blog.thebuble.org/</link>
  <atom:link href="http://blog.thebuble.org/feed/tag/zend%20framework/rss2" rel="self" type="application/rss+xml"/>
  <description>Les périgrinations d'un mec normal dans un monde qui ne l'est franchement pas</description>
  <language>fr</language>
  <pubDate>Thu, 02 Feb 2012 14:57:13 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Classe php5 pour l'API Fotolia utilisant le Zend Framework</title>
    <link>http://blog.thebuble.org/post/2007/11/09/Classe-php5-pour-lAPI-Fotolia-utilisant-le-Zend-Framework</link>
    <guid isPermaLink="false">urn:md5:7ecc4f3b5c331077c4881273533926cf</guid>
    <pubDate>Fri, 09 Nov 2007 04:50:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>développement</category>
        <category>fotolia</category><category>php</category><category>xml-rpc</category><category>zend framework</category>    
    <description>&lt;p&gt;Dans la lignée de mon post précédent, voici le code d'une classe implémentant de façon simple l'API XML-RPC de &lt;a href=&quot;http://www.fotolia.com/&quot;&gt;Fotolia&lt;/a&gt; avec le &lt;a href=&quot;http://framework.zend.com/&quot;&gt;Zend Framework&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;Je précise à tout hasard que ce code est livré tel quel et que
je ne suis pas responsable de tout problème pouvant survenir de son
utilisation.
&lt;br /&gt;La licence du code est la &lt;a href=&quot;http://fr.wikipedia.org/wiki/Licence_BSD&quot;&gt;licence BSD&lt;/a&gt;.
&lt;br /&gt;Pour ceux que ça intéresse, cette classe fait l'objet d'une proposition pour intégrer le framework. &lt;br /&gt;Vous pouvez suivre son évolution ici : &lt;a href=&quot;http://framework.zend.com/wiki/display/ZFPROP/Zend_Service_Fotolia&quot;&gt;http://framework.zend.com/wiki/display/ZFPROP/Zend_Service_Fotolia&lt;/a&gt;
&lt;/p&gt;    &amp;lt;?php&lt;br /&gt;&lt;pre&gt;require_once 'Zend/Service/Exception.php';&lt;br /&gt;require_once 'Zend/Http/Client.php';&lt;br /&gt;require_once 'Zend/XmlRpc/Client.php';&lt;br /&gt;&lt;br /&gt;class Zend_Service_Fotolia_Exception extends Zend_Service_Exception&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Zend_Service_Fotolia&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     * Fotolia xml-rpc uri&lt;br /&gt;     */&lt;br /&gt;    const FOTOLIA_URI = 'http://www.fotolia.com/Xmlrpc/rpc';&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * API key&lt;br /&gt;     *&lt;br /&gt;     * @var $_key string&lt;br /&gt;     */&lt;br /&gt;    private $_key;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * XML-RPC client&lt;br /&gt;     *&lt;br /&gt;     * @var $_client Zend_XmlRpc_Client&lt;br /&gt;     */&lt;br /&gt;    private $_client;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Proxy instances array&lt;br /&gt;     *&lt;br /&gt;     * @var $_proxies array&lt;br /&gt;     */&lt;br /&gt;    private $_proxies;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Current session id&lt;br /&gt;     *&lt;br /&gt;     * @var $_session_id string&lt;br /&gt;     */&lt;br /&gt;    private $_session_id;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Constructor&lt;br /&gt;     *&lt;br /&gt;     * @param  string $apiKey&lt;br /&gt;     */&lt;br /&gt;    public function __construct($apiKey)&lt;br /&gt;    {&lt;br /&gt;        $this-&amp;gt;_key = $apiKey;&lt;br /&gt;        $this-&amp;gt;_session_id = NULL;&lt;br /&gt;        $http = new Zend_Http_Client();&lt;br /&gt;        $http-&amp;gt;setCookieJar();&lt;br /&gt;        $this-&amp;gt;_client = new Zend_XmlRpc_Client(self::FOTOLIA_URI, $http);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns current api key&lt;br /&gt;     *&lt;br /&gt;     * return string&lt;br /&gt;     */&lt;br /&gt;    public function getApiKey()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;_key;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method makes possible to search media in fotolia image bank.&lt;br /&gt;     * Full search capabilities are available through the API&lt;br /&gt;     *&lt;br /&gt;     * @param  array  $searchParams&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getSearchResults($searchParams)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getSearchResults',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $searchParams));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns childs of a parent category in fotolia representative category system.&lt;br /&gt;     * This method could be used to display a part of the category system or the all tree.&lt;br /&gt;     * Fotolia categories system counts three levels.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @param  int    $category_type_id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getCategories1($language_id = 2, $id = 0, $category_type_id = 1)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getCategories1',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $language_id,&lt;br /&gt;                                   $id,&lt;br /&gt;                                   $category_type_id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns childs of a parent category in fotolia conceptual category system.&lt;br /&gt;     * This method could be used to display a part of the category system or the all tree.&lt;br /&gt;     * Fotolia categories system counts three levels.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getCategories2($language_id = 2, $id = 0)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getCategories2',&lt;br /&gt;                             array($this-&amp;gt;_key, $language_id, $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns most searched tag and most used tag on fotolia website.&lt;br /&gt;     * This method may help you to create a tags cloud.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @param  string $type&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getTags($language_id = 2, $type = 'Used')&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;_call('getTags',&lt;br /&gt;                            array($this-&amp;gt;_key, $language_id, $type));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns public galleries for a defined language&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getGalleries($language_id = 2)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getGalleries',&lt;br /&gt;                             array($this-&amp;gt;_key, $language_id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns childs of a parent colors in the Fotolia color scheme.&lt;br /&gt;     * If no parent is provided first level colors are returned.&lt;br /&gt;     * This method can be used to display color and subcolors for color search queries.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getColors($id = 0)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getColors', array($this-&amp;gt;_key, $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns Fotolia list of countries.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getCountries($language_id = 2)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getCountries',&lt;br /&gt;                             array($this-&amp;gt;_key, $language_id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns fotolia data&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getData()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getData', array($this-&amp;gt;_key));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method is a test method which returns success if connexion is valid&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function test()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('test', array($this-&amp;gt;_key));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method return all information about a media&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @param  int    $thumbnail_size&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getMediaData($id, $thumbnail_size = 110, $language_id = 2)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getMediaData',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $id,&lt;br /&gt;                                   $thumbnail_size,&lt;br /&gt;                                   $language_id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method return private galleries for logged user&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @param  int    $thumbnail_size&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getMediaGalleries($id, $language_id = 2, $thumbnail_size = 110)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getMediaData',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $id,&lt;br /&gt;                                   $language_id,&lt;br /&gt;                                   $thumbnail_size));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows to purchase a media and returns url to the purchased file&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @param  string $license_name&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getMedia($id, $license_name)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getMedia',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $id,&lt;br /&gt;                                   $license_name));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns comp images. Comp images can ONLY be used to evaluate the image&lt;br /&gt;     * as to suitability for a project, obtain client or internal company approvals,&lt;br /&gt;     * or experiment with layout alternatives.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getMediaComp($id)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getMediaComp',&lt;br /&gt;                             array($this-&amp;gt;_key, $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Authenticate an user&lt;br /&gt;     *&lt;br /&gt;     * @param  string $login User login&lt;br /&gt;     * @param  string $pass User password&lt;br /&gt;     */&lt;br /&gt;    public function loginUser($login, $pass)&lt;br /&gt;    {&lt;br /&gt;        $res = $this-&amp;gt;__call('loginUser',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $login,&lt;br /&gt;                                   $pass));&lt;br /&gt;        $this-&amp;gt;_session_id = $res['session_id'];&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Log out an user&lt;br /&gt;     */&lt;br /&gt;    public function logoutUser()&lt;br /&gt;    {&lt;br /&gt;        $this-&amp;gt;__call('logoutUser',&lt;br /&gt;                      array($this-&amp;gt;key,&lt;br /&gt;                            $this-&amp;gt;_getSessionId()));&lt;br /&gt;        $this-&amp;gt;_session_id = NULL;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns data for logged user.&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserData()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserData',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId()));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows you to get sales/views/income statistics from your account.&lt;br /&gt;     *&lt;br /&gt;     * @param  string $type&lt;br /&gt;     * @param  string $time_range&lt;br /&gt;     * @param  string $easy_date_period&lt;br /&gt;     * @param  string $start_date&lt;br /&gt;     * @param  string $end_date&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserAdvancedStats($type,&lt;br /&gt;                                         $time_range,&lt;br /&gt;                                         $easy_date_period=NULL,&lt;br /&gt;                                         $start_date=NULL,&lt;br /&gt;                                         $end_date=NULL)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserAdvancedStats',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $type,&lt;br /&gt;                                   $time_range,&lt;br /&gt;                                   $easy_date_period,&lt;br /&gt;                                   $start_date,&lt;br /&gt;                                   $end_date));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This methods returns statistics for logged user&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserStats()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserStats',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId()));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Delete a user's gallery&lt;br /&gt;     *&lt;br /&gt;     * @param  string $id&lt;br /&gt;     */&lt;br /&gt;    public function deleteUserGallery($id)&lt;br /&gt;    {&lt;br /&gt;        $this-&amp;gt;__call('deleteUserGallery',&lt;br /&gt;                      array($this-&amp;gt;_key,&lt;br /&gt;                            $this-&amp;gt;_getSessionId(),&lt;br /&gt;                            $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows you to create a new gallery in your account.&lt;br /&gt;     *&lt;br /&gt;     * @param  string $name&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function createUserGallery($name)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('createUserGallery',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $name));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows you to add a content to your default lightbox or any of your existing galleries&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $content_id&lt;br /&gt;     * @param  string $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function addToUserGallery($content_id, $id = '')&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('addToUserGallery',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $content_id,&lt;br /&gt;                                   $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows you to remove a content from your default lightbox or any of your existing galleries&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $content_id&lt;br /&gt;     * @param  string $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function removeFromUserGallery($content_id, $id = '')&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('removeFromUserGallery',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $content_id,&lt;br /&gt;                                   $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows to search media in logged user galleries or lightbox.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $page&lt;br /&gt;     * @param  int    $per_page&lt;br /&gt;     * @param  int    $thumbnail_size&lt;br /&gt;     * @param  string $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserGalleryMedias($page = 0,&lt;br /&gt;                                         $per_page = 32,&lt;br /&gt;                                         $thumbnail_size = 110,&lt;br /&gt;                                         $id = '')&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserGalleryMedias',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $page,&lt;br /&gt;                                   $per_page,&lt;br /&gt;                                   $thumbnail_size,&lt;br /&gt;                                   $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns private galleries for logged user.&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserGalleries()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserGalleries',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId()));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Magic method used to call fotolia xml-rpc functions&lt;br /&gt;     *&lt;br /&gt;     * @param  string $method&lt;br /&gt;     * @param  array  $args&lt;br /&gt;     * @return array&lt;br /&gt;     * @throws Zend_Service_Fotolia_Exception&lt;br /&gt;     */&lt;br /&gt;    public function __call($method, $args)&lt;br /&gt;    {&lt;br /&gt;        $obj = $this-&amp;gt;_getProxy($this-&amp;gt;_getNamespace($method));&lt;br /&gt;        try {&lt;br /&gt;            return $obj-&amp;gt;__call($method, $args);&lt;br /&gt;        } catch (Zend_XmlRpc_Client_Exception $e) {&lt;br /&gt;            throw new Zend_Service_Fotolia_Exception($e-&amp;gt;getMessage(),&lt;br /&gt;                                                     $e-&amp;gt;getCode());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns xml-rpc client&lt;br /&gt;     *&lt;br /&gt;     * @return Zend_XmlRpc_Client&lt;br /&gt;     */&lt;br /&gt;    public function getClient()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;_client;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns namespace associated to given method name&lt;br /&gt;     *&lt;br /&gt;     * @param  string $method&lt;br /&gt;     * @return string&lt;br /&gt;     */&lt;br /&gt;    protected function _getNamespace($method)&lt;br /&gt;    {&lt;br /&gt;        switch ($method) {&lt;br /&gt;        case 'getSearchResults':&lt;br /&gt;        case 'getCategories1':&lt;br /&gt;        case 'getCategories2':&lt;br /&gt;        case 'getTags':&lt;br /&gt;        case 'getGalleries':&lt;br /&gt;        case 'getColors':&lt;br /&gt;        case 'getCountries':&lt;br /&gt;            return 'search';&lt;br /&gt;        case 'getMediaData':&lt;br /&gt;        case 'getMediaGalleries':&lt;br /&gt;        case 'getMedia':&lt;br /&gt;        case 'getMediaComp':&lt;br /&gt;            return 'media';&lt;br /&gt;        case 'loginUSer':&lt;br /&gt;        case 'logoutUser':&lt;br /&gt;        case 'getUserData':&lt;br /&gt;        case 'getUserGalleries':&lt;br /&gt;        case 'getUserGalleryMedias':&lt;br /&gt;        case 'deleteUserGallery':&lt;br /&gt;        case 'createUserGallery':&lt;br /&gt;        case 'addToUserGallery':&lt;br /&gt;        case 'removeFromUserGallery':&lt;br /&gt;        case 'getUSerAdvancedStats':&lt;br /&gt;            return 'user';&lt;br /&gt;        case 'getData':&lt;br /&gt;        case 'test':&lt;br /&gt;            return 'main';&lt;br /&gt;        default:&lt;br /&gt;            return 'xmlrpc';&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns a xml-rpc proxy instance from a namespace&lt;br /&gt;     *&lt;br /&gt;     * @param  string $namespace&lt;br /&gt;     * @return Zend_xmlRpc_Client_ServerProxy&lt;br /&gt;     * @throws Zend_Service_Fotolia_Exception&lt;br /&gt;     */&lt;br /&gt;    protected function _getProxy($namespace)&lt;br /&gt;    {&lt;br /&gt;        if (!isset($this-&amp;gt;_proxies[$namespace])) {&lt;br /&gt;            $valid = array('xmlrpc', 'search', 'media', 'user', 'main');&lt;br /&gt;            if (!in_array($namespace, $valid)) {&lt;br /&gt;                throw new Zend_Service_Fotolia_Exception('invalid namespace');&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            $this-&amp;gt;_proxies[$namespace] = $this-&amp;gt;_client-&amp;gt;getProxy($namespace);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return $this-&amp;gt;_proxies[$namespace];&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns current session id&lt;br /&gt;     *&lt;br /&gt;     * @return string&lt;br /&gt;     * @throws Zend_Service_Fotolia_Exception&lt;br /&gt;     */&lt;br /&gt;    protected function _getSessionId()&lt;br /&gt;    {&lt;br /&gt;        if ($this-&amp;gt;_session_id === NULL) {&lt;br /&gt;            throw new Zend_Service_Fotolia_Exception('session id not set, please use loginUser method before');&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return $this-&amp;gt;_session_id;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2007/11/09/Classe-php5-pour-lAPI-Fotolia-utilisant-le-Zend-Framework#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2007/11/09/Classe-php5-pour-lAPI-Fotolia-utilisant-le-Zend-Framework#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/atom/comments/13</wfw:commentRss>
      </item>
    
  <item>
    <title>Utiliser l'API XML-RPC Fotolia en php5</title>
    <link>http://blog.thebuble.org/post/2007/11/08/Utiliser-lAPI-XML-RPC-Fotolia-en-php5</link>
    <guid isPermaLink="false">urn:md5:5c4fbb0fd39c607fd702e703974a0705</guid>
    <pubDate>Thu, 08 Nov 2007 11:17:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>développement</category>
        <category>fotolia</category><category>xml-rpc</category><category>zend framework</category>    
    <description>&lt;p&gt;Afin d'utiliser l'api de &lt;a href=&quot;http://fr.fotolia.com/&quot;&gt;Fotolia&lt;/a&gt; il est nécessaire d'obtenir une clé API.
&lt;br /&gt;Si vous n'en avez pas déjà une, il suffit d'aller dans votre compte, section &quot;outils&quot; puis de cliquer sur l'onglet &quot;api&quot;.
&lt;br /&gt;Une fois que votre clé API aura été validée par l'équipe Fotolia vous pourrez commencer à utiliser leur service xml-rpc. &lt;br /&gt;Lire &lt;a href=&quot;http://fr.fotolia.com/Services/API/Documentation&quot;&gt;la documentation&lt;/a&gt; sera bien sûr bienvenue !
&lt;/p&gt;    Voici un exemple de recherche sur Fotolia via le composant &lt;a href=&quot;http://framework.zend.com/manual/fr/zend.xmlrpc.client.html&quot;&gt;Zend_XmlRpc_Client&lt;/a&gt; du &lt;a href=&quot;http://framework.zend.com&quot;&gt;Zend Framework&lt;/a&gt;.
&lt;pre&gt;require_once 'Zend/Loader.php';&lt;br /&gt;&lt;br /&gt;Zend_Loader::registerAutoload();&lt;br /&gt;$client = new Zend_XmlRpc_Client('http://www.fotolia.com/Xmlrpc/rpc');&lt;br /&gt;&lt;br /&gt;// on récupère l'objet correspondant à l'espace de noms 'system'&lt;br /&gt;$system = $client-&amp;gt;getProxy('system');&lt;br /&gt;&lt;br /&gt;// on affiche la liste des méthodes supportées par le serveur&lt;br /&gt;echo &quot;Méthodes disponibles :\n&quot;;&lt;br /&gt;print_r($system-&amp;gt;listMethods());&lt;br /&gt;&lt;br /&gt;// on affiche l'aide xml-rpc de la méthode search.getSearchResults&lt;br /&gt;echo &quot;Aide du serveur :\n&quot;;&lt;br /&gt;echo $system-&amp;gt;methodHelp('search.getSearchResults');&lt;br /&gt;&lt;br /&gt;// clé API fotolia&lt;br /&gt;$api_key = 'ma clé api fotolia';&lt;br /&gt;&lt;br /&gt;// on récupère l'objet correspondant à l'espace de noms 'search'&lt;br /&gt;$search = $client-&amp;gt;getProxy('search');&lt;br /&gt;&lt;br /&gt;// on recherche toutes les photos de bulldog anglais sur le site US&lt;br /&gt;$results = $search-&amp;gt;getSearchResults($api_key,&lt;br /&gt;                                     array('words' =&amp;gt; 'bulldog anglais'));&lt;br /&gt;&lt;br /&gt;// on recherche toutes les photos de bulldog anglais sur le site français&lt;br /&gt;$results = $search-&amp;gt;getSearchResults($api_key,&lt;br /&gt;                                     array('words' =&amp;gt; 'bulldog anglais',&lt;br /&gt;                                           'language_id' =&amp;gt; 1));&lt;br /&gt;&lt;br /&gt;// on recherche les 10 première photos de bulldog anglais sur le site français&lt;br /&gt;$results = $search-&amp;gt;getSearchResults($api_key,&lt;br /&gt;                                     array('words' =&amp;gt; 'bulldog anglais',&lt;br /&gt;                                           'language_id' =&amp;gt; 1,&lt;br /&gt;                                           'limit' =&amp;gt; 10));&lt;br /&gt;&lt;br /&gt;// on affiche les résultats de la recherche&lt;br /&gt;foreach ($results as $result) {&lt;br /&gt;    echo 'Photo #' . $result['id'] . &quot;\\n&quot;;&lt;br /&gt;    echo 'Titre : ' . $result['title'] . &quot;\\n&quot;;&lt;br /&gt;    echo 'Auteur : ' . $result['creator_name'] . &quot;\\n&quot;;&lt;br /&gt;    echo 'Miniature de la photo : ' . $result['thumbnail_url'] . &quot;\\n&quot;;&lt;br /&gt;    echo 'Tag html à utiliser : ' . $result['thumbnail_html_tag'] . &quot;\\n&quot;;&lt;br /&gt;    echo &quot;\\n&quot;;&lt;br /&gt;}&lt;/pre&gt;
Exemple de requête nécessitant une identification préalable :
&lt;pre&gt;require_once 'Zend/Loader.php';&lt;br /&gt;&lt;br /&gt;Zend_Loader::registerAutoload();&lt;br /&gt;&lt;br /&gt;// on utilise un client http avec le support des cookies activé&lt;br /&gt;$http_client = new Zend_Http_Client();&lt;br /&gt;$http_client-&amp;gt;setCookieJar();&lt;br /&gt;$client = new Zend_XmlRpc_Client('http://www.fotolia.com/Xmlrpc/rpc',&lt;br /&gt;                                 $http_client);&lt;br /&gt;&lt;br /&gt;// clé API fotolia&lt;br /&gt;$api_key = 'ma clé api fotolia';&lt;br /&gt;&lt;br /&gt;// on récupère l'objet correspondant à l'espace de noms 'user'&lt;br /&gt;$user = $client-&amp;gt;getProxy('user');&lt;br /&gt;&lt;br /&gt;// on s'identifie&lt;br /&gt;$res = $user-&amp;gt;loginUser($api_key, 'identifiant', 'mot de passe');&lt;br /&gt;$sess_id = $res['session_id'];&lt;br /&gt;&lt;br /&gt;// on récupère les statistiques du compte&lt;br /&gt;$stats = $user-&amp;gt;getUserStats($api_key, $sess_id);&lt;br /&gt;&lt;br /&gt;echo 'Nombre de médias envoyés : ' . $stats['nb_media_uploaded'] . &quot;\\n&quot;;&lt;br /&gt;echo 'Nombre de médias validés : ' . $stats['nb_media_accepted'] . &quot;\\n&quot;;&lt;br /&gt;echo 'Nombre de médias achetés : ' . $stats['nb_media_purchased'] . &quot;\\n&quot;;&lt;br /&gt;echo 'Nombre de médias vendus : ' . $stats['nb_media_sold'] . &quot;\\n&quot;;&lt;br /&gt;echo 'Classement du compte : ' . $stats['ranking_absolute'] . &quot;\\n&quot;;&lt;br /&gt;echo 'Classement du compte sur les 7 derniers jours : ' . $stats['ranking_relative'] . &quot;\\n&quot;;&lt;/pre&gt;
Comme vous le voyez, il est très simple d'accéder à toute la puissance de Fotolia grâce au Zend Framework !</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2007/11/08/Utiliser-lAPI-XML-RPC-Fotolia-en-php5#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2007/11/08/Utiliser-lAPI-XML-RPC-Fotolia-en-php5#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/atom/comments/12</wfw:commentRss>
      </item>
    
  <item>
    <title>Zend Framework</title>
    <link>http://blog.thebuble.org/post/2006/08/15/Zend-Framework</link>
    <guid isPermaLink="false">urn:md5:08cde61ad90443f27b57664d7cc06ad6</guid>
    <pubDate>Tue, 15 Aug 2006 16:03:00 +0200</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>développement</category>
        <category>php</category><category>zend framework</category>    
    <description>    J'ai longtemps cherché un framework intéressant à utiliser en php.
&lt;br /&gt;&lt;br /&gt;Tous les framework que j'avais pu trouvé ne me plaisaient pas : ils étaient ou trop lourd ou trop simple et dans les deux cas compliqués à mettre en oeuvre dans un projet industriel.
&lt;br /&gt;&lt;br /&gt;Mais voilà que Zend a répondu à mon &lt;a href=&quot;http://framework.zend.com&quot;&gt;besoin&lt;/a&gt; !&lt;br /&gt;Ce framework est conçu sur le modèle &lt;a href=&quot;http://en.wikipedia.org/wiki/Model-view-controller&quot;&gt;MVC&lt;/a&gt; et est très modulaire.&lt;br /&gt;Le fait qu'il soit supporté par Zend lui donne un côté pérenne qui n'est pas fait pour me déplaire !</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2006/08/15/Zend-Framework#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2006/08/15/Zend-Framework#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/atom/comments/5</wfw:commentRss>
      </item>
    
</channel>
</rss>
