diff options
Diffstat (limited to 'zend/library/Zend/Gdata/Calendar/EventQuery.php')
| -rw-r--r-- | zend/library/Zend/Gdata/Calendar/EventQuery.php | 491 |
1 files changed, 491 insertions, 0 deletions
diff --git a/zend/library/Zend/Gdata/Calendar/EventQuery.php b/zend/library/Zend/Gdata/Calendar/EventQuery.php new file mode 100644 index 0000000..c965e0c --- /dev/null +++ b/zend/library/Zend/Gdata/Calendar/EventQuery.php @@ -0,0 +1,491 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Gdata + * @subpackage Calendar + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id: EventQuery.php 24593 2012-01-05 20:35:02Z matthew $ + */ + +/** + * Zend_Gdata_App_util + */ +require_once('Zend/Gdata/App/Util.php'); + +/** + * Zend_Gdata_Query + */ +require_once('Zend/Gdata/Query.php'); + +/** + * Assists in constructing queries for Google Calendar events + * + * @link http://code.google.com/apis/gdata/calendar/ + * + * @category Zend + * @package Zend_Gdata + * @subpackage Calendar + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Gdata_Calendar_EventQuery extends Zend_Gdata_Query +{ + + const CALENDAR_FEED_URI = 'https://www.google.com/calendar/feeds'; + + /** + * The default URI used for feeds. + */ + protected $_defaultFeedUri = self::CALENDAR_FEED_URI; + + /** + * The comment ID to retrieve. If null, no specific comment will be + * retrieved unless already included in the query URI. The event ID + * ($_event) must be set, otherwise this property is ignored. + */ + protected $_comments = null; + + /** + * The calendar address to be requested by queries. This may be an email + * address if requesting the primary calendar for a user. Defaults to + * "default" (the currently authenticated user). A null value should be + * used when the calendar address has already been set as part of the + * query URI. + */ + protected $_user = 'default'; + + /* + * The visibility to be requested by queries. Defaults to "public". A + * null value should be used when the calendar address has already been + * set as part of the query URI. + */ + protected $_visibility = 'public'; + + /** + * Projection to be requested by queries. Defaults to "full". A null value + * should be used when the calendar address has already been set as part + * of the query URI. + */ + protected $_projection = 'full'; + + /** + * The event ID to retrieve. If null, no specific event will be retrieved + * unless already included in the query URI. + */ + protected $_event = null; + + /** + * Create Gdata_Calendar_EventQuery object. If a URL is provided, + * it becomes the base URL, and additional URL components may be + * appended. For instance, if $url is 'https://www.google.com/calendar', + * the default URL constructed will be + * 'https://www.google.com/calendar/default/public/full'. + * + * If the URL already contains a calendar ID, projection, visibility, + * event ID, or comment ID, you will need to set these fields to null + * to prevent them from being inserted. See this class's properties for + * more information. + * + * @param string $url The URL to use as the base path for requests + */ + public function __construct($url = null) + { + parent::__construct($url); + } + + /** + * @see $_comments + * @param string $value + * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface + */ + public function setComments($value) + { + $this->_comments = $value; + return $this; + } + + /** + * @see $_event + * @param string $value + * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface + */ + public function setEvent($value) + { + $this->_event = $value; + return $this; + } + + /** + * @see $_projection + * @param string $value + * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface + */ + public function setProjection($value) + { + $this->_projection = $value; + return $this; + } + + /** + * @see $_user + * @param string $value + * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface + */ + public function setUser($value) + { + $this->_user = $value; + return $this; + } + + /** + * @see $_visibility + * @param bool $value + * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface + */ + public function setVisibility($value) + { + $this->_visibility = $value; + return $this; + } + + /** + * @see $_comments; + * @return string comments + */ + public function getComments() + { + return $this->_comments; + } + + /** + * @see $_event; + * @return string event + */ + public function getEvent() + { + return $this->_event; + } + + /** + * @see $_projection + * @return string projection + */ + public function getProjection() + { + return $this->_projection; + } + + /** + * @see $_user + * @return string user + */ + public function getUser() + { + return $this->_user; + } + + /** + * @see $_visibility + * @return string visibility + */ + public function getVisibility() + { + return $this->_visibility; + } + + /** + * @param int $value + * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface + */ + public function setStartMax($value) + { + if ($value != null) { + $this->_params['start-max'] = Zend_Gdata_App_Util::formatTimestamp($value); + } else { + unset($this->_params['start-max']); + } + return $this; + } + + /** + * @param int $value + * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface + */ + public function setStartMin($value) + { + if ($value != null) { + $this->_params['start-min'] = Zend_Gdata_App_Util::formatTimestamp($value); + } else { + unset($this->_params['start-min']); + } + return $this; + } + + /** + * @param string $value + * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface + */ + public function setOrderBy($value) + { + if ($value != null) { + $this->_params['orderby'] = $value; + } else { + unset($this->_params['orderby']); + } + return $this; + } + + /** + * @return int start-max + */ + public function getStartMax() + { + if (array_key_exists('start-max', $this->_params)) { + return $this->_params['start-max']; + } else { + return null; + } + } + + /** + * @return int start-min + */ + public function getStartMin() + { + if (array_key_exists('start-min', $this->_params)) { + return $this->_params['start-min']; + } else { + return null; + } + } + + /** + * @return string orderby + */ + public function getOrderBy() + { + if (array_key_exists('orderby', $this->_params)) { + return $this->_params['orderby']; + } else { + return null; + } + } + + /** + * @return string sortorder + */ + public function getSortOrder() + { + if (array_key_exists('sortorder', $this->_params)) { + return $this->_params['sortorder']; + } else { + return null; + } + } + + /** + * @return string sortorder + */ + public function setSortOrder($value) + { + if ($value != null) { + $this->_params['sortorder'] = $value; + } else { + unset($this->_params['sortorder']); + } + return $this; + } + + /** + * @return string recurrence-expansion-start + */ + public function getRecurrenceExpansionStart() + { + if (array_key_exists('recurrence-expansion-start', $this->_params)) { + return $this->_params['recurrence-expansion-start']; + } else { + return null; + } + } + + /** + * @return string recurrence-expansion-start + */ + public function setRecurrenceExpansionStart($value) + { + if ($value != null) { + $this->_params['recurrence-expansion-start'] = Zend_Gdata_App_Util::formatTimestamp($value); + } else { + unset($this->_params['recurrence-expansion-start']); + } + return $this; + } + + + /** + * @return string recurrence-expansion-end + */ + public function getRecurrenceExpansionEnd() + { + if (array_key_exists('recurrence-expansion-end', $this->_params)) { + return $this->_params['recurrence-expansion-end']; + } else { + return null; + } + } + + /** + * @return string recurrence-expansion-end + */ + public function setRecurrenceExpansionEnd($value) + { + if ($value != null) { + $this->_params['recurrence-expansion-end'] = Zend_Gdata_App_Util::formatTimestamp($value); + } else { + unset($this->_params['recurrence-expansion-end']); + } + return $this; + } + + /** + * @param string $value Also accepts bools. + * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface + */ + public function getSingleEvents() + { + if (array_key_exists('singleevents', $this->_params)) { + $value = $this->_params['singleevents']; + switch ($value) { + case 'true': + return true; + break; + case 'false': + return false; + break; + default: + require_once 'Zend/Gdata/App/Exception.php'; + throw new Zend_Gdata_App_Exception( + 'Invalid query param value for futureevents: ' . + $value . ' It must be a boolean.'); + } + } else { + return null; + } + } + + /** + * @param string $value Also accepts bools. If using a string, must be either "true" or "false". + * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface + */ + public function setSingleEvents($value) + { + if ($value !== null) { + if (is_bool($value)) { + $this->_params['singleevents'] = ($value?'true':'false'); + } elseif ($value == 'true' | $value == 'false') { + $this->_params['singleevents'] = $value; + } else { + require_once 'Zend/Gdata/App/Exception.php'; + throw new Zend_Gdata_App_Exception( + 'Invalid query param value for futureevents: ' . + $value . ' It must be a boolean.'); + } + } else { + unset($this->_params['singleevents']); + } + return $this; + } + + /** + * @return string futureevents + */ + public function getFutureEvents() + { + if (array_key_exists('futureevents', $this->_params)) { + $value = $this->_params['futureevents']; + switch ($value) { + case 'true': + return true; + break; + case 'false': + return false; + break; + default: + require_once 'Zend/Gdata/App/Exception.php'; + throw new Zend_Gdata_App_Exception( + 'Invalid query param value for futureevents: ' . + $value . ' It must be a boolean.'); + } + } else { + return null; + } + } + + /** + * @param string $value Also accepts bools. If using a string, must be either "true" or "false" or + * an exception will be thrown on retrieval. + * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface + */ + public function setFutureEvents($value) + { + if ($value !== null) { + if (is_bool($value)) { + $this->_params['futureevents'] = ($value?'true':'false'); + } elseif ($value == 'true' | $value == 'false') { + $this->_params['futureevents'] = $value; + } else { + require_once 'Zend/Gdata/App/Exception.php'; + throw new Zend_Gdata_App_Exception( + 'Invalid query param value for futureevents: ' . + $value . ' It must be a boolean.'); + } + } else { + unset($this->_params['futureevents']); + } + return $this; + } + + /** + * @return string url + */ + public function getQueryUrl() + { + if (isset($this->_url)) { + $uri = $this->_url; + } else { + $uri = $this->_defaultFeedUri; + } + if ($this->getUser() != null) { + $uri .= '/' . $this->getUser(); + } + if ($this->getVisibility() != null) { + $uri .= '/' . $this->getVisibility(); + } + if ($this->getProjection() != null) { + $uri .= '/' . $this->getProjection(); + } + if ($this->getEvent() != null) { + $uri .= '/' . $this->getEvent(); + if ($this->getComments() != null) { + $uri .= '/comments/' . $this->getComments(); + } + } + $uri .= $this->getQueryString(); + return $uri; + } + +} |
