summaryrefslogtreecommitdiff
path: root/zend/demos/Zend/Gdata/Photos.php
diff options
context:
space:
mode:
authorHorus32014-02-24 16:42:14 +0100
committerHorus32014-02-24 16:42:14 +0100
commit06f945f27840b53e57795dadbc38e76f7e11ab1c (patch)
tree689d5c7f4ffa15460c7e90f47c6a7dd59ce4e8bd /zend/demos/Zend/Gdata/Photos.php
downloadrandom-06f945f27840b53e57795dadbc38e76f7e11ab1c.tar.gz
init
Diffstat (limited to 'zend/demos/Zend/Gdata/Photos.php')
-rwxr-xr-xzend/demos/Zend/Gdata/Photos.php904
1 files changed, 904 insertions, 0 deletions
diff --git a/zend/demos/Zend/Gdata/Photos.php b/zend/demos/Zend/Gdata/Photos.php
new file mode 100755
index 0000000..4c3e257
--- /dev/null
+++ b/zend/demos/Zend/Gdata/Photos.php
@@ -0,0 +1,904 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Gdata
+ * @subpackage Demos
+ * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * PHP sample code for the Photos data API. Utilizes the
+ * Zend Framework Gdata components to communicate with the Google API.
+ *
+ * Requires the Zend Framework Gdata components and PHP >= 5.2.11
+ *
+ * You can run this sample from a web browser.
+ *
+ * NOTE: You must ensure that Zend Framework is in your PHP include
+ * path. You can do this via php.ini settings, or by modifying the
+ * argument to set_include_path in the code below.
+ *
+ * NOTE: As this is sample code, not all of the functions do full error
+ * handling.
+ */
+
+/**
+ * @see Zend_Loader
+ */
+require_once 'Zend/Loader.php';
+
+/**
+ * @see Zend_Gdata
+ */
+Zend_Loader::loadClass('Zend_Gdata');
+
+/**
+ * @see Zend_Gdata_AuthSub
+ */
+Zend_Loader::loadClass('Zend_Gdata_AuthSub');
+
+/**
+ * @see Zend_Gdata_Photos
+ */
+Zend_Loader::loadClass('Zend_Gdata_Photos');
+
+/**
+ * @see Zend_Gdata_Photos_UserQuery
+ */
+Zend_Loader::loadClass('Zend_Gdata_Photos_UserQuery');
+
+/**
+ * @see Zend_Gdata_Photos_AlbumQuery
+ */
+Zend_Loader::loadClass('Zend_Gdata_Photos_AlbumQuery');
+
+/**
+ * @see Zend_Gdata_Photos_PhotoQuery
+ */
+Zend_Loader::loadClass('Zend_Gdata_Photos_PhotoQuery');
+
+/**
+ * @see Zend_Gdata_App_Extension_Category
+ */
+Zend_Loader::loadClass('Zend_Gdata_App_Extension_Category');
+
+session_start();
+
+
+/**
+ * Adds a new photo to the specified album
+ *
+ * @param Zend_Http_Client $client The authenticated client
+ * @param string $user The user's account name
+ * @param integer $albumId The album's id
+ * @param array $photo The uploaded photo
+ * @return void
+ */
+function addPhoto($client, $user, $albumId, $photo)
+{
+ $photos = new Zend_Gdata_Photos($client);
+
+ $fd = $photos->newMediaFileSource($photo["tmp_name"]);
+ $fd->setContentType($photo["type"]);
+
+ $entry = new Zend_Gdata_Photos_PhotoEntry();
+ $entry->setMediaSource($fd);
+ $entry->setTitle($photos->newTitle($photo["name"]));
+
+ $albumQuery = new Zend_Gdata_Photos_AlbumQuery;
+ $albumQuery->setUser($user);
+ $albumQuery->setAlbumId($albumId);
+
+ $albumEntry = $photos->getAlbumEntry($albumQuery);
+
+ $result = $photos->insertPhotoEntry($entry, $albumEntry);
+ if ($result) {
+ outputAlbumFeed($client, $user, $albumId);
+ } else {
+ echo "There was an issue with the file upload.";
+ }
+}
+
+/**
+ * Deletes the specified photo
+ *
+ * @param Zend_Http_Client $client The authenticated client
+ * @param string $user The user's account name
+ * @param integer $albumId The album's id
+ * @param integer $photoId The photo's id
+ * @return void
+ */
+function deletePhoto($client, $user, $albumId, $photoId)
+{
+ $photos = new Zend_Gdata_Photos($client);
+
+ $photoQuery = new Zend_Gdata_Photos_PhotoQuery;
+ $photoQuery->setUser($user);
+ $photoQuery->setAlbumId($albumId);
+ $photoQuery->setPhotoId($photoId);
+ $photoQuery->setType('entry');
+
+ $entry = $photos->getPhotoEntry($photoQuery);
+
+ $photos->deletePhotoEntry($entry, true);
+
+ outputAlbumFeed($client, $user, $albumId);
+}
+
+/**
+ * Adds a new album to the specified user's album
+ *
+ * @param Zend_Http_Client $client The authenticated client
+ * @param string $user The user's account name
+ * @param string $name The name of the new album
+ * @return void
+ */
+function addAlbum($client, $user, $name)
+{
+ $photos = new Zend_Gdata_Photos($client);
+
+ $entry = new Zend_Gdata_Photos_AlbumEntry();
+ $entry->setTitle($photos->newTitle($name));
+
+ $result = $photos->insertAlbumEntry($entry);
+ if ($result) {
+ outputUserFeed($client, $user);
+ } else {
+ echo "There was an issue with the album creation.";
+ }
+}
+
+/**
+ * Deletes the specified album
+ *
+ * @param Zend_Http_Client $client The authenticated client
+ * @param string $user The user's account name
+ * @param integer $albumId The album's id
+ * @return void
+ */
+function deleteAlbum($client, $user, $albumId)
+{
+ $photos = new Zend_Gdata_Photos($client);
+
+ $albumQuery = new Zend_Gdata_Photos_AlbumQuery;
+ $albumQuery->setUser($user);
+ $albumQuery->setAlbumId($albumId);
+ $albumQuery->setType('entry');
+
+ $entry = $photos->getAlbumEntry($albumQuery);
+
+ $photos->deleteAlbumEntry($entry, true);
+
+ outputUserFeed($client, $user);
+}
+
+/**
+ * Adds a new comment to the specified photo
+ *
+ * @param Zend_Http_Client $client The authenticated client
+ * @param string $user The user's account name
+ * @param integer $albumId The album's id
+ * @param integer $photoId The photo's id
+ * @param string $comment The comment to add
+ * @return void
+ */
+function addComment($client, $user, $album, $photo, $comment)
+{
+ $photos = new Zend_Gdata_Photos($client);
+
+ $entry = new Zend_Gdata_Photos_CommentEntry();
+ $entry->setTitle($photos->newTitle($comment));
+ $entry->setContent($photos->newContent($comment));
+
+ $photoQuery = new Zend_Gdata_Photos_PhotoQuery;
+ $photoQuery->setUser($user);
+ $photoQuery->setAlbumId($album);
+ $photoQuery->setPhotoId($photo);
+ $photoQuery->setType('entry');
+
+ $photoEntry = $photos->getPhotoEntry($photoQuery);
+
+ $result = $photos->insertCommentEntry($entry, $photoEntry);
+ if ($result) {
+ outputPhotoFeed($client, $user, $album, $photo);
+ } else {
+ echo "There was an issue with the comment creation.";
+ }
+}
+
+/**
+ * Deletes the specified comment
+ *
+ * @param Zend_Http_Client $client The authenticated client
+ * @param string $user The user's account name
+ * @param integer $albumId The album's id
+ * @param integer $photoId The photo's id
+ * @param integer $commentId The comment's id
+ * @return void
+ */
+function deleteComment($client, $user, $albumId, $photoId, $commentId)
+{
+ $photos = new Zend_Gdata_Photos($client);
+
+ $photoQuery = new Zend_Gdata_Photos_PhotoQuery;
+ $photoQuery->setUser($user);
+ $photoQuery->setAlbumId($albumId);
+ $photoQuery->setPhotoId($photoId);
+ $photoQuery->setType('entry');
+
+ $path = $photoQuery->getQueryUrl() . '/commentid/' . $commentId;
+
+ $entry = $photos->getCommentEntry($path);
+
+ $photos->deleteCommentEntry($entry, true);
+
+ outputPhotoFeed($client, $user, $albumId, $photoId);
+}
+
+/**
+ * Adds a new tag to the specified photo
+ *
+ * @param Zend_Http_Client $client The authenticated client
+ * @param string $user The user's account name
+ * @param integer $album The album's id
+ * @param integer $photo The photo's id
+ * @param string $tag The tag to add to the photo
+ * @return void
+ */
+function addTag($client, $user, $album, $photo, $tag)
+{
+ $photos = new Zend_Gdata_Photos($client);
+
+ $entry = new Zend_Gdata_Photos_TagEntry();
+ $entry->setTitle($photos->newTitle($tag));
+
+ $photoQuery = new Zend_Gdata_Photos_PhotoQuery;
+ $photoQuery->setUser($user);
+ $photoQuery->setAlbumId($album);
+ $photoQuery->setPhotoId($photo);
+ $photoQuery->setType('entry');
+
+ $photoEntry = $photos->getPhotoEntry($photoQuery);
+
+ $result = $photos->insertTagEntry($entry, $photoEntry);
+ if ($result) {
+ outputPhotoFeed($client, $user, $album, $photo);
+ } else {
+ echo "There was an issue with the tag creation.";
+ }
+}
+
+/**
+ * Deletes the specified tag
+ *
+ * @param Zend_Http_Client $client The authenticated client
+ * @param string $user The user's account name
+ * @param integer $albumId The album's id
+ * @param integer $photoId The photo's id
+ * @param string $tagContent The name of the tag to be deleted
+ * @return void
+ */
+function deleteTag($client, $user, $albumId, $photoId, $tagContent)
+{
+ $photos = new Zend_Gdata_Photos($client);
+
+ $photoQuery = new Zend_Gdata_Photos_PhotoQuery;
+ $photoQuery->setUser($user);
+ $photoQuery->setAlbumId($albumId);
+ $photoQuery->setPhotoId($photoId);
+ $query = $photoQuery->getQueryUrl() . "?kind=tag";
+
+ $photoFeed = $photos->getPhotoFeed($query);
+
+ foreach ($photoFeed as $entry) {
+ if ($entry instanceof Zend_Gdata_Photos_TagEntry) {
+ if ($entry->getContent() == $tagContent) {
+ $tagEntry = $entry;
+ }
+ }
+ }
+
+ $photos->deleteTagEntry($tagEntry, true);
+
+ outputPhotoFeed($client, $user, $albumId, $photoId);
+}
+
+/**
+ * Returns the path to the current script, without any query params
+ *
+ * Env variables used:
+ * $_SERVER['PHP_SELF']
+ *
+ * @return string Current script path
+ */
+function getCurrentScript()
+{
+ global $_SERVER;
+ return $_SERVER["PHP_SELF"];
+}
+
+/**
+ * Returns the full URL of the current page, based upon env variables
+ *
+ * Env variables used:
+ * $_SERVER['HTTPS'] = (on|off|)
+ * $_SERVER['HTTP_HOST'] = value of the Host: header
+ * $_SERVER['SERVER_PORT'] = port number (only used if not http/80,https/443)
+ * $_SERVER['REQUEST_URI'] = the URI after the method of the HTTP request
+ *
+ * @return string Current URL
+ */
+function getCurrentUrl()
+{
+ global $_SERVER;
+
+ /**
+ * Filter php_self to avoid a security vulnerability.
+ */
+ $php_request_uri = htmlentities(substr($_SERVER['REQUEST_URI'], 0,
+ strcspn($_SERVER['REQUEST_URI'], "\n\r")), ENT_QUOTES);
+
+ if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') {
+ $protocol = 'https://';
+ } else {
+ $protocol = 'http://';
+ }
+ $host = $_SERVER['HTTP_HOST'];
+ if ($_SERVER['SERVER_PORT'] != '' &&
+ (($protocol == 'http://' && $_SERVER['SERVER_PORT'] != '80') ||
+ ($protocol == 'https://' && $_SERVER['SERVER_PORT'] != '443'))) {
+ $port = ':' . $_SERVER['SERVER_PORT'];
+ } else {
+ $port = '';
+ }
+ return $protocol . $host . $port . $php_request_uri;
+}
+
+/**
+ * Returns the AuthSub URL which the user must visit to authenticate requests
+ * from this application.
+ *
+ * Uses getCurrentUrl() to get the next URL which the user will be redirected
+ * to after successfully authenticating with the Google service.
+ *
+ * @return string AuthSub URL
+ */
+function getAuthSubUrl()
+{
+ $next = getCurrentUrl();
+ $scope = 'http://picasaweb.google.com/data';
+ $secure = false;
+ $session = true;
+ return Zend_Gdata_AuthSub::getAuthSubTokenUri($next, $scope, $secure,
+ $session);
+}
+
+/**
+ * Outputs a request to the user to login to their Google account, including
+ * a link to the AuthSub URL.
+ *
+ * Uses getAuthSubUrl() to get the URL which the user must visit to authenticate
+ *
+ * @return void
+ */
+function requestUserLogin($linkText)
+{
+ $authSubUrl = getAuthSubUrl();
+ echo "<a href=\"{$authSubUrl}\">{$linkText}</a>";
+}
+
+/**
+ * Returns a HTTP client object with the appropriate headers for communicating
+ * with Google using AuthSub authentication.
+ *
+ * Uses the $_SESSION['sessionToken'] to store the AuthSub session token after
+ * it is obtained. The single use token supplied in the URL when redirected
+ * after the user succesfully authenticated to Google is retrieved from the
+ * $_GET['token'] variable.
+ *
+ * @return Zend_Http_Client
+ */
+function getAuthSubHttpClient()
+{
+ global $_SESSION, $_GET;
+ if (!isset($_SESSION['sessionToken']) && isset($_GET['token'])) {
+ $_SESSION['sessionToken'] =
+ Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token']);
+ }
+ $client = Zend_Gdata_AuthSub::getHttpClient($_SESSION['sessionToken']);
+ return $client;
+}
+
+/**
+ * Processes loading of this sample code through a web browser. Uses AuthSub
+ * authentication and outputs a list of a user's albums if succesfully
+ * authenticated.
+ *
+ * @return void
+ */
+function processPageLoad()
+{
+ global $_SESSION, $_GET;
+ if (!isset($_SESSION['sessionToken']) && !isset($_GET['token'])) {
+ requestUserLogin('Please login to your Google Account.');
+ } else {
+ $client = getAuthSubHttpClient();
+ if (!empty($_REQUEST['command'])) {
+ switch ($_REQUEST['command']) {
+ case 'retrieveSelf':
+ outputUserFeed($client, "default");
+ break;
+ case 'retrieveUser':
+ outputUserFeed($client, $_REQUEST['user']);
+ break;
+ case 'retrieveAlbumFeed':
+ outputAlbumFeed($client, $_REQUEST['user'], $_REQUEST['album']);
+ break;
+ case 'retrievePhotoFeed':
+ outputPhotoFeed($client, $_REQUEST['user'], $_REQUEST['album'],
+ $_REQUEST['photo']);
+ break;
+ }
+ }
+
+ // Now we handle the potentially destructive commands, which have to
+ // be submitted by POST only.
+ if (!empty($_POST['command'])) {
+ switch ($_POST['command']) {
+ case 'addPhoto':
+ addPhoto($client, $_POST['user'], $_POST['album'], $_FILES['photo']);
+ break;
+ case 'deletePhoto':
+ deletePhoto($client, $_POST['user'], $_POST['album'],
+ $_POST['photo']);
+ break;
+ case 'addAlbum':
+ addAlbum($client, $_POST['user'], $_POST['name']);
+ break;
+ case 'deleteAlbum':
+ deleteAlbum($client, $_POST['user'], $_POST['album']);
+ break;
+ case 'addComment':
+ addComment($client, $_POST['user'], $_POST['album'], $_POST['photo'],
+ $_POST['comment']);
+ break;
+ case 'addTag':
+ addTag($client, $_POST['user'], $_POST['album'], $_POST['photo'],
+ $_POST['tag']);
+ break;
+ case 'deleteComment':
+ deleteComment($client, $_POST['user'], $_POST['album'],
+ $_POST['photo'], $_POST['comment']);
+ break;
+ case 'deleteTag':
+ deleteTag($client, $_POST['user'], $_POST['album'], $_POST['photo'],
+ $_POST['tag']);
+ break;
+ default:
+ break;
+ }
+ }
+
+ // If a menu parameter is available, display a submenu.
+ if (!empty($_REQUEST['menu'])) {
+ switch ($_REQUEST['menu']) {
+ case 'user':
+ displayUserMenu();
+ break;
+ case 'photo':
+ displayPhotoMenu();
+ break;
+ case 'album':
+ displayAlbumMenu();
+ break;
+ case 'logout':
+ logout();
+ break;
+ default:
+ header('HTTP/1.1 400 Bad Request');
+ echo "<h2>Invalid menu selection.</h2>\n";
+ echo "<p>Please check your request and try again.</p>";
+ }
+ }
+
+ if (empty($_REQUEST['menu']) && empty($_REQUEST['command'])) {
+ displayMenu();
+ }
+ }
+}
+
+/**
+ * Displays the main menu, allowing the user to select from a list of actions.
+ *
+ * @return void
+ */
+function displayMenu()
+{
+?>
+<h2>Main Menu</h2>
+
+<p>Welcome to the Photos API demo page. Please select
+ from one of the following four options to fetch information.</p>
+
+ <ul>
+ <li><a href="?command=retrieveSelf">Your Feed</a></li>
+ <li><a href="?menu=user">User Menu</a></li>
+ <li><a href="?menu=photo">Photos Menu</a></li>
+ <li><a href="?menu=album">Albums Menu</a></li>
+ </ul>
+<?php
+}
+
+/**
+ * Outputs an HTML link to return to the previous page.
+ *
+ * @return void
+ */
+function displayBackLink()
+{
+ echo "<br><br>";
+ echo "<a href='javascript: history.go(-1);'><< Back</a>";
+}
+
+/**
+ * Displays the user menu, allowing the user to request a specific user's feed.
+ *
+ * @return void
+ */
+function displayUserMenu()
+{
+?>
+<h2>User Menu</h2>
+
+<div class="menuForm">
+ <form method="get" accept-charset="utf-8">
+ <h3 class='nopad'>Retrieve User Feed</h3>
+ <p>Retrieve the feed for an existing user.</p>
+ <p>
+ <input type="hidden" name="command" value="retrieveUser" />
+ <label for="user">Username: </label>
+ <input type="text" name="user" value="" /><br />
+ </p>
+
+ <p><input type="submit" value="Retrieve User &rarr;"></p>
+ </form>
+</div>
+<?php
+
+ displayBackLink();
+}
+
+/**
+ * Displays the photo menu, allowing the user to request a specific photo's feed.
+ *
+ * @return void
+ */
+function displayPhotoMenu()
+{
+?>
+<h2>Photo Menu</h2>
+
+<div class="menuForm">
+ <form method="get" accept-charset="utf-8">
+ <h3 class='nopad'>Retrieve Photo Feed</h3>
+ <p>Retrieve the feed for an existing photo.</p>
+ <p>
+ <input type="hidden" name="command" value="retrievePhotoFeed" />
+ <label for="user">User: </label>
+ <input type="text" name="user" value="" /><br />
+ <label for="album">Album ID: </label>
+ <input type="text" name="album" value="" /><br />
+ <label for="photoid">Photo ID: </label>
+ <input type="text" name="photo" value="" /><br />
+ </p>
+
+ <p><input type="submit" value="Retrieve Photo Feed &rarr;"></p>
+ </form>
+</div>
+<?php
+
+ displayBackLink();
+}
+
+/**
+ * Displays the album menu, allowing the user to request a specific album's feed.
+ *
+ * @return void
+ */
+function displayAlbumMenu()
+{
+?>
+<h2>Album Menu</h2>
+
+<div class="menuForm">
+ <form method="get" accept-charset="utf-8">
+ <h3 class='nopad'>Retrieve Album Feed</h3>
+ <p>Retrieve the feed for an existing album.</p>
+ <p>
+ <input type="hidden" name="command" value="retrieveAlbumFeed" />
+ <label for="user">User: </label>
+ <input type="text" name="user" value="" /><br />
+ <label for="album">Album ID: </label>
+ <input type="text" name="album" value="" /><br />
+ </p>
+
+ <p><input type="submit" value="Retrieve Album Feed &rarr;"></p>
+ </form>
+</div>
+<?php
+
+ displayBackLink();
+}
+
+/**
+ * Outputs an HTML unordered list (ul), with each list item representing an
+ * album in the user's feed.
+ *
+ * @param Zend_Http_Client $client The authenticated client object
+ * @param string $user The user's account name
+ * @return void
+ */
+function outputUserFeed($client, $user)
+{
+ $photos = new Zend_Gdata_Photos($client);
+
+ $query = new Zend_Gdata_Photos_UserQuery();
+ $query->setUser($user);
+
+ $userFeed = $photos->getUserFeed(null, $query);
+ echo "<h2>User Feed for: " . $userFeed->getTitle() . "</h2>";
+ echo "<ul class='user'>\n";
+ foreach ($userFeed as $entry) {
+ if ($entry instanceof Zend_Gdata_Photos_AlbumEntry) {
+ echo "\t<li class='user'>";
+ echo "<a href='?command=retrieveAlbumFeed&user=";
+ echo $userFeed->getTitle() . "&album=" . $entry->getGphotoId();
+ echo "'>";
+ $thumb = $entry->getMediaGroup()->getThumbnail();
+ echo "<img class='thumb' src='" . $thumb[0]->getUrl() . "' /><br />";
+ echo $entry->getTitle() . "</a>";
+ echo "<form action='" . getCurrentScript() . "'' method='post' class='deleteForm'>";
+ echo "<input type='hidden' name='user' value='" . $user . "' />";
+ echo "<input type='hidden' name='album' value='" . $entry->getGphotoId();
+ echo "' />";
+ echo "<input type='hidden' name='command' value='deleteAlbum' />";
+ echo "<input type='submit' value='Delete' /></form>";
+ echo "</li>\n";
+ }
+ }
+ echo "</ul><br />\n";
+
+ echo "<h3>Add an Album</h3>";
+?>
+ <form method="POST" action="<?php echo getCurrentScript(); ?>">
+ <input type="hidden" name="command" value="addAlbum" />
+ <input type="hidden" name="user" value="<?php echo $user; ?>" />
+ <input type="text" name="name" />
+ <input type="submit" name="Add Album" />
+ </form>
+<?php
+
+ displayBackLink();
+}
+
+/**
+ * Outputs an HTML unordered list (ul), with each list item representing a
+ * photo in the user's album feed.
+ *
+ * @param Zend_Http_Client $client The authenticated client object
+ * @param string $user The user's account name
+ * @param integer $albumId The album's id
+ * @return void
+ */
+function outputAlbumFeed($client, $user, $albumId)
+{
+ $photos = new Zend_Gdata_Photos($client);
+
+ $query = new Zend_Gdata_Photos_AlbumQuery();
+ $query->setUser($user);
+ $query->setAlbumId($albumId);
+
+ $albumFeed = $photos->getAlbumFeed($query);
+ echo "<h2>Album Feed for: " . $albumFeed->getTitle() . "</h2>";
+ echo "<ul class='albums'>\n";
+ foreach ($albumFeed as $entry) {
+ if ($entry instanceof Zend_Gdata_Photos_PhotoEntry) {
+ echo "\t<li class='albums'>";
+ echo "<a href='" . getCurrentScript() . "?command=retrievePhotoFeed&user=" . $user;
+ echo "&album=" . $albumId . "&photo=" . $entry->getGphotoId() . "'>";
+ $thumb = $entry->getMediaGroup()->getThumbnail();
+ echo "<img class='thumb' src='" . $thumb[1]->getUrl() . "' /><br />";
+ echo $entry->getTitle() . "</a>";
+ echo "<form action='" . getCurrentScript() . "' method='post' class='deleteForm'>";
+ echo "<input type='hidden' name='user' value='" . $user . "' />";
+ echo "<input type='hidden' name='album' value='" . $albumId . "' />";
+ echo "<input type='hidden' name='photo' value='" . $entry->getGphotoId();
+ echo "' /><input type='hidden' name='command' value='deletePhoto' />";
+ echo "<input type='submit' value='Delete' /></form>";
+ echo "</li>\n";
+ }
+ }
+ echo "</ul><br />\n";
+
+ echo "<h3>Add a Photo</h3>";
+?>
+ <form enctype="multipart/form-data" method="POST" action="<?php echo getCurrentScript(); ?>">
+ <input type="hidden" name="MAX_FILE_SIZE" value="20971520" />
+ <input type="hidden" name="command" value="addPhoto" />
+ <input type="hidden" name="user" value="<?php echo $user; ?>" />
+ <input type="hidden" name="album" value="<?php echo $albumId; ?>" />
+ Please select a photo to upload: <input name="photo" type="file" /><br />
+ <input type="submit" name="Upload" />
+ </form>
+<?php
+
+ displayBackLink();
+}
+
+/**
+ * Outputs the feed of the specified photo
+ *
+ * @param Zend_Http_Client $client The authenticated client object
+ * @param string $user The user's account name
+ * @param integer $albumId The album's id
+ * @param integer $photoId The photo's id
+ * @return void
+ */
+function outputPhotoFeed($client, $user, $albumId, $photoId)
+{
+ $photos = new Zend_Gdata_Photos($client);
+
+ $query = new Zend_Gdata_Photos_PhotoQuery();
+ $query->setUser($user);
+ $query->setAlbumId($albumId);
+ $query->setPhotoId($photoId);
+ $query = $query->getQueryUrl() . "?kind=comment,tag";
+
+ $photoFeed = $photos->getPhotoFeed($query);
+ echo "<h2>Photo Feed for: " . $photoFeed->getTitle() . "</h2>";
+ $thumbs = $photoFeed->getMediaGroup()->getThumbnail();
+ echo "<img src='" . $thumbs[2]->url . "' />";
+
+ echo "<h3 class='nopad'>Comments:</h3>";
+ echo "<ul>\n";
+ foreach ($photoFeed as $entry) {
+ if ($entry instanceof Zend_Gdata_Photos_CommentEntry) {
+ echo "\t<li>" . $entry->getContent();
+ echo "<form action='" . getCurrentScript() . "' method='post' class='deleteForm'>";
+ echo "<input type='hidden' name='user' value='" . $user . "' />";
+ echo "<input type='hidden' name='album' value='" . $albumId . "' />";
+ echo "<input type='hidden' name='photo' value='" . $photoId . "' />";
+ echo "<input type='hidden' name='comment' value='" . $entry->getGphotoId();
+ echo "' />";
+ echo "<input type='hidden' name='command' value='deleteComment' />";
+ echo "<input type='submit' value='Delete' /></form>";
+ echo "</li>\n";
+ }
+ }
+ echo "</ul>\n";
+ echo "<h4>Add a Comment</h4>";
+?>
+ <form method="POST" action="<?php echo getCurrentScript(); ?>">
+ <input type="hidden" name="command" value="addComment" />
+ <input type="hidden" name="user" value="<?php echo $user; ?>" />
+ <input type="hidden" name="album" value="<?php echo $albumId; ?>" />
+ <input type="hidden" name="photo" value="<?php echo $photoId; ?>" />
+ <input type="text" name="comment" />
+ <input type="submit" name="Comment" value="Comment" />
+ </form>
+<?php
+ echo "<br />";
+ echo "<h3 class='nopad'>Tags:</h3>";
+ echo "<ul>\n";
+ foreach ($photoFeed as $entry) {
+ if ($entry instanceof Zend_Gdata_Photos_TagEntry) {
+ echo "\t<li>" . $entry->getTitle();
+ echo "<form action='" . getCurrentScript() . "' method='post' class='deleteForm'>";
+ echo "<input type='hidden' name='user' value='" . $user . "' />";
+ echo "<input type='hidden' name='album' value='" . $albumId . "' />";
+ echo "<input type='hidden' name='photo' value='" . $photoId . "' />";
+ echo "<input type='hidden' name='tag' value='" . $entry->getContent();
+ echo "' />";
+ echo "<input type='hidden' name='command' value='deleteTag' />";
+ echo "<input type='submit' value='Delete' /></form>";
+ echo "</li>\n";
+ }
+ }
+ echo "</ul>\n";
+ echo "<h4>Add a Tag</h4>";
+?>
+ <form method="POST" action="<?php echo getCurrentScript(); ?>">
+ <input type="hidden" name="command" value="addTag" />
+ <input type="hidden" name="user" value="<?php echo $user; ?>" />
+ <input type="hidden" name="album" value="<?php echo $albumId; ?>" />
+ <input type="hidden" name="photo" value="<?php echo $photoId; ?>" />
+ <input type="text" name="tag" />
+ <input type="submit" name="Tag" value="Tag" />
+ </form>
+<?php
+
+ displayBackLink();
+}
+
+/**
+ * Output the CSS for the page
+ */
+
+?>
+<style type="text/css">
+ h2 {
+ color: #0056FF;
+ }
+ h3 {
+ color: #0056FF;
+ padding-top: 15px;
+ clear: left;
+ }
+ h3.nopad {
+ padding: 0px;
+ }
+ ul {
+ background-color: #E0EAFF;
+ color: #191D1D;
+ margin: 10px;
+ padding: 10px 10px 10px 25px;
+ border: 1px solid #515B5C;
+ }
+ ul.user, ul.albums {
+ background-color: #FFFFFF;
+ border: 0px;
+ padding: 0px;
+ }
+ li.user, li.albums {
+ display: block;
+ float: left;
+ margin: 5px;
+ padding: 5px;
+ text-align: center;
+ background-color: #E0EAFF;
+ border: 1px solid #515B5C;
+ }
+ a {
+ color: #0056FF;
+ font-weight: bold;
+ text-decoration: none;
+ }
+ a:hover {
+ text-decoration: underline;
+ color: #E00000;
+ }
+ div.menuForm {
+ margin: 10px;
+ padding: 0px 10px;
+ background-color: #E0EAFF;
+ border: 1px solid #515B5C;
+ }
+ form.deleteForm {
+ padding-left: 10px;
+ display: inline;
+ }
+ img.thumb {
+ margin: 5px;
+ border: 0px;
+ }
+</style>
+<?php
+
+/**
+ * Calls the main processing function for running in a browser
+ */
+
+processPageLoad();