web/lib/Zend/Gdata/Query.php
changeset 64 162c1de6545a
parent 19 1c2f13fd785c
child 68 ecaf28ffe26e
equal deleted inserted replaced
63:5b37998e522e 64:162c1de6545a
       
     1 <?php
       
     2 
       
     3 /**
       
     4  * Zend Framework
       
     5  *
       
     6  * LICENSE
       
     7  *
       
     8  * This source file is subject to the new BSD license that is bundled
       
     9  * with this package in the file LICENSE.txt.
       
    10  * It is also available through the world-wide-web at this URL:
       
    11  * http://framework.zend.com/license/new-bsd
       
    12  * If you did not receive a copy of the license and are unable to
       
    13  * obtain it through the world-wide-web, please send an email
       
    14  * to license@zend.com so we can send you a copy immediately.
       
    15  *
       
    16  * @category   Zend
       
    17  * @package    Zend_Gdata
       
    18  * @subpackage Gdata
       
    19  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
       
    20  * @license    http://framework.zend.com/license/new-bsd     New BSD License
       
    21  * @version    $Id: Query.php 20096 2010-01-06 02:05:09Z bkarwin $
       
    22  */
       
    23 
       
    24 /**
       
    25  * Zend_Gdata_App_Util
       
    26  */
       
    27 require_once 'Zend/Gdata/App/Util.php';
       
    28 
       
    29 /**
       
    30  * Provides a mechanism to build a query URL for Gdata services.
       
    31  * Queries are not defined for APP, but are provided by Gdata services
       
    32  * as an extension.
       
    33  *
       
    34  * @category   Zend
       
    35  * @package    Zend_Gdata
       
    36  * @subpackage Gdata
       
    37  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
       
    38  * @license    http://framework.zend.com/license/new-bsd     New BSD License
       
    39  */
       
    40 class Zend_Gdata_Query
       
    41 {
       
    42 
       
    43     /**
       
    44      * Query parameters.
       
    45      *
       
    46      * @var array
       
    47      */
       
    48     protected $_params = array();
       
    49 
       
    50     /**
       
    51      * Default URL
       
    52      *
       
    53      * @var string
       
    54      */
       
    55     protected $_defaultFeedUri = null;
       
    56 
       
    57     /**
       
    58      * Base URL
       
    59      * TODO: Add setters and getters
       
    60      *
       
    61      * @var string
       
    62      */
       
    63     protected $_url = null;
       
    64 
       
    65     /**
       
    66      * Category for the query
       
    67      *
       
    68      * @var string
       
    69      */
       
    70     protected $_category = null;
       
    71 
       
    72     /**
       
    73      * Create Gdata_Query object
       
    74      */
       
    75     public function __construct($url = null)
       
    76     {
       
    77         $this->_url = $url;
       
    78     }
       
    79 
       
    80     /**
       
    81      * @return string querystring
       
    82      */
       
    83     public function getQueryString()
       
    84     {
       
    85         $queryArray = array();
       
    86         foreach ($this->_params as $name => $value) {
       
    87             if (substr($name, 0, 1) == '_') {
       
    88                 continue;
       
    89             }
       
    90             $queryArray[] = urlencode($name) . '=' . urlencode($value);
       
    91         }
       
    92         if (count($queryArray) > 0) {
       
    93             return '?' . implode('&', $queryArray);
       
    94         } else {
       
    95             return '';
       
    96         }
       
    97     }
       
    98 
       
    99     /**
       
   100      *
       
   101      */
       
   102     public function resetParameters()
       
   103     {
       
   104         $this->_params = array();
       
   105     }
       
   106 
       
   107     /**
       
   108      * @return string url
       
   109      */
       
   110     public function getQueryUrl()
       
   111     {
       
   112         if ($this->_url == null) {
       
   113             $url = $this->_defaultFeedUri;
       
   114         } else {
       
   115             $url = $this->_url;
       
   116         }
       
   117         if ($this->getCategory() !== null) {
       
   118             $url .= '/-/' . $this->getCategory();
       
   119         }
       
   120         $url .= $this->getQueryString();
       
   121         return $url;
       
   122     }
       
   123 
       
   124     /**
       
   125      * @param string $name
       
   126      * @param string $value
       
   127      * @return Zend_Gdata_Query Provides a fluent interface
       
   128      */
       
   129     public function setParam($name, $value)
       
   130     {
       
   131         $this->_params[$name] = $value;
       
   132         return $this;
       
   133     }
       
   134 
       
   135     /**
       
   136      * @param string $name
       
   137      */
       
   138     public function getParam($name)
       
   139     {
       
   140         return $this->_params[$name];
       
   141     }
       
   142 
       
   143     /**
       
   144      * @param string $value
       
   145      * @return Zend_Gdata_Query Provides a fluent interface
       
   146      */
       
   147     public function setAlt($value)
       
   148     {
       
   149         if ($value != null) {
       
   150             $this->_params['alt'] = $value;
       
   151         } else {
       
   152             unset($this->_params['alt']);
       
   153         }
       
   154         return $this;
       
   155     }
       
   156 
       
   157     /**
       
   158      * @param int $value
       
   159      * @return Zend_Gdata_Query Provides a fluent interface
       
   160      */
       
   161     public function setMaxResults($value)
       
   162     {
       
   163         if ($value != null) {
       
   164             $this->_params['max-results'] = $value;
       
   165         } else {
       
   166             unset($this->_params['max-results']);
       
   167         }
       
   168         return $this;
       
   169     }
       
   170 
       
   171     /**
       
   172      * @param string $value
       
   173      * @return Zend_Gdata_Query Provides a fluent interface
       
   174      */
       
   175     public function setQuery($value)
       
   176     {
       
   177         if ($value != null) {
       
   178             $this->_params['q'] = $value;
       
   179         } else {
       
   180             unset($this->_params['q']);
       
   181         }
       
   182         return $this;
       
   183     }
       
   184 
       
   185     /**
       
   186      * @param int $value
       
   187      * @return Zend_Gdata_Query Provides a fluent interface
       
   188      */
       
   189     public function setStartIndex($value)
       
   190     {
       
   191         if ($value != null) {
       
   192             $this->_params['start-index'] = $value;
       
   193         } else {
       
   194             unset($this->_params['start-index']);
       
   195         }
       
   196         return $this;
       
   197     }
       
   198 
       
   199     /**
       
   200      * @param string $value
       
   201      * @return Zend_Gdata_Query Provides a fluent interface
       
   202      */
       
   203     public function setUpdatedMax($value)
       
   204     {
       
   205         if ($value != null) {
       
   206             $this->_params['updated-max'] = Zend_Gdata_App_Util::formatTimestamp($value);
       
   207         } else {
       
   208             unset($this->_params['updated-max']);
       
   209         }
       
   210         return $this;
       
   211     }
       
   212 
       
   213     /**
       
   214      * @param string $value
       
   215      * @return Zend_Gdata_Query Provides a fluent interface
       
   216      */
       
   217     public function setUpdatedMin($value)
       
   218     {
       
   219         if ($value != null) {
       
   220             $this->_params['updated-min'] = Zend_Gdata_App_Util::formatTimestamp($value);
       
   221         } else {
       
   222             unset($this->_params['updated-min']);
       
   223         }
       
   224         return $this;
       
   225     }
       
   226 
       
   227     /**
       
   228      * @param string $value
       
   229      * @return Zend_Gdata_Query Provides a fluent interface
       
   230      */
       
   231     public function setPublishedMax($value)
       
   232     {
       
   233         if ($value !== null) {
       
   234             $this->_params['published-max'] = Zend_Gdata_App_Util::formatTimestamp($value);
       
   235         } else {
       
   236             unset($this->_params['published-max']);
       
   237         }
       
   238         return $this;
       
   239     }
       
   240 
       
   241     /**
       
   242      * @param string $value
       
   243      * @return Zend_Gdata_Query Provides a fluent interface
       
   244      */
       
   245     public function setPublishedMin($value)
       
   246     {
       
   247         if ($value != null) {
       
   248             $this->_params['published-min'] = Zend_Gdata_App_Util::formatTimestamp($value);
       
   249         } else {
       
   250             unset($this->_params['published-min']);
       
   251         }
       
   252         return $this;
       
   253     }
       
   254 
       
   255     /**
       
   256      * @param string $value
       
   257      * @return Zend_Gdata_Query Provides a fluent interface
       
   258      */
       
   259     public function setAuthor($value)
       
   260     {
       
   261         if ($value != null) {
       
   262             $this->_params['author'] = $value;
       
   263         } else {
       
   264             unset($this->_params['author']);
       
   265         }
       
   266         return $this;
       
   267     }
       
   268 
       
   269     /**
       
   270      * @return string rss or atom
       
   271      */
       
   272     public function getAlt()
       
   273     {
       
   274         if (array_key_exists('alt', $this->_params)) {
       
   275             return $this->_params['alt'];
       
   276         } else {
       
   277             return null;
       
   278         }
       
   279     }
       
   280 
       
   281     /**
       
   282      * @return int maxResults
       
   283      */
       
   284     public function getMaxResults()
       
   285     {
       
   286         if (array_key_exists('max-results', $this->_params)) {
       
   287             return intval($this->_params['max-results']);
       
   288         } else {
       
   289             return null;
       
   290         }
       
   291     }
       
   292 
       
   293     /**
       
   294      * @return string query
       
   295      */
       
   296     public function getQuery()
       
   297     {
       
   298         if (array_key_exists('q', $this->_params)) {
       
   299             return $this->_params['q'];
       
   300         } else {
       
   301             return null;
       
   302         }
       
   303     }
       
   304 
       
   305     /**
       
   306      * @return int startIndex
       
   307      */
       
   308     public function getStartIndex()
       
   309     {
       
   310         if (array_key_exists('start-index', $this->_params)) {
       
   311             return intval($this->_params['start-index']);
       
   312         } else {
       
   313             return null;
       
   314         }
       
   315     }
       
   316 
       
   317     /**
       
   318      * @return string updatedMax
       
   319      */
       
   320     public function getUpdatedMax()
       
   321     {
       
   322         if (array_key_exists('updated-max', $this->_params)) {
       
   323             return $this->_params['updated-max'];
       
   324         } else {
       
   325             return null;
       
   326         }
       
   327     }
       
   328 
       
   329     /**
       
   330      * @return string updatedMin
       
   331      */
       
   332     public function getUpdatedMin()
       
   333     {
       
   334         if (array_key_exists('updated-min', $this->_params)) {
       
   335             return $this->_params['updated-min'];
       
   336         } else {
       
   337             return null;
       
   338         }
       
   339     }
       
   340 
       
   341     /**
       
   342      * @return string publishedMax
       
   343      */
       
   344     public function getPublishedMax()
       
   345     {
       
   346         if (array_key_exists('published-max', $this->_params)) {
       
   347             return $this->_params['published-max'];
       
   348         } else {
       
   349             return null;
       
   350         }
       
   351     }
       
   352 
       
   353     /**
       
   354      * @return string publishedMin
       
   355      */
       
   356     public function getPublishedMin()
       
   357     {
       
   358         if (array_key_exists('published-min', $this->_params)) {
       
   359             return $this->_params['published-min'];
       
   360         } else {
       
   361             return null;
       
   362         }
       
   363     }
       
   364 
       
   365     /**
       
   366      * @return string author
       
   367      */
       
   368     public function getAuthor()
       
   369     {
       
   370         if (array_key_exists('author', $this->_params)) {
       
   371             return $this->_params['author'];
       
   372         } else {
       
   373             return null;
       
   374         }
       
   375     }
       
   376 
       
   377     /**
       
   378      * @param string $value
       
   379      * @return Zend_Gdata_Query Provides a fluent interface
       
   380      */
       
   381     public function setCategory($value)
       
   382     {
       
   383         $this->_category = $value;
       
   384         return $this;
       
   385     }
       
   386 
       
   387     /*
       
   388      * @return string id
       
   389      */
       
   390     public function getCategory()
       
   391     {
       
   392         return $this->_category;
       
   393     }
       
   394 
       
   395 
       
   396     public function __get($name)
       
   397     {
       
   398         $method = 'get'.ucfirst($name);
       
   399         if (method_exists($this, $method)) {
       
   400             return call_user_func(array(&$this, $method));
       
   401         } else {
       
   402             require_once 'Zend/Gdata/App/Exception.php';
       
   403             throw new Zend_Gdata_App_Exception('Property ' . $name . '  does not exist');
       
   404         }
       
   405     }
       
   406 
       
   407     public function __set($name, $val)
       
   408     {
       
   409         $method = 'set'.ucfirst($name);
       
   410         if (method_exists($this, $method)) {
       
   411             return call_user_func(array(&$this, $method), $val);
       
   412         } else {
       
   413             require_once 'Zend/Gdata/App/Exception.php';
       
   414             throw new Zend_Gdata_App_Exception('Property ' . $name . '  does not exist');
       
   415         }
       
   416     }
       
   417 
       
   418 }