[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/lib/zend/Zend/Gdata/ -> Photos.php (source)

   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  }


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1