|
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 Gapps |
|
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: Gapps.php 22511 2010-07-01 01:41:46Z tjohns $ |
|
22 */ |
|
23 |
|
24 /** |
|
25 * @see Zend_Gdata |
|
26 */ |
|
27 require_once 'Zend/Gdata.php'; |
|
28 |
|
29 /** |
|
30 * @see Zend_Gdata_Gapps_UserFeed |
|
31 */ |
|
32 require_once 'Zend/Gdata/Gapps/UserFeed.php'; |
|
33 |
|
34 /** |
|
35 * @see Zend_Gdata_Gapps_NicknameFeed |
|
36 */ |
|
37 require_once 'Zend/Gdata/Gapps/NicknameFeed.php'; |
|
38 |
|
39 /** |
|
40 * @see Zend_Gdata_Gapps_GroupFeed |
|
41 */ |
|
42 require_once 'Zend/Gdata/Gapps/GroupFeed.php'; |
|
43 |
|
44 /** |
|
45 * @see Zend_Gdata_Gapps_MemberFeed |
|
46 */ |
|
47 require_once 'Zend/Gdata/Gapps/MemberFeed.php'; |
|
48 |
|
49 /** |
|
50 * @see Zend_Gdata_Gapps_OwnerFeed |
|
51 */ |
|
52 require_once 'Zend/Gdata/Gapps/OwnerFeed.php'; |
|
53 |
|
54 /** |
|
55 * @see Zend_Gdata_Gapps_EmailListFeed |
|
56 */ |
|
57 require_once 'Zend/Gdata/Gapps/EmailListFeed.php'; |
|
58 |
|
59 /** |
|
60 * @see Zend_Gdata_Gapps_EmailListRecipientFeed |
|
61 */ |
|
62 require_once 'Zend/Gdata/Gapps/EmailListRecipientFeed.php'; |
|
63 |
|
64 |
|
65 /** |
|
66 * Service class for interacting with the Google Apps Provisioning API. |
|
67 * |
|
68 * Like other service classes in this module, this class provides access via |
|
69 * an HTTP client to Google servers for working with entries and feeds. |
|
70 * |
|
71 * Because of the nature of this API, all access must occur over an |
|
72 * authenticated connection. |
|
73 * |
|
74 * @link http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html |
|
75 * |
|
76 * @category Zend |
|
77 * @package Zend_Gdata |
|
78 * @subpackage Gapps |
|
79 * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) |
|
80 * @license http://framework.zend.com/license/new-bsd New BSD License |
|
81 */ |
|
82 class Zend_Gdata_Gapps extends Zend_Gdata |
|
83 { |
|
84 |
|
85 const APPS_BASE_FEED_URI = 'https://apps-apis.google.com/a/feeds'; |
|
86 const AUTH_SERVICE_NAME = 'apps'; |
|
87 |
|
88 /** |
|
89 * Path to user feeds on the Google Apps server. |
|
90 */ |
|
91 const APPS_USER_PATH = '/user/2.0'; |
|
92 |
|
93 /** |
|
94 * Path to nickname feeds on the Google Apps server. |
|
95 */ |
|
96 const APPS_NICKNAME_PATH = '/nickname/2.0'; |
|
97 |
|
98 /** |
|
99 * Path to group feeds on the Google Apps server. |
|
100 */ |
|
101 const APPS_GROUP_PATH = '/group/2.0'; |
|
102 |
|
103 /** |
|
104 * Path to email list feeds on the Google Apps server. |
|
105 */ |
|
106 const APPS_EMAIL_LIST_PATH = '/emailList/2.0'; |
|
107 |
|
108 /** |
|
109 * Path to email list recipient feeds on the Google Apps server. |
|
110 */ |
|
111 const APPS_EMAIL_LIST_RECIPIENT_POSTFIX = '/recipient'; |
|
112 |
|
113 /** |
|
114 * The domain which is being administered via the Provisioning API. |
|
115 * |
|
116 * @var string |
|
117 */ |
|
118 protected $_domain = null; |
|
119 |
|
120 /** |
|
121 * Namespaces used for Zend_Gdata_Gapps |
|
122 * |
|
123 * @var array |
|
124 */ |
|
125 public static $namespaces = array( |
|
126 array('apps', 'http://schemas.google.com/apps/2006', 1, 0) |
|
127 ); |
|
128 |
|
129 /** |
|
130 * Create Gdata_Gapps object |
|
131 * |
|
132 * @param Zend_Http_Client $client (optional) The HTTP client to use when |
|
133 * when communicating with the Google Apps servers. |
|
134 * @param string $domain (optional) The Google Apps domain which is to be |
|
135 * accessed. |
|
136 * @param string $applicationId The identity of the app in the form of Company-AppName-Version |
|
137 */ |
|
138 public function __construct($client = null, $domain = null, $applicationId = 'MyCompany-MyApp-1.0') |
|
139 { |
|
140 $this->registerPackage('Zend_Gdata_Gapps'); |
|
141 $this->registerPackage('Zend_Gdata_Gapps_Extension'); |
|
142 parent::__construct($client, $applicationId); |
|
143 $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME); |
|
144 $this->_domain = $domain; |
|
145 } |
|
146 |
|
147 /** |
|
148 * Convert an exception to an ServiceException if an AppsForYourDomain |
|
149 * XML document is contained within the original exception's HTTP |
|
150 * response. If conversion fails, throw the original error. |
|
151 * |
|
152 * @param Zend_Gdata_Exception $e The exception to convert. |
|
153 * @throws Zend_Gdata_Gapps_ServiceException |
|
154 * @throws mixed |
|
155 */ |
|
156 public static function throwServiceExceptionIfDetected($e) { |
|
157 // Check to make sure that there actually response! |
|
158 // This can happen if the connection dies before the request |
|
159 // completes. (See ZF-5949) |
|
160 $response = $e->getResponse(); |
|
161 if (!$response) { |
|
162 require_once('Zend/Gdata/App/IOException.php'); |
|
163 throw new Zend_Gdata_App_IOException('No HTTP response received (possible connection failure)'); |
|
164 } |
|
165 |
|
166 try { |
|
167 // Check to see if there is an AppsForYourDomainErrors |
|
168 // datastructure in the response. If so, convert it to |
|
169 // an exception and throw it. |
|
170 require_once 'Zend/Gdata/Gapps/ServiceException.php'; |
|
171 $error = new Zend_Gdata_Gapps_ServiceException(); |
|
172 $error->importFromString($response->getBody()); |
|
173 throw $error; |
|
174 } catch (Zend_Gdata_App_Exception $e2) { |
|
175 // Unable to convert the response to a ServiceException, |
|
176 // most likely because the server didn't return an |
|
177 // AppsForYourDomainErrors document. Throw the original |
|
178 // exception. |
|
179 throw $e; |
|
180 } |
|
181 } |
|
182 |
|
183 /** |
|
184 * Imports a feed located at $uri. |
|
185 * This method overrides the default behavior of Zend_Gdata_App, |
|
186 * providing support for Zend_Gdata_Gapps_ServiceException. |
|
187 * |
|
188 * @param string $uri |
|
189 * @param Zend_Http_Client $client (optional) The client used for |
|
190 * communication |
|
191 * @param string $className (optional) The class which is used as the |
|
192 * return type |
|
193 * @throws Zend_Gdata_App_Exception |
|
194 * @throws Zend_Gdata_App_HttpException |
|
195 * @throws Zend_Gdata_Gapps_ServiceException |
|
196 * @return Zend_Gdata_App_Feed |
|
197 */ |
|
198 public static function import($uri, $client = null, $className='Zend_Gdata_App_Feed') |
|
199 { |
|
200 try { |
|
201 return parent::import($uri, $client, $className); |
|
202 } catch (Zend_Gdata_App_HttpException $e) { |
|
203 self::throwServiceExceptionIfDetected($e); |
|
204 } |
|
205 } |
|
206 |
|
207 /** |
|
208 * GET a URI using client object. |
|
209 * This method overrides the default behavior of Zend_Gdata_App, |
|
210 * providing support for Zend_Gdata_Gapps_ServiceException. |
|
211 * |
|
212 * @param string $uri GET URI |
|
213 * @param array $extraHeaders Extra headers to add to the request, as an |
|
214 * array of string-based key/value pairs. |
|
215 * @throws Zend_Gdata_App_HttpException |
|
216 * @throws Zend_Gdata_Gapps_ServiceException |
|
217 * @return Zend_Http_Response |
|
218 */ |
|
219 public function get($uri, $extraHeaders = array()) |
|
220 { |
|
221 try { |
|
222 return parent::get($uri, $extraHeaders); |
|
223 } catch (Zend_Gdata_App_HttpException $e) { |
|
224 self::throwServiceExceptionIfDetected($e); |
|
225 } |
|
226 } |
|
227 |
|
228 /** |
|
229 * POST data with client object. |
|
230 * This method overrides the default behavior of Zend_Gdata_App, |
|
231 * providing support for Zend_Gdata_Gapps_ServiceException. |
|
232 * |
|
233 * @param mixed $data The Zend_Gdata_App_Entry or XML to post |
|
234 * @param string $uri (optional) POST URI |
|
235 * @param integer $remainingRedirects (optional) |
|
236 * @param string $contentType Content-type of the data |
|
237 * @param array $extraHaders Extra headers to add tot he request |
|
238 * @return Zend_Http_Response |
|
239 * @throws Zend_Gdata_App_HttpException |
|
240 * @throws Zend_Gdata_App_InvalidArgumentException |
|
241 * @throws Zend_Gdata_Gapps_ServiceException |
|
242 */ |
|
243 public function post($data, $uri = null, $remainingRedirects = null, |
|
244 $contentType = null, $extraHeaders = null) |
|
245 { |
|
246 try { |
|
247 return parent::post($data, $uri, $remainingRedirects, $contentType, $extraHeaders); |
|
248 } catch (Zend_Gdata_App_HttpException $e) { |
|
249 self::throwServiceExceptionIfDetected($e); |
|
250 } |
|
251 } |
|
252 |
|
253 /** |
|
254 * PUT data with client object |
|
255 * This method overrides the default behavior of Zend_Gdata_App, |
|
256 * providing support for Zend_Gdata_Gapps_ServiceException. |
|
257 * |
|
258 * @param mixed $data The Zend_Gdata_App_Entry or XML to post |
|
259 * @param string $uri (optional) PUT URI |
|
260 * @param integer $remainingRedirects (optional) |
|
261 * @param string $contentType Content-type of the data |
|
262 * @param array $extraHaders Extra headers to add tot he request |
|
263 * @return Zend_Http_Response |
|
264 * @throws Zend_Gdata_App_HttpException |
|
265 * @throws Zend_Gdata_App_InvalidArgumentException |
|
266 * @throws Zend_Gdata_Gapps_ServiceException |
|
267 */ |
|
268 public function put($data, $uri = null, $remainingRedirects = null, |
|
269 $contentType = null, $extraHeaders = null) |
|
270 { |
|
271 try { |
|
272 return parent::put($data, $uri, $remainingRedirects, $contentType, $extraHeaders); |
|
273 } catch (Zend_Gdata_App_HttpException $e) { |
|
274 self::throwServiceExceptionIfDetected($e); |
|
275 } |
|
276 } |
|
277 |
|
278 /** |
|
279 * DELETE entry with client object |
|
280 * This method overrides the default behavior of Zend_Gdata_App, |
|
281 * providing support for Zend_Gdata_Gapps_ServiceException. |
|
282 * |
|
283 * @param mixed $data The Zend_Gdata_App_Entry or URL to delete |
|
284 * @param integer $remainingRedirects (optional) |
|
285 * @return void |
|
286 * @throws Zend_Gdata_App_HttpException |
|
287 * @throws Zend_Gdata_App_InvalidArgumentException |
|
288 * @throws Zend_Gdata_Gapps_ServiceException |
|
289 */ |
|
290 public function delete($data, $remainingRedirects = null) |
|
291 { |
|
292 try { |
|
293 return parent::delete($data, $remainingRedirects); |
|
294 } catch (Zend_Gdata_App_HttpException $e) { |
|
295 self::throwServiceExceptionIfDetected($e); |
|
296 } |
|
297 } |
|
298 |
|
299 /** |
|
300 * Set domain for this service instance. This should be a fully qualified |
|
301 * domain, such as 'foo.example.com'. |
|
302 * |
|
303 * This value is used when calculating URLs for retrieving and posting |
|
304 * entries. If no value is specified, a URL will have to be manually |
|
305 * constructed prior to using any methods which interact with the Google |
|
306 * Apps provisioning service. |
|
307 * |
|
308 * @param string $value The domain to be used for this session. |
|
309 */ |
|
310 public function setDomain($value) |
|
311 { |
|
312 $this->_domain = $value; |
|
313 } |
|
314 |
|
315 /** |
|
316 * Get domain for this service instance. This should be a fully qualified |
|
317 * domain, such as 'foo.example.com'. If no domain is set, null will be |
|
318 * returned. |
|
319 * |
|
320 * @return string The domain to be used for this session, or null if not |
|
321 * set. |
|
322 */ |
|
323 public function getDomain() |
|
324 { |
|
325 return $this->_domain; |
|
326 } |
|
327 |
|
328 /** |
|
329 * Returns the base URL used to access the Google Apps service, based |
|
330 * on the current domain. The current domain can be temporarily |
|
331 * overridden by providing a fully qualified domain as $domain. |
|
332 * |
|
333 * @param string $domain (optional) A fully-qualified domain to use |
|
334 * instead of the default domain for this service instance. |
|
335 * @throws Zend_Gdata_App_InvalidArgumentException |
|
336 */ |
|
337 public function getBaseUrl($domain = null) |
|
338 { |
|
339 if ($domain !== null) { |
|
340 return self::APPS_BASE_FEED_URI . '/' . $domain; |
|
341 } else if ($this->_domain !== null) { |
|
342 return self::APPS_BASE_FEED_URI . '/' . $this->_domain; |
|
343 } else { |
|
344 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
345 throw new Zend_Gdata_App_InvalidArgumentException( |
|
346 'Domain must be specified.'); |
|
347 } |
|
348 } |
|
349 |
|
350 /** |
|
351 * Retrieve a UserFeed containing multiple UserEntry objects. |
|
352 * |
|
353 * @param mixed $location (optional) The location for the feed, as a URL |
|
354 * or Query. |
|
355 * @return Zend_Gdata_Gapps_UserFeed |
|
356 * @throws Zend_Gdata_App_Exception |
|
357 * @throws Zend_Gdata_App_HttpException |
|
358 * @throws Zend_Gdata_Gapps_ServiceException |
|
359 */ |
|
360 public function getUserFeed($location = null) |
|
361 { |
|
362 if ($location === null) { |
|
363 $uri = $this->getBaseUrl() . self::APPS_USER_PATH; |
|
364 } else if ($location instanceof Zend_Gdata_Query) { |
|
365 $uri = $location->getQueryUrl(); |
|
366 } else { |
|
367 $uri = $location; |
|
368 } |
|
369 return parent::getFeed($uri, 'Zend_Gdata_Gapps_UserFeed'); |
|
370 } |
|
371 |
|
372 /** |
|
373 * Retreive NicknameFeed object containing multiple NicknameEntry objects. |
|
374 * |
|
375 * @param mixed $location (optional) The location for the feed, as a URL |
|
376 * or Query. |
|
377 * @return Zend_Gdata_Gapps_NicknameFeed |
|
378 * @throws Zend_Gdata_App_Exception |
|
379 * @throws Zend_Gdata_App_HttpException |
|
380 * @throws Zend_Gdata_Gapps_ServiceException |
|
381 */ |
|
382 public function getNicknameFeed($location = null) |
|
383 { |
|
384 if ($location === null) { |
|
385 $uri = $this->getBaseUrl() . self::APPS_NICKNAME_PATH; |
|
386 } else if ($location instanceof Zend_Gdata_Query) { |
|
387 $uri = $location->getQueryUrl(); |
|
388 } else { |
|
389 $uri = $location; |
|
390 } |
|
391 return parent::getFeed($uri, 'Zend_Gdata_Gapps_NicknameFeed'); |
|
392 } |
|
393 |
|
394 /** |
|
395 * Retreive GroupFeed object containing multiple GroupEntry |
|
396 * objects. |
|
397 * |
|
398 * @param mixed $location (optional) The location for the feed, as a URL |
|
399 * or Query. |
|
400 * @return Zend_Gdata_Gapps_GroupFeed |
|
401 * @throws Zend_Gdata_App_Exception |
|
402 * @throws Zend_Gdata_App_HttpException |
|
403 * @throws Zend_Gdata_Gapps_ServiceException |
|
404 */ |
|
405 public function getGroupFeed($location = null) |
|
406 { |
|
407 if ($location === null) { |
|
408 $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/'; |
|
409 $uri .= $this->getDomain(); |
|
410 } else if ($location instanceof Zend_Gdata_Query) { |
|
411 $uri = $location->getQueryUrl(); |
|
412 } else { |
|
413 $uri = $location; |
|
414 } |
|
415 return parent::getFeed($uri, 'Zend_Gdata_Gapps_GroupFeed'); |
|
416 } |
|
417 |
|
418 /** |
|
419 * Retreive MemberFeed object containing multiple MemberEntry |
|
420 * objects. |
|
421 * |
|
422 * @param mixed $location (optional) The location for the feed, as a URL |
|
423 * or Query. |
|
424 * @return Zend_Gdata_Gapps_MemberFeed |
|
425 * @throws Zend_Gdata_App_Exception |
|
426 * @throws Zend_Gdata_App_HttpException |
|
427 * @throws Zend_Gdata_Gapps_ServiceException |
|
428 */ |
|
429 public function getMemberFeed($location = null) |
|
430 { |
|
431 if ($location === null) { |
|
432 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
433 throw new Zend_Gdata_App_InvalidArgumentException( |
|
434 'Location must not be null'); |
|
435 } else if ($location instanceof Zend_Gdata_Query) { |
|
436 $uri = $location->getQueryUrl(); |
|
437 } else { |
|
438 $uri = $location; |
|
439 } |
|
440 return parent::getFeed($uri, 'Zend_Gdata_Gapps_MemberFeed'); |
|
441 } |
|
442 |
|
443 /** |
|
444 * Retreive OwnerFeed object containing multiple OwnerEntry |
|
445 * objects. |
|
446 * |
|
447 * @param mixed $location (optional) The location for the feed, as a URL |
|
448 * or Query. |
|
449 * @return Zend_Gdata_Gapps_OwnerFeed |
|
450 * @throws Zend_Gdata_App_Exception |
|
451 * @throws Zend_Gdata_App_HttpException |
|
452 * @throws Zend_Gdata_Gapps_ServiceException |
|
453 */ |
|
454 public function getOwnerFeed($location = null) |
|
455 { |
|
456 if ($location === null) { |
|
457 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
458 throw new Zend_Gdata_App_InvalidArgumentException( |
|
459 'Location must not be null'); |
|
460 } else if ($location instanceof Zend_Gdata_Query) { |
|
461 $uri = $location->getQueryUrl(); |
|
462 } else { |
|
463 $uri = $location; |
|
464 } |
|
465 return parent::getFeed($uri, 'Zend_Gdata_Gapps_OwnerFeed'); |
|
466 } |
|
467 |
|
468 /** |
|
469 * Retreive EmailListFeed object containing multiple EmailListEntry |
|
470 * objects. |
|
471 * |
|
472 * @param mixed $location (optional) The location for the feed, as a URL |
|
473 * or Query. |
|
474 * @return Zend_Gdata_Gapps_EmailListFeed |
|
475 * @throws Zend_Gdata_App_Exception |
|
476 * @throws Zend_Gdata_App_HttpException |
|
477 * @throws Zend_Gdata_Gapps_ServiceException |
|
478 */ |
|
479 public function getEmailListFeed($location = null) |
|
480 { |
|
481 if ($location === null) { |
|
482 $uri = $this->getBaseUrl() . self::APPS_NICKNAME_PATH; |
|
483 } else if ($location instanceof Zend_Gdata_Query) { |
|
484 $uri = $location->getQueryUrl(); |
|
485 } else { |
|
486 $uri = $location; |
|
487 } |
|
488 return parent::getFeed($uri, 'Zend_Gdata_Gapps_EmailListFeed'); |
|
489 } |
|
490 |
|
491 /** |
|
492 * Retreive EmailListRecipientFeed object containing multiple |
|
493 * EmailListRecipientEntry objects. |
|
494 * |
|
495 * @param mixed $location The location for the feed, as a URL or Query. |
|
496 * @return Zend_Gdata_Gapps_EmailListRecipientFeed |
|
497 * @throws Zend_Gdata_App_Exception |
|
498 * @throws Zend_Gdata_App_HttpException |
|
499 * @throws Zend_Gdata_Gapps_ServiceException |
|
500 */ |
|
501 public function getEmailListRecipientFeed($location) |
|
502 { |
|
503 if ($location === null) { |
|
504 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
505 throw new Zend_Gdata_App_InvalidArgumentException( |
|
506 'Location must not be null'); |
|
507 } else if ($location instanceof Zend_Gdata_Query) { |
|
508 $uri = $location->getQueryUrl(); |
|
509 } else { |
|
510 $uri = $location; |
|
511 } |
|
512 return parent::getFeed($uri, 'Zend_Gdata_Gapps_EmailListRecipientFeed'); |
|
513 } |
|
514 |
|
515 /** |
|
516 * Retreive a single UserEntry object. |
|
517 * |
|
518 * @param mixed $location The location for the feed, as a URL or Query. |
|
519 * @return Zend_Gdata_Gapps_UserEntry |
|
520 * @throws Zend_Gdata_App_Exception |
|
521 * @throws Zend_Gdata_App_HttpException |
|
522 * @throws Zend_Gdata_Gapps_ServiceException |
|
523 */ |
|
524 public function getUserEntry($location) |
|
525 { |
|
526 if ($location === null) { |
|
527 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
528 throw new Zend_Gdata_App_InvalidArgumentException( |
|
529 'Location must not be null'); |
|
530 } else if ($location instanceof Zend_Gdata_Query) { |
|
531 $uri = $location->getQueryUrl(); |
|
532 } else { |
|
533 $uri = $location; |
|
534 } |
|
535 return parent::getEntry($uri, 'Zend_Gdata_Gapps_UserEntry'); |
|
536 } |
|
537 |
|
538 /** |
|
539 * Retreive a single NicknameEntry object. |
|
540 * |
|
541 * @param mixed $location The location for the feed, as a URL or Query. |
|
542 * @return Zend_Gdata_Gapps_NicknameEntry |
|
543 * @throws Zend_Gdata_App_Exception |
|
544 * @throws Zend_Gdata_App_HttpException |
|
545 * @throws Zend_Gdata_Gapps_ServiceException |
|
546 */ |
|
547 public function getNicknameEntry($location) |
|
548 { |
|
549 if ($location === null) { |
|
550 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
551 throw new Zend_Gdata_App_InvalidArgumentException( |
|
552 'Location must not be null'); |
|
553 } else if ($location instanceof Zend_Gdata_Query) { |
|
554 $uri = $location->getQueryUrl(); |
|
555 } else { |
|
556 $uri = $location; |
|
557 } |
|
558 return parent::getEntry($uri, 'Zend_Gdata_Gapps_NicknameEntry'); |
|
559 } |
|
560 |
|
561 /** |
|
562 * Retreive a single GroupEntry object. |
|
563 * |
|
564 * @param mixed $location The location for the feed, as a URL or Query. |
|
565 * @return Zend_Gdata_Gapps_GroupEntry |
|
566 * @throws Zend_Gdata_App_Exception |
|
567 * @throws Zend_Gdata_App_HttpException |
|
568 * @throws Zend_Gdata_Gapps_ServiceException |
|
569 */ |
|
570 public function getGroupEntry($location = null) |
|
571 { |
|
572 if ($location === null) { |
|
573 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
574 throw new Zend_Gdata_App_InvalidArgumentException( |
|
575 'Location must not be null'); |
|
576 } else if ($location instanceof Zend_Gdata_Query) { |
|
577 $uri = $location->getQueryUrl(); |
|
578 } else { |
|
579 $uri = $location; |
|
580 } |
|
581 return parent::getEntry($uri, 'Zend_Gdata_Gapps_GroupEntry'); |
|
582 } |
|
583 |
|
584 /** |
|
585 * Retreive a single MemberEntry object. |
|
586 * |
|
587 * @param mixed $location The location for the feed, as a URL or Query. |
|
588 * @return Zend_Gdata_Gapps_MemberEntry |
|
589 * @throws Zend_Gdata_App_Exception |
|
590 * @throws Zend_Gdata_App_HttpException |
|
591 * @throws Zend_Gdata_Gapps_ServiceException |
|
592 */ |
|
593 public function getMemberEntry($location = null) |
|
594 { |
|
595 if ($location === null) { |
|
596 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
597 throw new Zend_Gdata_App_InvalidArgumentException( |
|
598 'Location must not be null'); |
|
599 } else if ($location instanceof Zend_Gdata_Query) { |
|
600 $uri = $location->getQueryUrl(); |
|
601 } else { |
|
602 $uri = $location; |
|
603 } |
|
604 return parent::getEntry($uri, 'Zend_Gdata_Gapps_MemberEntry'); |
|
605 } |
|
606 |
|
607 /** |
|
608 * Retreive a single OwnerEntry object. |
|
609 * |
|
610 * @param mixed $location The location for the feed, as a URL or Query. |
|
611 * @return Zend_Gdata_Gapps_OwnerEntry |
|
612 * @throws Zend_Gdata_App_Exception |
|
613 * @throws Zend_Gdata_App_HttpException |
|
614 * @throws Zend_Gdata_Gapps_ServiceException |
|
615 */ |
|
616 public function getOwnerEntry($location = null) |
|
617 { |
|
618 if ($location === null) { |
|
619 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
620 throw new Zend_Gdata_App_InvalidArgumentException( |
|
621 'Location must not be null'); |
|
622 } else if ($location instanceof Zend_Gdata_Query) { |
|
623 $uri = $location->getQueryUrl(); |
|
624 } else { |
|
625 $uri = $location; |
|
626 } |
|
627 return parent::getEntry($uri, 'Zend_Gdata_Gapps_OwnerEntry'); |
|
628 } |
|
629 |
|
630 /** |
|
631 * Retreive a single EmailListEntry object. |
|
632 * |
|
633 * @param mixed $location The location for the feed, as a URL or Query. |
|
634 * @return Zend_Gdata_Gapps_EmailListEntry |
|
635 * @throws Zend_Gdata_App_Exception |
|
636 * @throws Zend_Gdata_App_HttpException |
|
637 * @throws Zend_Gdata_Gapps_ServiceException |
|
638 */ |
|
639 public function getEmailListEntry($location) |
|
640 { |
|
641 if ($location === null) { |
|
642 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
643 throw new Zend_Gdata_App_InvalidArgumentException( |
|
644 'Location must not be null'); |
|
645 } else if ($location instanceof Zend_Gdata_Query) { |
|
646 $uri = $location->getQueryUrl(); |
|
647 } else { |
|
648 $uri = $location; |
|
649 } |
|
650 return parent::getEntry($uri, 'Zend_Gdata_Gapps_EmailListEntry'); |
|
651 } |
|
652 |
|
653 /** |
|
654 * Retreive a single EmailListRecipientEntry object. |
|
655 * |
|
656 * @param mixed $location The location for the feed, as a URL or Query. |
|
657 * @return Zend_Gdata_Gapps_EmailListRecipientEntry |
|
658 * @throws Zend_Gdata_App_Exception |
|
659 * @throws Zend_Gdata_App_HttpException |
|
660 * @throws Zend_Gdata_Gapps_ServiceException |
|
661 */ |
|
662 public function getEmailListRecipientEntry($location) |
|
663 { |
|
664 if ($location === null) { |
|
665 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
666 throw new Zend_Gdata_App_InvalidArgumentException( |
|
667 'Location must not be null'); |
|
668 } else if ($location instanceof Zend_Gdata_Query) { |
|
669 $uri = $location->getQueryUrl(); |
|
670 } else { |
|
671 $uri = $location; |
|
672 } |
|
673 return parent::getEntry($uri, 'Zend_Gdata_Gapps_EmailListRecipientEntry'); |
|
674 } |
|
675 |
|
676 /** |
|
677 * Create a new user from a UserEntry. |
|
678 * |
|
679 * @param Zend_Gdata_Gapps_UserEntry $user The user entry to insert. |
|
680 * @param string $uri (optional) The URI where the user should be |
|
681 * uploaded to. If null, the default user creation URI for |
|
682 * this domain will be used. |
|
683 * @return Zend_Gdata_Gapps_UserEntry The inserted user entry as |
|
684 * returned by the server. |
|
685 * @throws Zend_Gdata_App_Exception |
|
686 * @throws Zend_Gdata_App_HttpException |
|
687 * @throws Zend_Gdata_Gapps_ServiceException |
|
688 */ |
|
689 public function insertUser($user, $uri = null) |
|
690 { |
|
691 if ($uri === null) { |
|
692 $uri = $this->getBaseUrl() . self::APPS_USER_PATH; |
|
693 } |
|
694 $newEntry = $this->insertEntry($user, $uri, 'Zend_Gdata_Gapps_UserEntry'); |
|
695 return $newEntry; |
|
696 } |
|
697 |
|
698 /** |
|
699 * Create a new nickname from a NicknameEntry. |
|
700 * |
|
701 * @param Zend_Gdata_Gapps_NicknameEntry $nickname The nickname entry to |
|
702 * insert. |
|
703 * @param string $uri (optional) The URI where the nickname should be |
|
704 * uploaded to. If null, the default nickname creation URI for |
|
705 * this domain will be used. |
|
706 * @return Zend_Gdata_Gapps_NicknameEntry The inserted nickname entry as |
|
707 * returned by the server. |
|
708 * @throws Zend_Gdata_App_Exception |
|
709 * @throws Zend_Gdata_App_HttpException |
|
710 * @throws Zend_Gdata_Gapps_ServiceException |
|
711 */ |
|
712 public function insertNickname($nickname, $uri = null) |
|
713 { |
|
714 if ($uri === null) { |
|
715 $uri = $this->getBaseUrl() . self::APPS_NICKNAME_PATH; |
|
716 } |
|
717 $newEntry = $this->insertEntry($nickname, $uri, 'Zend_Gdata_Gapps_NicknameEntry'); |
|
718 return $newEntry; |
|
719 } |
|
720 |
|
721 /** |
|
722 * Create a new group from a GroupEntry. |
|
723 * |
|
724 * @param Zend_Gdata_Gapps_GroupEntry $group The group entry to insert. |
|
725 * @param string $uri (optional) The URI where the group should be |
|
726 * uploaded to. If null, the default user creation URI for |
|
727 * this domain will be used. |
|
728 * @return Zend_Gdata_Gapps_GroupEntry The inserted group entry as |
|
729 * returned by the server. |
|
730 * @throws Zend_Gdata_App_Exception |
|
731 * @throws Zend_Gdata_App_HttpException |
|
732 * @throws Zend_Gdata_Gapps_ServiceException |
|
733 */ |
|
734 public function insertGroup($group, $uri = null) |
|
735 { |
|
736 if ($uri === null) { |
|
737 $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/'; |
|
738 $uri .= $this->getDomain(); |
|
739 } |
|
740 $newEntry = $this->insertEntry($group, $uri, 'Zend_Gdata_Gapps_GroupEntry'); |
|
741 return $newEntry; |
|
742 } |
|
743 |
|
744 /** |
|
745 * Create a new member from a MemberEntry. |
|
746 * |
|
747 * @param Zend_Gdata_Gapps_MemberEntry $member The member entry to insert. |
|
748 * @param string $uri (optional) The URI where the group should be |
|
749 * uploaded to. If null, the default user creation URI for |
|
750 * this domain will be used. |
|
751 * @return Zend_Gdata_Gapps_MemberEntry The inserted member entry as |
|
752 * returned by the server. |
|
753 * @throws Zend_Gdata_App_Exception |
|
754 * @throws Zend_Gdata_App_HttpException |
|
755 * @throws Zend_Gdata_Gapps_ServiceException |
|
756 */ |
|
757 public function insertMember($member, $uri = null) |
|
758 { |
|
759 if ($uri === null) { |
|
760 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
761 throw new Zend_Gdata_App_InvalidArgumentException( |
|
762 'URI must not be null'); |
|
763 } |
|
764 $newEntry = $this->insertEntry($member, $uri, 'Zend_Gdata_Gapps_MemberEntry'); |
|
765 return $newEntry; |
|
766 } |
|
767 |
|
768 /** |
|
769 * Create a new group from a OwnerEntry. |
|
770 * |
|
771 * @param Zend_Gdata_Gapps_OwnerEntry $owner The owner entry to insert. |
|
772 * @param string $uri (optional) The URI where the owner should be |
|
773 * uploaded to. If null, the default user creation URI for |
|
774 * this domain will be used. |
|
775 * @return Zend_Gdata_Gapps_OwnerEntry The inserted owner entry as |
|
776 * returned by the server. |
|
777 * @throws Zend_Gdata_App_Exception |
|
778 * @throws Zend_Gdata_App_HttpException |
|
779 * @throws Zend_Gdata_Gapps_ServiceException |
|
780 */ |
|
781 public function insertOwner($owner, $uri = null) |
|
782 { |
|
783 if ($uri === null) { |
|
784 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
785 throw new Zend_Gdata_App_InvalidArgumentException( |
|
786 'URI must not be null'); |
|
787 } |
|
788 $newEntry = $this->insertEntry($owner, $uri, 'Zend_Gdata_Gapps_OwnerEntry'); |
|
789 return $newEntry; |
|
790 } |
|
791 |
|
792 /** |
|
793 * Create a new email list from an EmailListEntry. |
|
794 * |
|
795 * @param Zend_Gdata_Gapps_EmailListEntry $emailList The email list entry |
|
796 * to insert. |
|
797 * @param string $uri (optional) The URI where the email list should be |
|
798 * uploaded to. If null, the default email list creation URI for |
|
799 * this domain will be used. |
|
800 * @return Zend_Gdata_Gapps_EmailListEntry The inserted email list entry |
|
801 * as returned by the server. |
|
802 * @throws Zend_Gdata_App_Exception |
|
803 * @throws Zend_Gdata_App_HttpException |
|
804 * @throws Zend_Gdata_Gapps_ServiceException |
|
805 */ |
|
806 public function insertEmailList($emailList, $uri = null) |
|
807 { |
|
808 if ($uri === null) { |
|
809 $uri = $this->getBaseUrl() . self::APPS_EMAIL_LIST_PATH; |
|
810 } |
|
811 $newEntry = $this->insertEntry($emailList, $uri, 'Zend_Gdata_Gapps_EmailListEntry'); |
|
812 return $newEntry; |
|
813 } |
|
814 |
|
815 /** |
|
816 * Create a new email list recipient from an EmailListRecipientEntry. |
|
817 * |
|
818 * @param Zend_Gdata_Gapps_EmailListRecipientEntry $recipient The recipient |
|
819 * entry to insert. |
|
820 * @param string $uri (optional) The URI where the recipient should be |
|
821 * uploaded to. If null, the default recipient creation URI for |
|
822 * this domain will be used. |
|
823 * @return Zend_Gdata_Gapps_EmailListRecipientEntry The inserted |
|
824 * recipient entry as returned by the server. |
|
825 * @throws Zend_Gdata_App_Exception |
|
826 * @throws Zend_Gdata_App_HttpException |
|
827 * @throws Zend_Gdata_Gapps_ServiceException |
|
828 */ |
|
829 public function insertEmailListRecipient($recipient, $uri = null) |
|
830 { |
|
831 if ($uri === null) { |
|
832 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; |
|
833 throw new Zend_Gdata_App_InvalidArgumentException( |
|
834 'URI must not be null'); |
|
835 } elseif ($uri instanceof Zend_Gdata_Gapps_EmailListEntry) { |
|
836 $uri = $uri->getLink('edit')->href; |
|
837 } |
|
838 $newEntry = $this->insertEntry($recipient, $uri, 'Zend_Gdata_Gapps_EmailListRecipientEntry'); |
|
839 return $newEntry; |
|
840 } |
|
841 |
|
842 /** |
|
843 * Provides a magic factory method to instantiate new objects with |
|
844 * shorter syntax than would otherwise be required by the Zend Framework |
|
845 * naming conventions. For more information, see Zend_Gdata_App::__call(). |
|
846 * |
|
847 * This overrides the default behavior of __call() so that query classes |
|
848 * do not need to have their domain manually set when created with |
|
849 * a magic factory method. |
|
850 * |
|
851 * @see Zend_Gdata_App::__call() |
|
852 * @param string $method The method name being called |
|
853 * @param array $args The arguments passed to the call |
|
854 * @throws Zend_Gdata_App_Exception |
|
855 */ |
|
856 public function __call($method, $args) { |
|
857 if (preg_match('/^new(\w+Query)/', $method, $matches)) { |
|
858 $class = $matches[1]; |
|
859 $foundClassName = null; |
|
860 foreach ($this->_registeredPackages as $name) { |
|
861 try { |
|
862 // Autoloading disabled on next line for compatibility |
|
863 // with magic factories. See ZF-6660. |
|
864 if (!class_exists($name . '_' . $class, false)) { |
|
865 require_once 'Zend/Loader.php'; |
|
866 @Zend_Loader::loadClass($name . '_' . $class); |
|
867 } |
|
868 $foundClassName = $name . '_' . $class; |
|
869 break; |
|
870 } catch (Zend_Exception $e) { |
|
871 // package wasn't here- continue searching |
|
872 } |
|
873 } |
|
874 if ($foundClassName != null) { |
|
875 $reflectionObj = new ReflectionClass($foundClassName); |
|
876 // Prepend the domain to the query |
|
877 $args = array_merge(array($this->getDomain()), $args); |
|
878 return $reflectionObj->newInstanceArgs($args); |
|
879 } else { |
|
880 require_once 'Zend/Gdata/App/Exception.php'; |
|
881 throw new Zend_Gdata_App_Exception( |
|
882 "Unable to find '${class}' in registered packages"); |
|
883 } |
|
884 } else { |
|
885 return parent::__call($method, $args); |
|
886 } |
|
887 |
|
888 } |
|
889 |
|
890 // Convenience methods |
|
891 // Specified at http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html#appendix_e |
|
892 |
|
893 /** |
|
894 * Create a new user entry and send it to the Google Apps servers. |
|
895 * |
|
896 * @param string $username The username for the new user. |
|
897 * @param string $givenName The given name for the new user. |
|
898 * @param string $familyName The family name for the new user. |
|
899 * @param string $password The password for the new user as a plaintext string |
|
900 * (if $passwordHashFunction is null) or a SHA-1 hashed |
|
901 * value (if $passwordHashFunction = 'SHA-1'). |
|
902 * @param string $quotaLimitInMB (optional) The quota limit for the new user in MB. |
|
903 * @return Zend_Gdata_Gapps_UserEntry (optional) The new user entry as returned by |
|
904 * server. |
|
905 * @throws Zend_Gdata_App_Exception |
|
906 * @throws Zend_Gdata_App_HttpException |
|
907 * @throws Zend_Gdata_Gapps_ServiceException |
|
908 */ |
|
909 public function createUser ($username, $givenName, $familyName, $password, |
|
910 $passwordHashFunction = null, $quotaLimitInMB = null) { |
|
911 $user = $this->newUserEntry(); |
|
912 $user->login = $this->newLogin(); |
|
913 $user->login->username = $username; |
|
914 $user->login->password = $password; |
|
915 $user->login->hashFunctionName = $passwordHashFunction; |
|
916 $user->name = $this->newName(); |
|
917 $user->name->givenName = $givenName; |
|
918 $user->name->familyName = $familyName; |
|
919 if ($quotaLimitInMB !== null) { |
|
920 $user->quota = $this->newQuota(); |
|
921 $user->quota->limit = $quotaLimitInMB; |
|
922 } |
|
923 return $this->insertUser($user); |
|
924 } |
|
925 |
|
926 /** |
|
927 * Retrieve a user based on their username. |
|
928 * |
|
929 * @param string $username The username to search for. |
|
930 * @return Zend_Gdata_Gapps_UserEntry The username to search for, or null |
|
931 * if no match found. |
|
932 * @throws Zend_Gdata_App_InvalidArgumentException |
|
933 * @throws Zend_Gdata_App_HttpException |
|
934 */ |
|
935 public function retrieveUser ($username) { |
|
936 $query = $this->newUserQuery($username); |
|
937 try { |
|
938 $user = $this->getUserEntry($query); |
|
939 } catch (Zend_Gdata_Gapps_ServiceException $e) { |
|
940 // Set the user to null if not found |
|
941 if ($e->hasError(Zend_Gdata_Gapps_Error::ENTITY_DOES_NOT_EXIST)) { |
|
942 $user = null; |
|
943 } else { |
|
944 throw $e; |
|
945 } |
|
946 } |
|
947 return $user; |
|
948 } |
|
949 |
|
950 /** |
|
951 * Retrieve a page of users in alphabetical order, starting with the |
|
952 * provided username. |
|
953 * |
|
954 * @param string $startUsername (optional) The first username to retrieve. |
|
955 * If null or not declared, the page will begin with the first |
|
956 * user in the domain. |
|
957 * @return Zend_Gdata_Gapps_UserFeed Collection of Zend_Gdata_UserEntry |
|
958 * objects representing all users in the domain. |
|
959 * @throws Zend_Gdata_App_Exception |
|
960 * @throws Zend_Gdata_App_HttpException |
|
961 * @throws Zend_Gdata_Gapps_ServiceException |
|
962 */ |
|
963 public function retrievePageOfUsers ($startUsername = null) { |
|
964 $query = $this->newUserQuery(); |
|
965 $query->setStartUsername($startUsername); |
|
966 return $this->getUserFeed($query); |
|
967 } |
|
968 |
|
969 /** |
|
970 * Retrieve all users in the current domain. Be aware that |
|
971 * calling this function on a domain with many users will take a |
|
972 * signifigant amount of time to complete. On larger domains this may |
|
973 * may cause execution to timeout without proper precautions in place. |
|
974 * |
|
975 * @return Zend_Gdata_Gapps_UserFeed Collection of Zend_Gdata_UserEntry |
|
976 * objects representing all users in the domain. |
|
977 * @throws Zend_Gdata_App_Exception |
|
978 * @throws Zend_Gdata_App_HttpException |
|
979 * @throws Zend_Gdata_Gapps_ServiceException |
|
980 */ |
|
981 public function retrieveAllUsers () { |
|
982 return $this->retrieveAllEntriesForFeed($this->retrievePageOfUsers()); |
|
983 } |
|
984 |
|
985 /** |
|
986 * Overwrite a specified username with the provided UserEntry. The |
|
987 * UserEntry does not need to contain an edit link. |
|
988 * |
|
989 * This method is provided for compliance with the Google Apps |
|
990 * Provisioning API specification. Normally users will instead want to |
|
991 * call UserEntry::save() instead. |
|
992 * |
|
993 * @see Zend_Gdata_App_Entry::save |
|
994 * @param string $username The username whose data will be overwritten. |
|
995 * @param Zend_Gdata_Gapps_UserEntry $userEntry The user entry which |
|
996 * will be overwritten. |
|
997 * @return Zend_Gdata_Gapps_UserEntry The UserEntry returned by the |
|
998 * server. |
|
999 * @throws Zend_Gdata_App_Exception |
|
1000 * @throws Zend_Gdata_App_HttpException |
|
1001 * @throws Zend_Gdata_Gapps_ServiceException |
|
1002 */ |
|
1003 public function updateUser($username, $userEntry) { |
|
1004 return $this->updateEntry($userEntry, $this->getBaseUrl() . |
|
1005 self::APPS_USER_PATH . '/' . $username); |
|
1006 } |
|
1007 |
|
1008 /** |
|
1009 * Mark a given user as suspended. |
|
1010 * |
|
1011 * @param string $username The username associated with the user who |
|
1012 * should be suspended. |
|
1013 * @return Zend_Gdata_Gapps_UserEntry The UserEntry for the modified |
|
1014 * user. |
|
1015 * @throws Zend_Gdata_App_Exception |
|
1016 * @throws Zend_Gdata_App_HttpException |
|
1017 * @throws Zend_Gdata_Gapps_ServiceException |
|
1018 */ |
|
1019 public function suspendUser($username) { |
|
1020 $user = $this->retrieveUser($username); |
|
1021 $user->login->suspended = true; |
|
1022 return $user->save(); |
|
1023 } |
|
1024 |
|
1025 /** |
|
1026 * Mark a given user as not suspended. |
|
1027 * |
|
1028 * @param string $username The username associated with the user who |
|
1029 * should be restored. |
|
1030 * @return Zend_Gdata_Gapps_UserEntry The UserEntry for the modified |
|
1031 * user. |
|
1032 * @throws Zend_Gdata_App_Exception |
|
1033 * @throws Zend_Gdata_App_HttpException |
|
1034 * @throws Zend_Gdata_Gapps_ServiceException |
|
1035 */ |
|
1036 public function restoreUser($username) { |
|
1037 $user = $this->retrieveUser($username); |
|
1038 $user->login->suspended = false; |
|
1039 return $user->save(); |
|
1040 } |
|
1041 |
|
1042 /** |
|
1043 * Delete a user by username. |
|
1044 * |
|
1045 * @param string $username The username associated with the user who |
|
1046 * should be deleted. |
|
1047 * @throws Zend_Gdata_App_Exception |
|
1048 * @throws Zend_Gdata_App_HttpException |
|
1049 * @throws Zend_Gdata_Gapps_ServiceException |
|
1050 */ |
|
1051 public function deleteUser($username) { |
|
1052 $this->delete($this->getBaseUrl() . self::APPS_USER_PATH . '/' . |
|
1053 $username); |
|
1054 } |
|
1055 |
|
1056 /** |
|
1057 * Create a nickname for a given user. |
|
1058 * |
|
1059 * @param string $username The username to which the new nickname should |
|
1060 * be associated. |
|
1061 * @param string $nickname The new nickname to be created. |
|
1062 * @return Zend_Gdata_Gapps_NicknameEntry The nickname entry which was |
|
1063 * created by the server. |
|
1064 * @throws Zend_Gdata_App_Exception |
|
1065 * @throws Zend_Gdata_App_HttpException |
|
1066 * @throws Zend_Gdata_Gapps_ServiceException |
|
1067 */ |
|
1068 public function createNickname($username, $nickname) { |
|
1069 $entry = $this->newNicknameEntry(); |
|
1070 $nickname = $this->newNickname($nickname); |
|
1071 $login = $this->newLogin($username); |
|
1072 $entry->nickname = $nickname; |
|
1073 $entry->login = $login; |
|
1074 return $this->insertNickname($entry); |
|
1075 } |
|
1076 |
|
1077 /** |
|
1078 * Retrieve the entry for a specified nickname. |
|
1079 * |
|
1080 * @param string $nickname The nickname to be retrieved. |
|
1081 * @return Zend_Gdata_Gapps_NicknameEntry The requested nickname entry. |
|
1082 * @throws Zend_Gdata_App_Exception |
|
1083 * @throws Zend_Gdata_App_HttpException |
|
1084 * @throws Zend_Gdata_Gapps_ServiceException |
|
1085 */ |
|
1086 public function retrieveNickname($nickname) { |
|
1087 $query = $this->newNicknameQuery(); |
|
1088 $query->setNickname($nickname); |
|
1089 try { |
|
1090 $nickname = $this->getNicknameEntry($query); |
|
1091 } catch (Zend_Gdata_Gapps_ServiceException $e) { |
|
1092 // Set the nickname to null if not found |
|
1093 if ($e->hasError(Zend_Gdata_Gapps_Error::ENTITY_DOES_NOT_EXIST)) { |
|
1094 $nickname = null; |
|
1095 } else { |
|
1096 throw $e; |
|
1097 } |
|
1098 } |
|
1099 return $nickname; |
|
1100 } |
|
1101 |
|
1102 /** |
|
1103 * Retrieve all nicknames associated with a specific username. |
|
1104 * |
|
1105 * @param string $username The username whose nicknames should be |
|
1106 * returned. |
|
1107 * @return Zend_Gdata_Gapps_NicknameFeed A feed containing all nicknames |
|
1108 * for the given user, or null if |
|
1109 * @throws Zend_Gdata_App_Exception |
|
1110 * @throws Zend_Gdata_App_HttpException |
|
1111 * @throws Zend_Gdata_Gapps_ServiceException |
|
1112 */ |
|
1113 public function retrieveNicknames($username) { |
|
1114 $query = $this->newNicknameQuery(); |
|
1115 $query->setUsername($username); |
|
1116 $nicknameFeed = $this->retrieveAllEntriesForFeed( |
|
1117 $this->getNicknameFeed($query)); |
|
1118 return $nicknameFeed; |
|
1119 } |
|
1120 |
|
1121 /** |
|
1122 * Retrieve a page of nicknames in alphabetical order, starting with the |
|
1123 * provided nickname. |
|
1124 * |
|
1125 * @param string $startNickname (optional) The first nickname to |
|
1126 * retrieve. If null or not declared, the page will begin with |
|
1127 * the first nickname in the domain. |
|
1128 * @return Zend_Gdata_Gapps_NicknameFeed Collection of Zend_Gdata_NicknameEntry |
|
1129 * objects representing all nicknames in the domain. |
|
1130 * @throws Zend_Gdata_App_Exception |
|
1131 * @throws Zend_Gdata_App_HttpException |
|
1132 * @throws Zend_Gdata_Gapps_ServiceException |
|
1133 */ |
|
1134 public function retrievePageOfNicknames ($startNickname = null) { |
|
1135 $query = $this->newNicknameQuery(); |
|
1136 $query->setStartNickname($startNickname); |
|
1137 return $this->getNicknameFeed($query); |
|
1138 } |
|
1139 |
|
1140 /** |
|
1141 * Retrieve all nicknames in the current domain. Be aware that |
|
1142 * calling this function on a domain with many nicknames will take a |
|
1143 * signifigant amount of time to complete. On larger domains this may |
|
1144 * may cause execution to timeout without proper precautions in place. |
|
1145 * |
|
1146 * @return Zend_Gdata_Gapps_NicknameFeed Collection of Zend_Gdata_NicknameEntry |
|
1147 * objects representing all nicknames in the domain. |
|
1148 * @throws Zend_Gdata_App_Exception |
|
1149 * @throws Zend_Gdata_App_HttpException |
|
1150 * @throws Zend_Gdata_Gapps_ServiceException |
|
1151 */ |
|
1152 public function retrieveAllNicknames () { |
|
1153 return $this->retrieveAllEntriesForFeed($this->retrievePageOfNicknames()); |
|
1154 } |
|
1155 |
|
1156 /** |
|
1157 * Delete a specified nickname. |
|
1158 * |
|
1159 * @param string $nickname The name of the nickname to be deleted. |
|
1160 * @throws Zend_Gdata_App_Exception |
|
1161 * @throws Zend_Gdata_App_HttpException |
|
1162 * @throws Zend_Gdata_Gapps_ServiceException |
|
1163 */ |
|
1164 public function deleteNickname($nickname) { |
|
1165 $this->delete($this->getBaseUrl() . self::APPS_NICKNAME_PATH . '/' . $nickname); |
|
1166 } |
|
1167 |
|
1168 /** |
|
1169 * Create a new group. |
|
1170 * |
|
1171 * @param string $groupId A unique identifier for the group |
|
1172 * @param string $groupName The name of the group |
|
1173 * @param string $description A description of the group |
|
1174 * @param string $emailPermission The subscription permission of the group |
|
1175 * @return Zend_Gdata_Gapps_GroupEntry The group entry as created on the server. |
|
1176 */ |
|
1177 public function createGroup($groupId, $groupName, $description = null, $emailPermission = null) |
|
1178 { |
|
1179 $i = 0; |
|
1180 $group = $this->newGroupEntry(); |
|
1181 |
|
1182 $properties[$i] = $this->newProperty(); |
|
1183 $properties[$i]->name = 'groupId'; |
|
1184 $properties[$i]->value = $groupId; |
|
1185 $i++; |
|
1186 $properties[$i] = $this->newProperty(); |
|
1187 $properties[$i]->name = 'groupName'; |
|
1188 $properties[$i]->value = $groupName; |
|
1189 $i++; |
|
1190 |
|
1191 if($description != null) { |
|
1192 $properties[$i] = $this->newProperty(); |
|
1193 $properties[$i]->name = 'description'; |
|
1194 $properties[$i]->value = $description; |
|
1195 $i++; |
|
1196 } |
|
1197 |
|
1198 if($emailPermission != null) { |
|
1199 $properties[$i] = $this->newProperty(); |
|
1200 $properties[$i]->name = 'emailPermission'; |
|
1201 $properties[$i]->value = $emailPermission; |
|
1202 $i++; |
|
1203 } |
|
1204 |
|
1205 $group->property = $properties; |
|
1206 |
|
1207 return $this->insertGroup($group); |
|
1208 } |
|
1209 |
|
1210 /** |
|
1211 * Retrieves a group based on group id |
|
1212 * |
|
1213 * @param string $groupId The unique identifier for the group |
|
1214 * @return Zend_Gdata_Gapps_GroupEntry The group entry as returned by the server. |
|
1215 */ |
|
1216 public function retrieveGroup($groupId) |
|
1217 { |
|
1218 $query = $this->newGroupQuery($groupId); |
|
1219 //$query->setGroupId($groupId); |
|
1220 |
|
1221 try { |
|
1222 $group = $this->getGroupEntry($query); |
|
1223 } catch (Zend_Gdata_Gapps_ServiceException $e) { |
|
1224 // Set the group to null if not found |
|
1225 if ($e->hasError(Zend_Gdata_Gapps_Error::ENTITY_DOES_NOT_EXIST)) { |
|
1226 $group = null; |
|
1227 } else { |
|
1228 throw $e; |
|
1229 } |
|
1230 } |
|
1231 return $group; |
|
1232 } |
|
1233 |
|
1234 /** |
|
1235 * Retrieve all groups in the current domain. Be aware that |
|
1236 * calling this function on a domain with many groups will take a |
|
1237 * signifigant amount of time to complete. On larger domains this may |
|
1238 * may cause execution to timeout without proper precautions in place. |
|
1239 * |
|
1240 * @return Zend_Gdata_Gapps_GroupFeed Collection of Zend_Gdata_GroupEntry objects |
|
1241 * representing all groups apart of the domain. |
|
1242 */ |
|
1243 public function retrieveAllGroups() |
|
1244 { |
|
1245 return $this->retrieveAllEntriesForFeed($this->retrievePageOfGroups()); |
|
1246 } |
|
1247 |
|
1248 /** |
|
1249 * Delete a group |
|
1250 * |
|
1251 * @param string $groupId The unique identifier for the group |
|
1252 */ |
|
1253 public function deleteGroup($groupId) |
|
1254 { |
|
1255 $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/'; |
|
1256 $uri .= $this->getDomain() . '/' . $groupId; |
|
1257 |
|
1258 $this->delete($uri); |
|
1259 } |
|
1260 |
|
1261 /** |
|
1262 * Check to see if a member id or group id is a member of group |
|
1263 * |
|
1264 * @param string $memberId Member id or group group id |
|
1265 * @param string $groupId Group to be checked for |
|
1266 * @return bool True, if given entity is a member |
|
1267 */ |
|
1268 public function isMember($memberId, $groupId) |
|
1269 { |
|
1270 $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/'; |
|
1271 $uri .= $this->getDomain() . '/' . $groupId . '/member/' . $memberId; |
|
1272 |
|
1273 //if the enitiy is not a member, an exception is thrown |
|
1274 try { |
|
1275 $results = $this->get($uri); |
|
1276 } catch (Exception $e) { |
|
1277 $results = false; |
|
1278 } |
|
1279 |
|
1280 if($results) { |
|
1281 return TRUE; |
|
1282 } else { |
|
1283 return FALSE; |
|
1284 } |
|
1285 } |
|
1286 |
|
1287 /** |
|
1288 * Add an email address to a group as a member |
|
1289 * |
|
1290 * @param string $recipientAddress Email address, member id, or group id |
|
1291 * @param string $groupId The unique id of the group |
|
1292 * @return Zend_Gdata_Gapps_MemberEntry The member entry returned by the server |
|
1293 */ |
|
1294 public function addMemberToGroup($recipientAddress, $groupId) |
|
1295 { |
|
1296 $member = $this->newMemberEntry(); |
|
1297 |
|
1298 $properties[] = $this->newProperty(); |
|
1299 $properties[0]->name = 'memberId'; |
|
1300 $properties[0]->value = $recipientAddress; |
|
1301 |
|
1302 $member->property = $properties; |
|
1303 |
|
1304 $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/'; |
|
1305 $uri .= $this->getDomain() . '/' . $groupId . '/member'; |
|
1306 |
|
1307 return $this->insertMember($member, $uri); |
|
1308 } |
|
1309 |
|
1310 /** |
|
1311 * Remove a member id from a group |
|
1312 * |
|
1313 * @param string $memberId Member id or group id |
|
1314 * @param string $groupId The unique id of the group |
|
1315 */ |
|
1316 public function removeMemberFromGroup($memberId, $groupId) |
|
1317 { |
|
1318 $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/'; |
|
1319 $uri .= $this->getDomain() . '/' . $groupId . '/member/' . $memberId; |
|
1320 |
|
1321 return $this->delete($uri); |
|
1322 } |
|
1323 |
|
1324 /** |
|
1325 * Retrieves all the members of a group |
|
1326 * |
|
1327 * @param string $groupId The unique id of the group |
|
1328 * @return Zend_Gdata_Gapps_MemberFeed Collection of MemberEntry objects |
|
1329 * representing all members apart of the group. |
|
1330 */ |
|
1331 public function retrieveAllMembers($groupId) |
|
1332 { |
|
1333 return $this->retrieveAllEntriesForFeed( |
|
1334 $this->retrievePageOfMembers($groupId)); |
|
1335 } |
|
1336 |
|
1337 /** |
|
1338 * Add an email as an owner of a group |
|
1339 * |
|
1340 * @param string $email Owner's email |
|
1341 * @param string $groupId Group ownership to be checked for |
|
1342 * @return Zend_Gdata_Gapps_OwnerEntry The OwnerEntry returned by the server |
|
1343 */ |
|
1344 public function addOwnerToGroup($email, $groupId) |
|
1345 { |
|
1346 $owner = $this->newOwnerEntry(); |
|
1347 |
|
1348 $properties[] = $this->newProperty(); |
|
1349 $properties[0]->name = 'email'; |
|
1350 $properties[0]->value = $email; |
|
1351 |
|
1352 $owner->property = $properties; |
|
1353 |
|
1354 $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/'; |
|
1355 $uri .= $this->getDomain() . '/' . $groupId . '/owner'; |
|
1356 |
|
1357 return $this->insertOwner($owner, $uri); |
|
1358 } |
|
1359 |
|
1360 /** |
|
1361 * Retrieves all the owners of a group |
|
1362 * |
|
1363 * @param string $groupId The unique identifier for the group |
|
1364 * @return Zend_Gdata_Gapps_OwnerFeed Collection of Zend_Gdata_OwnerEntry |
|
1365 * objects representing all owners apart of the group. |
|
1366 */ |
|
1367 public function retrieveGroupOwners($groupId) |
|
1368 { |
|
1369 $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/'; |
|
1370 $uri .= $this->getDomain() . '/' . $groupId . '/owner'; |
|
1371 |
|
1372 return $this->getOwnerFeed($uri); |
|
1373 } |
|
1374 |
|
1375 /** |
|
1376 * Checks to see if an email is an owner of a group |
|
1377 * |
|
1378 * @param string $email Owner's email |
|
1379 * @param string $groupId Group ownership to be checked for |
|
1380 * @return bool True, if given entity is an owner |
|
1381 */ |
|
1382 public function isOwner($email, $groupId) |
|
1383 { |
|
1384 $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/'; |
|
1385 $uri .= $this->getDomain() . '/' . $groupId . '/owner/' . $email; |
|
1386 |
|
1387 //if the enitiy is not an owner of the group, an exception is thrown |
|
1388 try { |
|
1389 $results = $this->get($uri); |
|
1390 } catch (Exception $e) { |
|
1391 $results = false; |
|
1392 } |
|
1393 |
|
1394 if($results) { |
|
1395 return TRUE; |
|
1396 } else { |
|
1397 return FALSE; |
|
1398 } |
|
1399 } |
|
1400 |
|
1401 /** |
|
1402 * Remove email as an owner of a group |
|
1403 * |
|
1404 * @param string $email Owner's email |
|
1405 * @param string $groupId The unique identifier for the group |
|
1406 */ |
|
1407 public function removeOwnerFromGroup($email, $groupId) |
|
1408 { |
|
1409 $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/'; |
|
1410 $uri .= $this->getDomain() . '/' . $groupId . '/owner/' . $email; |
|
1411 |
|
1412 return $this->delete($uri); |
|
1413 } |
|
1414 |
|
1415 /** |
|
1416 * Update group properties with new values. any property not defined will not |
|
1417 * be updated |
|
1418 * |
|
1419 * @param string $groupId A unique identifier for the group |
|
1420 * @param string $groupName The name of the group |
|
1421 * @param string $description A description of the group |
|
1422 * @param string $emailPermission The subscription permission of the group |
|
1423 * @return Zend_Gdata_Gapps_GroupEntry The group entry as updated on the server. |
|
1424 */ |
|
1425 public function updateGroup($groupId, $groupName = null, $description = null, |
|
1426 $emailPermission = null) |
|
1427 { |
|
1428 $i = 0; |
|
1429 $group = $this->newGroupEntry(); |
|
1430 |
|
1431 $properties[$i] = $this->newProperty(); |
|
1432 $properties[$i]->name = 'groupId'; |
|
1433 $properties[$i]->value = $groupId; |
|
1434 $i++; |
|
1435 |
|
1436 if($groupName != null) { |
|
1437 $properties[$i] = $this->newProperty(); |
|
1438 $properties[$i]->name = 'groupName'; |
|
1439 $properties[$i]->value = $groupName; |
|
1440 $i++; |
|
1441 } |
|
1442 |
|
1443 if($description != null) { |
|
1444 $properties[$i] = $this->newProperty(); |
|
1445 $properties[$i]->name = 'description'; |
|
1446 $properties[$i]->value = $description; |
|
1447 $i++; |
|
1448 } |
|
1449 |
|
1450 if($emailPermission != null) { |
|
1451 $properties[$i] = $this->newProperty(); |
|
1452 $properties[$i]->name = 'emailPermission'; |
|
1453 $properties[$i]->value = $emailPermission; |
|
1454 $i++; |
|
1455 } |
|
1456 |
|
1457 $group->property = $properties; |
|
1458 |
|
1459 $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/'; |
|
1460 $uri .= $this->getDomain() . '/' . $groupId; |
|
1461 |
|
1462 return $this->updateEntry($group, $uri, 'Zend_Gdata_Gapps_GroupEntry'); |
|
1463 } |
|
1464 |
|
1465 /** |
|
1466 * Retrieve all of the groups that a user is a member of |
|
1467 * |
|
1468 * @param string $memberId Member username |
|
1469 * @param bool $directOnly (Optional) If true, members with direct association |
|
1470 * only will be considered |
|
1471 * @return Zend_Gdata_Gapps_GroupFeed Collection of Zend_Gdata_GroupEntry |
|
1472 * objects representing all groups member is apart of in the domain. |
|
1473 */ |
|
1474 public function retrieveGroups($memberId, $directOnly = null) |
|
1475 { |
|
1476 $query = $this->newGroupQuery(); |
|
1477 $query->setMember($memberId); |
|
1478 if($directOnly != null) { |
|
1479 $query->setDirectOnly($directOnly); |
|
1480 } |
|
1481 return $this->getGroupFeed($query); |
|
1482 } |
|
1483 |
|
1484 /** |
|
1485 * Retrieve a page of groups in alphabetical order, starting with the |
|
1486 * provided group. |
|
1487 * |
|
1488 * @param string $startGroup (optional) The first group to |
|
1489 * retrieve. If null or not defined, the page will begin |
|
1490 * with the first group in the domain. |
|
1491 * @return Zend_Gdata_Gapps_GroupFeed Collection of Zend_Gdata_GroupEntry |
|
1492 * objects representing the groups in the domain. |
|
1493 * @throws Zend_Gdata_App_Exception |
|
1494 * @throws Zend_Gdata_App_HttpException |
|
1495 * @throws Zend_Gdata_Gapps_ServiceException |
|
1496 */ |
|
1497 public function retrievePageOfGroups ($startGroup = null) |
|
1498 { |
|
1499 $query = $this->newGroupQuery(); |
|
1500 $query->setStartGroupId($startGroup); |
|
1501 return $this->getGroupFeed($query); |
|
1502 } |
|
1503 |
|
1504 /** |
|
1505 * Gets page of Members |
|
1506 * |
|
1507 * @param string $groupId The group id which should be searched. |
|
1508 * @param string $startMember (optinal) The address of the first member, |
|
1509 * or null to start with the first member in the list. |
|
1510 * @return Zend_Gdata_Gapps_MemberFeed Collection of Zend_Gdata_MemberEntry |
|
1511 * objects |
|
1512 */ |
|
1513 public function retrievePageOfMembers($groupId, $startMember = null) |
|
1514 { |
|
1515 $query = $this->newMemberQuery($groupId); |
|
1516 $query->setStartMemberId($startMember); |
|
1517 return $this->getMemberFeed($query); |
|
1518 } |
|
1519 |
|
1520 /** |
|
1521 * Create a new email list. |
|
1522 * |
|
1523 * @param string $emailList The name of the email list to be created. |
|
1524 * @return Zend_Gdata_Gapps_EmailListEntry The email list entry |
|
1525 * as created on the server. |
|
1526 * @throws Zend_Gdata_App_Exception |
|
1527 * @throws Zend_Gdata_App_HttpException |
|
1528 * @throws Zend_Gdata_Gapps_ServiceException |
|
1529 */ |
|
1530 public function createEmailList($emailList) { |
|
1531 $entry = $this->newEmailListEntry(); |
|
1532 $list = $this->newEmailList(); |
|
1533 $list->name = $emailList; |
|
1534 $entry->emailList = $list; |
|
1535 return $this->insertEmailList($entry); |
|
1536 } |
|
1537 |
|
1538 /** |
|
1539 * Retrieve all email lists associated with a recipient. |
|
1540 * |
|
1541 * @param string $username The recipient whose associated email lists |
|
1542 * should be returned. |
|
1543 * @return Zend_Gdata_Gapps_EmailListFeed The list of email lists found as |
|
1544 * Zend_Gdata_EmailListEntry objects. |
|
1545 * @throws Zend_Gdata_App_Exception |
|
1546 * @throws Zend_Gdata_App_HttpException |
|
1547 * @throws Zend_Gdata_Gapps_ServiceException |
|
1548 */ |
|
1549 public function retrieveEmailLists($recipient) { |
|
1550 $query = $this->newEmailListQuery(); |
|
1551 $query->recipient = $recipient; |
|
1552 return $this->getEmailListFeed($query); |
|
1553 } |
|
1554 |
|
1555 /** |
|
1556 * Retrieve a page of email lists in alphabetical order, starting with the |
|
1557 * provided email list. |
|
1558 * |
|
1559 * @param string $startEmailListName (optional) The first list to |
|
1560 * retrieve. If null or not defined, the page will begin |
|
1561 * with the first email list in the domain. |
|
1562 * @return Zend_Gdata_Gapps_EmailListFeed Collection of Zend_Gdata_EmailListEntry |
|
1563 * objects representing all nicknames in the domain. |
|
1564 * @throws Zend_Gdata_App_Exception |
|
1565 * @throws Zend_Gdata_App_HttpException |
|
1566 * @throws Zend_Gdata_Gapps_ServiceException |
|
1567 */ |
|
1568 public function retrievePageOfEmailLists ($startNickname = null) { |
|
1569 $query = $this->newEmailListQuery(); |
|
1570 $query->setStartEmailListName($startNickname); |
|
1571 return $this->getEmailListFeed($query); |
|
1572 } |
|
1573 |
|
1574 /** |
|
1575 * Retrieve all email lists associated with the curent domain. Be aware that |
|
1576 * calling this function on a domain with many email lists will take a |
|
1577 * signifigant amount of time to complete. On larger domains this may |
|
1578 * may cause execution to timeout without proper precautions in place. |
|
1579 * |
|
1580 * @return Zend_Gdata_Gapps_EmailListFeed The list of email lists found |
|
1581 * as Zend_Gdata_Gapps_EmailListEntry objects. |
|
1582 * @throws Zend_Gdata_App_Exception |
|
1583 * @throws Zend_Gdata_App_HttpException |
|
1584 * @throws Zend_Gdata_Gapps_ServiceException |
|
1585 */ |
|
1586 public function retrieveAllEmailLists() { |
|
1587 return $this->retrieveAllEntriesForFeed($this->retrievePageOfEmailLists()); |
|
1588 } |
|
1589 |
|
1590 /** |
|
1591 * Delete a specified email list. |
|
1592 * |
|
1593 * @param string $emailList The name of the emailList to be deleted. |
|
1594 * @throws Zend_Gdata_App_Exception |
|
1595 * @throws Zend_Gdata_App_HttpException |
|
1596 * @throws Zend_Gdata_Gapps_ServiceException |
|
1597 */ |
|
1598 public function deleteEmailList($emailList) { |
|
1599 $this->delete($this->getBaseUrl() . self::APPS_EMAIL_LIST_PATH . '/' |
|
1600 . $emailList); |
|
1601 } |
|
1602 |
|
1603 /** |
|
1604 * Add a specified recipient to an existing emailList. |
|
1605 * |
|
1606 * @param string $recipientAddress The address of the recipient to be |
|
1607 * added to the email list. |
|
1608 * @param string $emailList The name of the email address to which the |
|
1609 * recipient should be added. |
|
1610 * @return Zend_Gdata_Gapps_EmailListRecipientEntry The recipient entry |
|
1611 * created by the server. |
|
1612 * @throws Zend_Gdata_App_Exception |
|
1613 * @throws Zend_Gdata_App_HttpException |
|
1614 * @throws Zend_Gdata_Gapps_ServiceException |
|
1615 */ |
|
1616 public function addRecipientToEmailList($recipientAddress, $emailList) { |
|
1617 $entry = $this->newEmailListRecipientEntry(); |
|
1618 $who = $this->newWho(); |
|
1619 $who->email = $recipientAddress; |
|
1620 $entry->who = $who; |
|
1621 $address = $this->getBaseUrl() . self::APPS_EMAIL_LIST_PATH . '/' . |
|
1622 $emailList . self::APPS_EMAIL_LIST_RECIPIENT_POSTFIX . '/'; |
|
1623 return $this->insertEmailListRecipient($entry, $address); |
|
1624 } |
|
1625 |
|
1626 /** |
|
1627 * Retrieve a page of email list recipients in alphabetical order, |
|
1628 * starting with the provided email list recipient. |
|
1629 * |
|
1630 * @param string $emaiList The email list which should be searched. |
|
1631 * @param string $startRecipient (optinal) The address of the first |
|
1632 * recipient, or null to start with the first recipient in |
|
1633 * the list. |
|
1634 * @return Zend_Gdata_Gapps_EmailListRecipientFeed Collection of |
|
1635 * Zend_Gdata_EmailListRecipientEntry objects representing all |
|
1636 * recpients in the specified list. |
|
1637 * @throws Zend_Gdata_App_Exception |
|
1638 * @throws Zend_Gdata_App_HttpException |
|
1639 * @throws Zend_Gdata_Gapps_ServiceException |
|
1640 */ |
|
1641 public function retrievePageOfRecipients ($emailList, |
|
1642 $startRecipient = null) { |
|
1643 $query = $this->newEmailListRecipientQuery(); |
|
1644 $query->setEmailListName($emailList); |
|
1645 $query->setStartRecipient($startRecipient); |
|
1646 return $this->getEmailListRecipientFeed($query); |
|
1647 } |
|
1648 |
|
1649 /** |
|
1650 * Retrieve all recipients associated with an email list. Be aware that |
|
1651 * calling this function on a domain with many email lists will take a |
|
1652 * signifigant amount of time to complete. On larger domains this may |
|
1653 * may cause execution to timeout without proper precautions in place. |
|
1654 * |
|
1655 * @param string $emaiList The email list which should be searched. |
|
1656 * @return Zend_Gdata_Gapps_EmailListRecipientFeed The list of email lists |
|
1657 * found as Zend_Gdata_Gapps_EmailListRecipientEntry objects. |
|
1658 * @throws Zend_Gdata_App_Exception |
|
1659 * @throws Zend_Gdata_App_HttpException |
|
1660 * @throws Zend_Gdata_Gapps_ServiceException |
|
1661 */ |
|
1662 public function retrieveAllRecipients($emailList) { |
|
1663 return $this->retrieveAllEntriesForFeed( |
|
1664 $this->retrievePageOfRecipients($emailList)); |
|
1665 } |
|
1666 |
|
1667 /** |
|
1668 * Remove a specified recipient from an email list. |
|
1669 * |
|
1670 * @param string $recipientAddress The recipient to be removed. |
|
1671 * @param string $emailList The list from which the recipient should |
|
1672 * be removed. |
|
1673 * @throws Zend_Gdata_App_Exception |
|
1674 * @throws Zend_Gdata_App_HttpException |
|
1675 * @throws Zend_Gdata_Gapps_ServiceException |
|
1676 */ |
|
1677 public function removeRecipientFromEmailList($recipientAddress, $emailList) { |
|
1678 $this->delete($this->getBaseUrl() . self::APPS_EMAIL_LIST_PATH . '/' |
|
1679 . $emailList . self::APPS_EMAIL_LIST_RECIPIENT_POSTFIX . '/' |
|
1680 . $recipientAddress); |
|
1681 } |
|
1682 |
|
1683 } |