|
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 Spreadsheets |
|
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: CellQuery.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 Spreadsheets cells |
|
36 * |
|
37 * @link http://code.google.com/apis/gdata/spreadsheets/ |
|
38 * |
|
39 * @category Zend |
|
40 * @package Zend_Gdata |
|
41 * @subpackage Spreadsheets |
|
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_Spreadsheets_CellQuery extends Zend_Gdata_Query |
|
46 { |
|
47 |
|
48 const SPREADSHEETS_CELL_FEED_URI = 'http://spreadsheets.google.com/feeds/cells'; |
|
49 |
|
50 protected $_defaultFeedUri = self::SPREADSHEETS_CELL_FEED_URI; |
|
51 protected $_visibility = 'private'; |
|
52 protected $_projection = 'full'; |
|
53 protected $_spreadsheetKey = null; |
|
54 protected $_worksheetId = 'default'; |
|
55 protected $_cellId = null; |
|
56 |
|
57 /** |
|
58 * Constructs a new Zend_Gdata_Spreadsheets_CellQuery object. |
|
59 * |
|
60 * @param string $url Base URL to use for queries |
|
61 */ |
|
62 public function __construct($url = null) |
|
63 { |
|
64 parent::__construct($url); |
|
65 } |
|
66 |
|
67 /** |
|
68 * Sets the spreadsheet key for this query. |
|
69 * |
|
70 * @param string $value |
|
71 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
72 */ |
|
73 public function setSpreadsheetKey($value) |
|
74 { |
|
75 $this->_spreadsheetKey = $value; |
|
76 return $this; |
|
77 } |
|
78 |
|
79 /** |
|
80 * Gets the spreadsheet key for this query. |
|
81 * |
|
82 * @return string spreadsheet key |
|
83 */ |
|
84 public function getSpreadsheetKey() |
|
85 { |
|
86 return $this->_spreadsheetKey; |
|
87 } |
|
88 |
|
89 /** |
|
90 * Sets the worksheet id for this query. |
|
91 * |
|
92 * @param string $value |
|
93 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
94 */ |
|
95 public function setWorksheetId($value) |
|
96 { |
|
97 $this->_worksheetId = $value; |
|
98 return $this; |
|
99 } |
|
100 |
|
101 /** |
|
102 * Gets the worksheet id for this query. |
|
103 * |
|
104 * @return string worksheet id |
|
105 */ |
|
106 public function getWorksheetId() |
|
107 { |
|
108 return $this->_worksheetId; |
|
109 } |
|
110 |
|
111 /** |
|
112 * Sets the cell id for this query. |
|
113 * |
|
114 * @param string $value |
|
115 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
116 */ |
|
117 public function setCellId($value) |
|
118 { |
|
119 $this->_cellId = $value; |
|
120 return $this; |
|
121 } |
|
122 |
|
123 /** |
|
124 * Gets the cell id for this query. |
|
125 * |
|
126 * @return string cell id |
|
127 */ |
|
128 public function getCellId() |
|
129 { |
|
130 return $this->_cellId; |
|
131 } |
|
132 |
|
133 /** |
|
134 * Sets the projection for this query. |
|
135 * |
|
136 * @param string $value |
|
137 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
138 */ |
|
139 public function setProjection($value) |
|
140 { |
|
141 $this->_projection = $value; |
|
142 return $this; |
|
143 } |
|
144 |
|
145 /** |
|
146 * Sets the visibility for this query. |
|
147 * |
|
148 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
149 */ |
|
150 public function setVisibility($value) |
|
151 { |
|
152 $this->_visibility = $value; |
|
153 return $this; |
|
154 } |
|
155 |
|
156 /** |
|
157 * Gets the projection for this query. |
|
158 * |
|
159 * @return string projection |
|
160 */ |
|
161 public function getProjection() |
|
162 { |
|
163 return $this->_projection; |
|
164 } |
|
165 |
|
166 /** |
|
167 * Gets the visibility for this query. |
|
168 * |
|
169 * @return string visibility |
|
170 */ |
|
171 public function getVisibility() |
|
172 { |
|
173 return $this->_visibility; |
|
174 } |
|
175 |
|
176 /** |
|
177 * Sets the min-row attribute for this query. |
|
178 * |
|
179 * @param string $value |
|
180 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
181 */ |
|
182 public function setMinRow($value) |
|
183 { |
|
184 if ($value != null) { |
|
185 $this->_params['min-row'] = $value; |
|
186 } else { |
|
187 unset($this->_params['min-row']); |
|
188 } |
|
189 return $this; |
|
190 } |
|
191 |
|
192 /** |
|
193 * Gets the min-row attribute for this query. |
|
194 * |
|
195 * @return string min-row |
|
196 */ |
|
197 public function getMinRow() |
|
198 { |
|
199 if (array_key_exists('min-row', $this->_params)) { |
|
200 return $this->_params['min-row']; |
|
201 } else { |
|
202 return null; |
|
203 } |
|
204 } |
|
205 |
|
206 /** |
|
207 * Sets the max-row attribute for this query. |
|
208 * |
|
209 * @param string $value |
|
210 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
211 */ |
|
212 public function setMaxRow($value) |
|
213 { |
|
214 if ($value != null) { |
|
215 $this->_params['max-row'] = $value; |
|
216 } else { |
|
217 unset($this->_params['max-row']); |
|
218 } |
|
219 return $this; |
|
220 } |
|
221 |
|
222 /** |
|
223 * Gets the max-row attribute for this query. |
|
224 * |
|
225 * @return string max-row |
|
226 */ |
|
227 public function getMaxRow() |
|
228 { |
|
229 if (array_key_exists('max-row', $this->_params)) { |
|
230 return $this->_params['max-row']; |
|
231 } else { |
|
232 return null; |
|
233 } |
|
234 } |
|
235 |
|
236 /** |
|
237 * Sets the min-col attribute for this query. |
|
238 * |
|
239 * @param string $value |
|
240 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
241 */ |
|
242 public function setMinCol($value) |
|
243 { |
|
244 if ($value != null) { |
|
245 $this->_params['min-col'] = $value; |
|
246 } else { |
|
247 unset($this->_params['min-col']); |
|
248 } |
|
249 return $this; |
|
250 } |
|
251 |
|
252 /** |
|
253 * Gets the min-col attribute for this query. |
|
254 * |
|
255 * @return string min-col |
|
256 */ |
|
257 public function getMinCol() |
|
258 { |
|
259 if (array_key_exists('min-col', $this->_params)) { |
|
260 return $this->_params['min-col']; |
|
261 } else { |
|
262 return null; |
|
263 } |
|
264 } |
|
265 |
|
266 /** |
|
267 * Sets the max-col attribute for this query. |
|
268 * |
|
269 * @param string $value |
|
270 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
271 */ |
|
272 public function setMaxCol($value) |
|
273 { |
|
274 if ($value != null) { |
|
275 $this->_params['max-col'] = $value; |
|
276 } else { |
|
277 unset($this->_params['max-col']); |
|
278 } |
|
279 return $this; |
|
280 } |
|
281 |
|
282 /** |
|
283 * Gets the max-col attribute for this query. |
|
284 * |
|
285 * @return string max-col |
|
286 */ |
|
287 public function getMaxCol() |
|
288 { |
|
289 if (array_key_exists('max-col', $this->_params)) { |
|
290 return $this->_params['max-col']; |
|
291 } else { |
|
292 return null; |
|
293 } |
|
294 } |
|
295 |
|
296 /** |
|
297 * Sets the range attribute for this query. |
|
298 * |
|
299 * @param string $value |
|
300 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
301 */ |
|
302 public function setRange($value) |
|
303 { |
|
304 if ($value != null) { |
|
305 $this->_params['range'] = $value; |
|
306 } else { |
|
307 unset($this->_params['range']); |
|
308 } |
|
309 return $this; |
|
310 } |
|
311 |
|
312 /** |
|
313 * Gets the range attribute for this query. |
|
314 * |
|
315 * @return string range |
|
316 */ |
|
317 public function getRange() |
|
318 { |
|
319 if (array_key_exists('range', $this->_params)) { |
|
320 return $this->_params['range']; |
|
321 } else { |
|
322 return null; |
|
323 } |
|
324 } |
|
325 |
|
326 /** |
|
327 * Sets the return-empty attribute for this query. |
|
328 * |
|
329 * @param mixed $value String or bool value for whether to return empty cells |
|
330 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
331 */ |
|
332 public function setReturnEmpty($value) |
|
333 { |
|
334 if (is_bool($value)) { |
|
335 $this->_params['return-empty'] = ($value?'true':'false'); |
|
336 } else if ($value != null) { |
|
337 $this->_params['return-empty'] = $value; |
|
338 } else { |
|
339 unset($this->_params['return-empty']); |
|
340 } |
|
341 return $this; |
|
342 } |
|
343 |
|
344 /** |
|
345 * Gets the return-empty attribute for this query. |
|
346 * |
|
347 * @return string return-empty |
|
348 */ |
|
349 public function getReturnEmpty() |
|
350 { |
|
351 if (array_key_exists('return-empty', $this->_params)) { |
|
352 return $this->_params['return-empty']; |
|
353 } else { |
|
354 return null; |
|
355 } |
|
356 } |
|
357 |
|
358 /** |
|
359 * Gets the full query URL for this query. |
|
360 * |
|
361 * @return string url |
|
362 */ |
|
363 public function getQueryUrl() |
|
364 { |
|
365 if ($this->_url == null) { |
|
366 $uri = $this->_defaultFeedUri; |
|
367 |
|
368 if ($this->_spreadsheetKey != null) { |
|
369 $uri .= '/'.$this->_spreadsheetKey; |
|
370 } else { |
|
371 require_once 'Zend/Gdata/App/Exception.php'; |
|
372 throw new Zend_Gdata_App_Exception('A spreadsheet key must be provided for cell queries.'); |
|
373 } |
|
374 |
|
375 if ($this->_worksheetId != null) { |
|
376 $uri .= '/'.$this->_worksheetId; |
|
377 } else { |
|
378 require_once 'Zend/Gdata/App/Exception.php'; |
|
379 throw new Zend_Gdata_App_Exception('A worksheet id must be provided for cell queries.'); |
|
380 } |
|
381 |
|
382 if ($this->_visibility != null) { |
|
383 $uri .= '/'.$this->_visibility; |
|
384 } else { |
|
385 require_once 'Zend/Gdata/App/Exception.php'; |
|
386 throw new Zend_Gdata_App_Exception('A visibility must be provided for cell queries.'); |
|
387 } |
|
388 |
|
389 if ($this->_projection != null) { |
|
390 $uri .= '/'.$this->_projection; |
|
391 } else { |
|
392 require_once 'Zend/Gdata/App/Exception.php'; |
|
393 throw new Zend_Gdata_App_Exception('A projection must be provided for cell queries.'); |
|
394 } |
|
395 |
|
396 if ($this->_cellId != null) { |
|
397 $uri .= '/'.$this->_cellId; |
|
398 } |
|
399 } else { |
|
400 $uri = $this->_url; |
|
401 } |
|
402 |
|
403 $uri .= $this->getQueryString(); |
|
404 return $uri; |
|
405 } |
|
406 |
|
407 /** |
|
408 * Gets the attribute query string for this query. |
|
409 * |
|
410 * @return string query string |
|
411 */ |
|
412 public function getQueryString() |
|
413 { |
|
414 return parent::getQueryString(); |
|
415 } |
|
416 |
|
417 } |