[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
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 [email protected] so we can send you a copy immediately. 15 * 16 * @category Zend 17 * @package Zend_Gdata 18 * @subpackage Photos 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$ 22 */ 23 24 /** 25 * @see Zend_Gdata 26 */ 27 require_once 'Zend/Gdata.php'; 28 29 /** 30 * @see Zend_Gdata_Photos_UserFeed 31 */ 32 require_once 'Zend/Gdata/Photos/UserFeed.php'; 33 34 /** 35 * @see Zend_Gdata_Photos_AlbumFeed 36 */ 37 require_once 'Zend/Gdata/Photos/AlbumFeed.php'; 38 39 /** 40 * @see Zend_Gdata_Photos_PhotoFeed 41 */ 42 require_once 'Zend/Gdata/Photos/PhotoFeed.php'; 43 44 /** 45 * Service class for interacting with the Google Photos Data API. 46 * 47 * Like other service classes in this module, this class provides access via 48 * an HTTP client to Google servers for working with entries and feeds. 49 * 50 * @link http://code.google.com/apis/picasaweb/gdata.html 51 * 52 * @category Zend 53 * @package Zend_Gdata 54 * @subpackage Photos 55 * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) 56 * @license http://framework.zend.com/license/new-bsd New BSD License 57 */ 58 class Zend_Gdata_Photos extends Zend_Gdata 59 { 60 61 const PICASA_BASE_URI = 'http://picasaweb.google.com/data'; 62 const PICASA_BASE_FEED_URI = 'http://picasaweb.google.com/data/feed'; 63 const AUTH_SERVICE_NAME = 'lh2'; 64 65 /** 66 * Default projection when interacting with the Picasa server. 67 */ 68 const DEFAULT_PROJECTION = 'api'; 69 70 /** 71 * The default visibility to filter events by. 72 */ 73 const DEFAULT_VISIBILITY = 'all'; 74 75 /** 76 * The default user to retrieve feeds for. 77 */ 78 const DEFAULT_USER = 'default'; 79 80 /** 81 * Path to the user feed on the Picasa server. 82 */ 83 const USER_PATH = 'user'; 84 85 /** 86 * Path to album feeds on the Picasa server. 87 */ 88 const ALBUM_PATH = 'albumid'; 89 90 /** 91 * Path to photo feeds on the Picasa server. 92 */ 93 const PHOTO_PATH = 'photoid'; 94 95 /** 96 * The path to the community search feed on the Picasa server. 97 */ 98 const COMMUNITY_SEARCH_PATH = 'all'; 99 100 /** 101 * The path to use for finding links to feeds within entries 102 */ 103 const FEED_LINK_PATH = 'http://schemas.google.com/g/2005#feed'; 104 105 /** 106 * The path to use for the determining type of an entry 107 */ 108 const KIND_PATH = 'http://schemas.google.com/g/2005#kind'; 109 110 /** 111 * Namespaces used for Zend_Gdata_Photos 112 * 113 * @var array 114 */ 115 public static $namespaces = array( 116 array('gphoto', 'http://schemas.google.com/photos/2007', 1, 0), 117 array('photo', 'http://www.pheed.com/pheed/', 1, 0), 118 array('exif', 'http://schemas.google.com/photos/exif/2007', 1, 0), 119 array('georss', 'http://www.georss.org/georss', 1, 0), 120 array('gml', 'http://www.opengis.net/gml', 1, 0), 121 array('media', 'http://search.yahoo.com/mrss/', 1, 0) 122 ); 123 124 /** 125 * Create Zend_Gdata_Photos object 126 * 127 * @param Zend_Http_Client $client (optional) The HTTP client to use when 128 * when communicating with the servers. 129 * @param string $applicationId The identity of the app in the form of Company-AppName-Version 130 */ 131 public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0') 132 { 133 $this->registerPackage('Zend_Gdata_Photos'); 134 $this->registerPackage('Zend_Gdata_Photos_Extension'); 135 parent::__construct($client, $applicationId); 136 $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME); 137 } 138 139 /** 140 * Retrieve a UserFeed containing AlbumEntries, PhotoEntries and 141 * TagEntries associated with a given user. 142 * 143 * @param string $userName The userName of interest 144 * @param mixed $location (optional) The location for the feed, as a URL 145 * or Query. If not provided, a default URL will be used instead. 146 * @return Zend_Gdata_Photos_UserFeed 147 * @throws Zend_Gdata_App_Exception 148 * @throws Zend_Gdata_App_HttpException 149 */ 150 public function getUserFeed($userName = null, $location = null) 151 { 152 if ($location instanceof Zend_Gdata_Photos_UserQuery) { 153 $location->setType('feed'); 154 if ($userName !== null) { 155 $location->setUser($userName); 156 } 157 $uri = $location->getQueryUrl(); 158 } else if ($location instanceof Zend_Gdata_Query) { 159 if ($userName !== null) { 160 $location->setUser($userName); 161 } 162 $uri = $location->getQueryUrl(); 163 } else if ($location !== null) { 164 $uri = $location; 165 } else if ($userName !== null) { 166 $uri = self::PICASA_BASE_FEED_URI . '/' . 167 self::DEFAULT_PROJECTION . '/' . self::USER_PATH . '/' . 168 $userName; 169 } else { 170 $uri = self::PICASA_BASE_FEED_URI . '/' . 171 self::DEFAULT_PROJECTION . '/' . self::USER_PATH . '/' . 172 self::DEFAULT_USER; 173 } 174 175 return parent::getFeed($uri, 'Zend_Gdata_Photos_UserFeed'); 176 } 177 178 /** 179 * Retreive AlbumFeed object containing multiple PhotoEntry or TagEntry 180 * objects. 181 * 182 * @param mixed $location (optional) The location for the feed, as a URL or Query. 183 * @return Zend_Gdata_Photos_AlbumFeed 184 * @throws Zend_Gdata_App_Exception 185 * @throws Zend_Gdata_App_HttpException 186 */ 187 public function getAlbumFeed($location = null) 188 { 189 if ($location === null) { 190 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; 191 throw new Zend_Gdata_App_InvalidArgumentException( 192 'Location must not be null'); 193 } else if ($location instanceof Zend_Gdata_Photos_UserQuery) { 194 $location->setType('feed'); 195 $uri = $location->getQueryUrl(); 196 } else if ($location instanceof Zend_Gdata_Query) { 197 $uri = $location->getQueryUrl(); 198 } else { 199 $uri = $location; 200 } 201 return parent::getFeed($uri, 'Zend_Gdata_Photos_AlbumFeed'); 202 } 203 204 /** 205 * Retreive PhotoFeed object containing comments and tags associated 206 * with a given photo. 207 * 208 * @param mixed $location (optional) The location for the feed, as a URL 209 * or Query. If not specified, the community search feed will 210 * be returned instead. 211 * @return Zend_Gdata_Photos_PhotoFeed 212 * @throws Zend_Gdata_App_Exception 213 * @throws Zend_Gdata_App_HttpException 214 */ 215 public function getPhotoFeed($location = null) 216 { 217 if ($location === null) { 218 $uri = self::PICASA_BASE_FEED_URI . '/' . 219 self::DEFAULT_PROJECTION . '/' . 220 self::COMMUNITY_SEARCH_PATH; 221 } else if ($location instanceof Zend_Gdata_Photos_UserQuery) { 222 $location->setType('feed'); 223 $uri = $location->getQueryUrl(); 224 } else if ($location instanceof Zend_Gdata_Query) { 225 $uri = $location->getQueryUrl(); 226 } else { 227 $uri = $location; 228 } 229 return parent::getFeed($uri, 'Zend_Gdata_Photos_PhotoFeed'); 230 } 231 232 /** 233 * Retreive a single UserEntry object. 234 * 235 * @param mixed $location The location for the feed, as a URL or Query. 236 * @return Zend_Gdata_Photos_UserEntry 237 * @throws Zend_Gdata_App_Exception 238 * @throws Zend_Gdata_App_HttpException 239 */ 240 public function getUserEntry($location) 241 { 242 if ($location === null) { 243 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; 244 throw new Zend_Gdata_App_InvalidArgumentException( 245 'Location must not be null'); 246 } else if ($location instanceof Zend_Gdata_Photos_UserQuery) { 247 $location->setType('entry'); 248 $uri = $location->getQueryUrl(); 249 } else if ($location instanceof Zend_Gdata_Query) { 250 $uri = $location->getQueryUrl(); 251 } else { 252 $uri = $location; 253 } 254 return parent::getEntry($uri, 'Zend_Gdata_Photos_UserEntry'); 255 } 256 257 /** 258 * Retreive a single AlbumEntry object. 259 * 260 * @param mixed $location The location for the feed, as a URL or Query. 261 * @return Zend_Gdata_Photos_AlbumEntry 262 * @throws Zend_Gdata_App_Exception 263 * @throws Zend_Gdata_App_HttpException 264 */ 265 public function getAlbumEntry($location) 266 { 267 if ($location === null) { 268 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; 269 throw new Zend_Gdata_App_InvalidArgumentException( 270 'Location must not be null'); 271 } else if ($location instanceof Zend_Gdata_Photos_UserQuery) { 272 $location->setType('entry'); 273 $uri = $location->getQueryUrl(); 274 } else if ($location instanceof Zend_Gdata_Query) { 275 $uri = $location->getQueryUrl(); 276 } else { 277 $uri = $location; 278 } 279 return parent::getEntry($uri, 'Zend_Gdata_Photos_AlbumEntry'); 280 } 281 282 /** 283 * Retreive a single PhotoEntry object. 284 * 285 * @param mixed $location The location for the feed, as a URL or Query. 286 * @return Zend_Gdata_Photos_PhotoEntry 287 * @throws Zend_Gdata_App_Exception 288 * @throws Zend_Gdata_App_HttpException 289 */ 290 public function getPhotoEntry($location) 291 { 292 if ($location === null) { 293 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; 294 throw new Zend_Gdata_App_InvalidArgumentException( 295 'Location must not be null'); 296 } else if ($location instanceof Zend_Gdata_Photos_UserQuery) { 297 $location->setType('entry'); 298 $uri = $location->getQueryUrl(); 299 } else if ($location instanceof Zend_Gdata_Query) { 300 $uri = $location->getQueryUrl(); 301 } else { 302 $uri = $location; 303 } 304 return parent::getEntry($uri, 'Zend_Gdata_Photos_PhotoEntry'); 305 } 306 307 /** 308 * Retreive a single TagEntry object. 309 * 310 * @param mixed $location The location for the feed, as a URL or Query. 311 * @return Zend_Gdata_Photos_TagEntry 312 * @throws Zend_Gdata_App_Exception 313 * @throws Zend_Gdata_App_HttpException 314 */ 315 public function getTagEntry($location) 316 { 317 if ($location === null) { 318 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; 319 throw new Zend_Gdata_App_InvalidArgumentException( 320 'Location must not be null'); 321 } else if ($location instanceof Zend_Gdata_Photos_UserQuery) { 322 $location->setType('entry'); 323 $uri = $location->getQueryUrl(); 324 } else if ($location instanceof Zend_Gdata_Query) { 325 $uri = $location->getQueryUrl(); 326 } else { 327 $uri = $location; 328 } 329 return parent::getEntry($uri, 'Zend_Gdata_Photos_TagEntry'); 330 } 331 332 /** 333 * Retreive a single CommentEntry object. 334 * 335 * @param mixed $location The location for the feed, as a URL or Query. 336 * @return Zend_Gdata_Photos_CommentEntry 337 * @throws Zend_Gdata_App_Exception 338 * @throws Zend_Gdata_App_HttpException 339 */ 340 public function getCommentEntry($location) 341 { 342 if ($location === null) { 343 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; 344 throw new Zend_Gdata_App_InvalidArgumentException( 345 'Location must not be null'); 346 } else if ($location instanceof Zend_Gdata_Photos_UserQuery) { 347 $location->setType('entry'); 348 $uri = $location->getQueryUrl(); 349 } else if ($location instanceof Zend_Gdata_Query) { 350 $uri = $location->getQueryUrl(); 351 } else { 352 $uri = $location; 353 } 354 return parent::getEntry($uri, 'Zend_Gdata_Photos_CommentEntry'); 355 } 356 357 /** 358 * Create a new album from a AlbumEntry. 359 * 360 * @param Zend_Gdata_Photos_AlbumEntry $album The album entry to 361 * insert. 362 * @param string $url (optional) The URI that the album should be 363 * uploaded to. If null, the default album creation URI for 364 * this domain will be used. 365 * @return Zend_Gdata_Photos_AlbumEntry The inserted album entry as 366 * returned by the server. 367 * @throws Zend_Gdata_App_Exception 368 * @throws Zend_Gdata_App_HttpException 369 */ 370 public function insertAlbumEntry($album, $uri = null) 371 { 372 if ($uri === null) { 373 $uri = self::PICASA_BASE_FEED_URI . '/' . 374 self::DEFAULT_PROJECTION . '/' . self::USER_PATH . '/' . 375 self::DEFAULT_USER; 376 } 377 $newEntry = $this->insertEntry($album, $uri, 'Zend_Gdata_Photos_AlbumEntry'); 378 return $newEntry; 379 } 380 381 /** 382 * Create a new photo from a PhotoEntry. 383 * 384 * @param Zend_Gdata_Photos_PhotoEntry $photo The photo to insert. 385 * @param string $url The URI that the photo should be uploaded 386 * to. Alternatively, an AlbumEntry can be provided and the 387 * photo will be added to that album. 388 * @return Zend_Gdata_Photos_PhotoEntry The inserted photo entry 389 * as returned by the server. 390 * @throws Zend_Gdata_App_Exception 391 * @throws Zend_Gdata_App_HttpException 392 */ 393 public function insertPhotoEntry($photo, $uri = null) 394 { 395 if ($uri instanceof Zend_Gdata_Photos_AlbumEntry) { 396 $uri = $uri->getLink(self::FEED_LINK_PATH)->href; 397 } 398 if ($uri === null) { 399 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; 400 throw new Zend_Gdata_App_InvalidArgumentException( 401 'URI must not be null'); 402 } 403 $newEntry = $this->insertEntry($photo, $uri, 'Zend_Gdata_Photos_PhotoEntry'); 404 return $newEntry; 405 } 406 407 /** 408 * Create a new tag from a TagEntry. 409 * 410 * @param Zend_Gdata_Photos_TagEntry $tag The tag entry to insert. 411 * @param string $url The URI where the tag should be 412 * uploaded to. Alternatively, a PhotoEntry can be provided and 413 * the tag will be added to that photo. 414 * @return Zend_Gdata_Photos_TagEntry The inserted tag entry as returned 415 * by the server. 416 * @throws Zend_Gdata_App_Exception 417 * @throws Zend_Gdata_App_HttpException 418 */ 419 public function insertTagEntry($tag, $uri = null) 420 { 421 if ($uri instanceof Zend_Gdata_Photos_PhotoEntry) { 422 $uri = $uri->getLink(self::FEED_LINK_PATH)->href; 423 } 424 if ($uri === null) { 425 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; 426 throw new Zend_Gdata_App_InvalidArgumentException( 427 'URI must not be null'); 428 } 429 $newEntry = $this->insertEntry($tag, $uri, 'Zend_Gdata_Photos_TagEntry'); 430 return $newEntry; 431 } 432 433 /** 434 * Create a new comment from a CommentEntry. 435 * 436 * @param Zend_Gdata_Photos_CommentEntry $comment The comment entry to 437 * insert. 438 * @param string $url The URI where the comment should be uploaded to. 439 * Alternatively, a PhotoEntry can be provided and 440 * the comment will be added to that photo. 441 * @return Zend_Gdata_Photos_CommentEntry The inserted comment entry 442 * as returned by the server. 443 * @throws Zend_Gdata_App_Exception 444 * @throws Zend_Gdata_App_HttpException 445 */ 446 public function insertCommentEntry($comment, $uri = null) 447 { 448 if ($uri instanceof Zend_Gdata_Photos_PhotoEntry) { 449 $uri = $uri->getLink(self::FEED_LINK_PATH)->href; 450 } 451 if ($uri === null) { 452 require_once 'Zend/Gdata/App/InvalidArgumentException.php'; 453 throw new Zend_Gdata_App_InvalidArgumentException( 454 'URI must not be null'); 455 } 456 $newEntry = $this->insertEntry($comment, $uri, 'Zend_Gdata_Photos_CommentEntry'); 457 return $newEntry; 458 } 459 460 /** 461 * Delete an AlbumEntry. 462 * 463 * @param Zend_Gdata_Photos_AlbumEntry $album The album entry to 464 * delete. 465 * @param boolean $catch Whether to catch an exception when 466 * modified and re-delete or throw 467 * @return void. 468 * @throws Zend_Gdata_App_Exception 469 * @throws Zend_Gdata_App_HttpException 470 */ 471 public function deleteAlbumEntry($album, $catch) 472 { 473 if ($catch) { 474 try { 475 $this->delete($album); 476 } catch (Zend_Gdata_App_HttpException $e) { 477 if ($e->getResponse()->getStatus() === 409) { 478 $entry = new Zend_Gdata_Photos_AlbumEntry($e->getResponse()->getBody()); 479 $this->delete($entry->getLink('edit')->href); 480 } else { 481 throw $e; 482 } 483 } 484 } else { 485 $this->delete($album); 486 } 487 } 488 489 /** 490 * Delete a PhotoEntry. 491 * 492 * @param Zend_Gdata_Photos_PhotoEntry $photo The photo entry to 493 * delete. 494 * @param boolean $catch Whether to catch an exception when 495 * modified and re-delete or throw 496 * @return void. 497 * @throws Zend_Gdata_App_Exception 498 * @throws Zend_Gdata_App_HttpException 499 */ 500 public function deletePhotoEntry($photo, $catch) 501 { 502 if ($catch) { 503 try { 504 $this->delete($photo); 505 } catch (Zend_Gdata_App_HttpException $e) { 506 if ($e->getResponse()->getStatus() === 409) { 507 $entry = new Zend_Gdata_Photos_PhotoEntry($e->getResponse()->getBody()); 508 $this->delete($entry->getLink('edit')->href); 509 } else { 510 throw $e; 511 } 512 } 513 } else { 514 $this->delete($photo); 515 } 516 } 517 518 /** 519 * Delete a CommentEntry. 520 * 521 * @param Zend_Gdata_Photos_CommentEntry $comment The comment entry to 522 * delete. 523 * @param boolean $catch Whether to catch an exception when 524 * modified and re-delete or throw 525 * @return void. 526 * @throws Zend_Gdata_App_Exception 527 * @throws Zend_Gdata_App_HttpException 528 */ 529 public function deleteCommentEntry($comment, $catch) 530 { 531 if ($catch) { 532 try { 533 $this->delete($comment); 534 } catch (Zend_Gdata_App_HttpException $e) { 535 if ($e->getResponse()->getStatus() === 409) { 536 $entry = new Zend_Gdata_Photos_CommentEntry($e->getResponse()->getBody()); 537 $this->delete($entry->getLink('edit')->href); 538 } else { 539 throw $e; 540 } 541 } 542 } else { 543 $this->delete($comment); 544 } 545 } 546 547 /** 548 * Delete a TagEntry. 549 * 550 * @param Zend_Gdata_Photos_TagEntry $tag The tag entry to 551 * delete. 552 * @param boolean $catch Whether to catch an exception when 553 * modified and re-delete or throw 554 * @return void. 555 * @throws Zend_Gdata_App_Exception 556 * @throws Zend_Gdata_App_HttpException 557 */ 558 public function deleteTagEntry($tag, $catch) 559 { 560 if ($catch) { 561 try { 562 $this->delete($tag); 563 } catch (Zend_Gdata_App_HttpException $e) { 564 if ($e->getResponse()->getStatus() === 409) { 565 $entry = new Zend_Gdata_Photos_TagEntry($e->getResponse()->getBody()); 566 $this->delete($entry->getLink('edit')->href); 567 } else { 568 throw $e; 569 } 570 } 571 } else { 572 $this->delete($tag); 573 } 574 } 575 576 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |