|
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: DocumentQuery.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 documents |
|
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_DocumentQuery extends Zend_Gdata_Query |
|
46 { |
|
47 |
|
48 const SPREADSHEETS_FEED_URI = 'http://spreadsheets.google.com/feeds'; |
|
49 |
|
50 protected $_defaultFeedUri = self::SPREADSHEETS_FEED_URI; |
|
51 protected $_documentType; |
|
52 protected $_visibility = 'private'; |
|
53 protected $_projection = 'full'; |
|
54 protected $_spreadsheetKey = null; |
|
55 protected $_worksheetId = null; |
|
56 |
|
57 /** |
|
58 * Constructs a new Zend_Gdata_Spreadsheets_DocumentQuery object. |
|
59 */ |
|
60 public function __construct() |
|
61 { |
|
62 parent::__construct(); |
|
63 } |
|
64 |
|
65 /** |
|
66 * Sets the spreadsheet key for this query. |
|
67 * @param string $value |
|
68 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
69 */ |
|
70 public function setSpreadsheetKey($value) |
|
71 { |
|
72 $this->_spreadsheetKey = $value; |
|
73 return $this; |
|
74 } |
|
75 |
|
76 /** |
|
77 * Gets the spreadsheet key for this query. |
|
78 * @return string spreadsheet key |
|
79 */ |
|
80 public function getSpreadsheetKey() |
|
81 { |
|
82 return $this->_spreadsheetKey; |
|
83 } |
|
84 |
|
85 /** |
|
86 * Sets the worksheet id for this query. |
|
87 * @param string $value |
|
88 * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface |
|
89 */ |
|
90 public function setWorksheetId($value) |
|
91 { |
|
92 $this->_worksheetId = $value; |
|
93 return $this; |
|
94 } |
|
95 |
|
96 /** |
|
97 * Gets the worksheet id for this query. |
|
98 * @return string worksheet id |
|
99 */ |
|
100 public function getWorksheetId() |
|
101 { |
|
102 return $this->_worksheetId; |
|
103 } |
|
104 |
|
105 /** |
|
106 * Sets the document type for this query. |
|
107 * @param string $value spreadsheets or worksheets |
|
108 * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface |
|
109 */ |
|
110 public function setDocumentType($value) |
|
111 { |
|
112 $this->_documentType = $value; |
|
113 return $this; |
|
114 } |
|
115 |
|
116 /** |
|
117 * Gets the document type for this query. |
|
118 * @return string document type |
|
119 */ |
|
120 public function getDocumentType() |
|
121 { |
|
122 return $this->_documentType; |
|
123 } |
|
124 |
|
125 /** |
|
126 * Sets the projection for this query. |
|
127 * @param string $value |
|
128 * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface |
|
129 */ |
|
130 public function setProjection($value) |
|
131 { |
|
132 $this->_projection = $value; |
|
133 return $this; |
|
134 } |
|
135 |
|
136 /** |
|
137 * Sets the visibility for this query. |
|
138 * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface |
|
139 */ |
|
140 public function setVisibility($value) |
|
141 { |
|
142 $this->_visibility = $value; |
|
143 return $this; |
|
144 } |
|
145 |
|
146 /** |
|
147 * Gets the projection for this query. |
|
148 * @return string projection |
|
149 */ |
|
150 public function getProjection() |
|
151 { |
|
152 return $this->_projection; |
|
153 } |
|
154 |
|
155 /** |
|
156 * Gets the visibility for this query. |
|
157 * @return string visibility |
|
158 */ |
|
159 public function getVisibility() |
|
160 { |
|
161 return $this->_visibility; |
|
162 } |
|
163 |
|
164 /** |
|
165 * Sets the title attribute for this query. |
|
166 * @param string $value |
|
167 * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface |
|
168 */ |
|
169 public function setTitle($value) |
|
170 { |
|
171 if ($value != null) { |
|
172 $this->_params['title'] = $value; |
|
173 } else { |
|
174 unset($this->_params['title']); |
|
175 } |
|
176 return $this; |
|
177 } |
|
178 |
|
179 /** |
|
180 * Sets the title-exact attribute for this query. |
|
181 * @param string $value |
|
182 * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface |
|
183 */ |
|
184 public function setTitleExact($value) |
|
185 { |
|
186 if ($value != null) { |
|
187 $this->_params['title-exact'] = $value; |
|
188 } else { |
|
189 unset($this->_params['title-exact']); |
|
190 } |
|
191 return $this; |
|
192 } |
|
193 |
|
194 /** |
|
195 * Gets the title attribute for this query. |
|
196 * @return string title |
|
197 */ |
|
198 public function getTitle() |
|
199 { |
|
200 if (array_key_exists('title', $this->_params)) { |
|
201 return $this->_params['title']; |
|
202 } else { |
|
203 return null; |
|
204 } |
|
205 } |
|
206 |
|
207 /** |
|
208 * Gets the title-exact attribute for this query. |
|
209 * @return string title-exact |
|
210 */ |
|
211 public function getTitleExact() |
|
212 { |
|
213 if (array_key_exists('title-exact', $this->_params)) { |
|
214 return $this->_params['title-exact']; |
|
215 } else { |
|
216 return null; |
|
217 } |
|
218 } |
|
219 |
|
220 private function appendVisibilityProjection() |
|
221 { |
|
222 $uri = ''; |
|
223 |
|
224 if ($this->_visibility != null) { |
|
225 $uri .= '/'.$this->_visibility; |
|
226 } else { |
|
227 require_once 'Zend/Gdata/App/Exception.php'; |
|
228 throw new Zend_Gdata_App_Exception('A visibility must be provided for document queries.'); |
|
229 } |
|
230 |
|
231 if ($this->_projection != null) { |
|
232 $uri .= '/'.$this->_projection; |
|
233 } else { |
|
234 require_once 'Zend/Gdata/App/Exception.php'; |
|
235 throw new Zend_Gdata_App_Exception('A projection must be provided for document queries.'); |
|
236 } |
|
237 |
|
238 return $uri; |
|
239 } |
|
240 |
|
241 |
|
242 /** |
|
243 * Gets the full query URL for this query. |
|
244 * @return string url |
|
245 */ |
|
246 public function getQueryUrl() |
|
247 { |
|
248 $uri = $this->_defaultFeedUri; |
|
249 |
|
250 if ($this->_documentType != null) { |
|
251 $uri .= '/'.$this->_documentType; |
|
252 } else { |
|
253 require_once 'Zend/Gdata/App/Exception.php'; |
|
254 throw new Zend_Gdata_App_Exception('A document type must be provided for document queries.'); |
|
255 } |
|
256 |
|
257 if ($this->_documentType == 'spreadsheets') { |
|
258 $uri .= $this->appendVisibilityProjection(); |
|
259 if ($this->_spreadsheetKey != null) { |
|
260 $uri .= '/'.$this->_spreadsheetKey; |
|
261 } |
|
262 } else if ($this->_documentType == 'worksheets') { |
|
263 if ($this->_spreadsheetKey != null) { |
|
264 $uri .= '/'.$this->_spreadsheetKey; |
|
265 } else { |
|
266 require_once 'Zend/Gdata/App/Exception.php'; |
|
267 throw new Zend_Gdata_App_Exception('A spreadsheet key must be provided for worksheet document queries.'); |
|
268 } |
|
269 $uri .= $this->appendVisibilityProjection(); |
|
270 if ($this->_worksheetId != null) { |
|
271 $uri .= '/'.$this->_worksheetId; |
|
272 } |
|
273 } |
|
274 |
|
275 $uri .= $this->getQueryString(); |
|
276 return $uri; |
|
277 } |
|
278 |
|
279 /** |
|
280 * Gets the attribute query string for this query. |
|
281 * @return string query string |
|
282 */ |
|
283 public function getQueryString() |
|
284 { |
|
285 return parent::getQueryString(); |
|
286 } |
|
287 |
|
288 } |