|
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 Calendar |
|
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: EventQuery.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 * Zend_Gdata_Query |
|
31 */ |
|
32 require_once('Zend/Gdata/Query.php'); |
|
33 |
|
34 /** |
|
35 * Assists in constructing queries for Google Calendar events |
|
36 * |
|
37 * @link http://code.google.com/apis/gdata/calendar/ |
|
38 * |
|
39 * @category Zend |
|
40 * @package Zend_Gdata |
|
41 * @subpackage Calendar |
|
42 * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) |
|
43 * @license http://framework.zend.com/license/new-bsd New BSD License |
|
44 */ |
|
45 class Zend_Gdata_Calendar_EventQuery extends Zend_Gdata_Query |
|
46 { |
|
47 |
|
48 const CALENDAR_FEED_URI = 'http://www.google.com/calendar/feeds'; |
|
49 |
|
50 /** |
|
51 * The default URI used for feeds. |
|
52 */ |
|
53 protected $_defaultFeedUri = self::CALENDAR_FEED_URI; |
|
54 |
|
55 /** |
|
56 * The comment ID to retrieve. If null, no specific comment will be |
|
57 * retrieved unless already included in the query URI. The event ID |
|
58 * ($_event) must be set, otherwise this property is ignored. |
|
59 */ |
|
60 protected $_comments = null; |
|
61 |
|
62 /** |
|
63 * The calendar address to be requested by queries. This may be an email |
|
64 * address if requesting the primary calendar for a user. Defaults to |
|
65 * "default" (the currently authenticated user). A null value should be |
|
66 * used when the calendar address has already been set as part of the |
|
67 * query URI. |
|
68 */ |
|
69 protected $_user = 'default'; |
|
70 |
|
71 /* |
|
72 * The visibility to be requested by queries. Defaults to "public". A |
|
73 * null value should be used when the calendar address has already been |
|
74 * set as part of the query URI. |
|
75 */ |
|
76 protected $_visibility = 'public'; |
|
77 |
|
78 /** |
|
79 * Projection to be requested by queries. Defaults to "full". A null value |
|
80 * should be used when the calendar address has already been set as part |
|
81 * of the query URI. |
|
82 */ |
|
83 protected $_projection = 'full'; |
|
84 |
|
85 /** |
|
86 * The event ID to retrieve. If null, no specific event will be retrieved |
|
87 * unless already included in the query URI. |
|
88 */ |
|
89 protected $_event = null; |
|
90 |
|
91 /** |
|
92 * Create Gdata_Calendar_EventQuery object. If a URL is provided, |
|
93 * it becomes the base URL, and additional URL components may be |
|
94 * appended. For instance, if $url is 'http://www.google.com/calendar', |
|
95 * the default URL constructed will be |
|
96 * 'http://www.google.com/calendar/default/public/full'. |
|
97 * |
|
98 * If the URL already contains a calendar ID, projection, visibility, |
|
99 * event ID, or comment ID, you will need to set these fields to null |
|
100 * to prevent them from being inserted. See this class's properties for |
|
101 * more information. |
|
102 * |
|
103 * @param string $url The URL to use as the base path for requests |
|
104 */ |
|
105 public function __construct($url = null) |
|
106 { |
|
107 parent::__construct($url); |
|
108 } |
|
109 |
|
110 /** |
|
111 * @see $_comments |
|
112 * @param string $value |
|
113 * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface |
|
114 */ |
|
115 public function setComments($value) |
|
116 { |
|
117 $this->_comments = $value; |
|
118 return $this; |
|
119 } |
|
120 |
|
121 /** |
|
122 * @see $_event |
|
123 * @param string $value |
|
124 * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface |
|
125 */ |
|
126 public function setEvent($value) |
|
127 { |
|
128 $this->_event = $value; |
|
129 return $this; |
|
130 } |
|
131 |
|
132 /** |
|
133 * @see $_projection |
|
134 * @param string $value |
|
135 * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface |
|
136 */ |
|
137 public function setProjection($value) |
|
138 { |
|
139 $this->_projection = $value; |
|
140 return $this; |
|
141 } |
|
142 |
|
143 /** |
|
144 * @see $_user |
|
145 * @param string $value |
|
146 * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface |
|
147 */ |
|
148 public function setUser($value) |
|
149 { |
|
150 $this->_user = $value; |
|
151 return $this; |
|
152 } |
|
153 |
|
154 /** |
|
155 * @see $_visibility |
|
156 * @param bool $value |
|
157 * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface |
|
158 */ |
|
159 public function setVisibility($value) |
|
160 { |
|
161 $this->_visibility = $value; |
|
162 return $this; |
|
163 } |
|
164 |
|
165 /** |
|
166 * @see $_comments; |
|
167 * @return string comments |
|
168 */ |
|
169 public function getComments() |
|
170 { |
|
171 return $this->_comments; |
|
172 } |
|
173 |
|
174 /** |
|
175 * @see $_event; |
|
176 * @return string event |
|
177 */ |
|
178 public function getEvent() |
|
179 { |
|
180 return $this->_event; |
|
181 } |
|
182 |
|
183 /** |
|
184 * @see $_projection |
|
185 * @return string projection |
|
186 */ |
|
187 public function getProjection() |
|
188 { |
|
189 return $this->_projection; |
|
190 } |
|
191 |
|
192 /** |
|
193 * @see $_user |
|
194 * @return string user |
|
195 */ |
|
196 public function getUser() |
|
197 { |
|
198 return $this->_user; |
|
199 } |
|
200 |
|
201 /** |
|
202 * @see $_visibility |
|
203 * @return string visibility |
|
204 */ |
|
205 public function getVisibility() |
|
206 { |
|
207 return $this->_visibility; |
|
208 } |
|
209 |
|
210 /** |
|
211 * @param int $value |
|
212 * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface |
|
213 */ |
|
214 public function setStartMax($value) |
|
215 { |
|
216 if ($value != null) { |
|
217 $this->_params['start-max'] = Zend_Gdata_App_Util::formatTimestamp($value); |
|
218 } else { |
|
219 unset($this->_params['start-max']); |
|
220 } |
|
221 return $this; |
|
222 } |
|
223 |
|
224 /** |
|
225 * @param int $value |
|
226 * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface |
|
227 */ |
|
228 public function setStartMin($value) |
|
229 { |
|
230 if ($value != null) { |
|
231 $this->_params['start-min'] = Zend_Gdata_App_Util::formatTimestamp($value); |
|
232 } else { |
|
233 unset($this->_params['start-min']); |
|
234 } |
|
235 return $this; |
|
236 } |
|
237 |
|
238 /** |
|
239 * @param string $value |
|
240 * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface |
|
241 */ |
|
242 public function setOrderBy($value) |
|
243 { |
|
244 if ($value != null) { |
|
245 $this->_params['orderby'] = $value; |
|
246 } else { |
|
247 unset($this->_params['orderby']); |
|
248 } |
|
249 return $this; |
|
250 } |
|
251 |
|
252 /** |
|
253 * @return int start-max |
|
254 */ |
|
255 public function getStartMax() |
|
256 { |
|
257 if (array_key_exists('start-max', $this->_params)) { |
|
258 return $this->_params['start-max']; |
|
259 } else { |
|
260 return null; |
|
261 } |
|
262 } |
|
263 |
|
264 /** |
|
265 * @return int start-min |
|
266 */ |
|
267 public function getStartMin() |
|
268 { |
|
269 if (array_key_exists('start-min', $this->_params)) { |
|
270 return $this->_params['start-min']; |
|
271 } else { |
|
272 return null; |
|
273 } |
|
274 } |
|
275 |
|
276 /** |
|
277 * @return string orderby |
|
278 */ |
|
279 public function getOrderBy() |
|
280 { |
|
281 if (array_key_exists('orderby', $this->_params)) { |
|
282 return $this->_params['orderby']; |
|
283 } else { |
|
284 return null; |
|
285 } |
|
286 } |
|
287 |
|
288 /** |
|
289 * @return string sortorder |
|
290 */ |
|
291 public function getSortOrder() |
|
292 { |
|
293 if (array_key_exists('sortorder', $this->_params)) { |
|
294 return $this->_params['sortorder']; |
|
295 } else { |
|
296 return null; |
|
297 } |
|
298 } |
|
299 |
|
300 /** |
|
301 * @return string sortorder |
|
302 */ |
|
303 public function setSortOrder($value) |
|
304 { |
|
305 if ($value != null) { |
|
306 $this->_params['sortorder'] = $value; |
|
307 } else { |
|
308 unset($this->_params['sortorder']); |
|
309 } |
|
310 return $this; |
|
311 } |
|
312 |
|
313 /** |
|
314 * @return string recurrence-expansion-start |
|
315 */ |
|
316 public function getRecurrenceExpansionStart() |
|
317 { |
|
318 if (array_key_exists('recurrence-expansion-start', $this->_params)) { |
|
319 return $this->_params['recurrence-expansion-start']; |
|
320 } else { |
|
321 return null; |
|
322 } |
|
323 } |
|
324 |
|
325 /** |
|
326 * @return string recurrence-expansion-start |
|
327 */ |
|
328 public function setRecurrenceExpansionStart($value) |
|
329 { |
|
330 if ($value != null) { |
|
331 $this->_params['recurrence-expansion-start'] = Zend_Gdata_App_Util::formatTimestamp($value); |
|
332 } else { |
|
333 unset($this->_params['recurrence-expansion-start']); |
|
334 } |
|
335 return $this; |
|
336 } |
|
337 |
|
338 |
|
339 /** |
|
340 * @return string recurrence-expansion-end |
|
341 */ |
|
342 public function getRecurrenceExpansionEnd() |
|
343 { |
|
344 if (array_key_exists('recurrence-expansion-end', $this->_params)) { |
|
345 return $this->_params['recurrence-expansion-end']; |
|
346 } else { |
|
347 return null; |
|
348 } |
|
349 } |
|
350 |
|
351 /** |
|
352 * @return string recurrence-expansion-end |
|
353 */ |
|
354 public function setRecurrenceExpansionEnd($value) |
|
355 { |
|
356 if ($value != null) { |
|
357 $this->_params['recurrence-expansion-end'] = Zend_Gdata_App_Util::formatTimestamp($value); |
|
358 } else { |
|
359 unset($this->_params['recurrence-expansion-end']); |
|
360 } |
|
361 return $this; |
|
362 } |
|
363 |
|
364 /** |
|
365 * @param string $value Also accepts bools. |
|
366 * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface |
|
367 */ |
|
368 public function getSingleEvents() |
|
369 { |
|
370 if (array_key_exists('singleevents', $this->_params)) { |
|
371 $value = $this->_params['singleevents']; |
|
372 switch ($value) { |
|
373 case 'true': |
|
374 return true; |
|
375 break; |
|
376 case 'false': |
|
377 return false; |
|
378 break; |
|
379 default: |
|
380 require_once 'Zend/Gdata/App/Exception.php'; |
|
381 throw new Zend_Gdata_App_Exception( |
|
382 'Invalid query param value for futureevents: ' . |
|
383 $value . ' It must be a boolean.'); |
|
384 } |
|
385 } else { |
|
386 return null; |
|
387 } |
|
388 } |
|
389 |
|
390 /** |
|
391 * @param string $value Also accepts bools. If using a string, must be either "true" or "false". |
|
392 * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface |
|
393 */ |
|
394 public function setSingleEvents($value) |
|
395 { |
|
396 if ($value !== null) { |
|
397 if (is_bool($value)) { |
|
398 $this->_params['singleevents'] = ($value?'true':'false'); |
|
399 } elseif ($value == 'true' | $value == 'false') { |
|
400 $this->_params['singleevents'] = $value; |
|
401 } else { |
|
402 require_once 'Zend/Gdata/App/Exception.php'; |
|
403 throw new Zend_Gdata_App_Exception( |
|
404 'Invalid query param value for futureevents: ' . |
|
405 $value . ' It must be a boolean.'); |
|
406 } |
|
407 } else { |
|
408 unset($this->_params['singleevents']); |
|
409 } |
|
410 return $this; |
|
411 } |
|
412 |
|
413 /** |
|
414 * @return string futureevents |
|
415 */ |
|
416 public function getFutureEvents() |
|
417 { |
|
418 if (array_key_exists('futureevents', $this->_params)) { |
|
419 $value = $this->_params['futureevents']; |
|
420 switch ($value) { |
|
421 case 'true': |
|
422 return true; |
|
423 break; |
|
424 case 'false': |
|
425 return false; |
|
426 break; |
|
427 default: |
|
428 require_once 'Zend/Gdata/App/Exception.php'; |
|
429 throw new Zend_Gdata_App_Exception( |
|
430 'Invalid query param value for futureevents: ' . |
|
431 $value . ' It must be a boolean.'); |
|
432 } |
|
433 } else { |
|
434 return null; |
|
435 } |
|
436 } |
|
437 |
|
438 /** |
|
439 * @param string $value Also accepts bools. If using a string, must be either "true" or "false" or |
|
440 * an exception will be thrown on retrieval. |
|
441 * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface |
|
442 */ |
|
443 public function setFutureEvents($value) |
|
444 { |
|
445 if ($value !== null) { |
|
446 if (is_bool($value)) { |
|
447 $this->_params['futureevents'] = ($value?'true':'false'); |
|
448 } elseif ($value == 'true' | $value == 'false') { |
|
449 $this->_params['futureevents'] = $value; |
|
450 } else { |
|
451 require_once 'Zend/Gdata/App/Exception.php'; |
|
452 throw new Zend_Gdata_App_Exception( |
|
453 'Invalid query param value for futureevents: ' . |
|
454 $value . ' It must be a boolean.'); |
|
455 } |
|
456 } else { |
|
457 unset($this->_params['futureevents']); |
|
458 } |
|
459 return $this; |
|
460 } |
|
461 |
|
462 /** |
|
463 * @return string url |
|
464 */ |
|
465 public function getQueryUrl() |
|
466 { |
|
467 if (isset($this->_url)) { |
|
468 $uri = $this->_url; |
|
469 } else { |
|
470 $uri = $this->_defaultFeedUri; |
|
471 } |
|
472 if ($this->getUser() != null) { |
|
473 $uri .= '/' . $this->getUser(); |
|
474 } |
|
475 if ($this->getVisibility() != null) { |
|
476 $uri .= '/' . $this->getVisibility(); |
|
477 } |
|
478 if ($this->getProjection() != null) { |
|
479 $uri .= '/' . $this->getProjection(); |
|
480 } |
|
481 if ($this->getEvent() != null) { |
|
482 $uri .= '/' . $this->getEvent(); |
|
483 if ($this->getComments() != null) { |
|
484 $uri .= '/comments/' . $this->getComments(); |
|
485 } |
|
486 } |
|
487 $uri .= $this->getQueryString(); |
|
488 return $uri; |
|
489 } |
|
490 |
|
491 } |