Anonymous avatar Anonymous committed c45efd2

Initial commit.

Comments (0)

Files changed (312)

admin/admin.joomlapicasa2.php

+<?php
+
+// no direct access
+defined('_JEXEC') or die('Restricted access');
+
+echo JText::_('Jp2_welcome');
+
+?>
+<html><body bgcolor="#FFFFFF"></body></html>
+<?xml version="1.0" encoding="utf-8"?>
+<config>
+ <params>
+  <param name="picasaUsername" type="text" default="prof3ta" label="Picasa Username" description="Your Picasa Username" />
+  <param name="picasaMaxPhotosPerPage" type="text" default="15" label="Max Photos Per Page" description="Max Photos Per Page" />
+  <param name="picasaMaxPhotosPerRow" type="text" default="3" label="Max Photos Per Row" description="Max Photos Per Row" />
+	<param name="picasaLightboxEnabled" type="radio" default="1" label="Lightbox Effects" description="Show/Hide Lightbox Effects">
+	<option value="0">Hide</option>
+	<option value="1">Show</option>
+</param>
+	<param name="picasaInstantEnabled" type="radio" default="1" label="Instant Effects" description="Show/Hide Instant Effects">
+	<option value="0">Hide</option>
+	<option value="1">Show</option>
+</param>
+ 
+</params>
+</config>

en-GB.com_joomlapicasa2.ini

+JP2_WELCOME=Welcome to Joomla Picasa 2
+JP2_ALBUMS_PRESENT=albums are present for
+JP2_ALBUM_CONTAINS=The album contains
+JP2_PHOTOS=photos 
+JP2_PAGE=Page
+JP2_PREV=Previous
+JP2_NEXT=Next

joomlapicasa2.xml

+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE install SYSTEM "http://dev.joomla.org/xml/1.5/component-install.dtd">
+<install type="component" version="1.5.0">
+	<name>Joomla Picasa 2</name>
+	<!-- The following elements are optional and free of formatting conttraints -->
+	<creationDate>May 26, 2008</creationDate>
+	<author>Roberto Aloi</author>
+	<authorEmail>prof3ta@gmail.com</authorEmail>
+	<authorUrl>http://prof3ta.netsons.org</authorUrl>
+	<license>GNU GPL</license>
+	<!--  The version string is recorded in the components table -->
+	<version>2.0.5</version>
+	<!-- The description is optional and defaults to the name -->
+	<description>Create your Picasa photogallery within your Joomla website</description>
+
+	<!-- Site Main File Copy Section -->
+	<files folder="site">
+		<filename>index.html</filename>
+		<filename>joomlapicasa2.php</filename>
+		<filename>controller.php</filename>
+		<filename>views/index.html</filename>
+		<filename>views/joomlapicasa2/index.html</filename>
+		<filename>views/joomlapicasa2/view.html.php</filename>
+		<filename>views/joomlapicasa2/tmpl/index.html</filename>
+		<filename>views/joomlapicasa2/tmpl/default.php</filename>
+		<filename>views/album/index.html</filename>
+		<filename>views/album/view.html.php</filename>
+		<filename>views/album/tmpl/index.html</filename>
+		<filename>views/album/tmpl/default.php</filename>
+		<filename>models/joomlapicasa2.php</filename>
+
+		<!-- Zend Libraries -->
+		<filename>libraries/Zend/Exception.php</filename>
+		<filename>libraries/Zend/Gdata/App/AuthException.php</filename>
+		<filename>libraries/Zend/Gdata/App/BadMethodCallException.php</filename>
+		<filename>libraries/Zend/Gdata/App/BaseMediaSource.php</filename>
+		<filename>libraries/Zend/Gdata/App/Base.php</filename>
+		<filename>libraries/Zend/Gdata/App/CaptchaRequiredException.php</filename>
+		<filename>libraries/Zend/Gdata/App/Entry.php</filename>
+		<filename>libraries/Zend/Gdata/App/Exception.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Author.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Category.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Content.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Contributor.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Control.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Draft.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Element.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Email.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Generator.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Icon.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Id.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Link.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Logo.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Name.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Person.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Published.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Rights.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Source.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Subtitle.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Summary.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Text.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Title.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Updated.php</filename>
+		<filename>libraries/Zend/Gdata/App/Extension/Uri.php</filename>
+		<filename>libraries/Zend/Gdata/App/FeedEntryParent.php</filename>
+		<filename>libraries/Zend/Gdata/App/Feed.php</filename>
+		<filename>libraries/Zend/Gdata/App/FeedSourceParent.php</filename>
+		<filename>libraries/Zend/Gdata/App/HttpException.php</filename>
+		<filename>libraries/Zend/Gdata/App/InvalidArgumentException.php</filename>
+		<filename>libraries/Zend/Gdata/App/IOException.php</filename>
+		<filename>libraries/Zend/Gdata/App/MediaEntry.php</filename>
+		<filename>libraries/Zend/Gdata/App/MediaFileSource.php</filename>
+		<filename>libraries/Zend/Gdata/App/MediaSource.php</filename>
+		<filename>libraries/Zend/Gdata/App.php</filename>
+		<filename>libraries/Zend/Gdata/App/Util.php</filename>
+		<filename>libraries/Zend/Gdata/AuthSub.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/EventEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/EventFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/EventQuery.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/Extension/AccessLevel.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/Extension/Color.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/Extension/Hidden.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/Extension/Link.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/Extension/QuickAdd.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/Extension/Selected.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/Extension/SendEventNotifications.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/Extension/Timezone.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/Extension/WebContent.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/ListEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar/ListFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Calendar.php</filename>
+		<filename>libraries/Zend/Gdata/ClientLogin.php</filename>
+		<filename>libraries/Zend/Gdata/Docs/DocumentListEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Docs/DocumentListFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Docs.php</filename>
+		<filename>libraries/Zend/Gdata/Docs/Query.php</filename>
+		<filename>libraries/Zend/Gdata/Entry.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Entry.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Extension/Distance.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Extension/Exposure.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Extension/Flash.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Extension/FocalLength.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Extension/FStop.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Extension/ImageUniqueId.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Extension/Iso.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Extension/Make.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Extension/Model.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Extension/Tags.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Extension/Time.php</filename>
+		<filename>libraries/Zend/Gdata/Exif/Feed.php</filename>
+		<filename>libraries/Zend/Gdata/Exif.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/AttendeeStatus.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/AttendeeType.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/Comments.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/EntryLink.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/EventStatus.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/ExtendedProperty.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/FeedLink.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/OpenSearchItemsPerPage.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/OpenSearchStartIndex.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/OpenSearchTotalResults.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/OriginalEvent.php</filename>
+		<filename>libraries/Zend/Gdata/Extension.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/Rating.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/RecurrenceException.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/Recurrence.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/Reminder.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/Transparency.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/Visibility.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/When.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/Where.php</filename>
+		<filename>libraries/Zend/Gdata/Extension/Who.php</filename>
+		<filename>libraries/Zend/Gdata/Feed.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/EmailListEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/EmailListFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/EmailListQuery.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/EmailListRecipientEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/EmailListRecipientFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/EmailListRecipientQuery.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/Error.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/Extension/EmailList.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/Extension/Login.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/Extension/Name.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/Extension/Nickname.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/Extension/Quota.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/NicknameEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/NicknameFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/NicknameQuery.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/Query.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/ServiceException.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/UserEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/UserFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Gapps/UserQuery.php</filename>
+		<filename>libraries/Zend/Gdata/Gbase/Entry.php</filename>
+		<filename>libraries/Zend/Gdata/Gbase/Extension/BaseAttribute.php</filename>
+		<filename>libraries/Zend/Gdata/Gbase/Feed.php</filename>
+		<filename>libraries/Zend/Gdata/Gbase/ItemEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Gbase/ItemFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Gbase/ItemQuery.php</filename>
+		<filename>libraries/Zend/Gdata/Gbase.php</filename>
+		<filename>libraries/Zend/Gdata/Gbase/Query.php</filename>
+		<filename>libraries/Zend/Gdata/Gbase/SnippetEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Gbase/SnippetFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Gbase/SnippetQuery.php</filename>
+		<filename>libraries/Zend/Gdata/Geo/Entry.php</filename>
+		<filename>libraries/Zend/Gdata/Geo/Extension/GeoRssWhere.php</filename>
+		<filename>libraries/Zend/Gdata/Geo/Extension/GmlPoint.php</filename>
+		<filename>libraries/Zend/Gdata/Geo/Extension/GmlPos.php</filename>
+		<filename>libraries/Zend/Gdata/Geo/Feed.php</filename>
+		<filename>libraries/Zend/Gdata/Geo.php</filename>
+		<filename>libraries/Zend/Gdata/Kind/EventEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Entry.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaCategory.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaContent.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaCopyright.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaCredit.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaDescription.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaGroup.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaHash.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaKeywords.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaPlayer.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaRating.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaRestriction.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaText.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaThumbnail.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Extension/MediaTitle.php</filename>
+		<filename>libraries/Zend/Gdata/Media/Feed.php</filename>
+		<filename>libraries/Zend/Gdata/Media.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/AlbumEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/AlbumFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/AlbumQuery.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/CommentEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Access.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/AlbumId.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/BytesUsed.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Checksum.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Client.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/CommentCount.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/CommentingEnabled.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Height.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Id.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Location.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/MaxPhotosPerAlbum.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Name.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Nickname.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/NumPhotos.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/NumPhotosRemaining.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/PhotoId.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Position.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/QuotaCurrent.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/QuotaLimit.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Rotation.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Size.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Thumbnail.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Timestamp.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/User.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Version.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Weight.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/Extension/Width.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/PhotoEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/PhotoFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/PhotoQuery.php</filename>
+		<filename>libraries/Zend/Gdata/Photos.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/TagEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/UserEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/UserFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Photos/UserQuery.php</filename>
+		<filename>libraries/Zend/Gdata.php</filename>
+		<filename>libraries/Zend/Gdata/Query.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/CellEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/CellFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/CellQuery.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/DocumentQuery.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/Extension/Cell.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/Extension/ColCount.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/Extension/Custom.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/Extension/RowCount.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/ListEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/ListFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/ListQuery.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/SpreadsheetEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/SpreadsheetFeed.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/WorksheetEntry.php</filename>
+		<filename>libraries/Zend/Gdata/Spreadsheets/WorksheetFeed.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/CommentEntry.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/CommentFeed.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/ContactEntry.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/ContactFeed.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Age.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Books.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Company.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Description.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Duration.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Gender.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Hobbies.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Hometown.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Location.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/MediaContent.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/MediaGroup.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Movies.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Music.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/NoEmbed.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Occupation.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Position.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Racy.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Relationship.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/ReleaseDate.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/School.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Statistics.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Status.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/Extension/Username.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/MediaEntry.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/PlaylistListEntry.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/PlaylistListFeed.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/PlaylistVideoEntry.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/PlaylistVideoFeed.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/SubscriptionEntry.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/SubscriptionFeed.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/UserProfileEntry.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/VideoEntry.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/VideoFeed.php</filename>
+		<filename>libraries/Zend/Gdata/YouTube/VideoQuery.php</filename>
+		<filename>libraries/Zend/Http/Client/Adapter/Exception.php</filename>
+		<filename>libraries/Zend/Http/Client/Adapter/Interface.php</filename>
+		<filename>libraries/Zend/Http/Client/Adapter/Proxy.php</filename>
+		<filename>libraries/Zend/Http/Client/Adapter/Socket.php</filename>
+		<filename>libraries/Zend/Http/Client/Adapter/Test.php</filename>
+		<filename>libraries/Zend/Http/Client/Exception.php</filename>
+		<filename>libraries/Zend/Http/Client.php</filename>
+		<filename>libraries/Zend/Http/Exception.php</filename>
+		<filename>libraries/Zend/Http/Response.php</filename>
+		<filename>libraries/Zend/Loader.php</filename>
+		<filename>libraries/Zend/Mime/Decode.php</filename>
+		<filename>libraries/Zend/Mime/Exception.php</filename>
+		<filename>libraries/Zend/Mime/Message.php</filename>
+		<filename>libraries/Zend/Mime/Part.php</filename>
+		<filename>libraries/Zend/Mime.php</filename>
+		<filename>libraries/Zend/Uri/Exception.php</filename>
+		<filename>libraries/Zend/Uri/Http.php</filename>
+		<filename>libraries/Zend/Uri.php</filename>
+		<filename>libraries/Zend/Validate/Abstract.php</filename>
+		<filename>libraries/Zend/Validate/Hostname/At.php</filename>
+		<filename>libraries/Zend/Validate/Hostname/Ch.php</filename>
+		<filename>libraries/Zend/Validate/Hostname/De.php</filename>
+		<filename>libraries/Zend/Validate/Hostname/Fi.php</filename>
+		<filename>libraries/Zend/Validate/Hostname/Hu.php</filename>
+		<filename>libraries/Zend/Validate/Hostname/Interface.php</filename>
+		<filename>libraries/Zend/Validate/Hostname/Li.php</filename>
+		<filename>libraries/Zend/Validate/Hostname/No.php</filename>
+		<filename>libraries/Zend/Validate/Hostname.php</filename>
+		<filename>libraries/Zend/Validate/Hostname/Se.php</filename>
+		<filename>libraries/Zend/Validate/Interface.php</filename>
+		<filename>libraries/Zend/Validate/Ip.php</filename>
+		<filename>libraries/Zend/Version.php</filename>
+
+		<filename>libraries/instant/instant.js</filename>
+		
+		<filename>libraries/slimbox/slimbox.js</filename>
+		<filename>libraries/slimbox/slimbox.css</filename>
+		<filename>libraries/slimbox/closelabel.gif</filename>
+		<filename>libraries/slimbox/loading.gif</filename>
+		<filename>libraries/slimbox/nextlabel.gif</filename>
+		<filename>libraries/slimbox/prevlabel.gif</filename>
+		
+	</files>
+
+	<languages>
+		<language tag="en-GB">en-GB.com_joomlapicasa2.ini</language>
+	</languages>
+
+	<administration>
+		<!-- Administration Menu Section -->
+		<menu>Joomla Picasa 2</menu>
+		
+		<!-- Administration Main File Copy Section -->
+		<files>
+			<filename>config.xml</filename>
+		</files>
+		<files folder="admin">
+		<!-- Site Main File Copy Section -->
+			<filename>index.html</filename>
+			<filename>admin.joomlapicasa2.php</filename>
+		</files>
+
+		<languages>
+			<language tag="en-GB">en-GB.com_joomlapicasa2.ini</language>
+		</languages>
+
+	</administration>
+	<params>
+	</params>
+</install>

site/controller.php

+<?php
+
+jimport('joomla.application.component.controller');
+
+class JoomlaPicasa2Controller extends JController
+{
+
+	function display()
+	{
+
+		// Retrieve the current view
+		$document =& JFactory::getDocument();
+		$viewName  = JRequest::getVar( 'view', 'display' );
+		$viewType	= $document->getType();
+		$view = & $this->getView($viewName, $viewType);
+
+		// Set the correct model for the view
+		$model  = & $this->getModel('joomlapicasa2');
+    $view->setModel( $model, true );
+
+		// Display the view
+		parent::display();
+
+	}
+
+}
+
+?>
+
+<html><body bgcolor="#FFFFFF"></body></html>

site/joomlapicasa2.php

+<?php
+
+// no direct access
+defined('_JEXEC') or die('Restricted access');
+
+// Require the base controller
+require_once (JPATH_COMPONENT.DS.'controller.php');
+
+// Require specific controller if requested
+if($controller = JRequest::getVar('controller')) {
+	require_once (JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php');
+}
+
+// Create the controller
+$classname	= 'JoomlaPicasa2Controller'.$controller;
+$controller = new $classname( );
+
+// Perform the Request task
+$controller->execute( JRequest::getVar('task'));
+
+// Redirect if set by the controller
+$controller->redirect();
+
+?>

site/libraries/Zend/Exception.php

+<?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
+ * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+
+/**
+ * @category   Zend
+ * @package    Zend
+ * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Exception extends Exception
+{}
+

site/libraries/Zend/Gdata.php

+<?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
+ * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App
+ */
+require_once 'Zend/Gdata/App.php';
+
+/**
+ * Provides functionality to interact with Google data APIs
+ * Subclasses exist to implement service-specific features
+ *
+ * As the Google data API protocol is based upon the Atom Publishing Protocol
+ * (APP), GData functionality extends the appropriate Zend_Gdata_App classes
+ *
+ * @link http://code.google.com/apis/gdata/overview.html
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata extends Zend_Gdata_App
+{
+
+    /**
+     * Service name for use with Google's authentication mechanisms
+     *
+     * @var string
+     */
+    const AUTH_SERVICE_NAME = 'xapi';
+
+    /**
+     * Default URI to which to POST.
+     *
+     * @var string
+     */
+    protected $_defaultPostUri = null;
+
+    /**
+     * Packages to search for classes when using magic __call method, in order.
+     *
+     * @var array
+     */
+    protected $_registeredPackages = array(
+            'Zend_Gdata_Kind',
+            'Zend_Gdata_Extension',
+            'Zend_Gdata',
+            'Zend_Gdata_App_Extension',
+            'Zend_Gdata_App');
+
+    /**
+     * Namespaces used for GData data
+     *
+     * @var array
+     */
+    public static $namespaces = array(
+        'openSearch' => 'http://a9.com/-/spec/opensearchrss/1.0/',
+        'rss' => 'http://blogs.law.harvard.edu/tech/rss',
+        'gd' => 'http://schemas.google.com/g/2005');
+
+    /**
+     * Create Gdata object
+     *
+     * @param Zend_Http_Client $client
+     */
+    public function __construct($client = null)
+    {
+        parent::__construct($client);
+    }
+
+    /**
+     * Retreive feed object
+     *
+     * @param mixed $location The location as string or Zend_Gdata_Query
+     * @param string $className The class type to use for returning the feed
+     * @return Zend_Gdata_Feed
+     */
+    public function getFeed($location, $className='Zend_Gdata_Feed')
+    {
+        if (is_string($location)) {
+            $uri = $location;
+        } elseif ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'You must specify the location as either a string URI ' .
+                    'or a child of Zend_Gdata_Query');
+        }
+        return parent::getFeed($uri, $className);
+    }
+
+    /**
+     * Retreive entry object
+     *
+     * @param mixed $location The location as string or Zend_Gdata_Query
+     * @return Zend_Gdata_Feed
+     */
+    public function getEntry($location, $className='Zend_Gdata_Entry')
+    {
+        if (is_string($location)) {
+            $uri = $location;
+        } elseif ($location instanceof Zend_Gdata_Query) {
+            $uri = $location->getQueryUrl();
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'You must specify the location as either a string URI ' .
+                    'or a child of Zend_Gdata_Query');
+        }
+        return parent::getEntry($uri, $className);
+    }
+
+}

site/libraries/Zend/Gdata/App.php

+<?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
+ * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_Feed
+ */
+require_once 'Zend/Gdata/Feed.php';
+
+/**
+ * Zend_Gdata_Http_Client
+ */
+require_once 'Zend/Http/Client.php';
+
+/**
+ * Zend_Version
+ */
+require_once 'Zend/Version.php';
+
+/**
+ * Zend_Gdata_App_MediaSource
+ */
+require_once 'Zend/Gdata/App/MediaSource.php';
+
+/**
+ * Provides Atom Publishing Protocol (APP) functionality.  This class and all
+ * other components of Zend_Gdata_App are designed to work independently from
+ * other Zend_Gdata components in order to interact with generic APP services.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App
+{
+
+    /**
+     * Client object used to communicate
+     *
+     * @var Zend_Http_Client
+     */
+    protected $_httpClient;
+
+    /**
+     * Client object used to communicate in static context
+     *
+     * @var Zend_Http_Client
+     */
+    protected static $_staticHttpClient = null;
+
+    /**
+     * Override HTTP PUT and DELETE request methods?
+     *
+     * @var boolean
+     */
+    protected static $_httpMethodOverride = false;
+
+    /**
+     * Default URI to which to POST.
+     *
+     * @var string
+     */
+    protected $_defaultPostUri = null;
+
+    /**
+     * Packages to search for classes when using magic __call method, in order.
+     *
+     * @var array
+     */
+    protected $_registeredPackages = array(
+            'Zend_Gdata_App_Extension',
+            'Zend_Gdata_App');
+
+    /**
+     * Maximum number of redirects to follow during HTTP operations
+     *
+     * @var int
+     */
+    protected static $_maxRedirects = 5;
+
+    /**
+     * Create Gdata object
+     *
+     * @param Zend_Http_Client $client
+     */
+    public function __construct($client = null)
+    {
+        $this->setHttpClient($client);
+    }
+
+    /**
+     * Adds a Zend Framework package to the $_registeredPackages array.
+     * This array is searched when using the magic __call method below
+     * to instantiante new objects.
+     *
+     * @param string $name The name of the package (eg Zend_Gdata_App)
+     * @return void
+     */
+    public function registerPackage($name)
+    {
+        array_unshift($this->_registeredPackages, $name);
+    }
+
+    /**
+     * Retreive feed object
+     *
+     * @param string $uri The uri from which to retrieve the feed
+     * @param string $className The class which is used as the return type
+     * @return Zend_Gdata_App_Feed
+     */
+    public function getFeed($uri, $className='Zend_Gdata_App_Feed')
+    {
+        return $this->import($uri, $this->_httpClient, $className);
+    }
+
+    /**
+     * Retreive entry object
+     *
+     * @param string $uri
+     * @param string $className The class which is used as the return type
+     * @return Zend_Gdata_App_Entry
+     */
+    public function getEntry($uri, $className='Zend_Gdata_App_Entry')
+    {
+        return $this->import($uri, $this->_httpClient, $className);
+    }
+
+    /**
+     * Get the Zend_Http_Client object used for communication
+     *
+     * @return Zend_Http_Client
+     */
+    public function getHttpClient()
+    {
+        return $this->_httpClient;
+    }
+
+    /**
+     * Set the Zend_Http_Client object used for communication
+     *
+     * @param Zend_Http_Client $client The client to use for communication
+     * @throws Zend_Gdata_App_HttpException
+     * @return Zend_Gdata_App Provides a fluent interface
+     */
+    public function setHttpClient($client)
+    {
+        if ($client === null) {
+            $client = new Zend_Http_Client();
+        }
+        if (!$client instanceof Zend_Http_Client) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException('Argument is not an instance of Zend_Http_Client.');
+        }
+        $useragent = 'Zend_Framework_Gdata/' . Zend_Version::VERSION;
+        $client->setConfig(array(
+            'strictredirects' => true,
+            'useragent' => $useragent
+            )
+        );
+        $this->_httpClient = $client;
+        Zend_Gdata::setStaticHttpClient($client);
+        return $this;
+    }
+
+
+    /**
+     * Set the static HTTP client instance
+     *
+     * Sets the static HTTP client object to use for retrieving the feed.
+     *
+     * @param  Zend_Http_Client $httpClient
+     * @return void
+     */
+    public static function setStaticHttpClient(Zend_Http_Client $httpClient)
+    {
+        self::$_staticHttpClient = $httpClient;
+    }
+
+
+    /**
+     * Gets the HTTP client object. If none is set, a new Zend_Http_Client will be used.
+     *
+     * @return Zend_Http_Client
+     */
+    public static function getStaticHttpClient()
+    {
+        if (!self::$_staticHttpClient instanceof Zend_Http_Client) {
+            $client = new Zend_Http_Client();
+            $useragent = 'Zend_Framework_Gdata/' . Zend_Version::VERSION;
+            $client->setConfig(array(
+                'strictredirects' => true,
+                'useragent' => $useragent
+                )
+            );
+            self::$_staticHttpClient = $client;
+        }
+        return self::$_staticHttpClient;
+    }
+
+    /**
+     * Toggle using POST instead of PUT and DELETE HTTP methods
+     *
+     * Some feed implementations do not accept PUT and DELETE HTTP
+     * methods, or they can't be used because of proxies or other
+     * measures. This allows turning on using POST where PUT and
+     * DELETE would normally be used; in addition, an
+     * X-Method-Override header will be sent with a value of PUT or
+     * DELETE as appropriate.
+     *
+     * @param  boolean $override Whether to override PUT and DELETE with POST.
+     * @return void
+     */
+    public static function setHttpMethodOverride($override = true)
+    {
+        self::$_httpMethodOverride = $override;
+    }
+
+    /**
+     * Get the HTTP override state
+     *
+     * @return boolean
+     */
+    public static function getHttpMethodOverride()
+    {
+        return self::$_httpMethodOverride;
+    }
+
+    /**
+     * Set the maximum number of redirects to follow during HTTP operations
+     *
+     * @param int $maxRedirects Maximum number of redirects to follow
+     * @return void
+     */
+    public static function setMaxRedirects($maxRedirects)
+    {
+        self::$_maxRedirects = $maxRedirects;
+    }
+
+    /**
+     * Get the maximum number of redirects to follow during HTTP operations
+     *
+     * @return int Maximum number of redirects to follow
+     */
+    public static function getMaxRedirects()
+    {
+        return self::$_maxRedirects;
+    }
+
+    /**
+     * Imports a feed located at $uri.
+     *
+     * @param  string $uri
+     * @param  Zend_Http_Client $client The client used for communication
+     * @param  string $className The class which is used as the return type
+     * @throws Zend_Gdata_App_Exception
+     * @return Zend_Gdata_App_Feed
+     */
+    public static function import($uri, $client = null, $className='Zend_Gdata_App_Feed')
+    {
+        $client->resetParameters();
+        $client->setHeaders('x-http-method-override', null);
+        $client->setUri($uri);
+        $client->setConfig(array('maxredirects' => self::getMaxRedirects()));
+        $response = $client->request('GET');
+        if ($response->getStatus() !== 200) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            $exception = new Zend_Gdata_App_HttpException('Expected response code 200, got ' . $response->getStatus());
+            $exception->setResponse($response);
+            throw $exception;
+        }
+        $feedContent = $response->getBody();
+        $feed = self::importString($feedContent, $className);
+        if ($client != null) {
+            $feed->setHttpClient($client);
+        } else {
+            $feed->setHttpClient(self::getStaticHttpClient());
+        }
+        return $feed;
+    }
+
+
+    /**
+     * Imports a feed represented by $string.
+     *
+     * @param  string $string
+     * @param  string $className The class which is used as the return type
+     * @throws Zend_Gdata_App_Exception
+     * @return Zend_Gdata_App_Feed
+     */
+    public static function importString($string, $className='Zend_Gdata_App_Feed')
+    {
+        // Load the feed as an XML DOMDocument object
+        @ini_set('track_errors', 1);
+        $doc = new DOMDocument();
+        $success = @$doc->loadXML($string);
+        @ini_restore('track_errors');
+
+        if (!$success) {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception("DOMDocument cannot parse XML: $php_errormsg");
+        }
+        $feed = new $className($string);
+        $feed->setHttpClient(self::getstaticHttpClient());
+        return $feed;
+    }
+
+
+    /**
+     * Imports a feed from a file located at $filename.
+     *
+     * @param  string $filename
+     * @param  string $className The class which is used as the return type
+     * @param  string $useIncludePath Whether the include_path should be searched
+     * @throws Zend_Gdata_App_Exception
+     * @return Zend_Gdata_Feed
+     */
+    public static function importFile($filename,
+            $className='Zend_Gdata_App_Feed', $useIncludePath = false)
+    {
+        @ini_set('track_errors', 1);
+        $feed = @file_get_contents($filename, $useIncludePath);
+        @ini_restore('track_errors');
+        if ($feed === false) {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception("File could not be loaded: $php_errormsg");
+        }
+        return self::importString($feed, $className);
+    }
+
+    /**
+     * GET a uri using client object
+     *
+     * @param  string $uri
+     * @throws Zend_Gdata_App_HttpException
+     * @return Zend_Http_Response
+     */
+    public function get($uri)
+    {
+        $client->setConfig(array('maxredirects' => self::getMaxRedirects()));
+        $client->resetParameters();
+        $client->setHeaders('x-http-method-override', null);
+        $client->setUri($uri);
+        $response = $client->request('GET');
+        if ($response->getStatus() !== 200) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            $exception = new Zend_Gdata_App_HttpException('Expected response code 200, got ' . $response->getStatus());
+            $exception->setResponse($response);
+            throw $exception;
+        }
+        return $response;
+    }
+
+    /**
+     * POST data with client object
+     *
+     * @param mixed $data The Zend_Gdata_App_Entry or XML to post
+     * @param string $uri POST URI
+     * @param array $headers Additional HTTP headers to insert.
+     * @param string $contentType Content-type of the data
+     * @param array $extraHaders Extra headers to add tot he request
+     * @return Zend_Http_Response
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function post($data, $uri = null, $remainingRedirects = null,
+            $contentType = null, $extraHeaders = null)
+    {
+        require_once 'Zend/Http/Client/Exception.php';
+        if ($remainingRedirects === null) {
+            $remainingRedirects = self::getMaxRedirects();
+        }
+        if ($extraHeaders === null) {
+            $extraHeaders = array();
+        }
+        if (is_string($data)) {
+            $rawData = $data;
+        } elseif ($data instanceof Zend_Gdata_App_MediaEntry) {
+            $rawData = $data->encode();
+            if ($data->getMediaSource() !== null) {
+                $contentType = 'multipart/related; boundary="' . $data->getBoundary() . '"';
+                $headers = array('MIME-version' => '1.0');
+                $extraHeaders['Slug'] = $data->getMediaSource()->getSlug();
+            } else {
+                $contentType = 'application/atom+xml';
+            }
+        } elseif ($data instanceof Zend_Gdata_App_Entry) {
+            $rawData = $data->saveXML();
+            $contentType = 'application/atom+xml';
+        } elseif ($data instanceof Zend_Gdata_App_MediaSource) {
+            $rawData = $data->encode();
+            if ($data->getSlug() !== null) {
+                $extraHeaders['Slug'] = $data->getSlug();
+            }
+            if ($contentType === null) {
+                $contentType = $data->getContentType();
+            }
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'You must specify the data to post as either a string or a child of Zend_Gdata_App_Entry');
+        }
+        if ($uri === null) {
+            $uri = $this->_defaultPostUri;
+        }
+        if ($uri === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException('You must specify an URI to which to post.');
+        }
+        if ($contentType === null) {
+            $contentType = 'application/atom+xml';
+        }
+        $headers = array('x-http-method-override' => null);
+        if ($extraHeaders !== null) {
+            $headers = array_merge($headers, $extraHeaders);
+        }
+        $this->_httpClient->resetParameters();
+        $this->_httpClient->setHeaders($headers);
+        $this->_httpClient->setUri($uri);
+        $this->_httpClient->setConfig(array('maxredirects' => 0));
+        $this->_httpClient->setRawData($rawData, $contentType);
+        try {
+            $response = $this->_httpClient->request('POST');
+        } catch (Zend_Http_Client_Exception $e) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
+        }
+        /**
+         * set "S" cookie to avoid future redirects.
+         * TEMPORARILY removed until Zend_Http_Client has a method to set
+         * raw cookie data
+        if($cookie = $response->getHeader('Set-cookie')) {
+            list($cookieName, $cookieValue) = explode('=', $cookie, 2);
+            $this->_httpClient->setCookie($cookieName, $cookieValue);
+        }
+         */
+        if ($response->isRedirect()) {
+            if ($remainingRedirects > 0) {
+                $newUri = $response->getHeader('Location');
+                $response = $this->post($data, $newUri, $remainingRedirects - 1, $contentType, $extraHeaders);
+            } else {
+                require_once 'Zend/Gdata/App/HttpException.php';
+                throw new Zend_Gdata_App_HttpException(
+                        'No more redirects allowed', null, $response);
+            }
+        }
+        if (!$response->isSuccessful()) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            $exception = new Zend_Gdata_App_HttpException('Expected response code 200, got ' . $response->getStatus());
+            $exception->setResponse($response);
+            throw $exception;
+        }
+        return $response;
+    }
+
+    /**
+     * PUT data with client object
+     *
+     * @param mixed $data The Zend_Gdata_App_Entry or XML to post
+     * @param string $uri PUT URI
+     * @param array $headers Additional HTTP headers to insert.
+     * @param string $contentType Content-type of the data
+     * @param array $extraHaders Extra headers to add tot he request
+     * @return Zend_Http_Response
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function put($data, $uri = null, $remainingRedirects = null,
+            $contentType = null, $extraHeaders = null)
+    {
+        require_once 'Zend/Http/Client/Exception.php';
+        if ($remainingRedirects === null) {
+            $remainingRedirects = self::getMaxRedirects();
+        }
+        if ($extraHeaders === null) {
+            $extraHeaders = array();
+        }
+        if (is_string($data)) {
+            $rawData = $data;
+        } elseif ($data instanceof Zend_Gdata_App_MediaEntry) {
+            $rawData = $data->encode();
+            if ($data->getMediaSource() !== null) {
+                $contentType = 'multipart/related; boundary="' . $data->getBoundary() . '"';
+                $headers = array('MIME-version' => '1.0');
+                $extraHeaders['Slug'] = $data->getMediaSource()->getSlug();
+            } else {
+                $contentType = 'application/atom+xml';
+            }
+        } elseif ($data instanceof Zend_Gdata_App_Entry) {
+            $rawData = $data->saveXML();
+        } elseif ($data instanceof Zend_Gdata_App_MediaSource) {
+            $rawData = $data->encode();
+            if ($data->getSlug() !== null) {
+                $extraHeaders['Slug'] = $data->getSlug();
+            }
+            if ($contentType === null) {
+                $contentType = $data->getContentType();
+            }
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'You must specify the data to post as either a string or a child of Zend_Gdata_App_Entry');
+        }
+        if ($uri === null) {
+            if ($data instanceof Zend_Gdata_App_Entry) {
+                $editLink = $data->getEditLink();
+                if ($editLink != null) {
+                    $uri = $editLink->getHref();
+                }
+            }
+        }
+        if ($uri === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException('You must specify an URI to which to put.');
+        }
+        if ($contentType === null) {
+            $contentType = 'application/atom+xml';
+        }
+        $headers = array('x-http-method-override' => null);
+        if ($extraHeaders !== null) {
+            $headers = array_merge($headers, $extraHeaders);
+        }
+        $this->_httpClient->resetParameters();
+        $this->_httpClient->setUri($uri);
+        $this->_httpClient->setConfig(array('maxredirects' => 0));
+        $this->_httpClient->setRawData($rawData, $contentType);
+        try {
+            if (Zend_Gdata_App::getHttpMethodOverride()) {
+                $this->_httpClient->setHeaders(array('X-HTTP-Method-Override: PUT',
+                    'Content-Type: ' . $contentType));
+                $response = $this->_httpClient->request('POST');
+            } else {
+                $this->_httpClient->setHeaders('Content-Type', $contentType);
+                $response = $this->_httpClient->request('PUT');
+            }
+        } catch (Zend_Http_Client_Exception $e) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
+        }
+        /**
+         * set "S" cookie to avoid future redirects.
+         * TEMPORARILY removed until Zend_Http_Client has a method to set
+         * raw cookie data
+        if($cookie = $response->getHeader('Set-cookie')) {
+            list($cookieName, $cookieValue) = explode('=', $cookie, 2);
+            $this->_httpClient->setCookie($cookieName, $cookieValue);
+        }
+         */
+        if ($response->isRedirect()) {
+            if ($remainingRedirects > 0) {
+                $newUri = $response->getHeader('Location');
+                $response = $this->put($data, $newUri, $remainingRedirects - 1, $contentType, $extraHeaders);
+            } else {
+                require_once 'Zend/Gdata/App/HttpException.php';
+                throw new Zend_Gdata_App_HttpException(
+                        'No more redirects allowed', null, $response);
+            }
+        }
+        if (!$response->isSuccessful()) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            $exception = new Zend_Gdata_App_HttpException('Expected response code 200, got ' . $response->getStatus());
+            $exception->setResponse($response);
+            throw $exception;
+        }
+        return $response;
+    }
+
+    /**
+     * DELETE entry with client object
+     *
+     * @param mixed $data The Zend_Gdata_App_Entry or URL to delete
+     * @return void
+     * @throws Zend_Gdata_App_Exception
+     * @throws Zend_Gdata_App_HttpException
+     * @throws Zend_Gdata_App_InvalidArgumentException
+     */
+    public function delete($data, $remainingRedirects = null)
+    {
+        require_once 'Zend/Http/Client/Exception.php';
+        if ($remainingRedirects === null) {
+            $remainingRedirects = self::getMaxRedirects();
+        }
+        if (is_string($data)) {
+            $uri = $data;
+        } elseif ($data instanceof Zend_Gdata_App_Entry) {
+            $editLink = $data->getEditLink();
+            if ($editLink != null) {
+                $uri = $editLink->getHref();
+            }
+        } else {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException(
+                    'You must specify the data to post as either a string or a child of Zend_Gdata_App_Entry');
+        }
+        if ($uri === null) {
+            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
+            throw new Zend_Gdata_App_InvalidArgumentException('You must specify an URI which needs deleted.');
+        }
+        $this->_httpClient->resetParameters();
+        $this->_httpClient->setHeaders('x-http-method-override', null);
+        $this->_httpClient->setUri($uri);
+        $this->_httpClient->setConfig(array('maxredirects' => 0));
+        try {
+            if (Zend_Gdata_App::getHttpMethodOverride()) {
+                $this->_httpClient->setHeaders(array('X-HTTP-Method-Override: DELETE'));
+                $this->_httpClient->setRawData('');
+                $response = $this->_httpClient->request('POST');
+            } else {
+                $response = $this->_httpClient->request('DELETE');
+            }
+        } catch (Zend_Http_Client_Exception $e) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
+        }
+        if ($response->isRedirect()) {
+            if ($remainingRedirects > 0) {
+                $newUri = $response->getHeader('Location');
+                $response = $this->delete($newUri, $remainingRedirects - 1);
+            } else {
+                require_once 'Zend/Gdata/App/HttpException.php';
+                throw new Zend_Gdata_App_HttpException(
+                        'No more redirects allowed', null, $response);
+            }
+        }
+        if (!$response->isSuccessful()) {
+            require_once 'Zend/Gdata/App/HttpException.php';
+            $exception = new Zend_Gdata_App_HttpException('Expected response code 200, got ' . $response->getStatus());
+            $exception->setResponse($response);
+            throw $exception;
+        }
+        return $response;
+    }
+
+    /**
+     * Inserts an entry to a given URI and returns the response as a fully formed Entry.
+     * @param mixed  $data The Zend_Gdata_App_Entry or XML to post
+     * @param string $uri POST URI
+     * @param string $className The class of entry to be returned.
+     * @return Zend_Gdata_App_Entry The entry returned by the service after insertion.
+     */
+    public function insertEntry($data, $uri, $className='Zend_Gdata_App_Entry')
+    {
+        $response = $this->post($data, $uri);
+
+        $returnEntry = new $className($response->getBody());
+        $returnEntry->setHttpClient(self::getstaticHttpClient());
+        return $returnEntry;
+    }
+
+    /**
+     * Update an entry
+     *
+     * TODO Determine if App should call Entry to Update or the opposite.
+     * Suspecect opposite would mkae more sense.  Also, this possibly should
+     * take an optional URL to override URL used in the entry, or if an
+     * edit URI/ID is not present in the entry
+     *
+     * @param mixed $data Zend_Gdata_App_Entry or XML (w/ID and link rel='edit')
+     * @return Zend_Gdata_App_Entry The entry returned from the server
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function updateEntry($data, $uri = null, $className = null)
+    {
+        // [FIXME] This will blow up if $data is not an instance of
+        //         Zend_Gdata_App_Entry and $className is null.
+        //         --tjohns 2007-08-24
+        if ($className === null && $data instanceof Zend_Gdata_App_Entry) {
+            $className = get_class($data);
+        } elseif ($className === null) {
+            $className = 'Zend_Gdata_App_Entry';
+        }
+        
+        $response = $this->put($data, $uri);
+        $returnEntry = new $className($response->getBody());
+        $returnEntry->setHttpClient(self::getstaticHttpClient());
+        return $returnEntry;
+    }
+
+    /**
+     * Provides a magic factory method to instantiate new objects with
+     * shorter syntax than would otherwise be required by the Zend Framework
+     * naming conventions.  For instance, to construct a new
+     * Zend_Gdata_Calendar_Extension_Color, a developer simply needs to do
+     * $gCal->newColor().  For this magic constructor, packages are searched
+     * in the same order as which they appear in the $_registeredPackages
+     * array
+     *
+     * @param string $method The method name being called
+     * @param array $args The arguments passed to the call
+     * @throws Zend_Gdata_App_Exception
+     */
+    public function __call($method, $args)
+    {
+        if (preg_match('/^new(\w+)/', $method, $matches)) {
+            $class = $matches[1];
+            $foundClassName = null;
+            foreach ($this->_registeredPackages as $name) {
+                 try {
+                     Zend_Loader::loadClass("${name}_${class}");
+                     $foundClassName = "${name}_${class}";
+                     break;
+                 } catch (Zend_Exception $e) {
+                     // package wasn't here- continue searching
+                 }
+            }
+            if ($foundClassName != null) {
+                $reflectionObj = new ReflectionClass($foundClassName);
+                return $reflectionObj->newInstanceArgs($args);
+            } else {
+                require_once 'Zend/Gdata/App/Exception.php';
+                throw new Zend_Gdata_App_Exception(
+                        "Unable to find '${class}' in registered packages");
+            }
+        } else {
+            require_once 'Zend/Gdata/App/Exception.php';
+            throw new Zend_Gdata_App_Exception("No such method ${method}");
+        }
+    }
+
+    /**
+     * Retrieve all entries for a feed, iterating through pages as necessary.
+     * Be aware that calling this function on a large dataset will take a 
+     * significant amount of time to complete. In some cases this may cause 
+     * execution to timeout without proper precautions in place.
+     *
+     * @param $feed The feed to iterate through.
+     * @return mixed A new feed of the same type as the one originally 
+     *          passed in, containing all relevent entries.
+     */
+    public function retrieveAllEntriesForFeed ($feed) {
+        $feedClass = get_class($feed);
+        $reflectionObj = new ReflectionClass($feedClass);
+        $result = $reflectionObj->newInstance();
+        do {
+            foreach ($feed as $entry) {
+                $result->addEntry($entry);
+            }
+            
+            $next = $feed->getLink('next');
+            if ($next !== null) {
+                $feed = $this->getFeed($next->href, $feedClass);
+            } else {
+                $feed = null;
+            }
+        }
+        while ($feed != null);
+        return $result;
+    }
+}

site/libraries/Zend/Gdata/App/AuthException.php

+<?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
+ * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App_Exception
+ */
+require_once 'Zend/Gdata/App/Exception.php';
+
+/**
+ * Gdata exceptions
+ *
+ * Class to represent exceptions that occur during Gdata operations.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_AuthException extends Zend_Gdata_App_Exception
+{
+}

site/libraries/Zend/Gdata/App/BadMethodCallException.php

+<?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
+ * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Zend_Gdata_App_Exception
+ */
+require_once 'Zend/Gdata/App/Exception.php';
+
+/**
+ * Gdata APP exceptions
+ *
+ * Class to represent exceptions that occur during Gdata APP operations.
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Gdata_App_BadMethodCallException extends Zend_Gdata_App_Exception
+{
+}

site/libraries/Zend/Gdata/App/Base.php

+<?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
+ * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+
+/**
+ * Abstract class for all XML elements
+ *
+ * @category   Zend
+ * @package    Zend_Gdata
+ * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+abstract class Zend_Gdata_App_Base
+{
+
+    /**
+     * @var string The XML element name, including prefix if desired
+     */
+    protected $_rootElement = null;
+
+    /**
+     * @var string The XML namespace prefix
+     */
+    protected $_rootNamespace = 'atom';
+
+    /**
+     * @var string The XML namespace URI - takes precedence over lookup up the
+     * corresponding URI for $_rootNamespace
+     */
+    protected $_rootNamespaceURI = null;
+
+    /**
+     * @var array Leftover elements which were not handled
+     */
+    protected $_extensionElements = array();
+
+    /**
+     * @var array Leftover attributes which were not handled
+     */
+    protected $_extensionAttributes = array();
+
+    /**
+     * @var string XML child text node content
+     */
+    protected $_text = null;
+
+    /**
+     * @var array
+     */
+    protected $_namespaces = array(
+        'atom'       => 'http://www.w3.org/2005/Atom',
+        'app'       => 'http://purl.org/atom/app#'
+    );
+
+    public function __construct()
+    {
+    }
+
+    public function getText($trim = true)
+    {
+        if ($trim) {
+            return trim($this->_text);
+        } else {
+            return $this->_text;
+        }
+    }
+
+    public function setText($value)
+    {
+        $this->_text = $value;
+        return $this;
+    }
+
+    public function getExtensionElements()
+    {
+        return $this->_extensionElements;
+    }
+
+    public function setExtensionElements($value)
+    {
+        $this->_extensionElements = $value;
+        return $this;
+    }
+
+
+    public function getExtensionAttributes()
+    {
+        return $this->_extensionAttributes;
+    }
+
+    public function setExtensionAttributes($value)
+    {
+        $this->_extensionAttributes = $value;
+        return $this;
+    }
+
+    /**
+     * Retrieves a DOMElement which corresponds to this element and all
+     * child properties.  This is used to build an entry back into a DOM
+     * and eventually XML text for sending to the server upon updates, or
+     * for application storage/persistence.
+     *
+     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
+     * @return DOMElement The DOMElement representing this element and all
+     * child properties.
+     */
+    public function getDOM($doc = null)
+    {
+        if (is_null($doc)) {
+            $doc = new DOMDocument('1.0', 'utf-8');
+        }
+        if ($this->_rootNamespaceURI != null) {
+            $element = $doc->createElementNS($this->_rootNamespaceURI, $this->_rootElement);
+        } elseif ($this->_rootNamespace !== null) {
+            if (strpos($this->_rootElement, ':') === false) {
+                $elementName = $this->_rootNamespace . ':' . $this->_rootElement;
+            } else {
+                $elementName = $this->_rootElement;
+            }
+            $element = $doc->createElementNS($this->lookupNamespace($this->_rootNamespace), $elementName);
+        } else {
+            $element = $doc->createElement($this->_rootElement);
+        }
+        if ($this->_text != null) {
+            $element->appendChild($element->ownerDocument->createTextNode($this->_text));
+        }
+        foreach ($this->_extensionElements as $extensionElement) {
+            $element->appendChild($extensionElement->getDOM($element->ownerDocument));
+        }
+        foreach ($this->_extensionAttributes as $attribute) {
+            $element->setAttribute($attribute['name'], $attribute['value']);
+        }
+        return $element;
+    }
+
+    /**
+     * Given a child DOMNode, tries to determine how to map the data into
+     * object instance members.  If no mapping is defined, Extension_Element
+     * objects are created and stored in an array.
+     *
+     * @param DOMNode $child The DOMNode needed to be handled
+     */
+    protected function takeChildFromDOM($child)
+    {
+        if ($child->nodeType == XML_TEXT_NODE) {
+            $this->_text = $child->nodeValue;
+        } else {
+            $extensionElement = new Zend_Gdata_App_Extension_Element();
+            $extensionElement->transferFromDOM($child);
+            $this->_extensionElements[] = $extensionElement;
+        }
+    }
+
+    /**
+     * Given a DOMNode representing an attribute, tries to map the data into
+     * instance members.  If no mapping is defined, the name and value are
+     * stored in an array.
+     *
+     * @param DOMNode $attribute The DOMNode attribute needed to be handled
+     */
+    protected function takeAttributeFromDOM($attribute)
+    {
+        $arrayIndex = ($attribute->namespaceURI != '')?(
+                $attribute->namespaceURI . ':' . $attribute->name):
+                $attribute->name;
+        $this->_extensionAttributes[$arrayIndex] =
+                array('namespaceUri' => $attribute->namespaceURI,
+                      'name' => $attribute->localName,
+                      'value' => $attribute->nodeValue);
+    }
+
+    /**
+     * Transfers each child and attribute into member variables.
+     * This is called when XML is received over the wire and the data
+     * model needs to be built to represent this XML.
+     *