From 7924bb4ebbea103ed427fae556c67a32324cd25b Mon Sep 17 00:00:00 2001 From: Kien Nguyen Date: Tue, 22 Nov 2022 14:22:25 +1300 Subject: [PATCH 01/14] feat: bring all the diff over --- library/Zend/Auth/Adapter/InfoCard.php | 261 +++ library/Zend/Barcode/Object/Upce.php | 8 +- library/Zend/Cache/Backend.php | 2 +- .../Cloud/StorageService/Adapter/Nirvanix.php | 399 +++++ library/Zend/Controller/Action.php | 2 +- library/Zend/Db/Adapter/Pdo/Pgsql.php | 2 +- library/Zend/Feed/Atom.php | 2 +- library/Zend/Feed/Rss.php | 2 +- library/Zend/Filter/Compress/Zip.php | 2 +- library/Zend/Form.php | 4 +- library/Zend/Form/Decorator/FormErrors.php | 2 + library/Zend/Form/DisplayGroup.php | 24 + library/Zend/Form/Element.php | 6 +- library/Zend/Gdata/YouTube.php | 874 ++++++++++ library/Zend/Gdata/YouTube/ActivityEntry.php | 232 +++ library/Zend/Gdata/YouTube/ActivityFeed.php | 66 + library/Zend/Gdata/YouTube/CommentEntry.php | 59 + library/Zend/Gdata/YouTube/CommentFeed.php | 66 + library/Zend/Gdata/YouTube/ContactEntry.php | 136 ++ library/Zend/Gdata/YouTube/ContactFeed.php | 68 + .../Zend/Gdata/YouTube/Extension/AboutMe.php | 51 + library/Zend/Gdata/YouTube/Extension/Age.php | 51 + .../Zend/Gdata/YouTube/Extension/Books.php | 51 + .../Zend/Gdata/YouTube/Extension/Company.php | 51 + .../Zend/Gdata/YouTube/Extension/Control.php | 133 ++ .../Gdata/YouTube/Extension/CountHint.php | 51 + .../Gdata/YouTube/Extension/Description.php | 51 + .../Zend/Gdata/YouTube/Extension/Duration.php | 126 ++ .../Gdata/YouTube/Extension/FirstName.php | 51 + .../Zend/Gdata/YouTube/Extension/Gender.php | 51 + .../Zend/Gdata/YouTube/Extension/Hobbies.php | 51 + .../Zend/Gdata/YouTube/Extension/Hometown.php | 51 + .../Zend/Gdata/YouTube/Extension/LastName.php | 51 + library/Zend/Gdata/YouTube/Extension/Link.php | 133 ++ .../Zend/Gdata/YouTube/Extension/Location.php | 51 + .../Gdata/YouTube/Extension/MediaContent.php | 120 ++ .../Gdata/YouTube/Extension/MediaCredit.php | 189 +++ .../Gdata/YouTube/Extension/MediaGroup.php | 336 ++++ .../Gdata/YouTube/Extension/MediaRating.php | 150 ++ .../Zend/Gdata/YouTube/Extension/Movies.php | 51 + .../Zend/Gdata/YouTube/Extension/Music.php | 51 + .../Zend/Gdata/YouTube/Extension/NoEmbed.php | 54 + .../Gdata/YouTube/Extension/Occupation.php | 51 + .../Gdata/YouTube/Extension/PlaylistId.php | 51 + .../Gdata/YouTube/Extension/PlaylistTitle.php | 51 + .../Zend/Gdata/YouTube/Extension/Position.php | 90 ++ .../Zend/Gdata/YouTube/Extension/Private.php | 81 + .../Gdata/YouTube/Extension/QueryString.php | 51 + library/Zend/Gdata/YouTube/Extension/Racy.php | 124 ++ .../Zend/Gdata/YouTube/Extension/Recorded.php | 51 + .../Gdata/YouTube/Extension/Relationship.php | 51 + .../Gdata/YouTube/Extension/ReleaseDate.php | 51 + .../Zend/Gdata/YouTube/Extension/School.php | 51 + .../Zend/Gdata/YouTube/Extension/State.php | 193 +++ .../Gdata/YouTube/Extension/Statistics.php | 309 ++++ .../Zend/Gdata/YouTube/Extension/Status.php | 51 + .../Zend/Gdata/YouTube/Extension/Token.php | 70 + .../Zend/Gdata/YouTube/Extension/Uploaded.php | 51 + .../Zend/Gdata/YouTube/Extension/Username.php | 51 + .../Zend/Gdata/YouTube/Extension/VideoId.php | 51 + library/Zend/Gdata/YouTube/InboxEntry.php | 281 ++++ library/Zend/Gdata/YouTube/InboxFeed.php | 68 + library/Zend/Gdata/YouTube/MediaEntry.php | 81 + .../Zend/Gdata/YouTube/PlaylistListEntry.php | 300 ++++ .../Zend/Gdata/YouTube/PlaylistListFeed.php | 68 + .../Zend/Gdata/YouTube/PlaylistVideoEntry.php | 132 ++ .../Zend/Gdata/YouTube/PlaylistVideoFeed.php | 68 + .../Zend/Gdata/YouTube/SubscriptionEntry.php | 446 ++++++ .../Zend/Gdata/YouTube/SubscriptionFeed.php | 68 + .../Zend/Gdata/YouTube/UserProfileEntry.php | 1041 ++++++++++++ library/Zend/Gdata/YouTube/VideoEntry.php | 1095 +++++++++++++ library/Zend/Gdata/YouTube/VideoFeed.php | 65 + library/Zend/Gdata/YouTube/VideoQuery.php | 540 +++++++ library/Zend/Http/Client/Adapter/Proxy.php | 18 +- .../UserAgent/Features/Adapter/WurflApi.php | 103 ++ library/Zend/InfoCard.php | 497 ++++++ library/Zend/InfoCard/Adapter/Default.php | 79 + library/Zend/InfoCard/Adapter/Exception.php | 37 + library/Zend/InfoCard/Adapter/Interface.php | 64 + library/Zend/InfoCard/Cipher.php | 99 ++ library/Zend/InfoCard/Cipher/Exception.php | 38 + .../InfoCard/Cipher/Pki/Adapter/Abstract.php | 88 ++ .../Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php | 120 ++ .../Zend/InfoCard/Cipher/Pki/Interface.php | 33 + .../InfoCard/Cipher/Pki/Rsa/Interface.php | 50 + .../Cipher/Symmetric/Adapter/Abstract.php | 38 + .../Cipher/Symmetric/Adapter/Aes128cbc.php | 40 + .../Cipher/Symmetric/Adapter/Aes256cbc.php | 111 ++ .../Cipher/Symmetric/Aes128cbc/Interface.php | 38 + .../Cipher/Symmetric/Aes256cbc/Interface.php | 33 + .../InfoCard/Cipher/Symmetric/Interface.php | 32 + library/Zend/InfoCard/Claims.php | 307 ++++ library/Zend/InfoCard/Exception.php | 43 + library/Zend/InfoCard/Xml/Assertion.php | 88 ++ .../Zend/InfoCard/Xml/Assertion/Interface.php | 69 + library/Zend/InfoCard/Xml/Assertion/Saml.php | 284 ++++ library/Zend/InfoCard/Xml/Element.php | 107 ++ .../Zend/InfoCard/Xml/Element/Interface.php | 44 + library/Zend/InfoCard/Xml/EncryptedData.php | 75 + .../InfoCard/Xml/EncryptedData/Abstract.php | 92 ++ .../InfoCard/Xml/EncryptedData/XmlEnc.php | 64 + library/Zend/InfoCard/Xml/EncryptedKey.php | 174 ++ library/Zend/InfoCard/Xml/Exception.php | 37 + library/Zend/InfoCard/Xml/KeyInfo.php | 90 ++ .../Zend/InfoCard/Xml/KeyInfo/Abstract.php | 37 + library/Zend/InfoCard/Xml/KeyInfo/Default.php | 64 + .../Zend/InfoCard/Xml/KeyInfo/Interface.php | 38 + library/Zend/InfoCard/Xml/KeyInfo/XmlDSig.php | 76 + library/Zend/InfoCard/Xml/Security.php | 327 ++++ .../Zend/InfoCard/Xml/Security/Exception.php | 37 + .../Zend/InfoCard/Xml/Security/Transform.php | 116 ++ .../Security/Transform/EnvelopedSignature.php | 60 + .../Xml/Security/Transform/Exception.php | 37 + .../Xml/Security/Transform/Interface.php | 43 + .../Xml/Security/Transform/XmlExcC14N.php | 59 + .../InfoCard/Xml/SecurityTokenReference.php | 173 ++ library/Zend/Json/Decoder.php | 2 +- library/Zend/Json/Encoder.php | 14 +- library/Zend/Loader/Autoloader.php | 4 + library/Zend/Locale/Data/aa_ER_SAAHO.xml | 38 + library/Zend/Locale/Data/az_AZ.xml | 10 + library/Zend/Locale/Data/bs_BA.xml | 9 + library/Zend/Locale/Data/cch.xml | 188 +++ library/Zend/Locale/Data/cch_NG.xml | 9 + library/Zend/Locale/Data/cop.xml | 197 +++ library/Zend/Locale/Data/dv.xml | 225 +++ library/Zend/Locale/Data/dv_MV.xml | 9 + library/Zend/Locale/Data/el_POLYTON.xml | 541 +++++++ library/Zend/Locale/Data/en_Shaw.xml | 185 +++ library/Zend/Locale/Data/gaa.xml | 193 +++ library/Zend/Locale/Data/gaa_GH.xml | 9 + library/Zend/Locale/Data/gez.xml | 503 ++++++ library/Zend/Locale/Data/gez_ER.xml | 9 + library/Zend/Locale/Data/gez_ET.xml | 9 + library/Zend/Locale/Data/gv_GB.xml | 9 + library/Zend/Locale/Data/ha_Arab.xml | 94 ++ library/Zend/Locale/Data/ha_Arab_NG.xml | 10 + library/Zend/Locale/Data/ha_Arab_SD.xml | 10 + library/Zend/Locale/Data/ha_GH.xml | 10 + library/Zend/Locale/Data/ha_NE.xml | 10 + library/Zend/Locale/Data/ha_NG.xml | 10 + library/Zend/Locale/Data/ha_SD.xml | 10 + library/Zend/Locale/Data/hy_AM_REVISED.xml | 39 + library/Zend/Locale/Data/in.xml | 9 + library/Zend/Locale/Data/iu.xml | 181 +++ library/Zend/Locale/Data/iw.xml | 9 + library/Zend/Locale/Data/kaj.xml | 188 +++ library/Zend/Locale/Data/kaj_NG.xml | 9 + library/Zend/Locale/Data/kcg.xml | 188 +++ library/Zend/Locale/Data/kcg_NG.xml | 9 + library/Zend/Locale/Data/kfo.xml | 188 +++ library/Zend/Locale/Data/kfo_CI.xml | 9 + library/Zend/Locale/Data/kk_KZ.xml | 10 + library/Zend/Locale/Data/kpe.xml | 183 +++ library/Zend/Locale/Data/kpe_GN.xml | 16 + library/Zend/Locale/Data/kpe_LR.xml | 9 + library/Zend/Locale/Data/ku.xml | 158 ++ library/Zend/Locale/Data/ku_Arab.xml | 9 + library/Zend/Locale/Data/ku_Arab_IQ.xml | 10 + library/Zend/Locale/Data/ku_Arab_IR.xml | 10 + library/Zend/Locale/Data/ku_Arab_SY.xml | 10 + library/Zend/Locale/Data/ku_IQ.xml | 10 + library/Zend/Locale/Data/ku_IR.xml | 10 + library/Zend/Locale/Data/ku_Latn.xml | 189 +++ library/Zend/Locale/Data/ku_Latn_TR.xml | 10 + library/Zend/Locale/Data/ku_SY.xml | 10 + library/Zend/Locale/Data/ku_TR.xml | 10 + library/Zend/Locale/Data/ky_KG.xml | 9 + library/Zend/Locale/Data/metazoneInfo.xml | 1403 +++++++++++++++++ library/Zend/Locale/Data/mn_CN.xml | 10 + library/Zend/Locale/Data/mn_MN.xml | 10 + library/Zend/Locale/Data/mn_Mong.xml | 16 + library/Zend/Locale/Data/mn_Mong_CN.xml | 10 + library/Zend/Locale/Data/mo.xml | 9 + library/Zend/Locale/Data/ms_BN.xml | 134 ++ library/Zend/Locale/Data/ms_MY.xml | 9 + library/Zend/Locale/Data/nds.xml | 1148 ++++++++++++++ library/Zend/Locale/Data/nds_DE.xml | 9 + library/Zend/Locale/Data/no.xml | 9 + library/Zend/Locale/Data/ny.xml | 188 +++ library/Zend/Locale/Data/ny_MW.xml | 9 + library/Zend/Locale/Data/oc.xml | 279 ++++ library/Zend/Locale/Data/oc_FR.xml | 9 + library/Zend/Locale/Data/pa_IN.xml | 10 + library/Zend/Locale/Data/pa_PK.xml | 10 + library/Zend/Locale/Data/sa.xml | 150 ++ library/Zend/Locale/Data/sa_IN.xml | 9 + library/Zend/Locale/Data/sh.xml | 9 + library/Zend/Locale/Data/sh_BA.xml | 10 + library/Zend/Locale/Data/sh_CS.xml | 10 + library/Zend/Locale/Data/sh_YU.xml | 10 + library/Zend/Locale/Data/sid.xml | 248 +++ library/Zend/Locale/Data/sid_ET.xml | 9 + library/Zend/Locale/Data/sr_BA.xml | 10 + library/Zend/Locale/Data/sr_CS.xml | 10 + library/Zend/Locale/Data/sr_Cyrl_CS.xml | 11 + library/Zend/Locale/Data/sr_Cyrl_YU.xml | 11 + library/Zend/Locale/Data/sr_Latn_CS.xml | 11 + library/Zend/Locale/Data/sr_Latn_YU.xml | 11 + library/Zend/Locale/Data/sr_ME.xml | 10 + library/Zend/Locale/Data/sr_RS.xml | 10 + library/Zend/Locale/Data/sr_YU.xml | 10 + library/Zend/Locale/Data/syr.xml | 128 ++ library/Zend/Locale/Data/syr_SY.xml | 9 + library/Zend/Locale/Data/tg_TJ.xml | 10 + library/Zend/Locale/Data/tl.xml | 9 + library/Zend/Locale/Data/trv.xml | 561 +++++++ library/Zend/Locale/Data/trv_TW.xml | 9 + library/Zend/Locale/Data/tt.xml | 104 ++ library/Zend/Locale/Data/tt_RU.xml | 9 + library/Zend/Locale/Data/ug_CN.xml | 10 + library/Zend/Locale/Data/uz_AF.xml | 10 + library/Zend/Locale/Data/uz_UZ.xml | 10 + library/Zend/Locale/Data/wo.xml | 36 + library/Zend/Locale/Data/wo_Latn.xml | 9 + library/Zend/Locale/Data/wo_Latn_SN.xml | 10 + library/Zend/Locale/Data/wo_SN.xml | 9 + library/Zend/Locale/Data/zh_CN.xml | 10 + library/Zend/Locale/Data/zh_HK.xml | 10 + library/Zend/Locale/Data/zh_MO.xml | 10 + library/Zend/Locale/Data/zh_SG.xml | 10 + library/Zend/Locale/Data/zh_TW.xml | 10 + library/Zend/Mail.php | 8 +- library/Zend/Mail/Header/HeaderValue.php | 2 +- library/Zend/Mail/Part.php | 3 +- library/Zend/Mail/Protocol/Pop3.php | 24 +- library/Zend/Mail/Protocol/Smtp.php | 42 +- library/Zend/Mail/Storage/Abstract.php | 10 - library/Zend/Markup/Parser/Textile.php | 570 +++++++ library/Zend/Mime/Decode.php | 18 +- library/Zend/Oauth/Token.php | 9 +- library/Zend/Pdf/Cmap.php | 13 - library/Zend/Registry.php | 12 - library/Zend/Service/Amazon/S3.php | 2 +- .../DeveloperGarden/BaseUserService.php | 399 +++++ .../BaseUserService/AccountBalance.php | 62 + .../DeveloperGarden/Client/ClientAbstract.php | 430 +++++ .../DeveloperGarden/Client/Exception.php | 38 + .../Service/DeveloperGarden/Client/Soap.php | 340 ++++ .../DeveloperGarden/ConferenceCall.php | 872 ++++++++++ .../ConferenceCall/ConferenceAccount.php | 62 + .../ConferenceCall/ConferenceDetail.php | 129 ++ .../ConferenceCall/ConferenceSchedule.php | 262 +++ .../ConferenceCall/Exception.php | 38 + .../ConferenceCall/Participant.php | 84 + .../ConferenceCall/ParticipantDetail.php | 195 +++ .../ConferenceCall/ParticipantStatus.php | 103 ++ .../Service/DeveloperGarden/Credential.php | 186 +++ .../Service/DeveloperGarden/Exception.php | 38 + .../Service/DeveloperGarden/IpLocation.php | 120 ++ .../DeveloperGarden/IpLocation/IpAddress.php | 130 ++ .../Service/DeveloperGarden/LocalSearch.php | 105 ++ .../DeveloperGarden/LocalSearch/Exception.php | 38 + .../LocalSearch/SearchParameters.php | 536 +++++++ .../BaseUserService/ChangeQuotaPool.php | 103 ++ .../BaseUserService/GetAccountBalance.php | 72 + .../BaseUserService/GetQuotaInformation.php | 72 + ...ddConferenceTemplateParticipantRequest.php | 91 ++ .../CommitConferenceRequest.php | 69 + .../CreateConferenceRequest.php | 136 ++ .../CreateConferenceTemplateRequest.php | 113 ++ .../GetConferenceListRequest.php | 104 ++ .../GetConferenceStatusRequest.php | 106 ++ .../GetConferenceTemplateListRequest.php | 69 + ...etConferenceTemplateParticipantRequest.php | 90 ++ .../GetConferenceTemplateRequest.php | 69 + .../GetParticipantStatusRequest.php | 90 ++ .../GetRunningConferenceRequest.php | 69 + .../ConferenceCall/NewParticipantRequest.php | 91 ++ .../RemoveConferenceRequest.php | 69 + ...veConferenceTemplateParticipantRequest.php | 90 ++ .../RemoveConferenceTemplateRequest.php | 69 + .../RemoveParticipantRequest.php | 90 ++ .../UpdateConferenceRequest.php | 158 ++ ...teConferenceTemplateParticipantRequest.php | 113 ++ .../UpdateConferenceTemplateRequest.php | 113 ++ .../UpdateParticipantRequest.php | 138 ++ .../DeveloperGarden/Request/Exception.php | 39 + .../Request/IpLocation/LocateIPRequest.php | 114 ++ .../LocalSearch/LocalSearchRequest.php | 113 ++ .../Request/RequestAbstract.php | 72 + .../Request/SendSms/SendFlashSMS.php | 46 + .../Request/SendSms/SendSMS.php | 46 + .../Request/SendSms/SendSmsAbstract.php | 281 ++++ .../SmsValidation/GetValidatedNumbers.php | 39 + .../Request/SmsValidation/Invalidate.php | 80 + .../SmsValidation/SendValidationKeyword.php | 39 + .../Request/SmsValidation/Validate.php | 110 ++ .../Request/VoiceButler/CallStatus.php | 100 ++ .../Request/VoiceButler/NewCall.php | 238 +++ .../Request/VoiceButler/NewCallSequenced.php | 92 ++ .../Request/VoiceButler/TearDownCall.php | 78 + .../VoiceButler/VoiceButlerAbstract.php | 39 + .../DeveloperGarden/Response/BaseType.php | 140 ++ .../ChangeQuotaPoolResponse.php | 39 + .../GetAccountBalanceResponse.php | 39 + .../GetQuotaInformationResponse.php | 90 ++ ...dConferenceTemplateParticipantResponse.php | 45 + ...ferenceTemplateParticipantResponseType.php | 55 + .../ConferenceCall/CCSResponseType.php | 39 + .../CommitConferenceResponse.php | 46 + .../ConferenceCall/ConferenceCallAbstract.php | 75 + .../CreateConferenceResponse.php | 45 + .../CreateConferenceResponseType.php | 55 + .../CreateConferenceTemplateResponse.php | 45 + .../CreateConferenceTemplateResponseType.php | 55 + .../GetConferenceListResponse.php | 45 + .../GetConferenceListResponseType.php | 55 + .../GetConferenceStatusResponse.php | 45 + .../GetConferenceStatusResponseType.php | 148 ++ .../GetConferenceTemplateListResponse.php | 45 + .../GetConferenceTemplateListResponseType.php | 55 + ...tConferenceTemplateParticipantResponse.php | 45 + ...ferenceTemplateParticipantResponseType.php | 55 + .../GetConferenceTemplateResponse.php | 45 + .../GetConferenceTemplateResponseType.php | 97 ++ .../GetParticipantStatusResponse.php | 45 + .../GetParticipantStatusResponseType.php | 55 + .../GetRunningConferenceResponse.php | 45 + .../GetRunningConferenceResponseType.php | 55 + .../ConferenceCall/NewParticipantResponse.php | 45 + .../NewParticipantResponseType.php | 55 + .../RemoveConferenceResponse.php | 46 + ...eConferenceTemplateParticipantResponse.php | 46 + .../RemoveConferenceTemplateResponse.php | 46 + .../RemoveParticipantResponse.php | 46 + .../UpdateConferenceResponse.php | 46 + ...eConferenceTemplateParticipantResponse.php | 46 + .../UpdateConferenceTemplateResponse.php | 46 + .../UpdateParticipantResponse.php | 46 + .../DeveloperGarden/Response/Exception.php | 39 + .../Response/IpLocation/CityType.php | 77 + .../IpLocation/GeoCoordinatesType.php | 66 + .../IpLocation/IPAddressLocationType.php | 141 ++ .../Response/IpLocation/LocateIPResponse.php | 98 ++ .../IpLocation/LocateIPResponseType.php | 46 + .../Response/IpLocation/RegionType.php | 80 + .../LocalSearch/LocalSearchResponse.php | 89 ++ .../LocalSearch/LocalSearchResponseType.php | 44 + .../Response/ResponseAbstract.php | 111 ++ .../SecurityTokenServer/Exception.php | 39 + .../SecurityTokenServer/GetTokensResponse.php | 94 ++ .../SecurityTokenServer/Interface.php | 40 + .../SecurityTokenResponse.php | 116 ++ .../Response/SendSms/SendFlashSMSResponse.php | 39 + .../Response/SendSms/SendSMSResponse.php | 39 + .../Response/SendSms/SendSmsAbstract.php | 119 ++ .../GetValidatedNumbersResponse.php | 55 + .../SmsValidation/InvalidateResponse.php | 39 + .../SendValidationKeywordResponse.php | 39 + .../SmsValidation/ValidateResponse.php | 39 + .../SmsValidation/ValidatedNumber.php | 64 + .../VoiceButler/CallStatus2Response.php | 88 ++ .../VoiceButler/CallStatusResponse.php | 154 ++ .../Response/VoiceButler/NewCallResponse.php | 60 + .../VoiceButler/NewCallSequencedResponse.php | 39 + .../VoiceButler/TearDownCallResponse.php | 50 + .../VoiceButler/VoiceButlerAbstract.php | 128 ++ .../DeveloperGarden/SecurityTokenServer.php | 127 ++ .../SecurityTokenServer/Cache.php | 207 +++ .../Zend/Service/DeveloperGarden/SendSms.php | 156 ++ .../Service/DeveloperGarden/SmsValidation.php | 193 +++ .../Service/DeveloperGarden/VoiceCall.php | 226 +++ .../DeveloperGarden/Wsdl/IPLocation.wsdl | 84 + .../DeveloperGarden/Wsdl/IPLocation.xsd | 69 + .../Wsdl/ODGBaseUserService.wsdl | 104 ++ .../Wsdl/ODGBaseUserService.xsd | 72 + .../DeveloperGarden/Wsdl/SmsService.wsdl | 122 ++ .../Wsdl/SmsValidationUserService.wsdl | 169 ++ .../DeveloperGarden/Wsdl/TokenService.wsdl | 353 +++++ .../Wsdl/VoiceButlerService.wsdl | 164 ++ .../Wsdl/VoiceButlerService.xsd | 264 ++++ .../Service/DeveloperGarden/Wsdl/ccsPort.wsdl | 463 ++++++ .../Service/DeveloperGarden/Wsdl/ccsPort.xsd | 736 +++++++++ .../DeveloperGarden/Wsdl/localsearch.wsdl | 83 + .../DeveloperGarden/Wsdl/localsearch.xsd | 31 + library/Zend/Service/Nirvanix.php | 107 ++ library/Zend/Service/Nirvanix/Exception.php | 36 + .../Zend/Service/Nirvanix/Namespace/Base.php | 172 ++ .../Zend/Service/Nirvanix/Namespace/Imfs.php | 105 ++ library/Zend/Service/Nirvanix/Response.php | 123 ++ library/Zend/Service/Simpy.php | 433 +++++ library/Zend/Service/Simpy/Link.php | 215 +++ library/Zend/Service/Simpy/LinkQuery.php | 200 +++ library/Zend/Service/Simpy/LinkSet.php | 83 + library/Zend/Service/Simpy/Note.php | 215 +++ library/Zend/Service/Simpy/NoteSet.php | 83 + library/Zend/Service/Simpy/Tag.php | 81 + library/Zend/Service/Simpy/TagSet.php | 83 + library/Zend/Service/Simpy/Watchlist.php | 191 +++ .../Zend/Service/Simpy/WatchlistFilter.php | 81 + .../Zend/Service/Simpy/WatchlistFilterSet.php | 77 + library/Zend/Service/Simpy/WatchlistSet.php | 82 + library/Zend/Service/Technorati.php | 1028 ++++++++++++ library/Zend/Service/Technorati/Author.php | 242 +++ .../Service/Technorati/BlogInfoResult.php | 161 ++ .../Zend/Service/Technorati/CosmosResult.php | 152 ++ .../Service/Technorati/CosmosResultSet.php | 176 +++ .../Service/Technorati/DailyCountsResult.php | 93 ++ .../Technorati/DailyCountsResultSet.php | 125 ++ library/Zend/Service/Technorati/Exception.php | 39 + .../Zend/Service/Technorati/GetInfoResult.php | 103 ++ .../Zend/Service/Technorati/KeyInfoResult.php | 118 ++ library/Zend/Service/Technorati/Result.php | 121 ++ library/Zend/Service/Technorati/ResultSet.php | 289 ++++ .../Zend/Service/Technorati/SearchResult.php | 150 ++ .../Service/Technorati/SearchResultSet.php | 79 + library/Zend/Service/Technorati/TagResult.php | 171 ++ .../Zend/Service/Technorati/TagResultSet.php | 110 ++ .../Zend/Service/Technorati/TagsResult.php | 93 ++ .../Zend/Service/Technorati/TagsResultSet.php | 67 + library/Zend/Service/Technorati/Utils.php | 136 ++ library/Zend/Service/Technorati/Weblog.php | 486 ++++++ library/Zend/Service/Twitter/Search.php | 167 ++ .../resources/ServiceDefinition.csdef | 2 +- .../WindowsAzure/CommandLine/sample.php | 50 + library/Zend/Session.php | 23 +- .../Test/PHPUnit/Constraint/Exception.php | 3 +- .../Zend/Test/PHPUnit/Constraint/Redirect.php | 2 +- .../Test/PHPUnit/Constraint/Redirect41.php | 2 +- .../Context/Zf/ApplicationConfigFile.php | 2 +- .../Project/Context/Zf/ViewScriptFile.php | 6 +- library/Zend/Uri.php | 9 - library/Zend/Validate/LessThan.php | 2 +- library/Zend/View/Helper/FormSelect.php | 5 +- library/Zend/View/Helper/HeadLink.php | 6 +- library/Zend/View/Helper/HeadMeta.php | 3 +- library/Zend/View/Helper/HeadTitle.php | 2 +- .../Zend/View/Helper/Navigation/Sitemap.php | 4 +- library/Zend/View/Helper/TinySrc.php | 317 ++++ library/Zend/Wildfire/Plugin/FirePhp.php | 2 +- library/Zend/XmlRpc/Server.php | 32 +- 432 files changed, 45690 insertions(+), 147 deletions(-) create mode 100644 library/Zend/Auth/Adapter/InfoCard.php create mode 100644 library/Zend/Cloud/StorageService/Adapter/Nirvanix.php create mode 100644 library/Zend/Gdata/YouTube.php create mode 100644 library/Zend/Gdata/YouTube/ActivityEntry.php create mode 100644 library/Zend/Gdata/YouTube/ActivityFeed.php create mode 100644 library/Zend/Gdata/YouTube/CommentEntry.php create mode 100644 library/Zend/Gdata/YouTube/CommentFeed.php create mode 100644 library/Zend/Gdata/YouTube/ContactEntry.php create mode 100644 library/Zend/Gdata/YouTube/ContactFeed.php create mode 100644 library/Zend/Gdata/YouTube/Extension/AboutMe.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Age.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Books.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Company.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Control.php create mode 100644 library/Zend/Gdata/YouTube/Extension/CountHint.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Description.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Duration.php create mode 100644 library/Zend/Gdata/YouTube/Extension/FirstName.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Gender.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Hobbies.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Hometown.php create mode 100644 library/Zend/Gdata/YouTube/Extension/LastName.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Link.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Location.php create mode 100644 library/Zend/Gdata/YouTube/Extension/MediaContent.php create mode 100644 library/Zend/Gdata/YouTube/Extension/MediaCredit.php create mode 100644 library/Zend/Gdata/YouTube/Extension/MediaGroup.php create mode 100644 library/Zend/Gdata/YouTube/Extension/MediaRating.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Movies.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Music.php create mode 100644 library/Zend/Gdata/YouTube/Extension/NoEmbed.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Occupation.php create mode 100644 library/Zend/Gdata/YouTube/Extension/PlaylistId.php create mode 100644 library/Zend/Gdata/YouTube/Extension/PlaylistTitle.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Position.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Private.php create mode 100644 library/Zend/Gdata/YouTube/Extension/QueryString.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Racy.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Recorded.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Relationship.php create mode 100644 library/Zend/Gdata/YouTube/Extension/ReleaseDate.php create mode 100644 library/Zend/Gdata/YouTube/Extension/School.php create mode 100644 library/Zend/Gdata/YouTube/Extension/State.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Statistics.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Status.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Token.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Uploaded.php create mode 100644 library/Zend/Gdata/YouTube/Extension/Username.php create mode 100644 library/Zend/Gdata/YouTube/Extension/VideoId.php create mode 100644 library/Zend/Gdata/YouTube/InboxEntry.php create mode 100644 library/Zend/Gdata/YouTube/InboxFeed.php create mode 100644 library/Zend/Gdata/YouTube/MediaEntry.php create mode 100644 library/Zend/Gdata/YouTube/PlaylistListEntry.php create mode 100644 library/Zend/Gdata/YouTube/PlaylistListFeed.php create mode 100644 library/Zend/Gdata/YouTube/PlaylistVideoEntry.php create mode 100644 library/Zend/Gdata/YouTube/PlaylistVideoFeed.php create mode 100644 library/Zend/Gdata/YouTube/SubscriptionEntry.php create mode 100644 library/Zend/Gdata/YouTube/SubscriptionFeed.php create mode 100644 library/Zend/Gdata/YouTube/UserProfileEntry.php create mode 100644 library/Zend/Gdata/YouTube/VideoEntry.php create mode 100644 library/Zend/Gdata/YouTube/VideoFeed.php create mode 100644 library/Zend/Gdata/YouTube/VideoQuery.php create mode 100644 library/Zend/Http/UserAgent/Features/Adapter/WurflApi.php create mode 100644 library/Zend/InfoCard.php create mode 100644 library/Zend/InfoCard/Adapter/Default.php create mode 100644 library/Zend/InfoCard/Adapter/Exception.php create mode 100644 library/Zend/InfoCard/Adapter/Interface.php create mode 100644 library/Zend/InfoCard/Cipher.php create mode 100644 library/Zend/InfoCard/Cipher/Exception.php create mode 100644 library/Zend/InfoCard/Cipher/Pki/Adapter/Abstract.php create mode 100644 library/Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php create mode 100644 library/Zend/InfoCard/Cipher/Pki/Interface.php create mode 100644 library/Zend/InfoCard/Cipher/Pki/Rsa/Interface.php create mode 100644 library/Zend/InfoCard/Cipher/Symmetric/Adapter/Abstract.php create mode 100644 library/Zend/InfoCard/Cipher/Symmetric/Adapter/Aes128cbc.php create mode 100644 library/Zend/InfoCard/Cipher/Symmetric/Adapter/Aes256cbc.php create mode 100644 library/Zend/InfoCard/Cipher/Symmetric/Aes128cbc/Interface.php create mode 100644 library/Zend/InfoCard/Cipher/Symmetric/Aes256cbc/Interface.php create mode 100644 library/Zend/InfoCard/Cipher/Symmetric/Interface.php create mode 100644 library/Zend/InfoCard/Claims.php create mode 100644 library/Zend/InfoCard/Exception.php create mode 100644 library/Zend/InfoCard/Xml/Assertion.php create mode 100644 library/Zend/InfoCard/Xml/Assertion/Interface.php create mode 100644 library/Zend/InfoCard/Xml/Assertion/Saml.php create mode 100644 library/Zend/InfoCard/Xml/Element.php create mode 100644 library/Zend/InfoCard/Xml/Element/Interface.php create mode 100644 library/Zend/InfoCard/Xml/EncryptedData.php create mode 100644 library/Zend/InfoCard/Xml/EncryptedData/Abstract.php create mode 100644 library/Zend/InfoCard/Xml/EncryptedData/XmlEnc.php create mode 100644 library/Zend/InfoCard/Xml/EncryptedKey.php create mode 100644 library/Zend/InfoCard/Xml/Exception.php create mode 100644 library/Zend/InfoCard/Xml/KeyInfo.php create mode 100644 library/Zend/InfoCard/Xml/KeyInfo/Abstract.php create mode 100644 library/Zend/InfoCard/Xml/KeyInfo/Default.php create mode 100644 library/Zend/InfoCard/Xml/KeyInfo/Interface.php create mode 100644 library/Zend/InfoCard/Xml/KeyInfo/XmlDSig.php create mode 100644 library/Zend/InfoCard/Xml/Security.php create mode 100644 library/Zend/InfoCard/Xml/Security/Exception.php create mode 100644 library/Zend/InfoCard/Xml/Security/Transform.php create mode 100644 library/Zend/InfoCard/Xml/Security/Transform/EnvelopedSignature.php create mode 100644 library/Zend/InfoCard/Xml/Security/Transform/Exception.php create mode 100644 library/Zend/InfoCard/Xml/Security/Transform/Interface.php create mode 100644 library/Zend/InfoCard/Xml/Security/Transform/XmlExcC14N.php create mode 100644 library/Zend/InfoCard/Xml/SecurityTokenReference.php create mode 100644 library/Zend/Locale/Data/aa_ER_SAAHO.xml create mode 100644 library/Zend/Locale/Data/az_AZ.xml create mode 100644 library/Zend/Locale/Data/bs_BA.xml create mode 100644 library/Zend/Locale/Data/cch.xml create mode 100644 library/Zend/Locale/Data/cch_NG.xml create mode 100644 library/Zend/Locale/Data/cop.xml create mode 100644 library/Zend/Locale/Data/dv.xml create mode 100644 library/Zend/Locale/Data/dv_MV.xml create mode 100644 library/Zend/Locale/Data/el_POLYTON.xml create mode 100644 library/Zend/Locale/Data/en_Shaw.xml create mode 100644 library/Zend/Locale/Data/gaa.xml create mode 100644 library/Zend/Locale/Data/gaa_GH.xml create mode 100644 library/Zend/Locale/Data/gez.xml create mode 100644 library/Zend/Locale/Data/gez_ER.xml create mode 100644 library/Zend/Locale/Data/gez_ET.xml create mode 100644 library/Zend/Locale/Data/gv_GB.xml create mode 100644 library/Zend/Locale/Data/ha_Arab.xml create mode 100644 library/Zend/Locale/Data/ha_Arab_NG.xml create mode 100644 library/Zend/Locale/Data/ha_Arab_SD.xml create mode 100644 library/Zend/Locale/Data/ha_GH.xml create mode 100644 library/Zend/Locale/Data/ha_NE.xml create mode 100644 library/Zend/Locale/Data/ha_NG.xml create mode 100644 library/Zend/Locale/Data/ha_SD.xml create mode 100644 library/Zend/Locale/Data/hy_AM_REVISED.xml create mode 100644 library/Zend/Locale/Data/in.xml create mode 100644 library/Zend/Locale/Data/iu.xml create mode 100644 library/Zend/Locale/Data/iw.xml create mode 100644 library/Zend/Locale/Data/kaj.xml create mode 100644 library/Zend/Locale/Data/kaj_NG.xml create mode 100644 library/Zend/Locale/Data/kcg.xml create mode 100644 library/Zend/Locale/Data/kcg_NG.xml create mode 100644 library/Zend/Locale/Data/kfo.xml create mode 100644 library/Zend/Locale/Data/kfo_CI.xml create mode 100644 library/Zend/Locale/Data/kk_KZ.xml create mode 100644 library/Zend/Locale/Data/kpe.xml create mode 100644 library/Zend/Locale/Data/kpe_GN.xml create mode 100644 library/Zend/Locale/Data/kpe_LR.xml create mode 100644 library/Zend/Locale/Data/ku.xml create mode 100644 library/Zend/Locale/Data/ku_Arab.xml create mode 100644 library/Zend/Locale/Data/ku_Arab_IQ.xml create mode 100644 library/Zend/Locale/Data/ku_Arab_IR.xml create mode 100644 library/Zend/Locale/Data/ku_Arab_SY.xml create mode 100644 library/Zend/Locale/Data/ku_IQ.xml create mode 100644 library/Zend/Locale/Data/ku_IR.xml create mode 100644 library/Zend/Locale/Data/ku_Latn.xml create mode 100644 library/Zend/Locale/Data/ku_Latn_TR.xml create mode 100644 library/Zend/Locale/Data/ku_SY.xml create mode 100644 library/Zend/Locale/Data/ku_TR.xml create mode 100644 library/Zend/Locale/Data/ky_KG.xml create mode 100644 library/Zend/Locale/Data/metazoneInfo.xml create mode 100644 library/Zend/Locale/Data/mn_CN.xml create mode 100644 library/Zend/Locale/Data/mn_MN.xml create mode 100644 library/Zend/Locale/Data/mn_Mong.xml create mode 100644 library/Zend/Locale/Data/mn_Mong_CN.xml create mode 100644 library/Zend/Locale/Data/mo.xml create mode 100644 library/Zend/Locale/Data/ms_BN.xml create mode 100644 library/Zend/Locale/Data/ms_MY.xml create mode 100644 library/Zend/Locale/Data/nds.xml create mode 100644 library/Zend/Locale/Data/nds_DE.xml create mode 100644 library/Zend/Locale/Data/no.xml create mode 100644 library/Zend/Locale/Data/ny.xml create mode 100644 library/Zend/Locale/Data/ny_MW.xml create mode 100644 library/Zend/Locale/Data/oc.xml create mode 100644 library/Zend/Locale/Data/oc_FR.xml create mode 100644 library/Zend/Locale/Data/pa_IN.xml create mode 100644 library/Zend/Locale/Data/pa_PK.xml create mode 100644 library/Zend/Locale/Data/sa.xml create mode 100644 library/Zend/Locale/Data/sa_IN.xml create mode 100644 library/Zend/Locale/Data/sh.xml create mode 100644 library/Zend/Locale/Data/sh_BA.xml create mode 100644 library/Zend/Locale/Data/sh_CS.xml create mode 100644 library/Zend/Locale/Data/sh_YU.xml create mode 100644 library/Zend/Locale/Data/sid.xml create mode 100644 library/Zend/Locale/Data/sid_ET.xml create mode 100644 library/Zend/Locale/Data/sr_BA.xml create mode 100644 library/Zend/Locale/Data/sr_CS.xml create mode 100644 library/Zend/Locale/Data/sr_Cyrl_CS.xml create mode 100644 library/Zend/Locale/Data/sr_Cyrl_YU.xml create mode 100644 library/Zend/Locale/Data/sr_Latn_CS.xml create mode 100644 library/Zend/Locale/Data/sr_Latn_YU.xml create mode 100644 library/Zend/Locale/Data/sr_ME.xml create mode 100644 library/Zend/Locale/Data/sr_RS.xml create mode 100644 library/Zend/Locale/Data/sr_YU.xml create mode 100644 library/Zend/Locale/Data/syr.xml create mode 100644 library/Zend/Locale/Data/syr_SY.xml create mode 100644 library/Zend/Locale/Data/tg_TJ.xml create mode 100644 library/Zend/Locale/Data/tl.xml create mode 100644 library/Zend/Locale/Data/trv.xml create mode 100644 library/Zend/Locale/Data/trv_TW.xml create mode 100644 library/Zend/Locale/Data/tt.xml create mode 100644 library/Zend/Locale/Data/tt_RU.xml create mode 100644 library/Zend/Locale/Data/ug_CN.xml create mode 100644 library/Zend/Locale/Data/uz_AF.xml create mode 100644 library/Zend/Locale/Data/uz_UZ.xml create mode 100644 library/Zend/Locale/Data/wo.xml create mode 100644 library/Zend/Locale/Data/wo_Latn.xml create mode 100644 library/Zend/Locale/Data/wo_Latn_SN.xml create mode 100644 library/Zend/Locale/Data/wo_SN.xml create mode 100644 library/Zend/Locale/Data/zh_CN.xml create mode 100644 library/Zend/Locale/Data/zh_HK.xml create mode 100644 library/Zend/Locale/Data/zh_MO.xml create mode 100644 library/Zend/Locale/Data/zh_SG.xml create mode 100644 library/Zend/Locale/Data/zh_TW.xml create mode 100644 library/Zend/Markup/Parser/Textile.php create mode 100644 library/Zend/Service/DeveloperGarden/BaseUserService.php create mode 100644 library/Zend/Service/DeveloperGarden/BaseUserService/AccountBalance.php create mode 100644 library/Zend/Service/DeveloperGarden/Client/ClientAbstract.php create mode 100644 library/Zend/Service/DeveloperGarden/Client/Exception.php create mode 100644 library/Zend/Service/DeveloperGarden/Client/Soap.php create mode 100644 library/Zend/Service/DeveloperGarden/ConferenceCall.php create mode 100644 library/Zend/Service/DeveloperGarden/ConferenceCall/ConferenceAccount.php create mode 100644 library/Zend/Service/DeveloperGarden/ConferenceCall/ConferenceDetail.php create mode 100644 library/Zend/Service/DeveloperGarden/ConferenceCall/ConferenceSchedule.php create mode 100644 library/Zend/Service/DeveloperGarden/ConferenceCall/Exception.php create mode 100644 library/Zend/Service/DeveloperGarden/ConferenceCall/Participant.php create mode 100644 library/Zend/Service/DeveloperGarden/ConferenceCall/ParticipantDetail.php create mode 100644 library/Zend/Service/DeveloperGarden/ConferenceCall/ParticipantStatus.php create mode 100644 library/Zend/Service/DeveloperGarden/Credential.php create mode 100644 library/Zend/Service/DeveloperGarden/Exception.php create mode 100644 library/Zend/Service/DeveloperGarden/IpLocation.php create mode 100644 library/Zend/Service/DeveloperGarden/IpLocation/IpAddress.php create mode 100644 library/Zend/Service/DeveloperGarden/LocalSearch.php create mode 100644 library/Zend/Service/DeveloperGarden/LocalSearch/Exception.php create mode 100644 library/Zend/Service/DeveloperGarden/LocalSearch/SearchParameters.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/BaseUserService/ChangeQuotaPool.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/BaseUserService/GetAccountBalance.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/BaseUserService/GetQuotaInformation.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/AddConferenceTemplateParticipantRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/CommitConferenceRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/CreateConferenceRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/CreateConferenceTemplateRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/GetConferenceListRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/GetConferenceStatusRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/GetConferenceTemplateListRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/GetConferenceTemplateParticipantRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/GetConferenceTemplateRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/GetParticipantStatusRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/GetRunningConferenceRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/NewParticipantRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/RemoveConferenceRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/RemoveConferenceTemplateParticipantRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/RemoveConferenceTemplateRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/RemoveParticipantRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/UpdateConferenceRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/UpdateConferenceTemplateParticipantRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/UpdateConferenceTemplateRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/ConferenceCall/UpdateParticipantRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/Exception.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/IpLocation/LocateIPRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/LocalSearch/LocalSearchRequest.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/RequestAbstract.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/SendSms/SendFlashSMS.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/SendSms/SendSMS.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/SendSms/SendSmsAbstract.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/SmsValidation/GetValidatedNumbers.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/SmsValidation/Invalidate.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/SmsValidation/SendValidationKeyword.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/SmsValidation/Validate.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/VoiceButler/CallStatus.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/VoiceButler/NewCall.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/VoiceButler/NewCallSequenced.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/VoiceButler/TearDownCall.php create mode 100644 library/Zend/Service/DeveloperGarden/Request/VoiceButler/VoiceButlerAbstract.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/BaseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/BaseUserService/ChangeQuotaPoolResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/BaseUserService/GetAccountBalanceResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/BaseUserService/GetQuotaInformationResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/AddConferenceTemplateParticipantResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/AddConferenceTemplateParticipantResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/CCSResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/CommitConferenceResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/ConferenceCallAbstract.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/CreateConferenceResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/CreateConferenceResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/CreateConferenceTemplateResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/CreateConferenceTemplateResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceListResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceListResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceStatusResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceStatusResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceTemplateListResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceTemplateListResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceTemplateParticipantResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceTemplateParticipantResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceTemplateResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetConferenceTemplateResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetParticipantStatusResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetParticipantStatusResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetRunningConferenceResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/GetRunningConferenceResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/NewParticipantResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/NewParticipantResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/RemoveConferenceResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/RemoveConferenceTemplateParticipantResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/RemoveConferenceTemplateResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/RemoveParticipantResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/UpdateConferenceResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/UpdateConferenceTemplateParticipantResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/UpdateConferenceTemplateResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ConferenceCall/UpdateParticipantResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/Exception.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/IpLocation/CityType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/IpLocation/GeoCoordinatesType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/IpLocation/IPAddressLocationType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/IpLocation/LocateIPResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/IpLocation/LocateIPResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/IpLocation/RegionType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/LocalSearch/LocalSearchResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/LocalSearch/LocalSearchResponseType.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/ResponseAbstract.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/SecurityTokenServer/Exception.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/SecurityTokenServer/GetTokensResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/SecurityTokenServer/Interface.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/SecurityTokenServer/SecurityTokenResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/SendSms/SendFlashSMSResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/SendSms/SendSMSResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/SendSms/SendSmsAbstract.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/SmsValidation/GetValidatedNumbersResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/SmsValidation/InvalidateResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/SmsValidation/SendValidationKeywordResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/SmsValidation/ValidateResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/SmsValidation/ValidatedNumber.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/VoiceButler/CallStatus2Response.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/VoiceButler/CallStatusResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/VoiceButler/NewCallResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/VoiceButler/NewCallSequencedResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/VoiceButler/TearDownCallResponse.php create mode 100644 library/Zend/Service/DeveloperGarden/Response/VoiceButler/VoiceButlerAbstract.php create mode 100644 library/Zend/Service/DeveloperGarden/SecurityTokenServer.php create mode 100644 library/Zend/Service/DeveloperGarden/SecurityTokenServer/Cache.php create mode 100644 library/Zend/Service/DeveloperGarden/SendSms.php create mode 100644 library/Zend/Service/DeveloperGarden/SmsValidation.php create mode 100644 library/Zend/Service/DeveloperGarden/VoiceCall.php create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/IPLocation.wsdl create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/IPLocation.xsd create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/ODGBaseUserService.wsdl create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/ODGBaseUserService.xsd create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/SmsService.wsdl create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/SmsValidationUserService.wsdl create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/TokenService.wsdl create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/VoiceButlerService.wsdl create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/VoiceButlerService.xsd create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/ccsPort.wsdl create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/ccsPort.xsd create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/localsearch.wsdl create mode 100644 library/Zend/Service/DeveloperGarden/Wsdl/localsearch.xsd create mode 100644 library/Zend/Service/Nirvanix.php create mode 100644 library/Zend/Service/Nirvanix/Exception.php create mode 100644 library/Zend/Service/Nirvanix/Namespace/Base.php create mode 100644 library/Zend/Service/Nirvanix/Namespace/Imfs.php create mode 100644 library/Zend/Service/Nirvanix/Response.php create mode 100644 library/Zend/Service/Simpy.php create mode 100644 library/Zend/Service/Simpy/Link.php create mode 100644 library/Zend/Service/Simpy/LinkQuery.php create mode 100644 library/Zend/Service/Simpy/LinkSet.php create mode 100644 library/Zend/Service/Simpy/Note.php create mode 100644 library/Zend/Service/Simpy/NoteSet.php create mode 100644 library/Zend/Service/Simpy/Tag.php create mode 100644 library/Zend/Service/Simpy/TagSet.php create mode 100644 library/Zend/Service/Simpy/Watchlist.php create mode 100644 library/Zend/Service/Simpy/WatchlistFilter.php create mode 100644 library/Zend/Service/Simpy/WatchlistFilterSet.php create mode 100644 library/Zend/Service/Simpy/WatchlistSet.php create mode 100644 library/Zend/Service/Technorati.php create mode 100644 library/Zend/Service/Technorati/Author.php create mode 100644 library/Zend/Service/Technorati/BlogInfoResult.php create mode 100644 library/Zend/Service/Technorati/CosmosResult.php create mode 100644 library/Zend/Service/Technorati/CosmosResultSet.php create mode 100644 library/Zend/Service/Technorati/DailyCountsResult.php create mode 100644 library/Zend/Service/Technorati/DailyCountsResultSet.php create mode 100644 library/Zend/Service/Technorati/Exception.php create mode 100644 library/Zend/Service/Technorati/GetInfoResult.php create mode 100644 library/Zend/Service/Technorati/KeyInfoResult.php create mode 100644 library/Zend/Service/Technorati/Result.php create mode 100644 library/Zend/Service/Technorati/ResultSet.php create mode 100644 library/Zend/Service/Technorati/SearchResult.php create mode 100644 library/Zend/Service/Technorati/SearchResultSet.php create mode 100644 library/Zend/Service/Technorati/TagResult.php create mode 100644 library/Zend/Service/Technorati/TagResultSet.php create mode 100644 library/Zend/Service/Technorati/TagsResult.php create mode 100644 library/Zend/Service/Technorati/TagsResultSet.php create mode 100644 library/Zend/Service/Technorati/Utils.php create mode 100644 library/Zend/Service/Technorati/Weblog.php create mode 100644 library/Zend/Service/Twitter/Search.php create mode 100644 library/Zend/Service/WindowsAzure/CommandLine/sample.php create mode 100644 library/Zend/View/Helper/TinySrc.php diff --git a/library/Zend/Auth/Adapter/InfoCard.php b/library/Zend/Auth/Adapter/InfoCard.php new file mode 100644 index 0000000000..0dd7c3f03b --- /dev/null +++ b/library/Zend/Auth/Adapter/InfoCard.php @@ -0,0 +1,261 @@ +_xmlToken = $strXmlDocument; + $this->_infoCard = new Zend_InfoCard(); + } + + /** + * Sets the InfoCard component Adapter to use + * + * @param Zend_InfoCard_Adapter_Interface $a + * @return Zend_Auth_Adapter_InfoCard Provides a fluent interface + */ + public function setAdapter(Zend_InfoCard_Adapter_Interface $a) + { + $this->_infoCard->setAdapter($a); + return $this; + } + + /** + * Retrieves the InfoCard component adapter being used + * + * @return Zend_InfoCard_Adapter_Interface + */ + public function getAdapter() + { + return $this->_infoCard->getAdapter(); + } + + /** + * Retrieves the InfoCard public key cipher object being used + * + * @return Zend_InfoCard_Cipher_PKI_Interface + */ + public function getPKCipherObject() + { + return $this->_infoCard->getPKCipherObject(); + } + + /** + * Sets the InfoCard public key cipher object to use + * + * @param Zend_InfoCard_Cipher_PKI_Interface $cipherObj + * @return Zend_Auth_Adapter_InfoCard Provides a fluent interface + */ + public function setPKICipherObject(Zend_InfoCard_Cipher_PKI_Interface $cipherObj) + { + $this->_infoCard->setPKICipherObject($cipherObj); + return $this; + } + + /** + * Retrieves the Symmetric cipher object being used + * + * @return Zend_InfoCard_Cipher_Symmetric_Interface + */ + public function getSymCipherObject() + { + return $this->_infoCard->getSymCipherObject(); + } + + /** + * Sets the InfoCard symmetric cipher object to use + * + * @param Zend_InfoCard_Cipher_Symmetric_Interface $cipherObj + * @return Zend_Auth_Adapter_InfoCard Provides a fluent interface + */ + public function setSymCipherObject(Zend_InfoCard_Cipher_Symmetric_Interface $cipherObj) + { + $this->_infoCard->setSymCipherObject($cipherObj); + return $this; + } + + /** + * Remove a Certificate Pair by Key ID from the search list + * + * @param string $key_id The Certificate Key ID returned from adding the certificate pair + * @throws Zend_InfoCard_Exception + * @return Zend_Auth_Adapter_InfoCard Provides a fluent interface + */ + public function removeCertificatePair($key_id) + { + $this->_infoCard->removeCertificatePair($key_id); + return $this; + } + + /** + * Add a Certificate Pair to the list of certificates searched by the component + * + * @param string $private_key_file The path to the private key file for the pair + * @param string $public_key_file The path to the certificate / public key for the pair + * @param string $type (optional) The URI for the type of key pair this is (default RSA with OAEP padding) + * @param string $password (optional) The password for the private key file if necessary + * @throws Zend_InfoCard_Exception + * @return string A key ID representing this key pair in the component + */ + public function addCertificatePair($private_key_file, $public_key_file, $type = Zend_InfoCard_Cipher::ENC_RSA_OAEP_MGF1P, $password = null) + { + return $this->_infoCard->addCertificatePair($private_key_file, $public_key_file, $type, $password); + } + + /** + * Return a Certificate Pair from a key ID + * + * @param string $key_id The Key ID of the certificate pair in the component + * @throws Zend_InfoCard_Exception + * @return array An array containing the path to the private/public key files, + * the type URI and the password if provided + */ + public function getCertificatePair($key_id) + { + return $this->_infoCard->getCertificatePair($key_id); + } + + /** + * Set the XML Token to be processed + * + * @param string $strXmlToken The XML token to process + * @return Zend_Auth_Adapter_InfoCard Provides a fluent interface + */ + public function setXmlToken($strXmlToken) + { + $this->_xmlToken = $strXmlToken; + return $this; + } + + /** + * Get the XML Token being processed + * + * @return string The XML token to be processed + */ + public function getXmlToken() + { + return $this->_xmlToken; + } + + /** + * Authenticates the XML token + * + * @return Zend_Auth_Result The result of the authentication + */ + public function authenticate() + { + try { + $claims = $this->_infoCard->process($this->getXmlToken()); + } catch(Exception $e) { + return new Zend_Auth_Result(Zend_Auth_Result::FAILURE , null, array('Exception Thrown', + $e->getMessage(), + $e->getTraceAsString(), + serialize($e))); + } + + if(!$claims->isValid()) { + switch($claims->getCode()) { + case Zend_infoCard_Claims::RESULT_PROCESSING_FAILURE: + return new Zend_Auth_Result( + Zend_Auth_Result::FAILURE, + $claims, + array( + 'Processing Failure', + $claims->getErrorMsg() + ) + ); + break; + case Zend_InfoCard_Claims::RESULT_VALIDATION_FAILURE: + return new Zend_Auth_Result( + Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID, + $claims, + array( + 'Validation Failure', + $claims->getErrorMsg() + ) + ); + break; + default: + return new Zend_Auth_Result( + Zend_Auth_Result::FAILURE, + $claims, + array( + 'Unknown Failure', + $claims->getErrorMsg() + ) + ); + break; + } + } + + return new Zend_Auth_Result( + Zend_Auth_Result::SUCCESS, + $claims + ); + } +} diff --git a/library/Zend/Barcode/Object/Upce.php b/library/Zend/Barcode/Object/Upce.php index cbb5b9bd3e..8302b698f1 100644 --- a/library/Zend/Barcode/Object/Upce.php +++ b/library/Zend/Barcode/Object/Upce.php @@ -84,8 +84,8 @@ protected function _getDefaultOptions() public function getText() { $text = parent::getText(); - if ($text{0} != 1) { - $text{0} = 0; + if ($text[0] != 1) { + $text[0] = 0; } return $text; } @@ -222,8 +222,8 @@ protected function _validateText($value, $options = array()) public function getChecksum($text) { $text = $this->_addLeadingZeros($text, true); - if ($text{0} != 1) { - $text{0} = 0; + if ($text[0] != 1) { + $text[0] = 0; } return parent::getChecksum($text); } diff --git a/library/Zend/Cache/Backend.php b/library/Zend/Cache/Backend.php index 83f1af5f12..3d99e0939c 100644 --- a/library/Zend/Cache/Backend.php +++ b/library/Zend/Cache/Backend.php @@ -76,7 +76,7 @@ public function __construct(array $options = array()) public function setDirectives($directives) { if (!is_array($directives)) Zend_Cache::throwException('Directives parameter must be an array'); - while (list($name, $value) = each($directives)) { + foreach ($directives as $name => $value) { if (!is_string($name)) { Zend_Cache::throwException("Incorrect option name : $name"); } diff --git a/library/Zend/Cloud/StorageService/Adapter/Nirvanix.php b/library/Zend/Cloud/StorageService/Adapter/Nirvanix.php new file mode 100644 index 0000000000..b96e33e937 --- /dev/null +++ b/library/Zend/Cloud/StorageService/Adapter/Nirvanix.php @@ -0,0 +1,399 @@ +toArray(); + } + + if (!is_array($options)) { + throw new Zend_Cloud_StorageService_Exception('Invalid options provided'); + } + + $auth = array( + 'username' => $options[self::USERNAME], + 'password' => $options[self::PASSWORD], + 'appKey' => $options[self::APP_KEY], + ); + $nirvanix_options = array(); + if (isset($options[self::HTTP_ADAPTER])) { + $httpc = new Zend_Http_Client(); + $httpc->setAdapter($options[self::HTTP_ADAPTER]); + $nirvanix_options['httpClient'] = $httpc; + } + try { + $this->_nirvanix = new Zend_Service_Nirvanix($auth, $nirvanix_options); + $this->_remoteDirectory = $options[self::REMOTE_DIRECTORY]; + $this->_imfNs = $this->_nirvanix->getService('IMFS'); + $this->_metadataNs = $this->_nirvanix->getService('Metadata'); + } catch (Zend_Service_Nirvanix_Exception $e) { + throw new Zend_Cloud_StorageService_Exception('Error on create: '.$e->getMessage(), $e->getCode(), $e); + } + } + + /** + * Get an item from the storage service. + * + * @param string $path + * @param array $options + * @return mixed + */ + public function fetchItem($path, $options = null) + { + $path = $this->_getFullPath($path); + try { + $item = $this->_imfNs->getContents($path); + } catch (Zend_Service_Nirvanix_Exception $e) { + throw new Zend_Cloud_StorageService_Exception('Error on fetch: '.$e->getMessage(), $e->getCode(), $e); + } + return $item; + } + + /** + * Store an item in the storage service. + * WARNING: This operation overwrites any item that is located at + * $destinationPath. + * @param string $destinationPath + * @param mixed $data + * @param array $options + * @return void + */ + public function storeItem($destinationPath, $data, $options = null) + { + try { + $path = $this->_getFullPath($destinationPath); + $this->_imfNs->putContents($path, $data); + } catch (Zend_Service_Nirvanix_Exception $e) { + throw new Zend_Cloud_StorageService_Exception('Error on store: '.$e->getMessage(), $e->getCode(), $e); + } + return true; + } + + /** + * Delete an item in the storage service. + * + * @param string $path + * @param array $options + * @return void + */ + public function deleteItem($path, $options = null) + { + try { + $path = $this->_getFullPath($path); + $this->_imfNs->unlink($path); + } catch(Zend_Service_Nirvanix_Exception $e) { +// if (trim(strtoupper($e->getMessage())) != 'INVALID PATH') { +// // TODO Differentiate among errors in the Nirvanix adapter + throw new Zend_Cloud_StorageService_Exception('Error on delete: '.$e->getMessage(), $e->getCode(), $e); + } + } + + /** + * Copy an item in the storage service to a given path. + * WARNING: This operation is *very* expensive for services that do not + * support copying an item natively. + * + * @param string $sourcePath + * @param string $destination path + * @param array $options + * @return void + */ + public function copyItem($sourcePath, $destinationPath, $options = null) + { + try { + $sourcePath = $this->_getFullPath($sourcePath); + $destinationPath = $this->_getFullPath($destinationPath); + $this->_imfNs->CopyFiles(array('srcFilePath' => $sourcePath, + 'destFolderPath' => $destinationPath)); + } catch (Zend_Service_Nirvanix_Exception $e) { + throw new Zend_Cloud_StorageService_Exception('Error on copy: '.$e->getMessage(), $e->getCode(), $e); + } + } + + /** + * Move an item in the storage service to a given path. + * WARNING: This operation is *very* expensive for services that do not + * support moving an item natively. + * + * @param string $sourcePath + * @param string $destination path + * @param array $options + * @return void + */ + public function moveItem($sourcePath, $destinationPath, $options = null) + { + try { + $sourcePath = $this->_getFullPath($sourcePath); + $destinationPath = $this->_getFullPath($destinationPath); + $this->_imfNs->RenameFile(array('filePath' => $sourcePath, + 'newFileName' => $destinationPath)); + // $this->_imfNs->MoveFiles(array('srcFilePath' => $sourcePath, + // 'destFolderPath' => $destinationPath)); + } catch (Zend_Service_Nirvanix_Exception $e) { + throw new Zend_Cloud_StorageService_Exception('Error on move: '.$e->getMessage(), $e->getCode(), $e); + } + } + + /** + * Rename an item in the storage service to a given name. + * + * + * @param string $path + * @param string $name + * @param array $options + * @return void + */ + public function renameItem($path, $name, $options = null) + { + require_once 'Zend/Cloud/OperationNotAvailableException.php'; + throw new Zend_Cloud_OperationNotAvailableException('Renaming not implemented'); + } + + /** + * Get a key/value array of metadata for the given path. + * + * @param string $path + * @param array $options + * @return array An associative array of key/value pairs specifying the metadata for this object. + * If no metadata exists, an empty array is returned. + */ + public function fetchMetadata($path, $options = null) + { + $path = $this->_getFullPath($path); + try { + $metadataNode = $this->_metadataNs->getMetadata(array('path' => $path)); + } catch (Zend_Service_Nirvanix_Exception $e) { + throw new Zend_Cloud_StorageService_Exception('Error on fetching metadata: '.$e->getMessage(), $e->getCode(), $e); + } + + $metadata = array(); + $length = count($metadataNode->Metadata); + + // Need to special case this as Nirvanix returns an array if there is + // more than one, but doesn't return an array if there is only one. + if ($length == 1) + { + $metadata[(string)$metadataNode->Metadata->Type->value] = (string)$metadataNode->Metadata->Value; + } + else if ($length > 1) + { + for ($i=0; $i<$length; $i++) + { + $metadata[(string)$metadataNode->Metadata[$i]->Type] = (string)$metadataNode->Metadata[$i]->Value; + } + } + return $metadata; + } + + /** + * Store a key/value array of metadata at the given path. + * WARNING: This operation overwrites any metadata that is located at + * $destinationPath. + * + * @param string $destinationPath + * @param array $metadata associative array specifying the key/value pairs for the metadata. + * @param array $options + * @return void + */ + public function storeMetadata($destinationPath, $metadata, $options = null) + { + $destinationPath = $this->_getFullPath($destinationPath); + if ($metadata != null) { + try { + foreach ($metadata AS $key=>$value) { + $metadataString = $key . ":" . $value; + $this->_metadataNs->SetMetadata(array( + 'path' => $destinationPath, + 'metadata' => $metadataString, + )); + } + } catch (Zend_Service_Nirvanix_Exception $e) { + throw new Zend_Cloud_StorageService_Exception('Error on storing metadata: '.$e->getMessage(), $e->getCode(), $e); + } + } + } + + /** + * Delete a key/value array of metadata at the given path. + * + * @param string $path + * @param array $metadata - An associative array specifying the key/value pairs for the metadata + * to be deleted. If null, all metadata associated with the object will + * be deleted. + * @param array $options + * @return void + */ + public function deleteMetadata($path, $metadata = null, $options = null) + { + $path = $this->_getFullPath($path); + try { + if ($metadata == null) { + $this->_metadataNs->DeleteAllMetadata(array('path' => $path)); + } else { + foreach ($metadata AS $key=>$value) { + $this->_metadataNs->DeleteMetadata(array( + 'path' => $path, + 'metadata' => $key, + )); + } + } + } catch (Zend_Service_Nirvanix_Exception $e) { + throw new Zend_Cloud_StorageService_Exception('Error on deleting metadata: '.$e->getMessage(), $e->getCode(), $e); + } + } + + /* + * Recursively traverse all the folders and build an array that contains + * the path names for each folder. + * + * @param string $path folder path to get the list of folders from. + * @param array& $resultArray reference to the array that contains the path names + * for each folder. + */ + private function getAllFolders($path, &$resultArray) + { + $response = $this->_imfNs->ListFolder(array( + 'folderPath' => $path, + 'pageNumber' => 1, + 'pageSize' => $this->maxPageSize, + )); + $numFolders = $response->ListFolder->TotalFolderCount; + if ($numFolders == 0) { + return; + } else { + //Need to special case this as Nirvanix returns an array if there is + //more than one, but doesn't return an array if there is only one. + if ($numFolders == 1) { + $folderPath = $response->ListFolder->Folder->Path; + array_push($resultArray, $folderPath); + $this->getAllFolders('/' . $folderPath, $resultArray); + } else { + foreach ($response->ListFolder->Folder as $arrayElem) { + $folderPath = $arrayElem->Path; + array_push($resultArray, $folderPath); + $this->getAllFolders('/' . $folderPath, $resultArray); + } + } + } + } + + /** + * Return an array of the items contained in the given path. The items + * returned are the files or objects that in the specified path. + * + * @param string $path + * @param array $options + * @return array + */ + public function listItems($path, $options = null) + { + $path = $this->_getFullPath($path); + $resultArray = array(); + + if (!isset($path)) { + return false; + } else { + try { + $response = $this->_imfNs->ListFolder(array( + 'folderPath' => $path, + 'pageNumber' => 1, + 'pageSize' => $this->maxPageSize, + )); + } catch (Zend_Service_Nirvanix_Exception $e) { + throw new Zend_Cloud_StorageService_Exception('Error on list: '.$e->getMessage(), $e->getCode(), $e); + } + + $numFiles = $response->ListFolder->TotalFileCount; + + //Add the file names to the array + if ($numFiles != 0) { + //Need to special case this as Nirvanix returns an array if there is + //more than one, but doesn't return an array if there is only one. + if ($numFiles == 1) { + $resultArray[] = (string)$response->ListFolder->File->Name; + } + else { + foreach ($response->ListFolder->File as $arrayElem) { + $resultArray[] = (string) $arrayElem->Name; + } + } + } + } + + return $resultArray; + } + + /** + * Get full path to an object + * + * @param string $path + * @return string + */ + private function _getFullPath($path) + { + return $this->_remoteDirectory . $path; + } + + /** + * Get the concrete client. + * @return Zend_Service_Nirvanix + */ + public function getClient() + { + return $this->_nirvanix; + } +} diff --git a/library/Zend/Controller/Action.php b/library/Zend/Controller/Action.php index 9508e74711..86abc67fe4 100644 --- a/library/Zend/Controller/Action.php +++ b/library/Zend/Controller/Action.php @@ -785,7 +785,7 @@ protected function _redirect($url, array $options = array()) /** * Redirect to another URL * - * Proxies to {@link Zend_Controller_Action_Helper_Redirector::gotoUrl()}. + * Proxies to @see Zend_Controller_Action_Helper_Redirector::gotoUrl() * * @param string $url * @param array $options Options to be used when redirecting diff --git a/library/Zend/Db/Adapter/Pdo/Pgsql.php b/library/Zend/Db/Adapter/Pdo/Pgsql.php index abd5e637b0..efb74cd145 100644 --- a/library/Zend/Db/Adapter/Pdo/Pgsql.php +++ b/library/Zend/Db/Adapter/Pdo/Pgsql.php @@ -156,7 +156,7 @@ public function describeTable($tableName, $schemaName = null) t.typname AS type, a.atttypmod, FORMAT_TYPE(a.atttypid, a.atttypmod) AS complete_type, - d.adsrc AS default_value, + pg_get_expr(d.adbin, d.adrelid) AS default_value, a.attnotnull AS notnull, a.attlen AS length, co.contype, diff --git a/library/Zend/Feed/Atom.php b/library/Zend/Feed/Atom.php index 2ee08cef6a..67b56e7748 100644 --- a/library/Zend/Feed/Atom.php +++ b/library/Zend/Feed/Atom.php @@ -255,7 +255,7 @@ protected function _mapFeedHeaders($array) * The following nodes are constructed for each feed entry * * url to feed entry - * entry title + * entry title * last update * * short text diff --git a/library/Zend/Feed/Rss.php b/library/Zend/Feed/Rss.php index 5035d35d77..9db54b8755 100644 --- a/library/Zend/Feed/Rss.php +++ b/library/Zend/Feed/Rss.php @@ -379,7 +379,7 @@ private function _buildiTunes(DOMElement $root, $array) * * The following nodes are constructed for each feed entry * - * entry title + * entry title * url to feed entry * url to feed entry * short text diff --git a/library/Zend/Filter/Compress/Zip.php b/library/Zend/Filter/Compress/Zip.php index 9921fe9648..9c71a88444 100644 --- a/library/Zend/Filter/Compress/Zip.php +++ b/library/Zend/Filter/Compress/Zip.php @@ -237,7 +237,7 @@ public function decompress($content) for ($i = 0; $i < $zip->numFiles; $i++) { $statIndex = $zip->statIndex($i); $currName = $statIndex['name']; - if (($currName{0} == '/') || + if (($currName[0] == '/') || (substr($currName, 0, 2) == '..') || (substr($currName, 0, 4) == './..') ) diff --git a/library/Zend/Form.php b/library/Zend/Form.php index 0512dc850b..ebd2fd0a22 100644 --- a/library/Zend/Form.php +++ b/library/Zend/Form.php @@ -2077,7 +2077,7 @@ public function clearDisplayGroups() * @param array $values * @return Zend_Form */ - public function populate(array $values) + public function populate(array $values=[]) { return $this->setDefaults($values); } @@ -2981,7 +2981,7 @@ public function setSubFormDecorators(array $decorators) * @param Zend_View_Interface $view * @return string */ - public function render(Zend_View_Interface $view = null) + public function render($view = null) { if (null !== $view) { $this->setView($view); diff --git a/library/Zend/Form/Decorator/FormErrors.php b/library/Zend/Form/Decorator/FormErrors.php index 29ca94e729..568b91dc5d 100644 --- a/library/Zend/Form/Decorator/FormErrors.php +++ b/library/Zend/Form/Decorator/FormErrors.php @@ -464,6 +464,8 @@ public function renderLabel(Zend_Form_Element $element, Zend_View_Interface $vie } } + $label = strip_tags($label); + if ($this->getEscape()) { $label = $view->escape($label); } diff --git a/library/Zend/Form/DisplayGroup.php b/library/Zend/Form/DisplayGroup.php index a18f236437..03d09f6ad1 100644 --- a/library/Zend/Form/DisplayGroup.php +++ b/library/Zend/Form/DisplayGroup.php @@ -1179,4 +1179,28 @@ protected function _loadDecorator(array $decorator, $name) return $instance; } + + /** + * Custom Actionstep Hack + * @return $this + */ + public function setLayoutOutline() { + $class = $this->getDecorator('Fieldset')->getOption('class'); + $class .= ' as-form-group--outlined'; + $this->getDecorator('Fieldset')->setOption('class', $class); + return $this; + } + + + /** + * Custom Actionstep Hack + * @return $this + */ + public function setLayoutIndented() { + $class = $this->getDecorator('Fieldset')->getOption('class'); + $class .= ' as-form-group--indented'; + $this->getDecorator('Fieldset')->setOption('class', $class); + return $this; + } + } diff --git a/library/Zend/Form/Element.php b/library/Zend/Form/Element.php index 26bad9af3b..a7ef0fc003 100644 --- a/library/Zend/Form/Element.php +++ b/library/Zend/Form/Element.php @@ -573,7 +573,7 @@ public function getId() * Set element value * * @param mixed $value - * @return Zend_Form_Element + * @return $this */ public function setValue($value) { @@ -852,10 +852,10 @@ public function getType() * * @param string $name * @param mixed $value - * @return Zend_Form_Element + * @return $this * @throws Zend_Form_Exception for invalid $name values */ - public function setAttrib($name, $value) + public function setAttrib($name, $value=null) { $name = (string) $name; if ('_' == $name[0]) { diff --git a/library/Zend/Gdata/YouTube.php b/library/Zend/Gdata/YouTube.php new file mode 100644 index 0000000000..01027662f9 --- /dev/null +++ b/library/Zend/Gdata/YouTube.php @@ -0,0 +1,874 @@ +registerPackage('Zend_Gdata_YouTube'); + $this->registerPackage('Zend_Gdata_YouTube_Extension'); + $this->registerPackage('Zend_Gdata_Media'); + $this->registerPackage('Zend_Gdata_Media_Extension'); + + // NOTE This constructor no longer calls the parent constructor + $this->setHttpClient($client, $applicationId, $clientId, $developerKey); + } + + /** + * 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, + $applicationId = 'MyCompany-MyApp-1.0', $clientId = null, + $developerKey = null) + { + 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.'); + } + + if ($clientId != null) { + $client->setHeaders('X-GData-Client', $clientId); + } + + if ($developerKey != null) { + $client->setHeaders('X-GData-Key', 'key='. $developerKey); + } + + return parent::setHttpClient($client, $applicationId); + } + + /** + * Retrieves a feed of videos. + * + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the + * specified URL. + */ + public function getVideoFeed($location = null) + { + if ($location == null) { + $uri = self::VIDEO_URI; + } else if ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed'); + } + + /** + * Retrieves a specific video entry. + * + * @param mixed $videoId The ID of the video to retrieve. + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined. + * @param boolean $fullEntry (optional) Retrieve the full metadata for the + * entry. Only possible if entry belongs to currently authenticated + * user. An exception will be thrown otherwise. + * @throws Zend_Gdata_App_HttpException + * @return Zend_Gdata_YouTube_VideoEntry The video entry found at the + * specified URL. + */ + public function getVideoEntry($videoId = null, $location = null, + $fullEntry = false) + { + if ($videoId !== null) { + if ($fullEntry) { + return $this->getFullVideoEntry($videoId); + } else { + $uri = self::VIDEO_URI . "/" . $videoId; + } + } else if ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getEntry($uri, 'Zend_Gdata_YouTube_VideoEntry'); + } + + /** + * Retrieves a video entry from the user's upload feed. + * + * @param mixed $videoID The ID of the video to retrieve. + * @throws Zend_Gdata_App_HttpException + * @return Zend_Gdata_YouTube_VideoEntry|null The video entry to be + * retrieved, or null if it was not found or the user requesting it + * did not have the appropriate permissions. + */ + public function getFullVideoEntry($videoId) + { + $uri = self::USER_URI . "/default/" . + self::UPLOADS_URI_SUFFIX . "/$videoId"; + return parent::getEntry($uri, 'Zend_Gdata_YouTube_VideoEntry'); + } + + /** + * Retrieves a feed of videos related to the specified video ID. + * + * @param string $videoId The videoId of interest + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the + * specified URL. + */ + public function getRelatedVideoFeed($videoId = null, $location = null) + { + if ($videoId !== null) { + $uri = self::VIDEO_URI . "/" . $videoId . "/" . + self::RELATED_URI_SUFFIX; + } else if ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed'); + } + + /** + * Retrieves a feed of video responses related to the specified video ID. + * + * @param string $videoId The videoId of interest + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the + * specified URL. + */ + public function getVideoResponseFeed($videoId = null, $location = null) + { + if ($videoId !== null) { + $uri = self::VIDEO_URI . "/" . $videoId . "/" . + self::RESPONSES_URI_SUFFIX; + } else if ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed'); + } + + /** + * Retrieves a feed of comments related to the specified video ID. + * + * @param string $videoId The videoId of interest + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_CommentFeed The feed of videos found at the + * specified URL. + */ + public function getVideoCommentFeed($videoId = null, $location = null) + { + if ($videoId !== null) { + $uri = self::VIDEO_URI . "/" . $videoId . "/comments"; + } else if ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_CommentFeed'); + } + + /** + * Retrieves a feed of comments related to the specified video ID. + * + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_CommentFeed The feed of videos found at the + * specified URL. + */ + public function getTopRatedVideoFeed($location = null) + { + $standardFeedUri = self::STANDARD_TOP_RATED_URI; + + if ($this->getMajorProtocolVersion() == 2) { + $standardFeedUri = self::STANDARD_TOP_RATED_URI_V2; + } + + if ($location == null) { + $uri = $standardFeedUri; + } else if ($location instanceof Zend_Gdata_Query) { + if ($location instanceof Zend_Gdata_YouTube_VideoQuery) { + if (!isset($location->url)) { + $location->setFeedType('top rated'); + } + } + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed'); + } + + + /** + * Retrieves a feed of the most viewed videos. + * + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the + * specified URL. + */ + public function getMostViewedVideoFeed($location = null) + { + $standardFeedUri = self::STANDARD_MOST_VIEWED_URI; + + if ($this->getMajorProtocolVersion() == 2) { + $standardFeedUri = self::STANDARD_MOST_VIEWED_URI_V2; + } + + if ($location == null) { + $uri = $standardFeedUri; + } else if ($location instanceof Zend_Gdata_Query) { + if ($location instanceof Zend_Gdata_YouTube_VideoQuery) { + if (!isset($location->url)) { + $location->setFeedType('most viewed'); + } + } + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed'); + } + + /** + * Retrieves a feed of recently featured videos. + * + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the + * specified URL. + */ + public function getRecentlyFeaturedVideoFeed($location = null) + { + $standardFeedUri = self::STANDARD_RECENTLY_FEATURED_URI; + + if ($this->getMajorProtocolVersion() == 2) { + $standardFeedUri = self::STANDARD_RECENTLY_FEATURED_URI_V2; + } + + if ($location == null) { + $uri = $standardFeedUri; + } else if ($location instanceof Zend_Gdata_Query) { + if ($location instanceof Zend_Gdata_YouTube_VideoQuery) { + if (!isset($location->url)) { + $location->setFeedType('recently featured'); + } + } + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed'); + } + + /** + * Retrieves a feed of videos recently featured for mobile devices. + * These videos will have RTSP links in the $entry->mediaGroup->content + * + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the + * specified URL. + */ + public function getWatchOnMobileVideoFeed($location = null) + { + $standardFeedUri = self::STANDARD_WATCH_ON_MOBILE_URI; + + if ($this->getMajorProtocolVersion() == 2) { + $standardFeedUri = self::STANDARD_WATCH_ON_MOBILE_URI_V2; + } + + if ($location == null) { + $uri = $standardFeedUri; + } else if ($location instanceof Zend_Gdata_Query) { + if ($location instanceof Zend_Gdata_YouTube_VideoQuery) { + if (!isset($location->url)) { + $location->setFeedType('watch on mobile'); + } + } + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed'); + } + + /** + * Retrieves a feed which lists a user's playlist + * + * @param string $user (optional) The username of interest + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_PlaylistListFeed The feed of playlists + */ + public function getPlaylistListFeed($user = null, $location = null) + { + if ($user !== null) { + $uri = self::USER_URI . '/' . $user . '/playlists'; + } else if ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_PlaylistListFeed'); + } + + /** + * Retrieves a feed of videos in a particular playlist + * + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_PlaylistVideoFeed The feed of videos found at + * the specified URL. + */ + public function getPlaylistVideoFeed($location) + { + if ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_PlaylistVideoFeed'); + } + + /** + * Retrieves a feed of a user's subscriptions + * + * @param string $user (optional) The username of interest + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_SubscriptionListFeed The feed of subscriptions + */ + public function getSubscriptionFeed($user = null, $location = null) + { + if ($user !== null) { + $uri = self::USER_URI . '/' . $user . '/subscriptions'; + } else if ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_SubscriptionFeed'); + } + + /** + * Retrieves a feed of a user's contacts + * + * @param string $user (optional) The username of interest + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_ContactFeed The feed of contacts + */ + public function getContactFeed($user = null, $location = null) + { + if ($user !== null) { + $uri = self::USER_URI . '/' . $user . '/contacts'; + } else if ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_ContactFeed'); + } + + /** + * Retrieves a user's uploads + * + * @param string $user (optional) The username of interest + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_VideoFeed The videos uploaded by the user + */ + public function getUserUploads($user = null, $location = null) + { + if ($user !== null) { + $uri = self::USER_URI . '/' . $user . '/' . + self::UPLOADS_URI_SUFFIX; + } else if ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed'); + } + + /** + * Retrieves a user's favorites + * + * @param string $user (optional) The username of interest + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_VideoFeed The videos favorited by the user + */ + public function getUserFavorites($user = null, $location = null) + { + if ($user !== null) { + $uri = self::USER_URI . '/' . $user . '/' . + self::FAVORITES_URI_SUFFIX; + } else if ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed'); + } + + /** + * Retrieves a user's profile as an entry + * + * @param string $user (optional) The username of interest + * @param mixed $location (optional) The URL to query or a + * Zend_Gdata_Query object from which a URL can be determined + * @return Zend_Gdata_YouTube_UserProfileEntry The user profile entry + */ + public function getUserProfile($user = null, $location = null) + { + if ($user !== null) { + $uri = self::USER_URI . '/' . $user; + } else if ($location instanceof Zend_Gdata_Query) { + $uri = $location->getQueryUrl($this->getMajorProtocolVersion()); + } else { + $uri = $location; + } + return parent::getEntry($uri, 'Zend_Gdata_YouTube_UserProfileEntry'); + } + + /** + * Helper function for parsing a YouTube token response + * + * @param string $response The service response + * @throws Zend_Gdata_App_Exception + * @return array An array containing the token and URL + */ + public static function parseFormUploadTokenResponse($response) + { + // Load the feed as an XML DOMDocument object + @ini_set('track_errors', 1); + $doc = new DOMDocument(); + $success = @$doc->loadXML($response); + @ini_restore('track_errors'); + + if (!$success) { + require_once 'Zend/Gdata/App/Exception.php'; + throw new Zend_Gdata_App_Exception( + "Zend_Gdata_YouTube::parseFormUploadTokenResponse - " . + "DOMDocument cannot parse XML: $php_errormsg"); + } + $responseElement = $doc->getElementsByTagName('response')->item(0); + + $urlText = null; + $tokenText = null; + if ($responseElement != null) { + $urlElement = + $responseElement->getElementsByTagName('url')->item(0); + $tokenElement = + $responseElement->getElementsByTagName('token')->item(0); + + if ($urlElement && $urlElement->hasChildNodes() && + $tokenElement && $tokenElement->hasChildNodes()) { + + $urlText = $urlElement->firstChild->nodeValue; + $tokenText = $tokenElement->firstChild->nodeValue; + } + } + + if ($tokenText != null && $urlText != null) { + return array('token' => $tokenText, 'url' => $urlText); + } else { + require_once 'Zend/Gdata/App/Exception.php'; + throw new Zend_Gdata_App_Exception( + 'Form upload token not found in response'); + } + } + + /** + * Retrieves a YouTube token + * + * @param Zend_Gdata_YouTube_VideoEntry $videoEntry The video entry + * @param string $url The location as a string URL + * @throws Zend_Gdata_App_Exception + * @return array An array containing a token and URL + */ + public function getFormUploadToken($videoEntry, + $url='https://gdata.youtube.com/action/GetUploadToken') + { + if ($url != null && is_string($url)) { + // $response is a Zend_Http_response object + $response = $this->post($videoEntry, $url); + return self::parseFormUploadTokenResponse($response->getBody()); + } else { + require_once 'Zend/Gdata/App/Exception.php'; + throw new Zend_Gdata_App_Exception( + 'Url must be provided as a string URL'); + } + } + + /** + * Retrieves the activity feed for users + * + * @param mixed $usernames A string identifying the usernames for which to + * retrieve activity for. This can also be a Zend_Gdata_Query + * object from which a URL can be determined. + * @throws Zend_Gdata_App_VersionException if using version less than 2. + * @return Zend_Gdata_YouTube_ActivityFeed + */ + public function getActivityForUser($username) + { + if ($this->getMajorProtocolVersion() == 1) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('User activity feeds ' . + 'are not available in API version 1.'); + } + + $uri = null; + if ($username instanceof Zend_Gdata_Query) { + $uri = $username->getQueryUrl($this->getMajorProtocolVersion()); + } else { + if (count(explode(',', $username)) > + self::ACTIVITY_FEED_MAX_USERS) { + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_InvalidArgumentException( + 'Activity feed can only retrieve for activity for up to ' . + self::ACTIVITY_FEED_MAX_USERS . ' users per request'); + } + $uri = self::ACTIVITY_FEED_URI . '?author=' . $username; + } + + return parent::getFeed($uri, 'Zend_Gdata_YouTube_ActivityFeed'); + } + + /** + * Retrieve the activity of the currently authenticated users friend. + * + * @throws Zend_Gdata_App_Exception if not logged in. + * @return Zend_Gdata_YouTube_ActivityFeed + */ + public function getFriendActivityForCurrentUser() + { + if (!$this->isAuthenticated()) { + require_once 'Zend/Gdata/App/Exception.php'; + throw new Zend_Gdata_App_Exception('You must be authenticated to ' . + 'use the getFriendActivityForCurrentUser function in Zend_' . + 'Gdata_YouTube.'); + } + return parent::getFeed(self::FRIEND_ACTIVITY_FEED_URI, + 'Zend_Gdata_YouTube_ActivityFeed'); + } + + /** + * Retrieve a feed of messages in the currently authenticated user's inbox. + * + * @throws Zend_Gdata_App_Exception if not logged in. + * @return Zend_Gdata_YouTube_InboxFeed|null + */ + public function getInboxFeedForCurrentUser() + { + if (!$this->isAuthenticated()) { + require_once 'Zend/Gdata/App/Exception.php'; + throw new Zend_Gdata_App_Exception('You must be authenticated to ' . + 'use the getInboxFeedForCurrentUser function in Zend_' . + 'Gdata_YouTube.'); + } + + return parent::getFeed(self::INBOX_FEED_URI, + 'Zend_Gdata_YouTube_InboxFeed'); + } + + /** + * Send a video message. + * + * Note: Either a Zend_Gdata_YouTube_VideoEntry or a valid video ID must + * be provided. + * + * @param string $body The body of the message + * @param Zend_Gdata_YouTube_VideoEntry (optional) The video entry to send + * @param string $videoId The id of the video to send + * @param string $recipientUserName The username of the recipient + * @throws Zend_Gdata_App_InvalidArgumentException if no valid + * Zend_Gdata_YouTube_VideoEntry or videoId were provided + * @return Zend_Gdata_YouTube_InboxEntry|null The + * Zend_Gdata_YouTube_Inbox_Entry representing the sent message. + * + */ + public function sendVideoMessage($body, $videoEntry = null, + $videoId = null, $recipientUserName) + { + if (!$videoId && !$videoEntry) { + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_InvalidArgumentException( + 'Expecting either a valid videoID or a videoEntry object in ' . + 'Zend_Gdata_YouTube->sendVideoMessage().'); + } + + $messageEntry = new Zend_Gdata_YouTube_InboxEntry(); + + if ($this->getMajorProtocolVersion() == null || + $this->getMajorProtocolVersion() == 1) { + + if (!$videoId) { + $videoId = $videoEntry->getVideoId(); + } elseif (strlen($videoId) < 12) { + //Append the full URI + $videoId = self::VIDEO_URI . '/' . $videoId; + } + + $messageEntry->setId($this->newId($videoId)); + // TODO there seems to be a bug where v1 inbox entries dont + // retain their description... + $messageEntry->setDescription( + new Zend_Gdata_YouTube_Extension_Description($body)); + + } else { + if (!$videoId) { + $videoId = $videoEntry->getVideoId(); + $videoId = substr($videoId, strrpos($videoId, ':')); + } + $messageEntry->setId($this->newId($videoId)); + $messageEntry->setSummary($this->newSummary($body)); + } + + $insertUrl = 'https://gdata.youtube.com/feeds/api/users/' . + $recipientUserName . '/inbox'; + $response = $this->insertEntry($messageEntry, $insertUrl, + 'Zend_Gdata_YouTube_InboxEntry'); + return $response; + } + + /** + * Post a comment in reply to an existing comment + * + * @param Zend_Gdata_YouTube_CommentEntry $commentEntry The comment entry + * to reply to + * @param string $commentText The text of the + * comment to post + * @return Zend_Gdata_YouTube_CommentEntry the posted comment + */ + public function replyToCommentEntry($commentEntry, $commentText) + { + $newComment = $this->newCommentEntry(); + $newComment->content = $this->newContent()->setText($commentText); + $commentId = $commentEntry->getId(); + $commentIdArray = explode(':', $commentId); + + // create a new link element + $inReplyToLinkHref = self::VIDEO_URI . '/' . $commentIdArray[3] . + '/comments/' . $commentIdArray[5]; + $inReplyToLink = $this->newLink($inReplyToLinkHref, + self::IN_REPLY_TO_SCHEME, $type="application/atom+xml"); + $links = $newComment->getLink(); + $links[] = $inReplyToLink; + $newComment->setLink($links); + $commentFeedPostUrl = self::VIDEO_URI . '/' . $commentIdArray[3] . + '/comments'; + return $this->insertEntry($newComment, + $commentFeedPostUrl, 'Zend_Gdata_YouTube_CommentEntry'); + } + +} diff --git a/library/Zend/Gdata/YouTube/ActivityEntry.php b/library/Zend/Gdata/YouTube/ActivityEntry.php new file mode 100644 index 0000000000..3c60e1bd2d --- /dev/null +++ b/library/Zend/Gdata/YouTube/ActivityEntry.php @@ -0,0 +1,232 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + + /** + * 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 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_videoId !== null) { + $element->appendChild($this->_videoId->getDOM( + $element->ownerDocument)); + } + if ($this->_username !== null) { + $element->appendChild($this->_username->getDOM( + $element->ownerDocument)); + } + if ($this->_rating !== null) { + $element->appendChild($this->_rating->getDOM( + $element->ownerDocument)); + } + return $element; + } + + /** + * Creates individual Entry objects of the appropriate type and + * stores them as members of this entry based upon DOM data. + * + * @param DOMNode $child The DOMNode to process + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('yt') . ':' . 'videoid': + $videoId = new Zend_Gdata_YouTube_Extension_VideoId(); + $videoId->transferFromDOM($child); + $this->_videoId = $videoId; + break; + case $this->lookupNamespace('yt') . ':' . 'username': + $username = new Zend_Gdata_YouTube_Extension_Username(); + $username->transferFromDOM($child); + $this->_username = $username; + break; + case $this->lookupNamespace('gd') . ':' . 'rating': + $rating = new Zend_Gdata_Extension_Rating(); + $rating->transferFromDOM($child); + $this->_rating = $rating; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + /** + * Returns the video ID for this activity entry. + * + * @return null|Zend_Gdata_YouTube_Extension_VideoId + */ + public function getVideoId() + { + return $this->_videoId; + } + + /** + * Returns the username for this activity entry. + * + * @return null|Zend_Gdata_YouTube_Extension_Username + */ + public function getUsername() + { + return $this->_username; + } + + /** + * Returns the rating for this activity entry. + * + * @return null|Zend_Gdata_YouTube_Extension_Rating + */ + public function getRating() + { + return $this->_rating; + } + + /** + * Return the value of the rating for this video entry. + * + * Convenience method to save needless typing. + * + * @return integer|null The value of the rating that was created, if found. + */ + public function getRatingValue() + { + $rating = $this->_rating; + if ($rating) { + return $rating->getValue(); + } + return null; + } + + /** + * Return the activity type that was performed. + * + * Convenience method that inspects category where scheme is + * http://gdata.youtube.com/schemas/2007/userevents.cat. + * + * @return string|null The activity category if found. + */ + public function getActivityType() + { + $categories = $this->getCategory(); + foreach($categories as $category) { + if ($category->getScheme() == self::ACTIVITY_CATEGORY_SCHEME) { + return $category->getTerm(); + } + } + return null; + } + + /** + * Convenience method to quickly get access to the author of the activity + * + * @return string The author of the activity + */ + public function getAuthorName() + { + $authors = $this->getAuthor(); + return $authors[0]->getName()->getText(); + } +} diff --git a/library/Zend/Gdata/YouTube/ActivityFeed.php b/library/Zend/Gdata/YouTube/ActivityFeed.php new file mode 100644 index 0000000000..6389c30f10 --- /dev/null +++ b/library/Zend/Gdata/YouTube/ActivityFeed.php @@ -0,0 +1,66 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + +} diff --git a/library/Zend/Gdata/YouTube/CommentEntry.php b/library/Zend/Gdata/YouTube/CommentEntry.php new file mode 100644 index 0000000000..c16effa509 --- /dev/null +++ b/library/Zend/Gdata/YouTube/CommentEntry.php @@ -0,0 +1,59 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + +} diff --git a/library/Zend/Gdata/YouTube/CommentFeed.php b/library/Zend/Gdata/YouTube/CommentFeed.php new file mode 100644 index 0000000000..aede3788b4 --- /dev/null +++ b/library/Zend/Gdata/YouTube/CommentFeed.php @@ -0,0 +1,66 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + +} diff --git a/library/Zend/Gdata/YouTube/ContactEntry.php b/library/Zend/Gdata/YouTube/ContactEntry.php new file mode 100644 index 0000000000..50503bfe49 --- /dev/null +++ b/library/Zend/Gdata/YouTube/ContactEntry.php @@ -0,0 +1,136 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_status != null) { + $element->appendChild($this->_status->getDOM($element->ownerDocument)); + } + return $element; + } + + /** + * Creates individual Entry objects of the appropriate type and + * stores them in the $_entry array based upon DOM data. + * + * @param DOMNode $child The DOMNode to process + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('yt') . ':' . 'status': + $status = new Zend_Gdata_YouTube_Extension_Status(); + $status->transferFromDOM($child); + $this->_status = $status; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + /** + * Sets the status + * + * @param Zend_Gdata_YouTube_Extension_Status $status The status + * @return Zend_Gdata_YouTube_ContactEntry Provides a fluent interface + */ + public function setStatus($status = null) + { + $this->_status = $status; + return $this; + } + + /** + * Returns the status + * + * @return Zend_Gdata_YouTube_Extension_Status The status + */ + public function getStatus() + { + return $this->_status; + } + +} diff --git a/library/Zend/Gdata/YouTube/ContactFeed.php b/library/Zend/Gdata/YouTube/ContactFeed.php new file mode 100644 index 0000000000..a072b08b67 --- /dev/null +++ b/library/Zend/Gdata/YouTube/ContactFeed.php @@ -0,0 +1,68 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/AboutMe.php b/library/Zend/Gdata/YouTube/Extension/AboutMe.php new file mode 100644 index 0000000000..9828fa5c13 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/AboutMe.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Age.php b/library/Zend/Gdata/YouTube/Extension/Age.php new file mode 100644 index 0000000000..2cea5a9919 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Age.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Books.php b/library/Zend/Gdata/YouTube/Extension/Books.php new file mode 100644 index 0000000000..d62466f0ac --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Books.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Company.php b/library/Zend/Gdata/YouTube/Extension/Company.php new file mode 100644 index 0000000000..a333e28cc7 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Company.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Control.php b/library/Zend/Gdata/YouTube/Extension/Control.php new file mode 100644 index 0000000000..338544b6cd --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Control.php @@ -0,0 +1,133 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($draft); + $this->_state = $state; + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_state != null) { + $element->appendChild($this->_state->getDOM($element->ownerDocument)); + } + return $element; + } + + /** + * Creates individual Entry objects of the appropriate type and + * stores them as members of this entry based upon DOM data. + * + * @param DOMNode $child The DOMNode to process + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('yt') . ':' . 'state': + $state = new Zend_Gdata_YouTube_Extension_State(); + $state->transferFromDOM($child); + $this->_state = $state; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + /** + * Get the value for this element's state attribute. + * + * @return Zend_Gdata_YouTube_Extension_State The state element. + */ + public function getState() + { + return $this->_state; + } + + /** + * Set the value for this element's state attribute. + * + * @param Zend_Gdata_YouTube_Extension_State $value The desired value for this attribute. + * @return Zend_YouTube_Extension_Control The element being modified. + */ + public function setState($value) + { + $this->_state = $value; + return $this; + } + + /** + * Get the value of this element's state attribute. + * + * @return string The state's text value + */ + public function getStateValue() + { + return $this->getState()->getText(); + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/CountHint.php b/library/Zend/Gdata/YouTube/Extension/CountHint.php new file mode 100644 index 0000000000..98fa6e23d8 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/CountHint.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Description.php b/library/Zend/Gdata/YouTube/Extension/Description.php new file mode 100644 index 0000000000..81b2b8177d --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Description.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Duration.php b/library/Zend/Gdata/YouTube/Extension/Duration.php new file mode 100644 index 0000000000..ae120871b6 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Duration.php @@ -0,0 +1,126 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_seconds = $seconds; + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_seconds !== null) { + $element->setAttribute('seconds', $this->_seconds); + } + return $element; + } + + /** + * Given a DOMNode representing an attribute, tries to map the data into + * instance members. If no mapping is defined, the name and valueare + * stored in an array. + * + * @param DOMNode $attribute The DOMNode attribute needed to be handled + */ + protected function takeAttributeFromDOM($attribute) + { + switch ($attribute->localName) { + case 'seconds': + $this->_seconds = $attribute->nodeValue; + break; + default: + parent::takeAttributeFromDOM($attribute); + } + } + + /** + * Get the value for this element's seconds attribute. + * + * @return int The value associated with this attribute. + */ + public function getSeconds() + { + return $this->_seconds; + } + + /** + * Set the value for this element's seconds attribute. + * + * @param int $value The desired value for this attribute. + * @return Zend_Gdata_YouTube_Extension_Duration The element being modified. + */ + public function setSeconds($value) + { + $this->_seconds = $value; + return $this; + } + + /** + * Magic toString method allows using this directly via echo + * Works best in PHP >= 4.2.0 + * + * @return string The duration in seconds + */ + public function __toString() + { + return $this->_seconds; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/FirstName.php b/library/Zend/Gdata/YouTube/Extension/FirstName.php new file mode 100644 index 0000000000..140816bb59 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/FirstName.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Gender.php b/library/Zend/Gdata/YouTube/Extension/Gender.php new file mode 100644 index 0000000000..98560a443a --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Gender.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Hobbies.php b/library/Zend/Gdata/YouTube/Extension/Hobbies.php new file mode 100644 index 0000000000..e8b905d1f7 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Hobbies.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Hometown.php b/library/Zend/Gdata/YouTube/Extension/Hometown.php new file mode 100644 index 0000000000..f65f5080d5 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Hometown.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/LastName.php b/library/Zend/Gdata/YouTube/Extension/LastName.php new file mode 100644 index 0000000000..76b8c62066 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/LastName.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Link.php b/library/Zend/Gdata/YouTube/Extension/Link.php new file mode 100644 index 0000000000..88cfa6b48c --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Link.php @@ -0,0 +1,133 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($href, $rel, $type, $hrefLang, $title, $length); + $this->_token = $token; + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_token != null) { + $element->appendChild($this->_token->getDOM($element->ownerDocument)); + } + return $element; + } + + /** + * Creates individual Entry objects of the appropriate type and + * stores them as members of this entry based upon DOM data. + * + * @param DOMNode $child The DOMNode to process + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('yt') . ':' . 'token': + $token = new Zend_Gdata_YouTube_Extension_Token(); + $token->transferFromDOM($child); + $this->_token = $token; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + /** + * Get the value for this element's token attribute. + * + * @return Zend_Gdata_YouTube_Extension_Token The token element. + */ + public function getToken() + { + return $this->_token; + } + + /** + * Set the value for this element's token attribute. + * + * @param Zend_Gdata_YouTube_Extension_Token $value The desired value for this attribute. + * @return Zend_YouTube_Extension_Link The element being modified. + */ + public function setToken($value) + { + $this->_token = $value; + return $this; + } + + /** + * Get the value of this element's token attribute. + * + * @return string The token's text value + */ + public function getTokenValue() + { + return $this->getToken()->getText(); + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Location.php b/library/Zend/Gdata/YouTube/Extension/Location.php new file mode 100644 index 0000000000..7c5907bb62 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Location.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/MediaContent.php b/library/Zend/Gdata/YouTube/Extension/MediaContent.php new file mode 100644 index 0000000000..9cad525374 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/MediaContent.php @@ -0,0 +1,120 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_format!= null) { + $element->setAttributeNS($this->lookupNamespace('yt'), 'yt:format', $this->_format); + } + return $element; + } + + /** + * 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) + { + $absoluteAttrName = $attribute->namespaceURI . ':' . $attribute->localName; + if ($absoluteAttrName == $this->lookupNamespace('yt') . ':' . 'format') { + $this->_format = $attribute->nodeValue; + } else { + parent::takeAttributeFromDOM($attribute); + } + } + + /** + * Returns the format of the media + * Optional. + * + * @return int The format of the media + */ + public function getFormat() + { + return $this->_format; + } + + /** + * Sets the format of the media + * + * @param int $value Format of the media + * @return Zend_Gdata_YouTube_Extension_MediaContent Provides a fluent interface + * + */ + public function setFormat($value) + { + $this->_format = $value; + return $this; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/MediaCredit.php b/library/Zend/Gdata/YouTube/Extension/MediaCredit.php new file mode 100644 index 0000000000..b118475fc8 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/MediaCredit.php @@ -0,0 +1,189 @@ +registerAllNamespaces(Zend_Gdata_Media::$namespaces); + parent::__construct(); + $this->_text = $text; + $this->_role = $role; + $this->_scheme = $scheme; + $this->_yttype = $yttype; + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_role !== null) { + $element->setAttribute('role', $this->_role); + } + if ($this->_scheme !== null) { + $element->setAttribute('scheme', $this->_scheme); + } + if ($this->_yttype !== null) { + $element->setAttributeNS('http://gdata.youtube.com/schemas/2007', + 'yt:type', $this->_yttype); + } + return $element; + } + + /** + * 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) + { + switch ($attribute->localName) { + case 'role': + $this->_role = $attribute->nodeValue; + break; + case 'scheme': + $this->_scheme = $attribute->nodeValue; + break; + case 'type': + $this->_yttype = $attribute->nodeValue; + break; + default: + parent::takeAttributeFromDOM($attribute); + } + } + + /** + * @return string + */ + public function getRole() + { + return $this->_role; + } + + /** + * @param string $value + * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent + * interface + */ + public function setRole($value) + { + $this->_role = $value; + return $this; + } + + /** + * @return string + */ + public function getScheme() + { + return $this->_scheme; + } + + /** + * @param string $value + * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent + * interface + */ + public function setScheme($value) + { + $this->_scheme = $value; + return $this; + } + + /** + * @return string + */ + public function getYTtype() + { + return $this->_yttype; + } + + /** + * @param string $value + * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent + * interface + */ + public function setYTtype($value) + { + $this->_yttype = $value; + return $this; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/MediaGroup.php b/library/Zend/Gdata/YouTube/Extension/MediaGroup.php new file mode 100644 index 0000000000..14d70ed478 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/MediaGroup.php @@ -0,0 +1,336 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + + public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_duration !== null) { + $element->appendChild( + $this->_duration->getDOM($element->ownerDocument)); + } + if ($this->_private !== null) { + $element->appendChild( + $this->_private->getDOM($element->ownerDocument)); + } + if ($this->_videoid != null) { + $element->appendChild( + $this->_videoid->getDOM($element->ownerDocument)); + } + if ($this->_uploaded != null) { + $element->appendChild( + $this->_uploaded->getDOM($element->ownerDocument)); + } + if ($this->_mediacredit != null) { + $element->appendChild( + $this->_mediacredit->getDOM($element->ownerDocument)); + } + if ($this->_mediarating != null) { + $element->appendChild( + $this->_mediarating->getDOM($element->ownerDocument)); + } + return $element; + } + + /** + * Creates individual Entry objects of the appropriate type and + * stores them in the $_entry array based upon DOM data. + * + * @param DOMNode $child The DOMNode to process + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('media') . ':' . 'content': + $content = new Zend_Gdata_YouTube_Extension_MediaContent(); + $content->transferFromDOM($child); + $this->_content[] = $content; + break; + case $this->lookupNamespace('media') . ':' . 'rating': + $mediarating = new Zend_Gdata_YouTube_Extension_MediaRating(); + $mediarating->transferFromDOM($child); + $this->_mediarating = $mediarating; + break; + case $this->lookupNamespace('media') . ':' . 'credit': + $mediacredit = new Zend_Gdata_YouTube_Extension_MediaCredit(); + $mediacredit->transferFromDOM($child); + $this->_mediacredit = $mediacredit; + break; + case $this->lookupNamespace('yt') . ':' . 'duration': + $duration = new Zend_Gdata_YouTube_Extension_Duration(); + $duration->transferFromDOM($child); + $this->_duration = $duration; + break; + case $this->lookupNamespace('yt') . ':' . 'private': + $private = new Zend_Gdata_YouTube_Extension_Private(); + $private->transferFromDOM($child); + $this->_private = $private; + break; + case $this->lookupNamespace('yt') . ':' . 'videoid': + $videoid = new Zend_Gdata_YouTube_Extension_VideoId(); + $videoid ->transferFromDOM($child); + $this->_videoid = $videoid; + break; + case $this->lookupNamespace('yt') . ':' . 'uploaded': + $uploaded = new Zend_Gdata_YouTube_Extension_Uploaded(); + $uploaded ->transferFromDOM($child); + $this->_uploaded = $uploaded; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + /** + * Returns the duration value of this element + * + * @return Zend_Gdata_YouTube_Extension_Duration + */ + public function getDuration() + { + return $this->_duration; + } + + /** + * Sets the duration value of this element + * + * @param Zend_Gdata_YouTube_Extension_Duration $value The duration value + * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent + * interface + */ + public function setDuration($value) + { + $this->_duration = $value; + return $this; + } + + /** + * Returns the videoid value of this element + * + * @return Zend_Gdata_YouTube_Extension_VideoId + */ + public function getVideoId() + { + return $this->_videoid; + } + + /** + * Sets the videoid value of this element + * + * @param Zend_Gdata_YouTube_Extension_VideoId $value The video id value + * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent + * interface + */ + public function setVideoId($value) + { + $this->_videoid = $value; + return $this; + } + + /** + * Returns the yt:uploaded element + * + * @return Zend_Gdata_YouTube_Extension_Uploaded + */ + public function getUploaded() + { + return $this->_uploaded; + } + + /** + * Sets the yt:uploaded element + * + * @param Zend_Gdata_YouTube_Extension_Uploaded $value The uploaded value + * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent + * interface + */ + public function setUploaded($value) + { + $this->_uploaded = $value; + return $this; + } + + /** + * Returns the private value of this element + * + * @return Zend_Gdata_YouTube_Extension_Private + */ + public function getPrivate() + { + return $this->_private; + } + + /** + * Sets the private value of this element + * + * @param Zend_Gdata_YouTube_Extension_Private $value The private value + * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent + * interface + */ + public function setPrivate($value) + { + $this->_private = $value; + return $this; + } + + /** + * Returns the rating value of this element + * + * @return Zend_Gdata_YouTube_Extension_MediaRating + */ + public function getMediaRating() + { + return $this->_mediarating; + } + + /** + * Sets the media:rating value of this element + * + * @param Zend_Gdata_YouTube_Extension_MediaRating $value The rating element + * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent + * interface + */ + public function setMediaRating($value) + { + $this->_mediarating = $value; + return $this; + } + + /** + * Returns the media:credit value of this element + * + * @return Zend_Gdata_YouTube_Extension_MediaCredit + */ + public function getMediaCredit() + { + return $this->_mediacredit; + } + + /** + * Sets the media:credit value of this element + * + * @param Zend_Gdata_YouTube_Extension_MediaCredit $value The credit element + * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent + * interface + */ + public function setMediaCredit($value) + { + $this->_mediacredit = $value; + return $this; + } +} diff --git a/library/Zend/Gdata/YouTube/Extension/MediaRating.php b/library/Zend/Gdata/YouTube/Extension/MediaRating.php new file mode 100644 index 0000000000..7acb30789f --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/MediaRating.php @@ -0,0 +1,150 @@ +registerAllNamespaces(Zend_Gdata_Media::$namespaces); + parent::__construct(); + $this->_scheme = $scheme; + $this->_country = $country; + $this->_text = $text; + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_scheme !== null) { + $element->setAttribute('scheme', $this->_scheme); + } + if ($this->_country != null) { + $element->setAttribute('country', $this->_country); + } + return $element; + } + + /** + * 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) + { + switch ($attribute->localName) { + case 'scheme': + $this->_scheme = $attribute->nodeValue; + break; + case 'country': + $this->_country = $attribute->nodeValue; + break; + default: + parent::takeAttributeFromDOM($attribute); + } + } + + /** + * @return string + */ + public function getScheme() + { + return $this->_scheme; + } + + /** + * @param string $value + * @return Zend_Gdata_YouTube_Extension_MediaRating Provides a fluent interface + */ + public function setScheme($value) + { + $this->_scheme = $value; + return $this; + } + + /** + * @return string + */ + public function getCountry() + { + return $this->_country; + } + + /** + * @param string $value + * @return Zend_Gdata_YouTube_Extension_MediaRating Provides a fluent interface + */ + public function setCountry($value) + { + $this->_country = $value; + return $this; + } + + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Movies.php b/library/Zend/Gdata/YouTube/Extension/Movies.php new file mode 100644 index 0000000000..cbf73cf3b2 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Movies.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Music.php b/library/Zend/Gdata/YouTube/Extension/Music.php new file mode 100644 index 0000000000..88eca9df4a --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Music.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/NoEmbed.php b/library/Zend/Gdata/YouTube/Extension/NoEmbed.php new file mode 100644 index 0000000000..e88f270d4a --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/NoEmbed.php @@ -0,0 +1,54 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Occupation.php b/library/Zend/Gdata/YouTube/Extension/Occupation.php new file mode 100644 index 0000000000..f523c4ad99 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Occupation.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/PlaylistId.php b/library/Zend/Gdata/YouTube/Extension/PlaylistId.php new file mode 100644 index 0000000000..a8449a5cca --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/PlaylistId.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/PlaylistTitle.php b/library/Zend/Gdata/YouTube/Extension/PlaylistTitle.php new file mode 100644 index 0000000000..8e3263c2f6 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/PlaylistTitle.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Position.php b/library/Zend/Gdata/YouTube/Extension/Position.php new file mode 100644 index 0000000000..95685f9fdc --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Position.php @@ -0,0 +1,90 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $value; + } + + /** + * Get the value for the position in the playlist + * + * @return int The 1-based position in the playlist + */ + public function getValue() + { + return $this->_text; + } + + /** + * Set the value for the position in the playlist + * + * @param int $value The 1-based position in the playlist + * @return Zend_Gdata_Extension_Visibility The element being modified + */ + public function setValue($value) + { + $this->_text = $value; + return $this; + } + + /** + * Magic toString method allows using this directly via echo + * Works best in PHP >= 4.2.0 + * + * @return string + */ + public function __toString() + { + return $this->getValue(); + } + +} + diff --git a/library/Zend/Gdata/YouTube/Extension/Private.php b/library/Zend/Gdata/YouTube/Extension/Private.php new file mode 100644 index 0000000000..03d375bdc3 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Private.php @@ -0,0 +1,81 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + return $element; + } + + /** + * Given a DOMNode representing an attribute, tries to map the data into + * instance members. If no mapping is defined, the name and valueare + * stored in an array. + * + * @param DOMNode $attribute The DOMNode attribute needed to be handled + */ + protected function takeAttributeFromDOM($attribute) + { + parent::takeAttributeFromDOM($attribute); + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/QueryString.php b/library/Zend/Gdata/YouTube/Extension/QueryString.php new file mode 100644 index 0000000000..55b69b1a36 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/QueryString.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Racy.php b/library/Zend/Gdata/YouTube/Extension/Racy.php new file mode 100644 index 0000000000..7aa3d9296a --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Racy.php @@ -0,0 +1,124 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_state = $state; + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_state !== null) { + $element->setAttribute('state', $this->_state); + } + return $element; + } + + /** + * 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) + { + switch ($attribute->localName) { + case 'state': + $this->_state = $attribute->nodeValue; + break; + default: + parent::takeAttributeFromDOM($attribute); + } + } + + /** + * Get the value for this element's state attribute. + * + * @return bool The value associated with this attribute. + */ + public function getState() + { + return $this->_state; + } + + /** + * Set the value for this element's state attribute. + * + * @param bool $value The desired value for this attribute. + * @return Zend_Gdata_YouTube_Extension_Racy The element being modified. + */ + public function setState($value) + { + $this->_state = $value; + return $this; + } + + /** + * Magic toString method allows using this directly via echo + * Works best in PHP >= 4.2.0 + */ + public function __toString() + { + return $this->_state; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Recorded.php b/library/Zend/Gdata/YouTube/Extension/Recorded.php new file mode 100644 index 0000000000..655a3de1cc --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Recorded.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Relationship.php b/library/Zend/Gdata/YouTube/Extension/Relationship.php new file mode 100644 index 0000000000..563fdd64c4 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Relationship.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/ReleaseDate.php b/library/Zend/Gdata/YouTube/Extension/ReleaseDate.php new file mode 100644 index 0000000000..b4a526179a --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/ReleaseDate.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/School.php b/library/Zend/Gdata/YouTube/Extension/School.php new file mode 100644 index 0000000000..912447f258 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/School.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/State.php b/library/Zend/Gdata/YouTube/Extension/State.php new file mode 100644 index 0000000000..bdc8af0575 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/State.php @@ -0,0 +1,193 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $explanation; + $this->_name = $name; + $this->_reasonCode = $reasonCode; + $this->_helpUrl = $reasonCode; + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_name !== null) { + $element->setAttribute('name', $this->_name); + } + if ($this->_reasonCode !== null) { + $element->setAttribute('reasonCode', $this->_reasonCode); + } + if ($this->_helpUrl !== null) { + $element->setAttribute('helpUrl', $this->_helpUrl); + } + return $element; + } + + /** + * Given a DOMNode representing an attribute, tries to map the data into + * instance members. If no mapping is defined, the name and valueare + * stored in an array. + * TODO: Convert attributes to proper types + * + * @param DOMNode $attribute The DOMNode attribute needed to be handled + */ + protected function takeAttributeFromDOM($attribute) + { + switch ($attribute->localName) { + case 'name': + $this->_name = $attribute->nodeValue; + break; + case 'reasonCode': + $this->_reasonCode = $attribute->nodeValue; + break; + case 'helpUrl': + $this->_helpUrl = $attribute->nodeValue; + break; + default: + parent::takeAttributeFromDOM($attribute); + } + } + + /** + * Get the value for this element's name attribute. + * + * @return int The value associated with this attribute. + */ + public function getName() + { + return $this->_name; + } + + /** + * Set the value for this element's name attribute. + * + * @param int $value The desired value for this attribute. + * @return Zend_Gdata_YouTube_Extension_State The element being modified. + */ + public function setName($value) + { + $this->_name = $value; + return $this; + } + + /** + * Get the value for this element's reasonCode attribute. + * + * @return int The value associated with this attribute. + */ + public function getReasonCode() + { + return $this->_reasonCode; + } + + /** + * Set the value for this element's reasonCode attribute. + * + * @param int $value The desired value for this attribute. + * @return Zend_Gdata_YouTube_Extension_State The element being modified. + */ + public function setReasonCode($value) + { + $this->_reasonCode = $value; + return $this; + } + + /** + * Get the value for this element's helpUrl attribute. + * + * @return int The value associated with this attribute. + */ + public function getHelpUrl() + { + return $this->_helpUrl; + } + + /** + * Set the value for this element's helpUrl attribute. + * + * @param int $value The desired value for this attribute. + * @return Zend_Gdata_YouTube_Extension_State The element being modified. + */ + public function setHelpUrl($value) + { + $this->_helpUrl = $value; + return $this; + } + + /** + * Magic toString method allows using this directly via echo + * Works best in PHP >= 4.2.0 + * + * @return string + */ + public function __toString() + { + return $this->_text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Statistics.php b/library/Zend/Gdata/YouTube/Extension/Statistics.php new file mode 100644 index 0000000000..001c53d9a3 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Statistics.php @@ -0,0 +1,309 @@ + tag appears within a + * user profile entry. + * + * @var integer + */ + protected $_videoWatchCount = null; + + /** + * When the viewCount attribute refers to a video entry, the attribute + * specifies the number of times that the video has been viewed. + * When the viewCount attribute refers to a user profile, the attribute + * specifies the number of times that the user's profile has been + * viewed. + * + * @var integer + */ + protected $_viewCount = null; + + /** + * The subscriberCount attribute specifies the number of YouTube users + * who have subscribed to a particular user's YouTube channel. + * The subscriberCount attribute is only specified when the + * tag appears within a user profile entry. + * + * @var integer + */ + protected $_subscriberCount = null; + + /** + * The lastWebAccess attribute indicates the most recent time that + * a particular user used YouTube. + * + * @var string + */ + protected $_lastWebAccess = null; + + /** + * The favoriteCount attribute specifies the number of YouTube users + * who have added a video to their list of favorite videos. The + * favoriteCount attribute is only specified when the + * tag appears within a video entry. + * + * @var integer + */ + protected $_favoriteCount = null; + + /** + * Constructs a new Zend_Gdata_YouTube_Extension_Statistics object. + * @param string $viewCount(optional) The viewCount value + * @param string $videoWatchCount(optional) The videoWatchCount value + * @param string $subscriberCount(optional) The subscriberCount value + * @param string $lastWebAccess(optional) The lastWebAccess value + * @param string $favoriteCount(optional) The favoriteCount value + */ + public function __construct($viewCount = null, $videoWatchCount = null, + $subscriberCount = null, $lastWebAccess = null, + $favoriteCount = null) + { + $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_viewCount = $viewCount; + $this->_videoWatchCount = $videoWatchCount; + $this->_subscriberCount = $subscriberCount; + $this->_lastWebAccess = $lastWebAccess; + $this->_favoriteCount = $favoriteCount; + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_videoWatchCount !== null) { + $element->setAttribute('watchCount', $this->_videoWatchCount); + } + if ($this->_viewCount !== null) { + $element->setAttribute('viewCount', $this->_viewCount); + } + if ($this->_subscriberCount !== null) { + $element->setAttribute('subscriberCount', + $this->_subscriberCount); + } + if ($this->_lastWebAccess !== null) { + $element->setAttribute('lastWebAccess', + $this->_lastWebAccess); + } + if ($this->_favoriteCount !== null) { + $element->setAttribute('favoriteCount', + $this->_favoriteCount); + } + return $element; + } + + /** + * Given a DOMNode representing an attribute, tries to map the data into + * instance members. If no mapping is defined, the name and valueare + * stored in an array. + * TODO: Convert attributes to proper types + * + * @param DOMNode $attribute The DOMNode attribute needed to be handled + */ + protected function takeAttributeFromDOM($attribute) + { + switch ($attribute->localName) { + case 'videoWatchCount': + $this->_videoWatchCount = $attribute->nodeValue; + break; + case 'viewCount': + $this->_viewCount = $attribute->nodeValue; + break; + case 'subscriberCount': + $this->_subscriberCount = $attribute->nodeValue; + break; + case 'lastWebAccess': + $this->_lastWebAccess = $attribute->nodeValue; + break; + case 'favoriteCount': + $this->_favoriteCount = $attribute->nodeValue; + break; + default: + parent::takeAttributeFromDOM($attribute); + } + } + + /** + * Get the value for this element's viewCount attribute. + * + * @return int The value associated with this attribute. + */ + public function getViewCount() + { + return $this->_viewCount; + } + + /** + * Set the value for this element's viewCount attribute. + * + * @param int $value The desired value for this attribute. + * @return Zend_Gdata_YouTube_Extension_Statistics The element being + * modified. + */ + public function setViewCount($value) + { + $this->_viewCount = $value; + return $this; + } + + /** + * Get the value for this element's videoWatchCount attribute. + * + * @return int The value associated with this attribute. + */ + public function getVideoWatchCount() + { + return $this->_videoWatchCount; + } + + /** + * Set the value for this element's videoWatchCount attribute. + * + * @param int $value The desired value for this attribute. + * @return Zend_Gdata_YouTube_Extension_Statistics The element being + * modified. + */ + public function setVideoWatchCount($value) + { + $this->_videoWatchCount = $value; + return $this; + } + + /** + * Get the value for this element's subscriberCount attribute. + * + * @return int The value associated with this attribute. + */ + public function getSubscriberCount() + { + return $this->_subscriberCount; + } + + /** + * Set the value for this element's subscriberCount attribute. + * + * @param int $value The desired value for this attribute. + * @return Zend_Gdata_YouTube_Extension_Statistics The element being + * modified. + */ + public function setSubscriberCount($value) + { + $this->_subscriberCount = $value; + return $this; + } + + /** + * Get the value for this element's lastWebAccess attribute. + * + * @return int The value associated with this attribute. + */ + public function getLastWebAccess() + { + return $this->_lastWebAccess; + } + + /** + * Set the value for this element's lastWebAccess attribute. + * + * @param int $value The desired value for this attribute. + * @return Zend_Gdata_YouTube_Extension_Statistics The element being + * modified. + */ + public function setLastWebAccess($value) + { + $this->_lastWebAccess = $value; + return $this; + } + + /** + * Get the value for this element's favoriteCount attribute. + * + * @return int The value associated with this attribute. + */ + public function getFavoriteCount() + { + return $this->_favoriteCount; + } + + /** + * Set the value for this element's favoriteCount attribute. + * + * @param int $value The desired value for this attribute. + * @return Zend_Gdata_YouTube_Extension_Statistics The element being + * modified. + */ + public function setFavoriteCount($value) + { + $this->_favoriteCount = $value; + return $this; + } + + /** + * Magic toString method allows using this directly via echo + * Works best in PHP >= 4.2.0 + * + * @return string + */ + public function __toString() + { + return 'View Count=' . $this->_viewCount . + ' VideoWatchCount=' . $this->_videoWatchCount . + ' SubscriberCount=' . $this->_subscriberCount . + ' LastWebAccess=' . $this->_lastWebAccess . + ' FavoriteCount=' . $this->_favoriteCount; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Status.php b/library/Zend/Gdata/YouTube/Extension/Status.php new file mode 100644 index 0000000000..ff252767df --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Status.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Token.php b/library/Zend/Gdata/YouTube/Extension/Token.php new file mode 100644 index 0000000000..4ddf4b2daa --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Token.php @@ -0,0 +1,70 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + return $element; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Uploaded.php b/library/Zend/Gdata/YouTube/Extension/Uploaded.php new file mode 100644 index 0000000000..3a51a485e8 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Uploaded.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/Username.php b/library/Zend/Gdata/YouTube/Extension/Username.php new file mode 100644 index 0000000000..b4891830d7 --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/Username.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/Extension/VideoId.php b/library/Zend/Gdata/YouTube/Extension/VideoId.php new file mode 100644 index 0000000000..81c3e3197f --- /dev/null +++ b/library/Zend/Gdata/YouTube/Extension/VideoId.php @@ -0,0 +1,51 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct(); + $this->_text = $text; + } + +} diff --git a/library/Zend/Gdata/YouTube/InboxEntry.php b/library/Zend/Gdata/YouTube/InboxEntry.php new file mode 100644 index 0000000000..46a1d2f81d --- /dev/null +++ b/library/Zend/Gdata/YouTube/InboxEntry.php @@ -0,0 +1,281 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_description != null) { + $element->appendChild( + $this->_description->getDOM($element->ownerDocument)); + } + if ($this->_rating != null) { + $element->appendChild( + $this->_rating->getDOM($element->ownerDocument)); + } + if ($this->_statistics != null) { + $element->appendChild( + $this->_statistics->getDOM($element->ownerDocument)); + } + if ($this->_comments != null) { + $element->appendChild( + $this->_comments->getDOM($element->ownerDocument)); + } + return $element; + } + + /** + * Creates individual Entry objects of the appropriate type and + * stores them in the $_entry array based upon DOM data. + * + * @param DOMNode $child The DOMNode to process + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('gd') . ':' . 'comments': + $comments = new Zend_Gdata_Extension_Comments(); + $comments->transferFromDOM($child); + $this->_comments = $comments; + break; + case $this->lookupNamespace('gd') . ':' . 'rating': + $rating = new Zend_Gdata_Extension_Rating(); + $rating->transferFromDOM($child); + $this->_rating = $rating; + break; + case $this->lookupNamespace('yt') . ':' . 'description': + $description = new Zend_Gdata_YouTube_Extension_Description(); + $description->transferFromDOM($child); + $this->_description = $description; + break; + case $this->lookupNamespace('yt') . ':' . 'statistics': + $statistics = new Zend_Gdata_YouTube_Extension_Statistics(); + $statistics->transferFromDOM($child); + $this->_statistics = $statistics; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + /** + * Get the yt:description + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_Extension_Description|null + */ + public function getDescription() + { + if ($this->getMajorProtocolVersion() == 2) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The getDescription ' . + ' method is only supported in version 1 of the YouTube ' . + 'API.'); + } else { + return $this->_description; + } + } + + /** + * Sets the yt:description element for a new inbox entry. + * + * @param Zend_Gdata_YouTube_Extension_Description $description The + * description. + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_InboxEntry Provides a fluent interface + */ + public function setDescription($description = null) + { + if ($this->getMajorProtocolVersion() == 2) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The setDescription ' . + ' method is only supported in version 1 of the YouTube ' . + 'API.'); + } else { + $this->_description = $description; + return $this; + } + } + + /** + * Get the gd:rating element for the inbox entry + * + * @return Zend_Gdata_Extension_Rating|null + */ + public function getRating() + { + return $this->_rating; + } + + /** + * Sets the gd:rating element for the inbox entry + * + * @param Zend_Gdata_Extension_Rating $rating The rating for the video in + * the message + * @return Zend_Gdata_YouTube_InboxEntry Provides a fluent interface + */ + public function setRating($rating = null) + { + $this->_rating = $rating; + return $this; + } + + /** + * Get the gd:comments element of the inbox entry. + * + * @return Zend_Gdata_Extension_Comments|null + */ + public function getComments() + { + return $this->_comments; + } + + /** + * Sets the gd:comments element for the inbox entry + * + * @param Zend_Gdata_Extension_Comments $comments The comments feed link + * @return Zend_Gdata_YouTube_InboxEntry Provides a fluent interface + */ + public function setComments($comments = null) + { + $this->_comments = $comments; + return $this; + } + + /** + * Get the yt:statistics element for the inbox entry + * + * @return Zend_Gdata_YouTube_Extension_Statistics|null + */ + public function getStatistics() + { + return $this->_statistics; + } + + /** + * Sets the yt:statistics element for the inbox entry + * + * @param Zend_Gdata_YouTube_Extension_Statistics $statistics The + * statistics element for the video in the message + * @return Zend_Gdata_YouTube_InboxEntry Provides a fluent interface + */ + public function setStatistics($statistics = null) + { + $this->_statistics = $statistics; + return $this; + } + + +} diff --git a/library/Zend/Gdata/YouTube/InboxFeed.php b/library/Zend/Gdata/YouTube/InboxFeed.php new file mode 100644 index 0000000000..e30b343252 --- /dev/null +++ b/library/Zend/Gdata/YouTube/InboxFeed.php @@ -0,0 +1,68 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + +} diff --git a/library/Zend/Gdata/YouTube/MediaEntry.php b/library/Zend/Gdata/YouTube/MediaEntry.php new file mode 100644 index 0000000000..7356dd18cb --- /dev/null +++ b/library/Zend/Gdata/YouTube/MediaEntry.php @@ -0,0 +1,81 @@ +namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('media') . ':' . 'group': + $mediaGroup = new Zend_Gdata_YouTube_Extension_MediaGroup(); + $mediaGroup->transferFromDOM($child); + $this->_mediaGroup = $mediaGroup; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + +} diff --git a/library/Zend/Gdata/YouTube/PlaylistListEntry.php b/library/Zend/Gdata/YouTube/PlaylistListEntry.php new file mode 100644 index 0000000000..1fc44f5047 --- /dev/null +++ b/library/Zend/Gdata/YouTube/PlaylistListEntry.php @@ -0,0 +1,300 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_description != null) { + $element->appendChild($this->_description->getDOM($element->ownerDocument)); + } + if ($this->_countHint != null) { + $element->appendChild($this->_countHint->getDOM($element->ownerDocument)); + } + if ($this->_playlistId != null) { + $element->appendChild($this->_playlistId->getDOM($element->ownerDocument)); + } + if ($this->_feedLink != null) { + foreach ($this->_feedLink as $feedLink) { + $element->appendChild($feedLink->getDOM($element->ownerDocument)); + } + } + return $element; + } + + /** + * Creates individual Entry objects of the appropriate type and + * stores them in the $_entry array based upon DOM data. + * + * @param DOMNode $child The DOMNode to process + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('yt') . ':' . 'description': + $description = new Zend_Gdata_YouTube_Extension_Description(); + $description->transferFromDOM($child); + $this->_description = $description; + break; + case $this->lookupNamespace('yt') . ':' . 'countHint': + $countHint = new Zend_Gdata_YouTube_Extension_CountHint(); + $countHint->transferFromDOM($child); + $this->_countHint = $countHint; + break; + case $this->lookupNamespace('yt') . ':' . 'playlistId': + $playlistId = new Zend_Gdata_YouTube_Extension_PlaylistId(); + $playlistId->transferFromDOM($child); + $this->_playlistId = $playlistId; + break; + case $this->lookupNamespace('gd') . ':' . 'feedLink': + $feedLink = new Zend_Gdata_Extension_FeedLink(); + $feedLink->transferFromDOM($child); + $this->_feedLink[] = $feedLink; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + /** + * Sets the description relating to the playlist. + * + * @deprecated Deprecated as of version 2 of the YouTube API. + * @param Zend_Gdata_YouTube_Extension_Description $description The description relating to the video + * @return Zend_Gdata_YouTube_PlaylistListEntry Provides a fluent interface + */ + public function setDescription($description = null) + { + if ($this->getMajorProtocolVersion() >= 2) { + $this->setSummary($description); + } else { + $this->_description = $description; + } + return $this; + } + + /** + * Returns the description relating to the video. + * + * @return Zend_Gdata_YouTube_Extension_Description The description + * relating to the video + */ + public function getDescription() + { + if ($this->getMajorProtocolVersion() >= 2) { + return $this->getSummary(); + } else { + return $this->_description; + } + } + + /** + * Returns the countHint relating to the playlist. + * + * The countHint is the number of videos on a playlist. + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_Extension_CountHint The count of videos on + * a playlist. + */ + public function getCountHint() + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The yt:countHint ' . + 'element is not supported in versions earlier than 2.'); + } else { + return $this->_countHint; + } + } + + /** + * Returns the Id relating to the playlist. + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_Extension_PlaylistId The id of this playlist. + */ + public function getPlaylistId() + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The yt:playlistId ' . + 'element is not supported in versions earlier than 2.'); + } else { + return $this->_playlistId; + } + } + + /** + * Sets the array of embedded feeds related to the playlist + * + * @param array $feedLink The array of embedded feeds relating to the video + * @return Zend_Gdata_YouTube_PlaylistListEntry Provides a fluent interface + */ + public function setFeedLink($feedLink = null) + { + $this->_feedLink = $feedLink; + return $this; + } + + /** + * Get the feed link property for this entry. + * + * @see setFeedLink + * @param string $rel (optional) The rel value of the link to be found. + * If null, the array of links is returned. + * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink + * object corresponding to the requested rel value is returned + * if found, or null if the requested value is not found. If + * $rel is null or not specified, an array of all available + * feed links for this entry is returned, or null if no feed + * links are set. + */ + public function getFeedLink($rel = null) + { + if ($rel == null) { + return $this->_feedLink; + } else { + foreach ($this->_feedLink as $feedLink) { + if ($feedLink->rel == $rel) { + return $feedLink; + } + } + return null; + } + } + + /** + * Returns the URL of the playlist video feed + * + * @return string The URL of the playlist video feed + */ + public function getPlaylistVideoFeedUrl() + { + if ($this->getMajorProtocolVersion() >= 2) { + return $this->getContent()->getSrc(); + } else { + return $this->getFeedLink(Zend_Gdata_YouTube::PLAYLIST_REL)->href; + } + } + +} diff --git a/library/Zend/Gdata/YouTube/PlaylistListFeed.php b/library/Zend/Gdata/YouTube/PlaylistListFeed.php new file mode 100644 index 0000000000..6fbe006e06 --- /dev/null +++ b/library/Zend/Gdata/YouTube/PlaylistListFeed.php @@ -0,0 +1,68 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + +} diff --git a/library/Zend/Gdata/YouTube/PlaylistVideoEntry.php b/library/Zend/Gdata/YouTube/PlaylistVideoEntry.php new file mode 100644 index 0000000000..79c59a82da --- /dev/null +++ b/library/Zend/Gdata/YouTube/PlaylistVideoEntry.php @@ -0,0 +1,132 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_position !== null) { + $element->appendChild($this->_position->getDOM($element->ownerDocument)); + } + return $element; + } + + /** + * Creates individual Entry objects of the appropriate type and + * stores them in the $_entry array based upon DOM data. + * + * @param DOMNode $child The DOMNode to process + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('yt') . ':' . 'position': + $position = new Zend_Gdata_YouTube_Extension_Position(); + $position->transferFromDOM($child); + $this->_position = $position; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + + /** + * Sets the array of embedded feeds related to the video + * + * @param Zend_Gdata_YouTube_Extension_Position $position + * The position of the entry in the feed, as specified by the user. + * @return Zend_Gdata_YouTube_PlaylistVideoEntry Provides a fluent interface + */ + public function setPosition($position = null) + { + $this->_position = $position; + return $this; + } + + /** + * Returns the position of the entry in the feed, as specified by the user + * + * @return Zend_Gdata_YouTube_Extension_Position The position + */ + public function getPosition() + { + return $this->_position; + } + +} diff --git a/library/Zend/Gdata/YouTube/PlaylistVideoFeed.php b/library/Zend/Gdata/YouTube/PlaylistVideoFeed.php new file mode 100644 index 0000000000..e4b2b1bdf1 --- /dev/null +++ b/library/Zend/Gdata/YouTube/PlaylistVideoFeed.php @@ -0,0 +1,68 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + +} diff --git a/library/Zend/Gdata/YouTube/SubscriptionEntry.php b/library/Zend/Gdata/YouTube/SubscriptionEntry.php new file mode 100644 index 0000000000..5ae402ef37 --- /dev/null +++ b/library/Zend/Gdata/YouTube/SubscriptionEntry.php @@ -0,0 +1,446 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_countHint != null) { + $element->appendChild($this->_countHint->getDOM($element->ownerDocument)); + } + if ($this->_playlistTitle != null) { + $element->appendChild($this->_playlistTitle->getDOM($element->ownerDocument)); + } + if ($this->_playlistId != null) { + $element->appendChild($this->_playlistId->getDOM($element->ownerDocument)); + } + if ($this->_mediaThumbnail != null) { + $element->appendChild($this->_mediaThumbnail->getDOM($element->ownerDocument)); + } + if ($this->_username != null) { + $element->appendChild($this->_username->getDOM($element->ownerDocument)); + } + if ($this->_queryString != null) { + $element->appendChild($this->_queryString->getDOM($element->ownerDocument)); + } + if ($this->_feedLink != null) { + foreach ($this->_feedLink as $feedLink) { + $element->appendChild($feedLink->getDOM($element->ownerDocument)); + } + } + return $element; + } + + /** + * Creates individual Entry objects of the appropriate type and + * stores them in the $_entry array based upon DOM data. + * + * @param DOMNode $child The DOMNode to process + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('gd') . ':' . 'feedLink': + $feedLink = new Zend_Gdata_Extension_FeedLink(); + $feedLink->transferFromDOM($child); + $this->_feedLink[] = $feedLink; + break; + case $this->lookupNamespace('media') . ':' . 'thumbnail': + $mediaThumbnail = new Zend_Gdata_Media_Extension_MediaThumbnail(); + $mediaThumbnail->transferFromDOM($child); + $this->_mediaThumbnail = $mediaThumbnail; + break; + case $this->lookupNamespace('yt') . ':' . 'countHint': + $countHint = new Zend_Gdata_YouTube_Extension_CountHint(); + $countHint->transferFromDOM($child); + $this->_countHint = $countHint; + break; + case $this->lookupNamespace('yt') . ':' . 'playlistTitle': + $playlistTitle = new Zend_Gdata_YouTube_Extension_PlaylistTitle(); + $playlistTitle->transferFromDOM($child); + $this->_playlistTitle = $playlistTitle; + break; + case $this->lookupNamespace('yt') . ':' . 'playlistId': + $playlistId = new Zend_Gdata_YouTube_Extension_PlaylistId(); + $playlistId->transferFromDOM($child); + $this->_playlistId = $playlistId; + break; + case $this->lookupNamespace('yt') . ':' . 'queryString': + $queryString = new Zend_Gdata_YouTube_Extension_QueryString(); + $queryString->transferFromDOM($child); + $this->_queryString = $queryString; + break; + case $this->lookupNamespace('yt') . ':' . 'username': + $username = new Zend_Gdata_YouTube_Extension_Username(); + $username->transferFromDOM($child); + $this->_username = $username; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + /** + * Sets the array of embedded feeds related to the video + * + * @param array $feedLink The array of embedded feeds relating to the video + * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface + */ + public function setFeedLink($feedLink = null) + { + $this->_feedLink = $feedLink; + return $this; + } + + /** + * Get the feed link property for this entry. + * + * @see setFeedLink + * @param string $rel (optional) The rel value of the link to be found. + * If null, the array of links is returned. + * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink + * object corresponding to the requested rel value is returned + * if found, or null if the requested value is not found. If + * $rel is null or not specified, an array of all available + * feed links for this entry is returned, or null if no feed + * links are set. + */ + public function getFeedLink($rel = null) + { + if ($rel == null) { + return $this->_feedLink; + } else { + foreach ($this->_feedLink as $feedLink) { + if ($feedLink->rel == $rel) { + return $feedLink; + } + } + return null; + } + } + + /** + * Get the playlist title for a 'playlist' subscription. + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_Extension_PlaylistId + */ + public function getPlaylistId() + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The getPlaylistId ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + return $this->_playlistId; + } + } + + /** + * Sets the yt:playlistId element for a new playlist subscription. + * + * @param Zend_Gdata_YouTube_Extension_PlaylistId $id The id of + * the playlist to which to subscribe to. + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface + */ + public function setPlaylistId($id = null) + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The setPlaylistTitle ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + $this->_playlistId = $id; + return $this; + } + } + + /** + * Get the queryString of the subscription + * + * @return Zend_Gdata_YouTube_Extension_QueryString + */ + public function getQueryString() + { + return $this->_queryString; + } + + /** + * Sets the yt:queryString element for a new keyword subscription. + * + * @param Zend_Gdata_YouTube_Extension_QueryString $queryString The query + * string to subscribe to + * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface + */ + public function setQueryString($queryString = null) + { + $this->_queryString = $queryString; + return $this; + } + + /** + * Get the playlist title for a 'playlist' subscription. + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_Extension_PlaylistTitle + */ + public function getPlaylistTitle() + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The getPlaylistTitle ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + return $this->_playlistTitle; + } + } + + /** + * Sets the yt:playlistTitle element for a new playlist subscription. + * + * @param Zend_Gdata_YouTube_Extension_PlaylistTitle $title The title of + * the playlist to which to subscribe to. + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface + */ + public function setPlaylistTitle($title = null) + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The setPlaylistTitle ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + $this->_playlistTitle = $title; + return $this; + } + } + + /** + * Get the counthint for a subscription. + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_Extension_CountHint + */ + public function getCountHint() + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The getCountHint ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + return $this->_countHint; + } + } + + /** + * Get the thumbnail for a subscription. + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_Media_Extension_MediaThumbnail + */ + public function getMediaThumbnail() + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The getMediaThumbnail ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + return $this->_mediaThumbnail; + } + } + + /** + * Get the username for a channel subscription. + * + * @return Zend_Gdata_YouTube_Extension_Username + */ + public function getUsername() + { + return $this->_username; + } + + /** + * Sets the username for a new channel subscription. + * + * @param Zend_Gdata_YouTube_Extension_Username $username The username of + * the channel to which to subscribe to. + * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface + */ + public function setUsername($username = null) + { + $this->_username = $username; + return $this; + } + +} diff --git a/library/Zend/Gdata/YouTube/SubscriptionFeed.php b/library/Zend/Gdata/YouTube/SubscriptionFeed.php new file mode 100644 index 0000000000..6800c83933 --- /dev/null +++ b/library/Zend/Gdata/YouTube/SubscriptionFeed.php @@ -0,0 +1,68 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + +} diff --git a/library/Zend/Gdata/YouTube/UserProfileEntry.php b/library/Zend/Gdata/YouTube/UserProfileEntry.php new file mode 100644 index 0000000000..4b859f6619 --- /dev/null +++ b/library/Zend/Gdata/YouTube/UserProfileEntry.php @@ -0,0 +1,1041 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_description != null) { + $element->appendChild($this->_description->getDOM($element->ownerDocument)); + } + if ($this->_aboutMe != null) { + $element->appendChild($this->_aboutMe->getDOM($element->ownerDocument)); + } + if ($this->_age != null) { + $element->appendChild($this->_age->getDOM($element->ownerDocument)); + } + if ($this->_username != null) { + $element->appendChild($this->_username->getDOM($element->ownerDocument)); + } + if ($this->_books != null) { + $element->appendChild($this->_books->getDOM($element->ownerDocument)); + } + if ($this->_company != null) { + $element->appendChild($this->_company->getDOM($element->ownerDocument)); + } + if ($this->_hobbies != null) { + $element->appendChild($this->_hobbies->getDOM($element->ownerDocument)); + } + if ($this->_hometown != null) { + $element->appendChild($this->_hometown->getDOM($element->ownerDocument)); + } + if ($this->_location != null) { + $element->appendChild($this->_location->getDOM($element->ownerDocument)); + } + if ($this->_movies != null) { + $element->appendChild($this->_movies->getDOM($element->ownerDocument)); + } + if ($this->_music != null) { + $element->appendChild($this->_music->getDOM($element->ownerDocument)); + } + if ($this->_occupation != null) { + $element->appendChild($this->_occupation->getDOM($element->ownerDocument)); + } + if ($this->_school != null) { + $element->appendChild($this->_school->getDOM($element->ownerDocument)); + } + if ($this->_gender != null) { + $element->appendChild($this->_gender->getDOM($element->ownerDocument)); + } + if ($this->_relationship != null) { + $element->appendChild($this->_relationship->getDOM($element->ownerDocument)); + } + if ($this->_firstName != null) { + $element->appendChild($this->_firstName->getDOM($element->ownerDocument)); + } + if ($this->_lastName != null) { + $element->appendChild($this->_lastName->getDOM($element->ownerDocument)); + } + if ($this->_statistics != null) { + $element->appendChild($this->_statistics->getDOM($element->ownerDocument)); + } + if ($this->_thumbnail != null) { + $element->appendChild($this->_thumbnail->getDOM($element->ownerDocument)); + } + if ($this->_feedLink != null) { + foreach ($this->_feedLink as $feedLink) { + $element->appendChild($feedLink->getDOM($element->ownerDocument)); + } + } + return $element; + } + + /** + * Creates individual Entry objects of the appropriate type and + * stores them in the $_entry array based upon DOM data. + * + * @param DOMNode $child The DOMNode to process + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + switch ($absoluteNodeName) { + case $this->lookupNamespace('yt') . ':' . 'description': + $description = new Zend_Gdata_YouTube_Extension_Description(); + $description->transferFromDOM($child); + $this->_description = $description; + break; + case $this->lookupNamespace('yt') . ':' . 'aboutMe': + $aboutMe = new Zend_Gdata_YouTube_Extension_AboutMe(); + $aboutMe->transferFromDOM($child); + $this->_aboutMe = $aboutMe; + break; + case $this->lookupNamespace('yt') . ':' . 'age': + $age = new Zend_Gdata_YouTube_Extension_Age(); + $age->transferFromDOM($child); + $this->_age = $age; + break; + case $this->lookupNamespace('yt') . ':' . 'username': + $username = new Zend_Gdata_YouTube_Extension_Username(); + $username->transferFromDOM($child); + $this->_username = $username; + break; + case $this->lookupNamespace('yt') . ':' . 'books': + $books = new Zend_Gdata_YouTube_Extension_Books(); + $books->transferFromDOM($child); + $this->_books = $books; + break; + case $this->lookupNamespace('yt') . ':' . 'company': + $company = new Zend_Gdata_YouTube_Extension_Company(); + $company->transferFromDOM($child); + $this->_company = $company; + break; + case $this->lookupNamespace('yt') . ':' . 'hobbies': + $hobbies = new Zend_Gdata_YouTube_Extension_Hobbies(); + $hobbies->transferFromDOM($child); + $this->_hobbies = $hobbies; + break; + case $this->lookupNamespace('yt') . ':' . 'hometown': + $hometown = new Zend_Gdata_YouTube_Extension_Hometown(); + $hometown->transferFromDOM($child); + $this->_hometown = $hometown; + break; + case $this->lookupNamespace('yt') . ':' . 'location': + $location = new Zend_Gdata_YouTube_Extension_Location(); + $location->transferFromDOM($child); + $this->_location = $location; + break; + case $this->lookupNamespace('yt') . ':' . 'movies': + $movies = new Zend_Gdata_YouTube_Extension_Movies(); + $movies->transferFromDOM($child); + $this->_movies = $movies; + break; + case $this->lookupNamespace('yt') . ':' . 'music': + $music = new Zend_Gdata_YouTube_Extension_Music(); + $music->transferFromDOM($child); + $this->_music = $music; + break; + case $this->lookupNamespace('yt') . ':' . 'occupation': + $occupation = new Zend_Gdata_YouTube_Extension_Occupation(); + $occupation->transferFromDOM($child); + $this->_occupation = $occupation; + break; + case $this->lookupNamespace('yt') . ':' . 'school': + $school = new Zend_Gdata_YouTube_Extension_School(); + $school->transferFromDOM($child); + $this->_school = $school; + break; + case $this->lookupNamespace('yt') . ':' . 'gender': + $gender = new Zend_Gdata_YouTube_Extension_Gender(); + $gender->transferFromDOM($child); + $this->_gender = $gender; + break; + case $this->lookupNamespace('yt') . ':' . 'relationship': + $relationship = new Zend_Gdata_YouTube_Extension_Relationship(); + $relationship->transferFromDOM($child); + $this->_relationship = $relationship; + break; + case $this->lookupNamespace('yt') . ':' . 'firstName': + $firstName = new Zend_Gdata_YouTube_Extension_FirstName(); + $firstName->transferFromDOM($child); + $this->_firstName = $firstName; + break; + case $this->lookupNamespace('yt') . ':' . 'lastName': + $lastName = new Zend_Gdata_YouTube_Extension_LastName(); + $lastName->transferFromDOM($child); + $this->_lastName = $lastName; + break; + case $this->lookupNamespace('yt') . ':' . 'statistics': + $statistics = new Zend_Gdata_YouTube_Extension_Statistics(); + $statistics->transferFromDOM($child); + $this->_statistics = $statistics; + break; + case $this->lookupNamespace('media') . ':' . 'thumbnail': + $thumbnail = new Zend_Gdata_Media_Extension_MediaThumbnail(); + $thumbnail->transferFromDOM($child); + $this->_thumbnail = $thumbnail; + break; + case $this->lookupNamespace('gd') . ':' . 'feedLink': + $feedLink = new Zend_Gdata_Extension_FeedLink(); + $feedLink->transferFromDOM($child); + $this->_feedLink[] = $feedLink; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + /** + * Sets the content of the 'about me' field. + * + * @param Zend_Gdata_YouTube_Extension_AboutMe $aboutMe The 'about me' + * information. + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setAboutMe($aboutMe = null) + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The setAboutMe ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + $this->_aboutMe = $aboutMe; + return $this; + } + } + + /** + * Returns the contents of the 'about me' field. + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_Extension_AboutMe The 'about me' information + */ + public function getAboutMe() + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The getAboutMe ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + return $this->_aboutMe; + } + } + + /** + * Sets the content of the 'first name' field. + * + * @param Zend_Gdata_YouTube_Extension_FirstName $firstName The first name + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setFirstName($firstName = null) + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The setFirstName ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + $this->_firstName = $firstName; + return $this; + } + } + + /** + * Returns the first name + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_Extension_FirstName The first name + */ + public function getFirstName() + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The getFirstName ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + return $this->_firstName; + } + } + + /** + * Sets the content of the 'last name' field. + * + * @param Zend_Gdata_YouTube_Extension_LastName $lastName The last name + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setLastName($lastName = null) + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The setLastName ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + $this->_lastName = $lastName; + return $this; + } + } + + /** + * Returns the last name + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_Extension_LastName The last name + */ + public function getLastName() + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The getLastName ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + return $this->_lastName; + } + } + + /** + * Returns the statistics + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_Extension_Statistics The profile statistics + */ + public function getStatistics() + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The getStatistics ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + return $this->_statistics; + } + } + + /** + * Returns the thumbnail + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_Media_Extension_MediaThumbnail The profile thumbnail + */ + public function getThumbnail() + { + if (($this->getMajorProtocolVersion() == null) || + ($this->getMajorProtocolVersion() == 1)) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException('The getThumbnail ' . + ' method is only supported as of version 2 of the YouTube ' . + 'API.'); + } else { + return $this->_thumbnail; + } + } + + /** + * Sets the age + * + * @param Zend_Gdata_YouTube_Extension_Age $age The age + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setAge($age = null) + { + $this->_age = $age; + return $this; + } + + /** + * Returns the age + * + * @return Zend_Gdata_YouTube_Extension_Age The age + */ + public function getAge() + { + return $this->_age; + } + + /** + * Sets the username + * + * @param Zend_Gdata_YouTube_Extension_Username $username The username + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setUsername($username = null) + { + $this->_username = $username; + return $this; + } + + /** + * Returns the username + * + * @return Zend_Gdata_YouTube_Extension_Username The username + */ + public function getUsername() + { + return $this->_username; + } + + /** + * Sets the books + * + * @param Zend_Gdata_YouTube_Extension_Books $books The books + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setBooks($books = null) + { + $this->_books = $books; + return $this; + } + + /** + * Returns the books + * + * @return Zend_Gdata_YouTube_Extension_Books The books + */ + public function getBooks() + { + return $this->_books; + } + + /** + * Sets the company + * + * @param Zend_Gdata_YouTube_Extension_Company $company The company + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setCompany($company = null) + { + $this->_company = $company; + return $this; + } + + /** + * Returns the company + * + * @return Zend_Gdata_YouTube_Extension_Company The company + */ + public function getCompany() + { + return $this->_company; + } + + /** + * Sets the hobbies + * + * @param Zend_Gdata_YouTube_Extension_Hobbies $hobbies The hobbies + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setHobbies($hobbies = null) + { + $this->_hobbies = $hobbies; + return $this; + } + + /** + * Returns the hobbies + * + * @return Zend_Gdata_YouTube_Extension_Hobbies The hobbies + */ + public function getHobbies() + { + return $this->_hobbies; + } + + /** + * Sets the hometown + * + * @param Zend_Gdata_YouTube_Extension_Hometown $hometown The hometown + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setHometown($hometown = null) + { + $this->_hometown = $hometown; + return $this; + } + + /** + * Returns the hometown + * + * @return Zend_Gdata_YouTube_Extension_Hometown The hometown + */ + public function getHometown() + { + return $this->_hometown; + } + + /** + * Sets the location + * + * @param Zend_Gdata_YouTube_Extension_Location $location The location + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setLocation($location = null) + { + $this->_location = $location; + return $this; + } + + /** + * Returns the location + * + * @return Zend_Gdata_YouTube_Extension_Location The location + */ + public function getLocation() + { + return $this->_location; + } + + /** + * Sets the movies + * + * @param Zend_Gdata_YouTube_Extension_Movies $movies The movies + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setMovies($movies = null) + { + $this->_movies = $movies; + return $this; + } + + /** + * Returns the movies + * + * @return Zend_Gdata_YouTube_Extension_Movies The movies + */ + public function getMovies() + { + return $this->_movies; + } + + /** + * Sets the music + * + * @param Zend_Gdata_YouTube_Extension_Music $music The music + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setMusic($music = null) + { + $this->_music = $music; + return $this; + } + + /** + * Returns the music + * + * @return Zend_Gdata_YouTube_Extension_Music The music + */ + public function getMusic() + { + return $this->_music; + } + + /** + * Sets the occupation + * + * @param Zend_Gdata_YouTube_Extension_Occupation $occupation The occupation + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setOccupation($occupation = null) + { + $this->_occupation = $occupation; + return $this; + } + + /** + * Returns the occupation + * + * @return Zend_Gdata_YouTube_Extension_Occupation The occupation + */ + public function getOccupation() + { + return $this->_occupation; + } + + /** + * Sets the school + * + * @param Zend_Gdata_YouTube_Extension_School $school The school + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setSchool($school = null) + { + $this->_school = $school; + return $this; + } + + /** + * Returns the school + * + * @return Zend_Gdata_YouTube_Extension_School The school + */ + public function getSchool() + { + return $this->_school; + } + + /** + * Sets the gender + * + * @param Zend_Gdata_YouTube_Extension_Gender $gender The gender + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setGender($gender = null) + { + $this->_gender = $gender; + return $this; + } + + /** + * Returns the gender + * + * @return Zend_Gdata_YouTube_Extension_Gender The gender + */ + public function getGender() + { + return $this->_gender; + } + + /** + * Sets the relationship + * + * @param Zend_Gdata_YouTube_Extension_Relationship $relationship The relationship + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setRelationship($relationship = null) + { + $this->_relationship = $relationship; + return $this; + } + + /** + * Returns the relationship + * + * @return Zend_Gdata_YouTube_Extension_Relationship The relationship + */ + public function getRelationship() + { + return $this->_relationship; + } + + /** + * Sets the array of embedded feeds related to the video + * + * @param array $feedLink The array of embedded feeds relating to the video + * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface + */ + public function setFeedLink($feedLink = null) + { + $this->_feedLink = $feedLink; + return $this; + } + + /** + * Get the feed link property for this entry. + * + * @see setFeedLink + * @param string $rel (optional) The rel value of the link to be found. + * If null, the array of links is returned. + * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink + * object corresponding to the requested rel value is returned + * if found, or null if the requested value is not found. If + * $rel is null or not specified, an array of all available + * feed links for this entry is returned, or null if no feed + * links are set. + */ + public function getFeedLink($rel = null) + { + if ($rel == null) { + return $this->_feedLink; + } else { + foreach ($this->_feedLink as $feedLink) { + if ($feedLink->rel == $rel) { + return $feedLink; + } + } + return null; + } + } + + /** + * Returns the URL in the gd:feedLink with the provided rel value + * + * @param string $rel The rel value to find + * @return mixed Either the URL as a string or null if a feedLink wasn't + * found with the provided rel value + */ + public function getFeedLinkHref($rel) + { + $feedLink = $this->getFeedLink($rel); + if ($feedLink !== null) { + return $feedLink->href; + } else { + return null; + } + } + + /** + * Returns the URL of the playlist list feed + * + * @return string The URL of the playlist video feed + */ + public function getPlaylistListFeedUrl() + { + return $this->getFeedLinkHref(Zend_Gdata_YouTube::USER_PLAYLISTS_REL); + } + + /** + * Returns the URL of the uploads feed + * + * @return string The URL of the uploads video feed + */ + public function getUploadsFeedUrl() + { + return $this->getFeedLinkHref(Zend_Gdata_YouTube::USER_UPLOADS_REL); + } + + /** + * Returns the URL of the subscriptions feed + * + * @return string The URL of the subscriptions feed + */ + public function getSubscriptionsFeedUrl() + { + return $this->getFeedLinkHref(Zend_Gdata_YouTube::USER_SUBSCRIPTIONS_REL); + } + + /** + * Returns the URL of the contacts feed + * + * @return string The URL of the contacts feed + */ + public function getContactsFeedUrl() + { + return $this->getFeedLinkHref(Zend_Gdata_YouTube::USER_CONTACTS_REL); + } + + /** + * Returns the URL of the favorites feed + * + * @return string The URL of the favorites feed + */ + public function getFavoritesFeedUrl() + { + return $this->getFeedLinkHref(Zend_Gdata_YouTube::USER_FAVORITES_REL); + } + +} diff --git a/library/Zend/Gdata/YouTube/VideoEntry.php b/library/Zend/Gdata/YouTube/VideoEntry.php new file mode 100644 index 0000000000..b34f6da6f0 --- /dev/null +++ b/library/Zend/Gdata/YouTube/VideoEntry.php @@ -0,0 +1,1095 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + + /** + * 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, $majorVersion = 1, $minorVersion = null) + { + $element = parent::getDOM($doc, $majorVersion, $minorVersion); + if ($this->_noEmbed != null) { + $element->appendChild($this->_noEmbed->getDOM( + $element->ownerDocument)); + } + if ($this->_statistics != null) { + $element->appendChild($this->_statistics->getDOM( + $element->ownerDocument)); + } + if ($this->_racy != null) { + $element->appendChild($this->_racy->getDOM( + $element->ownerDocument)); + } + if ($this->_recorded != null) { + $element->appendChild($this->_recorded->getDOM( + $element->ownerDocument)); + } + if ($this->_location != null) { + $element->appendChild($this->_location->getDOM( + $element->ownerDocument)); + } + if ($this->_rating != null) { + $element->appendChild($this->_rating->getDOM( + $element->ownerDocument)); + } + if ($this->_comments != null) { + $element->appendChild($this->_comments->getDOM( + $element->ownerDocument)); + } + if ($this->_feedLink != null) { + foreach ($this->_feedLink as $feedLink) { + $element->appendChild($feedLink->getDOM( + $element->ownerDocument)); + } + } + if ($this->_where != null) { + $element->appendChild($this->_where->getDOM( + $element->ownerDocument)); + } + return $element; + } + + /** + * Creates individual Entry objects of the appropriate type and + * stores them in the $_entry array based upon DOM data. + * + * @param DOMNode $child The DOMNode to process + */ + protected function takeChildFromDOM($child) + { + $absoluteNodeName = $child->namespaceURI . ':' . $child->localName; + + switch ($absoluteNodeName) { + case $this->lookupNamespace('yt') . ':' . 'statistics': + $statistics = new Zend_Gdata_YouTube_Extension_Statistics(); + $statistics->transferFromDOM($child); + $this->_statistics = $statistics; + break; + case $this->lookupNamespace('yt') . ':' . 'racy': + $racy = new Zend_Gdata_YouTube_Extension_Racy(); + $racy->transferFromDOM($child); + $this->_racy = $racy; + break; + case $this->lookupNamespace('yt') . ':' . 'recorded': + $recorded = new Zend_Gdata_YouTube_Extension_Recorded(); + $recorded->transferFromDOM($child); + $this->_recorded = $recorded; + break; + case $this->lookupNamespace('yt') . ':' . 'location': + $location = new Zend_Gdata_YouTube_Extension_Location(); + $location->transferFromDOM($child); + $this->_location = $location; + break; + case $this->lookupNamespace('gd') . ':' . 'rating': + $rating = new Zend_Gdata_Extension_Rating(); + $rating->transferFromDOM($child); + $this->_rating = $rating; + break; + case $this->lookupNamespace('gd') . ':' . 'comments': + $comments = new Zend_Gdata_Extension_Comments(); + $comments->transferFromDOM($child); + $this->_comments = $comments; + break; + case $this->lookupNamespace('yt') . ':' . 'noembed': + $noEmbed = new Zend_Gdata_YouTube_Extension_NoEmbed(); + $noEmbed->transferFromDOM($child); + $this->_noEmbed = $noEmbed; + break; + case $this->lookupNamespace('gd') . ':' . 'feedLink': + $feedLink = new Zend_Gdata_Extension_FeedLink(); + $feedLink->transferFromDOM($child); + $this->_feedLink[] = $feedLink; + break; + case $this->lookupNamespace('georss') . ':' . 'where': + $where = new Zend_Gdata_Geo_Extension_GeoRssWhere(); + $where->transferFromDOM($child); + $this->_where = $where; + break; + case $this->lookupNamespace('atom') . ':' . 'link'; + $link = new Zend_Gdata_YouTube_Extension_Link(); + $link->transferFromDOM($child); + $this->_link[] = $link; + break; + case $this->lookupNamespace('app') . ':' . 'control': + $control = new Zend_Gdata_YouTube_Extension_Control(); + $control->transferFromDOM($child); + $this->_control = $control; + break; + default: + parent::takeChildFromDOM($child); + break; + } + } + + /** + * Sets when the video was recorded. + * + * @param Zend_Gdata_YouTube_Extension_Recorded $recorded When the video was recorded + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setRecorded($recorded = null) + { + $this->_recorded = $recorded; + return $this; + } + + /** + * Gets the date that the video was recorded. + * + * @return Zend_Gdata_YouTube_Extension_Recorded|null + */ + public function getRecorded() + { + return $this->_recorded; + } + + /** + * Sets the location information. + * + * @param Zend_Gdata_YouTube_Extension_Location $location Where the video + * was recorded + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setLocation($location = null) + { + $this->_location = $location; + return $this; + } + + /** + * Gets the location where the video was recorded. + * + * @return Zend_Gdata_YouTube_Extension_Location|null + */ + public function getLocation() + { + return $this->_location; + } + + /** + * If an instance of Zend_Gdata_YouTube_Extension_NoEmbed is passed in, + * the video cannot be embedded. Otherwise, if null is passsed in, the + * video is able to be embedded. + * + * @param Zend_Gdata_YouTube_Extension_NoEmbed $noEmbed Whether or not the + * video can be embedded. + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setNoEmbed($noEmbed = null) + { + $this->_noEmbed = $noEmbed; + return $this; + } + + /** + * If the return value is an instance of + * Zend_Gdata_YouTube_Extension_NoEmbed, this video cannot be embedded. + * + * @return Zend_Gdata_YouTube_Extension_NoEmbed|null Whether or not the video can be embedded + */ + public function getNoEmbed() + { + return $this->_noEmbed; + } + + /** + * Checks whether the video is embeddable. + * + * @return bool Returns true if the video is embeddable. + */ + public function isVideoEmbeddable() + { + if ($this->getNoEmbed() == null) { + return true; + } else { + return false; + } + } + + /** + * Sets the statistics relating to the video. + * + * @param Zend_Gdata_YouTube_Extension_Statistics $statistics The statistics relating to the video + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setStatistics($statistics = null) + { + $this->_statistics = $statistics; + return $this; + } + + /** + * Returns the statistics relating to the video. + * + * @return Zend_Gdata_YouTube_Extension_Statistics The statistics relating to the video + */ + public function getStatistics() + { + return $this->_statistics; + } + + /** + * Specifies that the video has racy content. + * + * @param Zend_Gdata_YouTube_Extension_Racy $racy The racy flag object + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setRacy($racy = null) + { + if ($this->getMajorProtocolVersion() == 2) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException( + 'Calling getRacy() on a YouTube VideoEntry is deprecated ' . + 'as of version 2 of the API.'); + } + + $this->_racy = $racy; + return $this; + } + + /** + * Returns the racy flag object. + * + * @throws Zend_Gdata_App_VersionException + * @return Zend_Gdata_YouTube_Extension_Racy|null The racy flag object + */ + public function getRacy() + { + if ($this->getMajorProtocolVersion() == 2) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException( + 'Calling getRacy() on a YouTube VideoEntry is deprecated ' . + 'as of version 2 of the API.'); + } + return $this->_racy; + } + + /** + * Sets the rating relating to the video. + * + * @param Zend_Gdata_Extension_Rating $rating The rating relating to the video + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setRating($rating = null) + { + $this->_rating = $rating; + return $this; + } + + /** + * Returns the rating relating to the video. + * + * @return Zend_Gdata_Extension_Rating The rating relating to the video + */ + public function getRating() + { + return $this->_rating; + } + + /** + * Sets the comments relating to the video. + * + * @param Zend_Gdata_Extension_Comments $comments The comments relating to the video + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setComments($comments = null) + { + $this->_comments = $comments; + return $this; + } + + /** + * Returns the comments relating to the video. + * + * @return Zend_Gdata_Extension_Comments The comments relating to the video + */ + public function getComments() + { + return $this->_comments; + } + + /** + * Sets the array of embedded feeds related to the video + * + * @param array $feedLink The array of embedded feeds relating to the video + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setFeedLink($feedLink = null) + { + $this->_feedLink = $feedLink; + return $this; + } + + /** + * Get the feed link property for this entry. + * + * @see setFeedLink + * @param string $rel (optional) The rel value of the link to be found. + * If null, the array of links is returned. + * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink + * object corresponding to the requested rel value is returned + * if found, or null if the requested value is not found. If + * $rel is null or not specified, an array of all available + * feed links for this entry is returned, or null if no feed + * links are set. + */ + public function getFeedLink($rel = null) + { + if ($rel == null) { + return $this->_feedLink; + } else { + foreach ($this->_feedLink as $feedLink) { + if ($feedLink->rel == $rel) { + return $feedLink; + } + } + return null; + } + } + + /** + * Returns the link element relating to video responses. + * + * @return Zend_Gdata_App_Extension_Link + */ + public function getVideoResponsesLink() + { + return $this->getLink(Zend_Gdata_YouTube::VIDEO_RESPONSES_REL); + } + + /** + * Returns the link element relating to video ratings. + * + * @return Zend_Gdata_App_Extension_Link + */ + public function getVideoRatingsLink() + { + return $this->getLink(Zend_Gdata_YouTube::VIDEO_RATINGS_REL); + } + + /** + * Returns the link element relating to video complaints. + * + * @return Zend_Gdata_App_Extension_Link + */ + public function getVideoComplaintsLink() + { + return $this->getLink(Zend_Gdata_YouTube::VIDEO_COMPLAINTS_REL); + } + + /** + * Gets the YouTube video ID based upon the atom:id value + * + * @return string The video ID + */ + public function getVideoId() + { + if ($this->getMajorProtocolVersion() == 2) { + $videoId = $this->getMediaGroup()->getVideoId()->text; + } else { + $fullId = $this->getId()->getText(); + $position = strrpos($fullId, '/'); + if ($position === false) { + require_once 'Zend/Gdata/App/Exception.php'; + throw new Zend_Gdata_App_Exception( + 'Slash not found in atom:id of ' . $fullId); + } else { + $videoId = substr($fullId, $position + 1); + } + } + return $videoId; + } + + /** + * Gets the date that the video was recorded. + * + * @return string|null The date that the video was recorded + */ + public function getVideoRecorded() + { + $recorded = $this->getRecorded(); + if ($recorded != null) { + return $recorded->getText(); + } else { + return null; + } + } + + /** + * Sets the date that the video was recorded. + * + * @param string $recorded The date that the video was recorded, in the + * format of '2001-06-19' + */ + public function setVideoRecorded($recorded) + { + $this->setRecorded( + new Zend_Gdata_YouTube_Extension_Recorded($recorded)); + return $this; + } + + /** + * Gets the georss:where element + * + * @return Zend_Gdata_Geo_Extension_GeoRssWhere + */ + public function getWhere() + { + return $this->_where; + } + + /** + * Sets the georss:where element + * + * @param Zend_Gdata_Geo_Extension_GeoRssWhere $value The georss:where class value + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setWhere($value) + { + $this->_where = $value; + return $this; + } + + /** + * Gets the title of the video as a string. null is returned + * if the video title is not available. + * + * @return string|null The title of the video + */ + public function getVideoTitle() + { + $this->ensureMediaGroupIsNotNull(); + if ($this->getMediaGroup()->getTitle() != null) { + return $this->getMediaGroup()->getTitle()->getText(); + } else { + return null; + } + } + + /** + * Sets the title of the video as a string. + * + * @param string $title Title for the video + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setVideoTitle($title) + { + $this->ensureMediaGroupIsNotNull(); + $this->getMediaGroup()->setTitle( + new Zend_Gdata_Media_Extension_MediaTitle($title)); + return $this; + } + + /** + * Sets the description of the video as a string. + * + * @param string $description Description for the video + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setVideoDescription($description) + { + $this->ensureMediaGroupIsNotNull(); + $this->getMediaGroup()->setDescription( + new Zend_Gdata_Media_Extension_MediaDescription($description)); + return $this; + } + + + /** + * Gets the description of the video as a string. null is returned + * if the video description is not available. + * + * @return string|null The description of the video + */ + public function getVideoDescription() + { + $this->ensureMediaGroupIsNotNull(); + if ($this->getMediaGroup()->getDescription() != null) { + return $this->getMediaGroup()->getDescription()->getText(); + } else { + return null; + } + } + + /** + * Gets the URL of the YouTube video watch page. null is returned + * if the video watch page URL is not available. + * + * @return string|null The URL of the YouTube video watch page + */ + public function getVideoWatchPageUrl() + { + $this->ensureMediaGroupIsNotNull(); + if ($this->getMediaGroup()->getPlayer() != null && + array_key_exists(0, $this->getMediaGroup()->getPlayer())) { + $players = $this->getMediaGroup()->getPlayer(); + return $players[0]->getUrl(); + } else { + return null; + } + } + + /** + * Gets an array of the thumbnails representing the video. + * Each thumbnail is an element of the array, and is an + * array of the thumbnail properties - time, height, width, + * and url. For convient usage inside a foreach loop, an + * empty array is returned if there are no thumbnails. + * + * @return array An array of video thumbnails. + */ + public function getVideoThumbnails() + { + $this->ensureMediaGroupIsNotNull(); + if ($this->getMediaGroup()->getThumbnail() != null) { + + $thumbnailArray = array(); + + foreach ($this->getMediaGroup()->getThumbnail() as $thumbnailObj) { + $thumbnail = array(); + $thumbnail['time'] = $thumbnailObj->time; + $thumbnail['height'] = $thumbnailObj->height; + $thumbnail['width'] = $thumbnailObj->width; + $thumbnail['url'] = $thumbnailObj->url; + $thumbnailArray[] = $thumbnail; + } + return $thumbnailArray; + } else { + return array(); + } + } + + /** + * Gets the URL of the flash player SWF. null is returned if the + * duration value is not available. + * + * @return string|null The URL of the flash player SWF + */ + public function getFlashPlayerUrl() + { + $this->ensureMediaGroupIsNotNull(); + foreach ($this->getMediaGroup()->getContent() as $content) { + if ($content->getType() === 'application/x-shockwave-flash') { + return $content->getUrl(); + } + } + return null; + } + + /** + * Gets the duration of the video, in seconds. null is returned + * if the duration value is not available. + * + * @return string|null The duration of the video, in seconds. + */ + public function getVideoDuration() + { + $this->ensureMediaGroupIsNotNull(); + if ($this->getMediaGroup()->getDuration() != null) { + return $this->getMediaGroup()->getDuration()->getSeconds(); + } else { + return null; + } + } + + /** + * Checks whether the video is private. + * + * @return bool Return true if video is private + */ + public function isVideoPrivate() + { + $this->ensureMediaGroupIsNotNull(); + if ($this->getMediaGroup()->getPrivate() != null) { + return true; + } else { + return false; + } + } + + /** + * Sets video to private. + * + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setVideoPrivate() + { + $this->ensureMediaGroupIsNotNull(); + $this->getMediaGroup()->setPrivate(new Zend_Gdata_YouTube_Extension_Private()); + return $this; + } + + /** + * Sets a private video to be public. + * + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setVideoPublic() + { + $this->ensureMediaGroupIsNotNull(); + $this->getMediaGroup()->private = null; + return $this; + } + + /** + * Gets an array of the tags assigned to this video. For convient + * usage inside a foreach loop, an empty array is returned when there + * are no tags assigned. + * + * @return array An array of the tags assigned to this video + */ + public function getVideoTags() + { + $this->ensureMediaGroupIsNotNull(); + if ($this->getMediaGroup()->getKeywords() != null) { + + $keywords = $this->getMediaGroup()->getKeywords(); + $keywordsString = $keywords->getText(); + if (strlen(trim($keywordsString)) > 0) { + return preg_split('/(, *)|,/', $keywordsString); + } + } + return array(); + } + + /** + * Sets the keyword tags for a video. + * + * @param mixed $tags Either a comma-separated string or an array + * of tags for the video + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setVideoTags($tags) + { + $this->ensureMediaGroupIsNotNull(); + $keywords = new Zend_Gdata_Media_Extension_MediaKeywords(); + if (is_array($tags)) { + $tags = implode(', ', $tags); + } + $keywords->setText($tags); + $this->getMediaGroup()->setKeywords($keywords); + return $this; + } + + /** + * Gets the number of views for this video. null is returned if the + * number of views is not available. + * + * @return string|null The number of views for this video + */ + public function getVideoViewCount() + { + if ($this->getStatistics() != null) { + return $this->getStatistics()->getViewCount(); + } else { + return null; + } + } + + /** + * Gets the location specified for this video, if available. The location + * is returned as an array containing the keys 'longitude' and 'latitude'. + * null is returned if the location is not available. + * + * @return array|null The location specified for this video + */ + public function getVideoGeoLocation() + { + if ($this->getWhere() != null && + $this->getWhere()->getPoint() != null && + ($position = $this->getWhere()->getPoint()->getPos()) != null) { + + $positionString = $position->__toString(); + + if (strlen(trim($positionString)) > 0) { + $positionArray = explode(' ', trim($positionString)); + if (count($positionArray) == 2) { + $returnArray = array(); + $returnArray['latitude'] = $positionArray[0]; + $returnArray['longitude'] = $positionArray[1]; + return $returnArray; + } + } + } + return null; + } + + /** + * Gets the rating information for this video, if available. The rating + * is returned as an array containing the keys 'average' and 'numRaters'. + * null is returned if the rating information is not available. + * + * @return array|null The rating information for this video + */ + public function getVideoRatingInfo() + { + if ($this->getRating() != null) { + $returnArray = array(); + $returnArray['average'] = $this->getRating()->getAverage(); + $returnArray['numRaters'] = $this->getRating()->getNumRaters(); + return $returnArray; + } else { + return null; + } + } + + /** + * Gets the category of this video, if available. The category is returned + * as a string. Valid categories are found at: + * http://gdata.youtube.com/schemas/2007/categories.cat + * If the category is not set, null is returned. + * + * @return string|null The category of this video + */ + public function getVideoCategory() + { + $this->ensureMediaGroupIsNotNull(); + $categories = $this->getMediaGroup()->getCategory(); + if ($categories != null) { + foreach($categories as $category) { + if ($category->getScheme() == self::YOUTUBE_CATEGORY_SCHEMA) { + return $category->getText(); + } + } + } + return null; + } + + /** + * Sets the category of the video as a string. + * + * @param string $category Categories for the video + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setVideoCategory($category) + { + $this->ensureMediaGroupIsNotNull(); + $this->getMediaGroup()->setCategory(array(new Zend_Gdata_Media_Extension_MediaCategory($category, self::YOUTUBE_CATEGORY_SCHEMA))); + return $this; + } + + /** + * Gets the developer tags for the video, if available and if client is + * authenticated with a valid developerKey. The tags are returned + * as an array. + * If no tags are set, null is returned. + * + * @return array|null The developer tags for this video or null if none were set. + */ + public function getVideoDeveloperTags() + { + $developerTags = null; + $this->ensureMediaGroupIsNotNull(); + + $categoryArray = $this->getMediaGroup()->getCategory(); + if ($categoryArray != null) { + foreach ($categoryArray as $category) { + if ($category instanceof Zend_Gdata_Media_Extension_MediaCategory) { + if ($category->getScheme() == self::YOUTUBE_DEVELOPER_TAGS_SCHEMA) { + $developerTags[] = $category->getText(); + } + } + } + return $developerTags; + } + return null; + } + + /** + * Adds a developer tag to array of tags for the video. + * + * @param string $developerTag DeveloperTag for the video + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function addVideoDeveloperTag($developerTag) + { + $this->ensureMediaGroupIsNotNull(); + $newCategory = new Zend_Gdata_Media_Extension_MediaCategory($developerTag, self::YOUTUBE_DEVELOPER_TAGS_SCHEMA); + + if ($this->getMediaGroup()->getCategory() == null) { + $this->getMediaGroup()->setCategory($newCategory); + } else { + $categories = $this->getMediaGroup()->getCategory(); + $categories[] = $newCategory; + $this->getMediaGroup()->setCategory($categories); + } + return $this; + } + + /** + * Set multiple developer tags for the video as strings. + * + * @param array $developerTags Array of developerTag for the video + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface + */ + public function setVideoDeveloperTags($developerTags) + { + foreach($developerTags as $developerTag) { + $this->addVideoDeveloperTag($developerTag); + } + return $this; + } + + + /** + * Get the current publishing state of the video. + * + * @return Zend_Gdata_YouTube_Extension_State|null The publishing state of this video + */ + public function getVideoState() + { + $control = $this->getControl(); + if ($control != null && + $control->getDraft() != null && + $control->getDraft()->getText() == 'yes') { + + return $control->getState(); + } + return null; + } + + /** + * Get the VideoEntry's Zend_Gdata_YouTube_Extension_MediaGroup object. + * If the mediaGroup does not exist, then set it. + * + * @return void + */ + public function ensureMediaGroupIsNotNull() + { + if ($this->getMediagroup() == null) { + $this->setMediagroup(new Zend_Gdata_YouTube_Extension_MediaGroup()); + } + } + + /** + * Helper function to conveniently set a video's rating. + * + * @param integer $ratingValue A number representing the rating. Must + * be between 1 and 5 inclusive. + * @throws Zend_Gdata_Exception + * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface. + */ + public function setVideoRating($ratingValue) + { + if ($ratingValue < 1 || $ratingValue > 5) { + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_InvalidArgumentException( + 'Rating for video entry must be between 1 and 5 inclusive.'); + } + + require_once 'Zend/Gdata/Extension/Rating.php'; + $rating = new Zend_Gdata_Extension_Rating(null, 1, 5, null, + $ratingValue); + $this->setRating($rating); + return $this; + } + + /** + * Retrieve the URL for a video's comment feed. + * + * @return string|null The URL if found, or null if not found. + */ + public function getVideoCommentFeedUrl() + { + $commentsExtension = $this->getComments(); + $commentsFeedUrl = null; + if ($commentsExtension) { + $commentsFeedLink = $commentsExtension->getFeedLink(); + if ($commentsFeedLink) { + $commentsFeedUrl = $commentsFeedLink->getHref(); + } + } + return $commentsFeedUrl; + } + +} diff --git a/library/Zend/Gdata/YouTube/VideoFeed.php b/library/Zend/Gdata/YouTube/VideoFeed.php new file mode 100644 index 0000000000..ee2e277672 --- /dev/null +++ b/library/Zend/Gdata/YouTube/VideoFeed.php @@ -0,0 +1,65 @@ +registerAllNamespaces(Zend_Gdata_YouTube::$namespaces); + parent::__construct($element); + } + +} diff --git a/library/Zend/Gdata/YouTube/VideoQuery.php b/library/Zend/Gdata/YouTube/VideoQuery.php new file mode 100644 index 0000000000..6d8a1a3b52 --- /dev/null +++ b/library/Zend/Gdata/YouTube/VideoQuery.php @@ -0,0 +1,540 @@ +_url = Zend_Gdata_YouTube::STANDARD_TOP_RATED_URI; + break; + case 'most viewed': + $this->_url = Zend_Gdata_YouTube::STANDARD_MOST_VIEWED_URI; + break; + case 'recently featured': + $this->_url = Zend_Gdata_YouTube::STANDARD_RECENTLY_FEATURED_URI; + break; + case 'mobile': + $this->_url = Zend_Gdata_YouTube::STANDARD_WATCH_ON_MOBILE_URI; + break; + case 'related': + if ($videoId === null) { + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_InvalidArgumentException( + 'Video ID must be set for feed of type: ' . $feedType); + } else { + $this->_url = Zend_Gdata_YouTube::VIDEO_URI . '/' . $videoId . + '/related'; + } + break; + case 'responses': + if ($videoId === null) { + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_Exception( + 'Video ID must be set for feed of type: ' . $feedType); + } else { + $this->_url = Zend_Gdata_YouTube::VIDEO_URI . '/' . $videoId . + 'responses'; + } + break; + case 'comments': + if ($videoId === null) { + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_Exception( + 'Video ID must be set for feed of type: ' . $feedType); + } else { + $this->_url = Zend_Gdata_YouTube::VIDEO_URI . '/' . + $videoId . 'comments'; + if ($entry !== null) { + $this->_url .= '/' . $entry; + } + } + break; + default: + require_once 'Zend/Gdata/App/Exception.php'; + throw new Zend_Gdata_App_Exception('Unknown feed type'); + break; + } + } + + /** + * Sets the location parameter for the query + * + * @param string $value + * @throws Zend_Gdata_App_InvalidArgumentException + * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface + */ + public function setLocation($value) + { + switch($value) { + case null: + unset($this->_params['location']); + default: + $parameters = explode(',', $value); + if (count($parameters) != 2) { + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_InvalidArgumentException( + 'You must provide 2 coordinates to the location ' . + 'URL parameter'); + } + + foreach($parameters as $param) { + $temp = trim($param); + // strip off the optional exclamation mark for numeric check + if (substr($temp, -1) == '!') { + $temp = substr($temp, 0, -1); + } + if (!is_numeric($temp)) { + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_InvalidArgumentException( + 'Value provided to location parameter must' . + ' be in the form of two coordinates'); + } + } + $this->_params['location'] = $value; + } + } + + /** + * Get the value of the location parameter + * + * @return string|null Return the location if it exists, null otherwise. + */ + public function getLocation() + { + if (array_key_exists('location', $this->_params)) { + return $this->_params['location']; + } else { + return null; + } + } + + + /** + * Sets the location-radius parameter for the query + * + * @param string $value + * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface + */ + public function setLocationRadius($value) + { + switch($value) { + case null: + unset($this->_params['location-radius']); + default: + $this->_params['location-radius'] = $value; + } + } + + /** + * Get the value of the location-radius parameter + * + * @return string|null Return the location-radius if it exists, + * null otherwise. + */ + public function getLocationRadius() + { + if (array_key_exists('location-radius', $this->_params)) { + return $this->_params['location-radius']; + } else { + return null; + } + } + + /** + * Sets the time period over which this query should apply + * + * @param string $value + * @throws Zend_Gdata_App_InvalidArgumentException + * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface + */ + public function setTime($value = null) + { + switch ($value) { + case 'today': + $this->_params['time'] = 'today'; + break; + case 'this_week': + $this->_params['time'] = 'this_week'; + break; + case 'this_month': + $this->_params['time'] = 'this_month'; + break; + case 'all_time': + $this->_params['time'] = 'all_time'; + break; + case null: + unset($this->_params['time']); + default: + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_InvalidArgumentException( + 'Unknown time value'); + break; + } + return $this; + } + + /** + * Sets the value of the uploader parameter + * + * @param string $value The value of the uploader parameter. Currently this + * can only be set to the value of 'partner'. + * @throws Zend_Gdata_App_InvalidArgumentException + * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface + */ + public function setUploader($value = null) + { + switch ($value) { + case 'partner': + $this->_params['uploader'] = 'partner'; + break; + case null: + unset($this->_params['uploader']); + break; + default: + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_InvalidArgumentException( + 'Unknown value for uploader'); + } + return $this; + } + + /** + * Sets the formatted video query (vq) URL param value + * + * @param string $value + * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface + */ + public function setVideoQuery($value = null) + { + if ($value != null) { + $this->_params['vq'] = $value; + } else { + unset($this->_params['vq']); + } + return $this; + } + + /** + * Sets the param to return videos of a specific format + * + * @param string $value + * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface + */ + public function setFormat($value = null) + { + if ($value != null) { + $this->_params['format'] = $value; + } else { + unset($this->_params['format']); + } + return $this; + } + + /** + * Sets whether or not to include racy videos in the search results + * + * @param string $value + * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface + */ + public function setRacy($value = null) + { + switch ($value) { + case 'include': + $this->_params['racy'] = $value; + break; + case 'exclude': + $this->_params['racy'] = $value; + break; + case null: + unset($this->_params['racy']); + break; + } + return $this; + } + + /** + * Whether or not to include racy videos in the search results + * + * @return string|null The value of racy if it exists, null otherwise. + */ + public function getRacy() + { + if (array_key_exists('racy', $this->_params)) { + return $this->_params['racy']; + } else { + return null; + } + } + + /** + * Set the safeSearch parameter + * + * @param string $value The value of the parameter, currently only 'none', + * 'moderate' or 'strict' are allowed values. + * @throws Zend_Gdata_App_InvalidArgumentException + * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface + */ + public function setSafeSearch($value) + { + switch ($value) { + case 'none': + $this->_params['safeSearch'] = 'none'; + break; + case 'moderate': + $this->_params['safeSearch'] = 'moderate'; + break; + case 'strict': + $this->_params['safeSearch'] = 'strict'; + break; + case null: + unset($this->_params['safeSearch']); + default: + require_once 'Zend/Gdata/App/InvalidArgumentException.php'; + throw new Zend_Gdata_App_InvalidArgumentException( + 'The safeSearch parameter only supports the values '. + '\'none\', \'moderate\' or \'strict\'.'); + } + } + + /** + * Return the value of the safeSearch parameter + * + * @return string|null The value of the safeSearch parameter if it has been + * set, null otherwise. + */ + public function getSafeSearch() + { + if (array_key_exists('safeSearch', $this->_params)) { + return $this->_params['safeSearch']; + } + return $this; + } + + /** + * Set the value of the orderby parameter + * + * @param string $value + * @return Zend_Gdata_YouTube_Query Provides a fluent interface + */ + public function setOrderBy($value) + { + if ($value != null) { + $this->_params['orderby'] = $value; + } else { + unset($this->_params['orderby']); + } + return $this; + } + + /** + * Return the value of the format parameter + * + * @return string|null The value of format if it exists, null otherwise. + */ + public function getFormat() + { + if (array_key_exists('format', $this->_params)) { + return $this->_params['format']; + } else { + return null; + } + } + + /** + * Return the value of the video query that has been set + * + * @return string|null The value of the video query if it exists, + * null otherwise. + */ + public function getVideoQuery() + { + if (array_key_exists('vq', $this->_params)) { + return $this->_params['vq']; + } else { + return null; + } + } + + /** + * Return the value of the time parameter + * + * @return string|null The time parameter if it exists, null otherwise. + */ + public function getTime() + { + if (array_key_exists('time', $this->_params)) { + return $this->_params['time']; + } else { + return null; + } + } + + /** + * Return the value of the orderby parameter if it exists + * + * @return string|null The value of orderby if it exists, null otherwise. + */ + public function getOrderBy() + { + if (array_key_exists('orderby', $this->_params)) { + return $this->_params['orderby']; + } else { + return null; + } + } + + /** + * Generate the query string from the URL parameters, optionally modifying + * them based on protocol version. + * + * @param integer $majorProtocolVersion The major protocol version + * @param integer $minorProtocolVersion The minor protocol version + * @throws Zend_Gdata_App_VersionException + * @return string querystring + */ + public function getQueryString($majorProtocolVersion = null, + $minorProtocolVersion = null) + { + $queryArray = array(); + + foreach ($this->_params as $name => $value) { + if (substr($name, 0, 1) == '_') { + continue; + } + + switch($name) { + case 'location-radius': + if ($majorProtocolVersion == 1) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException("The $name " . + "parameter is only supported in version 2."); + } + break; + + case 'racy': + if ($majorProtocolVersion == 2) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException("The $name " . + "parameter is not supported in version 2. " . + "Please use 'safeSearch'."); + } + break; + + case 'safeSearch': + if ($majorProtocolVersion == 1) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException("The $name " . + "parameter is only supported in version 2. " . + "Please use 'racy'."); + } + break; + + case 'uploader': + if ($majorProtocolVersion == 1) { + require_once 'Zend/Gdata/App/VersionException.php'; + throw new Zend_Gdata_App_VersionException("The $name " . + "parameter is only supported in version 2."); + } + break; + + case 'vq': + if ($majorProtocolVersion == 2) { + $name = 'q'; + } + break; + } + + $queryArray[] = urlencode($name) . '=' . urlencode($value); + + } + if (count($queryArray) > 0) { + return '?' . implode('&', $queryArray); + } else { + return ''; + } + } + + /** + * Returns the generated full query URL, optionally modifying it based on + * the protocol version. + * + * @param integer $majorProtocolVersion The major protocol version + * @param integer $minorProtocolVersion The minor protocol version + * @return string The URL + */ + public function getQueryUrl($majorProtocolVersion = null, + $minorProtocolVersion = null) + { + if (isset($this->_url)) { + $url = $this->_url; + } else { + $url = Zend_Gdata_YouTube::VIDEO_URI; + } + if ($this->getCategory() !== null) { + $url .= '/-/' . $this->getCategory(); + } + $url = $url . $this->getQueryString($majorProtocolVersion, + $minorProtocolVersion); + return $url; + } + +} diff --git a/library/Zend/Http/Client/Adapter/Proxy.php b/library/Zend/Http/Client/Adapter/Proxy.php index 090e570cba..2874b1ea5c 100644 --- a/library/Zend/Http/Client/Adapter/Proxy.php +++ b/library/Zend/Http/Client/Adapter/Proxy.php @@ -296,12 +296,24 @@ protected function connectHandshake( // If all is good, switch socket to secure mode. We have to fall back // through the different modes + + /** + * Lance: Update to use TLS 1.2 + */ $modes = array( + STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT, STREAM_CRYPTO_METHOD_TLS_CLIENT, - STREAM_CRYPTO_METHOD_SSLv3_CLIENT, - STREAM_CRYPTO_METHOD_SSLv23_CLIENT, - STREAM_CRYPTO_METHOD_SSLv2_CLIENT + STREAM_CRYPTO_METHOD_SSLv3_CLIENT ); + + /** + * Lance: Set verify peer etc to false, otherwise proxy calls will always fail. + * Was defaulted to false in PHP when this library was created, but since php 5.6 it is enabled by default, so needs hack to fix. + * @see https://stackoverflow.com/questions/33497040/zend-unable-to-connect-to-https-server-through-proxy + */ + stream_context_set_option($this->socket, "ssl", "verify_peer", false); + stream_context_set_option($this->socket, "ssl", "verify_peer_name", false); + stream_context_set_option($this->socket, "ssl", "allow_self_signed", false); $success = false; foreach($modes as $mode) { diff --git a/library/Zend/Http/UserAgent/Features/Adapter/WurflApi.php b/library/Zend/Http/UserAgent/Features/Adapter/WurflApi.php new file mode 100644 index 0000000000..291c1ccfef --- /dev/null +++ b/library/Zend/Http/UserAgent/Features/Adapter/WurflApi.php @@ -0,0 +1,103 @@ +wurflFile($c['wurfl']['main-file']) + ->wurflPatch($c['wurfl']['patches']) + ->persistence($c['persistence']['provider'], $c['persistence']['dir']); + } + + $wurflManagerFactory = new WURFL_WURFLManagerFactory($wurflConfig); + $wurflManager = $wurflManagerFactory->create(); + break; + default: + require_once 'Zend/Http/UserAgent/Features/Exception.php'; + throw new Zend_Http_UserAgent_Features_Exception(sprintf( + 'Unknown API version "%s"', + $config['wurfl_api_version'] + )); + } + + $device = $wurflManager->getDeviceForHttpRequest(array_change_key_case($request, CASE_UPPER)); + $features = $device->getAllCapabilities(); + return $features; + } +} diff --git a/library/Zend/InfoCard.php b/library/Zend/InfoCard.php new file mode 100644 index 0000000000..5c8841a3e2 --- /dev/null +++ b/library/Zend/InfoCard.php @@ -0,0 +1,497 @@ +_keyPairs = array(); + + if(!extension_loaded('mcrypt')) { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Use of the Zend_InfoCard component requires the mcrypt extension to be enabled in PHP"); + } + + if(!extension_loaded('openssl')) { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Use of the Zend_InfoCard component requires the openssl extension to be enabled in PHP"); + } + } + + /** + * Sets the adapter uesd for callbacks into the application using the component, used + * when doing things such as storing / retrieving assertions, etc. + * + * @param Zend_InfoCard_Adapter_Interface $a The Adapter instance + * @return Zend_InfoCard The instnace + */ + public function setAdapter(Zend_InfoCard_Adapter_Interface $a) + { + $this->_adapter = $a; + return $this; + } + + /** + * Retrieves the adapter used for callbacks into the application using the component. + * If no adapter was set then an instance of Zend_InfoCard_Adapter_Default is used + * + * @return Zend_InfoCard_Adapter_Interface The Adapter instance + */ + public function getAdapter() + { + if($this->_adapter === null) { + require_once 'Zend/InfoCard/Adapter/Default.php'; + $this->setAdapter(new Zend_InfoCard_Adapter_Default()); + } + + return $this->_adapter; + } + + /** + * Gets the Public Key Cipher object used in this instance + * + * @return Zend_InfoCard_Cipher_Pki_Interface + */ + public function getPkiCipherObject() + { + return $this->_pkiCipherObj; + } + + /** + * Sets the Public Key Cipher Object used in this instance + * + * @param Zend_InfoCard_Cipher_Pki_Interface $cipherObj + * @return Zend_InfoCard + */ + public function setPkiCipherObject(Zend_InfoCard_Cipher_Pki_Interface $cipherObj) + { + $this->_pkiCipherObj = $cipherObj; + return $this; + } + + /** + * Get the Symmetric Cipher Object used in this instance + * + * @return Zend_InfoCard_Cipher_Symmetric_Interface + */ + public function getSymCipherObject() + { + return $this->_symCipherObj; + } + + /** + * Sets the Symmetric Cipher Object used in this instance + * + * @param Zend_InfoCard_Cipher_Symmetric_Interface $cipherObj + * @return Zend_InfoCard + */ + public function setSymCipherObject($cipherObj) + { + $this->_symCipherObj = $cipherObj; + return $this; + } + + /** + * Remove a Certificate Pair by Key ID from the search list + * + * @throws Zend_InfoCard_Exception + * @param string $key_id The Certificate Key ID returned from adding the certificate pair + * @return Zend_InfoCard + */ + public function removeCertificatePair($key_id) + { + + if(!key_exists($key_id, $this->_keyPairs)) { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Attempted to remove unknown key id: $key_id"); + } + + unset($this->_keyPairs[$key_id]); + return $this; + } + + /** + * Add a Certificate Pair to the list of certificates searched by the component + * + * @throws Zend_InfoCard_Exception + * @param string $private_key_file The path to the private key file for the pair + * @param string $public_key_file The path to the certificate / public key for the pair + * @param string $type (optional) The URI for the type of key pair this is (default RSA with OAEP padding) + * @param string $password (optional) The password for the private key file if necessary + * @return string A key ID representing this key pair in the component + */ + public function addCertificatePair($private_key_file, $public_key_file, $type = Zend_InfoCard_Cipher::ENC_RSA_OAEP_MGF1P, $password = null) + { + if(!file_exists($private_key_file) || + !file_exists($public_key_file)) { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Could not locate the public and private certificate pair files: $private_key_file, $public_key_file"); + } + + if(!is_readable($private_key_file) || + !is_readable($public_key_file)) { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Could not read the public and private certificate pair files (check permissions): $private_key_file, $public_key_file"); + } + + $key_id = md5($private_key_file.$public_key_file); + + if(key_exists($key_id, $this->_keyPairs)) { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Attempted to add previously existing certificate pair: $private_key_file, $public_key_file"); + } + + switch($type) { + case Zend_InfoCard_Cipher::ENC_RSA: + case Zend_InfoCard_Cipher::ENC_RSA_OAEP_MGF1P: + $this->_keyPairs[$key_id] = array('private' => $private_key_file, + 'public' => $public_key_file, + 'type_uri' => $type); + + if($password !== null) { + $this->_keyPairs[$key_id]['password'] = $password; + } else { + $this->_keyPairs[$key_id]['password'] = null; + } + + return $key_id; + break; + default: + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Invalid Certificate Pair Type specified: $type"); + } + } + + /** + * Return a Certificate Pair from a key ID + * + * @throws Zend_InfoCard_Exception + * @param string $key_id The Key ID of the certificate pair in the component + * @return array An array containing the path to the private/public key files, + * the type URI and the password if provided + */ + public function getCertificatePair($key_id) + { + if(key_exists($key_id, $this->_keyPairs)) { + return $this->_keyPairs[$key_id]; + } + + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Invalid Certificate Pair ID provided: $key_id"); + } + + /** + * Retrieve the digest of a given public key / certificate using the provided digest + * method + * + * @throws Zend_InfoCard_Exception + * @param string $key_id The certificate key id in the component + * @param string $digestMethod The URI of the digest method to use (default SHA1) + * @return string The digest value in binary format + */ + protected function _getPublicKeyDigest($key_id, $digestMethod = self::DIGEST_SHA1) + { + $certificatePair = $this->getCertificatePair($key_id); + + $temp = file($certificatePair['public']); + unset($temp[count($temp)-1]); + unset($temp[0]); + $certificateData = base64_decode(implode("\n", $temp)); + + switch($digestMethod) { + case self::DIGEST_SHA1: + $digest_retval = sha1($certificateData, true); + break; + default: + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Invalid Digest Type Provided: $digestMethod"); + } + + return $digest_retval; + } + + /** + * Find a certificate pair based on a digest of its public key / certificate file + * + * @param string $digest The digest value of the public key wanted in binary form + * @param string $digestMethod The URI of the digest method used to calculate the digest + * @return mixed The Key ID of the matching certificate pair or false if not found + */ + protected function _findCertifiatePairByDigest($digest, $digestMethod = self::DIGEST_SHA1) + { + + foreach($this->_keyPairs as $key_id => $certificate_data) { + + $cert_digest = $this->_getPublicKeyDigest($key_id, $digestMethod); + + if($cert_digest == $digest) { + return $key_id; + } + } + + return false; + } + + /** + * Extracts the Signed Token from an EncryptedData block + * + * @throws Zend_InfoCard_Exception + * @param string $strXmlToken The EncryptedData XML block + * @return string The XML of the Signed Token inside of the EncryptedData block + */ + protected function _extractSignedToken($strXmlToken) + { + $encryptedData = Zend_InfoCard_Xml_EncryptedData::getInstance($strXmlToken); + + // Determine the Encryption Method used to encrypt the token + + switch($encryptedData->getEncryptionMethod()) { + case Zend_InfoCard_Cipher::ENC_AES128CBC: + case Zend_InfoCard_Cipher::ENC_AES256CBC: + break; + default: + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Unknown Encryption Method used in the secure token"); + } + + // Figure out the Key we are using to decrypt the token + + $keyinfo = $encryptedData->getKeyInfo(); + + if(!($keyinfo instanceof Zend_InfoCard_Xml_KeyInfo_XmlDSig)) { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Expected a XML digital signature KeyInfo, but was not found"); + } + + + $encryptedKey = $keyinfo->getEncryptedKey(); + + switch($encryptedKey->getEncryptionMethod()) { + case Zend_InfoCard_Cipher::ENC_RSA: + case Zend_InfoCard_Cipher::ENC_RSA_OAEP_MGF1P: + break; + default: + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Unknown Key Encryption Method used in secure token"); + } + + $securityTokenRef = $encryptedKey->getKeyInfo()->getSecurityTokenReference(); + + $key_id = $this->_findCertifiatePairByDigest($securityTokenRef->getKeyReference()); + + if(!$key_id) { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Unable to find key pair used to encrypt symmetric InfoCard Key"); + } + + $certificate_pair = $this->getCertificatePair($key_id); + + // Santity Check + + if($certificate_pair['type_uri'] != $encryptedKey->getEncryptionMethod()) { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Certificate Pair which matches digest is not of same algorithm type as document, check addCertificate()"); + } + + $PKcipher = Zend_InfoCard_Cipher::getInstanceByURI($encryptedKey->getEncryptionMethod()); + + $base64DecodeSupportsStrictParam = version_compare(PHP_VERSION, '5.2.0', '>='); + + if ($base64DecodeSupportsStrictParam) { + $keyCipherValueBase64Decoded = base64_decode($encryptedKey->getCipherValue(), true); + } else { + $keyCipherValueBase64Decoded = base64_decode($encryptedKey->getCipherValue()); + } + + $symmetricKey = $PKcipher->decrypt( + $keyCipherValueBase64Decoded, + file_get_contents($certificate_pair['private']), + $certificate_pair['password'] + ); + + $symCipher = Zend_InfoCard_Cipher::getInstanceByURI($encryptedData->getEncryptionMethod()); + + if ($base64DecodeSupportsStrictParam) { + $dataCipherValueBase64Decoded = base64_decode($encryptedData->getCipherValue(), true); + } else { + $dataCipherValueBase64Decoded = base64_decode($encryptedData->getCipherValue()); + } + + $signedToken = $symCipher->decrypt($dataCipherValueBase64Decoded, $symmetricKey); + + return $signedToken; + } + + /** + * Process an input Infomation Card EncryptedData block sent from the client, + * validate it, and return the claims contained within it on success or an error message on error + * + * @param string $strXmlToken The XML token sent to the server from the client + * @return Zend_Infocard_Claims The Claims object containing the claims, or any errors which occurred + */ + public function process($strXmlToken) + { + + $retval = new Zend_InfoCard_Claims(); + + require_once 'Zend/InfoCard/Exception.php'; + try { + $signedAssertionsXml = $this->_extractSignedToken($strXmlToken); + } catch(Zend_InfoCard_Exception $e) { + $retval->setError('Failed to extract assertion document'); + $retval->setCode(Zend_InfoCard_Claims::RESULT_PROCESSING_FAILURE); + return $retval; + } + + try { + $assertions = Zend_InfoCard_Xml_Assertion::getInstance($signedAssertionsXml); + } catch(Zend_InfoCard_Exception $e) { + $retval->setError('Failure processing assertion document'); + $retval->setCode(Zend_InfoCard_Claims::RESULT_PROCESSING_FAILURE); + return $retval; + } + + if(!($assertions instanceof Zend_InfoCard_Xml_Assertion_Interface)) { + throw new Zend_InfoCard_Exception("Invalid Assertion Object returned"); + } + + if(!($reference_id = Zend_InfoCard_Xml_Security::validateXMLSignature($assertions->asXML()))) { + $retval->setError("Failure Validating the Signature of the assertion document"); + $retval->setCode(Zend_InfoCard_Claims::RESULT_VALIDATION_FAILURE); + return $retval; + } + + // The reference id should be locally scoped as far as I know + if($reference_id[0] == '#') { + $reference_id = substr($reference_id, 1); + } else { + $retval->setError("Reference of document signature does not reference the local document"); + $retval->setCode(Zend_InfoCard_Claims::RESULT_VALIDATION_FAILURE); + return $retval; + } + + // Make sure the signature is in reference to the same document as the assertions + if($reference_id != $assertions->getAssertionID()) { + $retval->setError("Reference of document signature does not reference the local document"); + $retval->setCode(Zend_InfoCard_Claims::RESULT_VALIDATION_FAILURE); + } + + // Validate we haven't seen this before and the conditions are acceptable + $conditions = $this->getAdapter()->retrieveAssertion($assertions->getAssertionURI(), $assertions->getAssertionID()); + + if($conditions === false) { + $conditions = $assertions->getConditions(); + } + + + if(is_array($condition_error = $assertions->validateConditions($conditions))) { + $retval->setError("Conditions of assertion document are not met: {$condition_error[1]} ({$condition_error[0]})"); + $retval->setCode(Zend_InfoCard_Claims::RESULT_VALIDATION_FAILURE); + } + + $attributes = $assertions->getAttributes(); + + $retval->setClaims($attributes); + + if($retval->getCode() == 0) { + $retval->setCode(Zend_InfoCard_Claims::RESULT_SUCCESS); + } + + return $retval; + } +} diff --git a/library/Zend/InfoCard/Adapter/Default.php b/library/Zend/InfoCard/Adapter/Default.php new file mode 100644 index 0000000000..d24665c543 --- /dev/null +++ b/library/Zend/InfoCard/Adapter/Default.php @@ -0,0 +1,79 @@ +_padding = $padding; + break; + default: + require_once 'Zend/InfoCard/Cipher/Exception.php'; + throw new Zend_InfoCard_Cipher_Exception("Invalid Padding Type Provided"); + break; + } + + return $this; + } + + /** + * Retruns the public-key padding used + * + * @return integer One of the padding constants in this class + */ + public function getPadding() + { + return $this->_padding; + } +} diff --git a/library/Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php b/library/Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php new file mode 100644 index 0000000000..feee469f9a --- /dev/null +++ b/library/Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php @@ -0,0 +1,120 @@ +setPadding($padding); + } + + /** + * Decrypts RSA encrypted data using the given private key + * + * @throws Zend_InfoCard_Cipher_Exception + * @param string $encryptedData The encrypted data in binary format + * @param string $privateKey The private key in binary format + * @param string $password The private key passphrase + * @param integer $padding The padding to use during decryption (of not provided object value will be used) + * @return string The decrypted data + */ + public function decrypt($encryptedData, $privateKey, $password = null, $padding = null) + { + $private_key = openssl_pkey_get_private(array($privateKey, $password)); + + if(!$private_key) { + require_once 'Zend/InfoCard/Cipher/Exception.php'; + throw new Zend_InfoCard_Cipher_Exception("Failed to load private key"); + } + + if($padding !== null) { + try { + $this->setPadding($padding); + } catch(Exception $e) { + openssl_free_key($private_key); + throw $e; + } + } + + switch($this->getPadding()) { + case self::NO_PADDING: + $openssl_padding = OPENSSL_NO_PADDING; + break; + case self::OAEP_PADDING: + $openssl_padding = OPENSSL_PKCS1_OAEP_PADDING; + break; + } + + $result = openssl_private_decrypt($encryptedData, $decryptedData, $private_key, $openssl_padding); + + openssl_free_key($private_key); + + if(!$result) { + require_once 'Zend/InfoCard/Cipher/Exception.php'; + throw new Zend_InfoCard_Cipher_Exception("Unable to Decrypt Value using provided private key"); + } + + if($this->getPadding() == self::NO_PADDING) { + $decryptedData = substr($decryptedData, 2); + $start = strpos($decryptedData, 0) + 1; + $decryptedData = substr($decryptedData, $start); + } + + return $decryptedData; + } +} diff --git a/library/Zend/InfoCard/Cipher/Pki/Interface.php b/library/Zend/InfoCard/Cipher/Pki/Interface.php new file mode 100644 index 0000000000..44e271672f --- /dev/null +++ b/library/Zend/InfoCard/Cipher/Pki/Interface.php @@ -0,0 +1,33 @@ + 0) { + $mcrypt_iv = substr($encryptedData, 0, $iv_length); + $encryptedData = substr($encryptedData, $iv_length); + } + + $decrypted = mcrypt_decrypt(self::MCRYPT_CIPHER, $decryptionKey, $encryptedData, self::MCRYPT_MODE, $mcrypt_iv); + + if(!$decrypted) { + require_once 'Zend/InfoCard/Cipher/Exception.php'; + throw new Zend_InfoCard_Cipher_Exception("Failed to decrypt data using AES256CBC Algorithm"); + } + + $decryptedLength = strlen($decrypted); + $paddingLength = substr($decrypted, $decryptedLength -1, 1); + $decrypted = substr($decrypted, 0, $decryptedLength - ord($paddingLength)); + + return rtrim($decrypted, "\0"); + } +} diff --git a/library/Zend/InfoCard/Cipher/Symmetric/Aes128cbc/Interface.php b/library/Zend/InfoCard/Cipher/Symmetric/Aes128cbc/Interface.php new file mode 100644 index 0000000000..45027e66ef --- /dev/null +++ b/library/Zend/InfoCard/Cipher/Symmetric/Aes128cbc/Interface.php @@ -0,0 +1,38 @@ +_isValid = true; + return $this; + } + + /** + * Retrieve the PPI (Private Personal Identifier) associated with the information card + * + * @return string the private personal identifier + */ + public function getCardID() + { + return $this->getClaim('http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier'); + } + + /** + * Retrieves the default namespace used in this information card. If a default namespace was not + * set, it figures out which one to consider 'default' by taking the first namespace sorted by use-count + * in claims + * + * @throws Zend_InfoCard_Exception + * @return string The default namespace + */ + public function getDefaultNamespace() + { + if($this->_defaultNamespace === null) { + $namespaces = array(); + $leader = ''; + foreach($this->_claims as $claim) { + if(!isset($namespaces[$claim['namespace']])) { + $namespaces[$claim['namespace']] = 1; + } else { + $namespaces[$claim['namespace']]++; + } + + if(empty($leader) || ($namespaces[$claim['namespace']] > $leader)) { + $leader = $claim['namespace']; + } + } + + if(empty($leader)) { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Failed to determine default namespace"); + } + + $this->setDefaultNamespace($leader); + } + + return $this->_defaultNamespace; + } + + /** + * Set the default namespace, overriding any existing default + * + * @throws Zend_InfoCard_Exception + * @param string $namespace The default namespace to use + * @return Zend_InfoCard_Claims + */ + public function setDefaultNamespace($namespace) + { + + foreach($this->_claims as $claim) { + if($namespace == $claim['namespace']) { + $this->_defaultNamespace = $namespace; + return $this; + } + } + + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("At least one claim must exist in specified namespace to make it the default namespace"); + } + + /** + * Indicates if this claim object contains validated claims or not + * + * @return bool + */ + public function isValid() + { + return $this->_isValid; + } + + /** + * Set the error message contained within the claims object + * + * @param string $error The error message + * @return Zend_InfoCard_Claims + */ + public function setError($error) + { + $this->_error = $error; + $this->_isValid = false; + return $this; + } + + /** + * Retrieve the error message contained within the claims object + * + * @return string The error message + */ + public function getErrorMsg() + { + return $this->_error; + } + + /** + * Set the claims for the claims object. Can only be set once and is done + * by the component itself. Internal use only. + * + * @throws Zend_InfoCard_Exception + * @param array $claims + * @return Zend_InfoCard_Claims + */ + public function setClaims(Array $claims) + { + if($this->_claims !== null) { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Claim objects are read-only"); + } + + $this->_claims = $claims; + return $this; + } + + /** + * Set the result code of the claims object. + * + * @throws Zend_InfoCard_Exception + * @param int $code The result code + * @return Zend_InfoCard_Claims + */ + public function setCode($code) + { + switch($code) { + case self::RESULT_PROCESSING_FAILURE: + case self::RESULT_SUCCESS: + case self::RESULT_VALIDATION_FAILURE: + $this->_code = $code; + return $this; + } + + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Attempted to set unknown error code"); + } + + /** + * Gets the result code of the claims object + * + * @return integer The result code + */ + public function getCode() + { + return $this->_code; + } + + /** + * Get a claim by providing its complete claim URI + * + * @param string $claimURI The complete claim URI to retrieve + * @return mixed The claim matching that specific URI or null if not found + */ + public function getClaim($claimURI) + { + if($this->claimExists($claimURI)) { + return $this->_claims[$claimURI]['value']; + } + + return null; + } + + /** + * Indicates if a specific claim URI exists or not within the object + * + * @param string $claimURI The complete claim URI to check + * @return bool true if the claim exists, false if not found + */ + public function claimExists($claimURI) + { + return isset($this->_claims[$claimURI]); + } + + /** + * Magic helper function + * @throws Zend_InfoCard_Exception + */ + public function __unset($k) + { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Claim objects are read-only"); + } + + /** + * Magic helper function + */ + public function __isset($k) + { + return $this->claimExists("{$this->getDefaultNamespace()}/$k"); + } + + /** + * Magic helper function + */ + public function __get($k) + { + return $this->getClaim("{$this->getDefaultNamespace()}/$k"); + } + + /** + * Magic helper function + * @throws Zend_InfoCard_Exception + */ + public function __set($k, $v) + { + require_once 'Zend/InfoCard/Exception.php'; + throw new Zend_InfoCard_Exception("Claim objects are read-only"); + } +} diff --git a/library/Zend/InfoCard/Exception.php b/library/Zend/InfoCard/Exception.php new file mode 100644 index 0000000000..82e3a82143 --- /dev/null +++ b/library/Zend/InfoCard/Exception.php @@ -0,0 +1,43 @@ +asXML(); + } else if (is_string($xmlData)) { + $strXmlData = $xmlData; + } else { + require_once 'Zend/InfoCard/Xml/Exception.php'; + throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance"); + } + + $sxe = simplexml_load_string($strXmlData); + + $namespaces = $sxe->getDocNameSpaces(); + + foreach($namespaces as $namespace) { + switch($namespace) { + case self::TYPE_SAML: + include_once 'Zend/InfoCard/Xml/Assertion/Saml.php'; + return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_Assertion_Saml', null); + } + } + + require_once 'Zend/InfoCard/Xml/Exception.php'; + throw new Zend_InfoCard_Xml_Exception("Unable to determine Assertion type by Namespace"); + } +} diff --git a/library/Zend/InfoCard/Xml/Assertion/Interface.php b/library/Zend/InfoCard/Xml/Assertion/Interface.php new file mode 100644 index 0000000000..e4d71fea58 --- /dev/null +++ b/library/Zend/InfoCard/Xml/Assertion/Interface.php @@ -0,0 +1,69 @@ + $conditionValue) { + switch(strtolower($condition)) { + case 'audiencerestrictioncondition': + + $serverName = $this->_getServerName(); + $serverPort = $this->_getServerPort(); + + $self_aliases[] = $serverName; + $self_aliases[] = "{{$serverName}:{$serverPort}"; + + $found = false; + if(is_array($conditionValue)) { + foreach($conditionValue as $audience) { + + list(,,$audience) = explode('/', $audience); + if(in_array($audience, $self_aliases)) { + $found = true; + break; + } + } + } + + if(!$found) { + return array($condition, 'Could not find self in allowed audience list'); + } + + break; + case 'notbefore': + $notbeforetime = strtotime($conditionValue); + + if($currentTime < $notbeforetime) { + if($currentTime + self::CONDITION_TIME_ADJ < $notbeforetime) { + return array($condition, 'Current time is before specified window'); + } + } + + break; + case 'notonorafter': + $notonoraftertime = strtotime($conditionValue); + + if($currentTime >= $notonoraftertime) { + if($currentTime - self::CONDITION_TIME_ADJ >= $notonoraftertime) { + return array($condition, 'Current time is after specified window'); + } + } + + break; + + } + } + } + return true; + } + + /** + * Get the Assertion URI for this type of Assertion + * + * @return string the Assertion URI + */ + public function getAssertionURI() + { + return Zend_InfoCard_Xml_Assertion::TYPE_SAML; + } + + /** + * Get the Major Version of the SAML Assertion + * + * @return integer The major version number + */ + public function getMajorVersion() + { + return (int)(string)$this['MajorVersion']; + } + + /** + * The Minor Version of the SAML Assertion + * + * @return integer The minor version number + */ + public function getMinorVersion() + { + return (int)(string)$this['MinorVersion']; + } + + /** + * Get the Assertion ID of the assertion + * + * @return string The Assertion ID + */ + public function getAssertionID() + { + return (string)$this['AssertionID']; + } + + /** + * Get the Issuer URI of the assertion + * + * @return string the URI of the assertion Issuer + */ + public function getIssuer() + { + return (string)$this['Issuer']; + } + + /** + * Get the Timestamp of when the assertion was issued + * + * @return integer a UNIX timestamp representing when the assertion was issued + */ + public function getIssuedTimestamp() + { + return strtotime((string)$this['IssueInstant']); + } + + /** + * Return an array of conditions which the assertions are predicated on + * + * @throws Zend_InfoCard_Xml_Exception + * @return array an array of conditions + */ + public function getConditions() + { + + list($conditions) = $this->xpath("//saml:Conditions"); + + if(!($conditions instanceof Zend_InfoCard_Xml_Element)) { + throw new Zend_InfoCard_Xml_Exception("Unable to find the saml:Conditions block"); + } + + $retval = array(); + + foreach($conditions->children('urn:oasis:names:tc:SAML:1.0:assertion') as $key => $value) { + switch($key) { + case self::CONDITION_AUDIENCE: + foreach($value->children('urn:oasis:names:tc:SAML:1.0:assertion') as $audience_key => $audience_value) { + if($audience_key == 'Audience') { + $retval[$key][] = (string)$audience_value; + } + } + break; + } + } + + $retval['NotBefore'] = (string)$conditions['NotBefore']; + $retval['NotOnOrAfter'] = (string)$conditions['NotOnOrAfter']; + + return $retval; + } + + /** + * Get they KeyInfo element for the Subject KeyInfo block + * + * @todo Not Yet Implemented + * @ignore + */ + public function getSubjectKeyInfo() + { + /** + * @todo Not sure if this is part of the scope for now.. + */ + + if($this->getConfirmationMethod() == self::CONFIRMATION_BEARER) { + throw new Zend_InfoCard_Xml_Exception("Cannot get Subject Key Info when Confirmation Method was Bearer"); + } + } + + /** + * Return the Confirmation Method URI used in the Assertion + * + * @return string The confirmation method URI + */ + public function getConfirmationMethod() + { + list($confirmation) = $this->xPath("//saml:ConfirmationMethod"); + return (string)$confirmation; + } + + /** + * Return an array of attributes (claims) contained within the assertion + * + * @return array An array of attributes / claims within the assertion + */ + public function getAttributes() + { + $attributes = $this->xPath('//saml:Attribute'); + + $retval = array(); + foreach($attributes as $key => $value) { + + $retkey = (string)$value['AttributeNamespace'].'/'.(string)$value['AttributeName']; + + $retval[$retkey]['name'] = (string)$value['AttributeName']; + $retval[$retkey]['namespace'] = (string)$value['AttributeNamespace']; + + list($aValue) = $value->children('urn:oasis:names:tc:SAML:1.0:assertion'); + $retval[$retkey]['value'] = (string)$aValue; + } + + return $retval; + } +} diff --git a/library/Zend/InfoCard/Xml/Element.php b/library/Zend/InfoCard/Xml/Element.php new file mode 100644 index 0000000000..c91d781a53 --- /dev/null +++ b/library/Zend/InfoCard/Xml/Element.php @@ -0,0 +1,107 @@ +asXML(); + } + + /** + * Converts an XML Element object into a DOM object + * + * @throws Zend_InfoCard_Xml_Exception + * @param Zend_InfoCard_Xml_Element $e The object to convert + * @return DOMElement A DOMElement representation of the same object + */ + static public function convertToDOM(Zend_InfoCard_Xml_Element $e) + { + $dom = dom_import_simplexml($e); + + if(!($dom instanceof DOMElement)) { + // Zend_InfoCard_Xml_Element exntes SimpleXMLElement, so this should *never* fail + // @codeCoverageIgnoreStart + require_once 'Zend/InfoCard/Xml/Exception.php'; + throw new Zend_InfoCard_Xml_Exception("Failed to convert between SimpleXML and DOM"); + // @codeCoverageIgnoreEnd + } + + return $dom; + } + + /** + * Converts a DOMElement object into the specific class + * + * @throws Zend_InfoCard_Xml_Exception + * @param DOMElement $e The DOMElement object to convert + * @param string $classname The name of the class to convert it to (must inhert from Zend_InfoCard_Xml_Element) + * @return Zend_InfoCard_Xml_Element a Xml Element object from the DOM element + */ + static public function convertToObject(DOMElement $e, $classname) + { + if (!class_exists($classname)) { + require_once 'Zend/Loader.php'; + Zend_Loader::loadClass($classname); + } + + $reflection = new ReflectionClass($classname); + + if(!$reflection->isSubclassOf('Zend_InfoCard_Xml_Element')) { + require_once 'Zend/InfoCard/Xml/Exception.php'; + throw new Zend_InfoCard_Xml_Exception("DOM element must be converted to an instance of Zend_InfoCard_Xml_Element"); + } + + $sxe = simplexml_import_dom($e, $classname); + + if(!($sxe instanceof Zend_InfoCard_Xml_Element)) { + // Since we just checked to see if this was a subclass of Zend_infoCard_Xml_Element this shoudl never fail + // @codeCoverageIgnoreStart + require_once 'Zend/InfoCard/Xml/Exception.php'; + throw new Zend_InfoCard_Xml_Exception("Failed to convert between DOM and SimpleXML"); + // @codeCoverageIgnoreEnd + } + + return $sxe; + } +} diff --git a/library/Zend/InfoCard/Xml/Element/Interface.php b/library/Zend/InfoCard/Xml/Element/Interface.php new file mode 100644 index 0000000000..2bd1dd5e16 --- /dev/null +++ b/library/Zend/InfoCard/Xml/Element/Interface.php @@ -0,0 +1,44 @@ +asXML(); + } else if (is_string($xmlData)) { + $strXmlData = $xmlData; + } else { + require_once 'Zend/InfoCard/Xml/Exception.php'; + throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance"); + } + + $sxe = simplexml_load_string($strXmlData); + + switch($sxe['Type']) { + case 'http://www.w3.org/2001/04/xmlenc#Element': + include_once 'Zend/InfoCard/Xml/EncryptedData/XmlEnc.php'; + return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_EncryptedData_XmlEnc'); + default: + require_once 'Zend/InfoCard/Xml/Exception.php'; + throw new Zend_InfoCard_Xml_Exception("Unknown EncryptedData type found"); + break; + } + } +} diff --git a/library/Zend/InfoCard/Xml/EncryptedData/Abstract.php b/library/Zend/InfoCard/Xml/EncryptedData/Abstract.php new file mode 100644 index 0000000000..3113d3a8f6 --- /dev/null +++ b/library/Zend/InfoCard/Xml/EncryptedData/Abstract.php @@ -0,0 +1,92 @@ +KeyInfo[0]); + } + + /** + * Return the Encryption method used to encrypt the assertion document + * (the symmetric cipher) + * + * @throws Zend_InfoCard_Xml_Exception + * @return string The URI of the Symmetric Encryption Method used + */ + public function getEncryptionMethod() + { + + /** + * @todo This is pretty hacky unless we can always be confident that the first + * EncryptionMethod block is the correct one (the AES or compariable symetric algorithm).. + * the second is the PK method if provided. + */ + list($encryption_method) = $this->xpath("//enc:EncryptionMethod"); + + if(!($encryption_method instanceof Zend_InfoCard_Xml_Element)) { + throw new Zend_InfoCard_Xml_Exception("Unable to find the enc:EncryptionMethod symmetric encryption block"); + } + + $dom = self::convertToDOM($encryption_method); + + if(!$dom->hasAttribute('Algorithm')) { + throw new Zend_InfoCard_Xml_Exception("Unable to determine the encryption algorithm in the Symmetric enc:EncryptionMethod XML block"); + } + + return $dom->getAttribute('Algorithm'); + } + + /** + * Returns the value of the encrypted block + * + * @return string the value of the encrypted CipherValue block + */ + abstract function getCipherValue(); +} diff --git a/library/Zend/InfoCard/Xml/EncryptedData/XmlEnc.php b/library/Zend/InfoCard/Xml/EncryptedData/XmlEnc.php new file mode 100644 index 0000000000..c454646d1e --- /dev/null +++ b/library/Zend/InfoCard/Xml/EncryptedData/XmlEnc.php @@ -0,0 +1,64 @@ +registerXPathNamespace('enc', 'http://www.w3.org/2001/04/xmlenc#'); + + list(,$cipherdata) = $this->xpath("//enc:CipherData"); + + if(!($cipherdata instanceof Zend_InfoCard_Xml_Element)) { + throw new Zend_InfoCard_Xml_Exception("Unable to find the enc:CipherData block"); + } + $cipherdata->registerXPathNamespace('enc', 'http://www.w3.org/2001/04/xmlenc#'); + list(,$ciphervalue) = $cipherdata->xpath("//enc:CipherValue"); + + if(!($ciphervalue instanceof Zend_InfoCard_Xml_Element)) { + throw new Zend_InfoCard_Xml_Exception("Unable to fidn the enc:CipherValue block"); + } + + return (string)$ciphervalue; + } +} diff --git a/library/Zend/InfoCard/Xml/EncryptedKey.php b/library/Zend/InfoCard/Xml/EncryptedKey.php new file mode 100644 index 0000000000..d1f656087b --- /dev/null +++ b/library/Zend/InfoCard/Xml/EncryptedKey.php @@ -0,0 +1,174 @@ +asXML(); + } else if (is_string($xmlData)) { + $strXmlData = $xmlData; + } else { + throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance"); + } + + $sxe = simplexml_load_string($strXmlData); + + if($sxe->getName() != "EncryptedKey") { + throw new Zend_InfoCard_Xml_Exception("Invalid XML Block provided for EncryptedKey"); + } + + return simplexml_load_string($strXmlData, "Zend_InfoCard_Xml_EncryptedKey"); + } + + /** + * Returns the Encyption Method Algorithm URI of the block + * + * @throws Zend_InfoCard_Xml_Exception + * @return string the Encryption method algorithm URI + */ + public function getEncryptionMethod() + { + + $this->registerXPathNamespace('e', 'http://www.w3.org/2001/04/xmlenc#'); + list($encryption_method) = $this->xpath("//e:EncryptionMethod"); + + if(!($encryption_method instanceof Zend_InfoCard_Xml_Element)) { + throw new Zend_InfoCard_Xml_Exception("Unable to find the e:EncryptionMethod KeyInfo encryption block"); + } + + $dom = self::convertToDOM($encryption_method); + + if(!$dom->hasAttribute('Algorithm')) { + throw new Zend_InfoCard_Xml_Exception("Unable to determine the encryption algorithm in the Symmetric enc:EncryptionMethod XML block"); + } + + return $dom->getAttribute('Algorithm'); + + } + + /** + * Returns the Digest Method Algorithm URI used + * + * @throws Zend_InfoCard_Xml_Exception + * @return string the Digest Method Algorithm URI + */ + public function getDigestMethod() + { + $this->registerXPathNamespace('e', 'http://www.w3.org/2001/04/xmlenc#'); + list($encryption_method) = $this->xpath("//e:EncryptionMethod"); + + if(!($encryption_method instanceof Zend_InfoCard_Xml_Element)) { + throw new Zend_InfoCard_Xml_Exception("Unable to find the e:EncryptionMethod KeyInfo encryption block"); + } + + if(!($encryption_method->DigestMethod instanceof Zend_InfoCard_Xml_Element)) { + throw new Zend_InfoCard_Xml_Exception("Unable to find the DigestMethod block"); + } + + $dom = self::convertToDOM($encryption_method->DigestMethod); + + if(!$dom->hasAttribute('Algorithm')) { + throw new Zend_InfoCard_Xml_Exception("Unable to determine the digest algorithm for the symmetric Keyinfo"); + } + + return $dom->getAttribute('Algorithm'); + + } + + /** + * Returns the KeyInfo block object + * + * @throws Zend_InfoCard_Xml_Exception + * @return Zend_InfoCard_Xml_KeyInfo_Abstract + */ + public function getKeyInfo() + { + + if(isset($this->KeyInfo)) { + return Zend_InfoCard_Xml_KeyInfo::getInstance($this->KeyInfo); + } + + throw new Zend_InfoCard_Xml_Exception("Unable to locate a KeyInfo block"); + } + + /** + * Return the encrypted value of the block in base64 format + * + * @throws Zend_InfoCard_Xml_Exception + * @return string The Value of the CipherValue block in base64 format + */ + public function getCipherValue() + { + + $this->registerXPathNamespace('e', 'http://www.w3.org/2001/04/xmlenc#'); + + list($cipherdata) = $this->xpath("//e:CipherData"); + + if(!($cipherdata instanceof Zend_InfoCard_Xml_Element)) { + throw new Zend_InfoCard_Xml_Exception("Unable to find the e:CipherData block"); + } + + $cipherdata->registerXPathNameSpace('enc', 'http://www.w3.org/2001/04/xmlenc#'); + list($ciphervalue) = $cipherdata->xpath("//enc:CipherValue"); + + if(!($ciphervalue instanceof Zend_InfoCard_Xml_Element)) { + throw new Zend_InfoCard_Xml_Exception("Unable to fidn the enc:CipherValue block"); + } + + return (string)$ciphervalue; + } +} diff --git a/library/Zend/InfoCard/Xml/Exception.php b/library/Zend/InfoCard/Xml/Exception.php new file mode 100644 index 0000000000..1c0492bd6c --- /dev/null +++ b/library/Zend/InfoCard/Xml/Exception.php @@ -0,0 +1,37 @@ +asXML(); + } else if (is_string($xmlData)) { + $strXmlData = $xmlData; + } else { + throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance"); + } + + $sxe = simplexml_load_string($strXmlData); + + $namespaces = $sxe->getDocNameSpaces(); + + if(!empty($namespaces)) { + foreach($sxe->getDocNameSpaces() as $namespace) { + switch($namespace) { + case 'http://www.w3.org/2000/09/xmldsig#': + include_once 'Zend/InfoCard/Xml/KeyInfo/XmlDSig.php'; + return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_KeyInfo_XmlDSig'); + default: + + throw new Zend_InfoCard_Xml_Exception("Unknown KeyInfo Namespace provided"); + // We are ignoring these lines, as XDebug reports each as a "non executed" line + // which breaks my coverage % + // @codeCoverageIgnoreStart + } + } + } + // @codeCoverageIgnoreEnd + + include_once 'Zend/InfoCard/Xml/KeyInfo/Default.php'; + return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_KeyInfo_Default'); + } +} diff --git a/library/Zend/InfoCard/Xml/KeyInfo/Abstract.php b/library/Zend/InfoCard/Xml/KeyInfo/Abstract.php new file mode 100644 index 0000000000..2f0d428edf --- /dev/null +++ b/library/Zend/InfoCard/Xml/KeyInfo/Abstract.php @@ -0,0 +1,37 @@ + block which doesn't provide a namespace + * In this context, it is assumed to mean that it is the type of KeyInfo block which + * contains the SecurityTokenReference + * + * @category Zend + * @package Zend_InfoCard + * @subpackage Zend_InfoCard_Xml + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_InfoCard_Xml_KeyInfo_Default extends Zend_InfoCard_Xml_KeyInfo_Abstract +{ + /** + * Returns the object representation of the SecurityTokenReference block + * + * @throws Zend_InfoCard_Xml_Exception + * @return Zend_InfoCard_Xml_SecurityTokenReference + */ + public function getSecurityTokenReference() + { + $this->registerXPathNamespace('o', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'); + + list($sectokenref) = $this->xpath('//o:SecurityTokenReference'); + + if(!($sectokenref instanceof Zend_InfoCard_Xml_Element)) { + throw new Zend_InfoCard_Xml_Exception('Could not locate the Security Token Reference'); + } + + return Zend_InfoCard_Xml_SecurityTokenReference::getInstance($sectokenref); + } +} diff --git a/library/Zend/InfoCard/Xml/KeyInfo/Interface.php b/library/Zend/InfoCard/Xml/KeyInfo/Interface.php new file mode 100644 index 0000000000..369db48683 --- /dev/null +++ b/library/Zend/InfoCard/Xml/KeyInfo/Interface.php @@ -0,0 +1,38 @@ +registerXPathNamespace('e', 'http://www.w3.org/2001/04/xmlenc#'); + list($encryptedkey) = $this->xpath('//e:EncryptedKey'); + + if(!($encryptedkey instanceof Zend_InfoCard_Xml_Element)) { + throw new Zend_InfoCard_Xml_Exception("Failed to retrieve encrypted key"); + } + + return Zend_InfoCard_Xml_EncryptedKey::getInstance($encryptedkey); + } + + /** + * Returns the KeyInfo Block within the encrypted key + * + * @return Zend_InfoCard_Xml_KeyInfo_Default + */ + public function getKeyInfo() + { + return $this->getEncryptedKey()->getKeyInfo(); + } +} diff --git a/library/Zend/InfoCard/Xml/Security.php b/library/Zend/InfoCard/Xml/Security.php new file mode 100644 index 0000000000..a20988d589 --- /dev/null +++ b/library/Zend/InfoCard/Xml/Security.php @@ -0,0 +1,327 @@ +Signature)) { + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Could not identify XML Signature element"); + } + + if(!isset($sxe->Signature->SignedInfo)) { + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Signature is missing a SignedInfo block"); + } + + if(!isset($sxe->Signature->SignatureValue)) { + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Signature is missing a SignatureValue block"); + } + + if(!isset($sxe->Signature->KeyInfo)) { + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Signature is missing a KeyInfo block"); + } + + if(!isset($sxe->Signature->KeyInfo->KeyValue)) { + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Signature is missing a KeyValue block"); + } + + switch((string)$sxe->Signature->SignedInfo->CanonicalizationMethod['Algorithm']) { + case self::CANONICAL_METHOD_C14N_EXC: + $cMethod = (string)$sxe->Signature->SignedInfo->CanonicalizationMethod['Algorithm']; + break; + default: + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Unknown or unsupported CanonicalizationMethod Requested"); + break; + } + + switch((string)$sxe->Signature->SignedInfo->SignatureMethod['Algorithm']) { + case self::SIGNATURE_METHOD_SHA1: + $sMethod = (string)$sxe->Signature->SignedInfo->SignatureMethod['Algorithm']; + break; + default: + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Unknown or unsupported SignatureMethod Requested"); + break; + } + + switch((string)$sxe->Signature->SignedInfo->Reference->DigestMethod['Algorithm']) { + case self::DIGEST_METHOD_SHA1: + $dMethod = (string)$sxe->Signature->SignedInfo->Reference->DigestMethod['Algorithm']; + break; + default: + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Unknown or unsupported DigestMethod Requested"); + break; + } + + $base64DecodeSupportsStrictParam = version_compare(PHP_VERSION, '5.2.0', '>='); + + if ($base64DecodeSupportsStrictParam) { + $dValue = base64_decode((string)$sxe->Signature->SignedInfo->Reference->DigestValue, true); + } else { + $dValue = base64_decode((string)$sxe->Signature->SignedInfo->Reference->DigestValue); + } + + if ($base64DecodeSupportsStrictParam) { + $signatureValue = base64_decode((string)$sxe->Signature->SignatureValue, true); + } else { + $signatureValue = base64_decode((string)$sxe->Signature->SignatureValue); + } + + $transformer = new Zend_InfoCard_Xml_Security_Transform(); + + foreach($sxe->Signature->SignedInfo->Reference->Transforms->children() as $transform) { + $transformer->addTransform((string)$transform['Algorithm']); + } + + $transformed_xml = $transformer->applyTransforms($strXMLInput); + + $transformed_xml_binhash = pack("H*", sha1($transformed_xml)); + + if(!self::_secureStringCompare($transformed_xml_binhash, $dValue)) { + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Locally Transformed XML does not match XML Document. Cannot Verify Signature"); + } + + $public_key = null; + + switch(true) { + case isset($sxe->Signature->KeyInfo->KeyValue->X509Certificate): + + $certificate = (string)$sxe->Signature->KeyInfo->KeyValue->X509Certificate; + + + $pem = "-----BEGIN CERTIFICATE-----\n" . + wordwrap($certificate, 64, "\n", true) . + "\n-----END CERTIFICATE-----"; + + $public_key = openssl_pkey_get_public($pem); + + if(!$public_key) { + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Unable to extract and prcoess X509 Certificate from KeyValue"); + } + + break; + case isset($sxe->Signature->KeyInfo->KeyValue->RSAKeyValue): + + if(!isset($sxe->Signature->KeyInfo->KeyValue->RSAKeyValue->Modulus) || + !isset($sxe->Signature->KeyInfo->KeyValue->RSAKeyValue->Exponent)) { + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("RSA Key Value not in Modulus/Exponent form"); + } + + $modulus = base64_decode((string)$sxe->Signature->KeyInfo->KeyValue->RSAKeyValue->Modulus); + $exponent = base64_decode((string)$sxe->Signature->KeyInfo->KeyValue->RSAKeyValue->Exponent); + + $pem_public_key = self::_getPublicKeyFromModExp($modulus, $exponent); + + $public_key = openssl_pkey_get_public ($pem_public_key); + + break; + default: + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Unable to determine or unsupported representation of the KeyValue block"); + } + + $transformer = new Zend_InfoCard_Xml_Security_Transform(); + $transformer->addTransform((string)$sxe->Signature->SignedInfo->CanonicalizationMethod['Algorithm']); + + // The way we are doing our XML processing requires that we specifically add this + // (even though it's in the parent-block).. otherwise, our canonical form + // fails signature verification + $sxe->Signature->SignedInfo->addAttribute('xmlns', 'http://www.w3.org/2000/09/xmldsig#'); + + $canonical_signedinfo = $transformer->applyTransforms($sxe->Signature->SignedInfo->asXML()); + + if(@openssl_verify($canonical_signedinfo, $signatureValue, $public_key)) { + return (string)$sxe->Signature->SignedInfo->Reference['URI']; + } + + return false; + } + + /** + * Transform an RSA Key in Modulus/Exponent format into a PEM encoding and + * return an openssl resource for it + * + * @param string $modulus The RSA Modulus in binary format + * @param string $exponent The RSA exponent in binary format + * @return string The PEM encoded version of the key + */ + static protected function _getPublicKeyFromModExp($modulus, $exponent) + { + $modulusInteger = self::_encodeValue($modulus, self::ASN_TYPE_INTEGER); + $exponentInteger = self::_encodeValue($exponent, self::ASN_TYPE_INTEGER); + $modExpSequence = self::_encodeValue($modulusInteger . $exponentInteger, self::ASN_TYPE_SEQUENCE); + $modExpBitString = self::_encodeValue($modExpSequence, self::ASN_TYPE_BITSTRING); + + $binRsaKeyIdentifier = pack( "H*", self::RSA_KEY_IDENTIFIER ); + + $publicKeySequence = self::_encodeValue($binRsaKeyIdentifier . $modExpBitString, self::ASN_TYPE_SEQUENCE); + + $publicKeyInfoBase64 = base64_encode( $publicKeySequence ); + + $publicKeyString = "-----BEGIN PUBLIC KEY-----\n"; + $publicKeyString .= wordwrap($publicKeyInfoBase64, 64, "\n", true); + $publicKeyString .= "\n-----END PUBLIC KEY-----\n"; + + return $publicKeyString; + } + + /** + * Encode a limited set of data types into ASN.1 encoding format + * which is used in X.509 certificates + * + * @param string $data The data to encode + * @param const $type The encoding format constant + * @return string The encoded value + * @throws Zend_InfoCard_Xml_Security_Exception + */ + static protected function _encodeValue($data, $type) + { + // Null pad some data when we get it (integer values > 128 and bitstrings) + if( (($type == self::ASN_TYPE_INTEGER) && (ord($data) > 0x7f)) || + ($type == self::ASN_TYPE_BITSTRING)) { + $data = "\0$data"; + } + + $len = strlen($data); + + // encode the value based on length of the string + // I'm fairly confident that this is by no means a complete implementation + // but it is enough for our purposes + switch(true) { + case ($len < 128): + return sprintf("%c%c%s", $type, $len, $data); + case ($len < 0x0100): + return sprintf("%c%c%c%s", $type, 0x81, $len, $data); + case ($len < 0x010000): + return sprintf("%c%c%c%c%s", $type, 0x82, $len / 0x0100, $len % 0x0100, $data); + default: + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Could not encode value"); + } + + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Invalid code path"); + } + + /** + * Securely compare two strings for equality while avoided C level memcmp() + * optimisations capable of leaking timing information useful to an attacker + * attempting to iteratively guess the unknown string (e.g. password) being + * compared against. + * + * @param string $a + * @param string $b + * @return bool + */ + static protected function _secureStringCompare($a, $b) + { + if (strlen($a) !== strlen($b)) { + return false; + } + $result = 0; + for ($i = 0; $i < strlen($a); $i++) { + $result |= ord($a[$i]) ^ ord($b[$i]); + } + return $result == 0; + } +} diff --git a/library/Zend/InfoCard/Xml/Security/Exception.php b/library/Zend/InfoCard/Xml/Security/Exception.php new file mode 100644 index 0000000000..7030af8ffe --- /dev/null +++ b/library/Zend/InfoCard/Xml/Security/Exception.php @@ -0,0 +1,37 @@ +_findClassbyURI($uri); + + $this->_transformList[] = array('uri' => $uri, + 'class' => $class); + return $this; + } + + /** + * Return the list of transforms to perform + * + * @return array The list of transforms + */ + public function getTransformList() + { + return $this->_transformList; + } + + /** + * Apply the transforms in the transform list to the input XML document + * + * @param string $strXmlDocument The input XML + * @return string The XML after the transformations have been applied + */ + public function applyTransforms($strXmlDocument) + { + foreach($this->_transformList as $transform) { + if (!class_exists($transform['class'])) { + require_once 'Zend/Loader.php'; + Zend_Loader::loadClass($transform['class']); + } + + $transformer = new $transform['class']; + + // We can't really test this check because it would require logic changes in the component itself + // @codeCoverageIgnoreStart + if(!($transformer instanceof Zend_InfoCard_Xml_Security_Transform_Interface)) { + require_once 'Zend/InfoCard/Xml/Security/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Exception("Transforms must implement the Transform Interface"); + } + // @codeCoverageIgnoreEnd + + $strXmlDocument = $transformer->transform($strXmlDocument); + } + + return $strXmlDocument; + } +} diff --git a/library/Zend/InfoCard/Xml/Security/Transform/EnvelopedSignature.php b/library/Zend/InfoCard/Xml/Security/Transform/EnvelopedSignature.php new file mode 100644 index 0000000000..b6f3b0a8fc --- /dev/null +++ b/library/Zend/InfoCard/Xml/Security/Transform/EnvelopedSignature.php @@ -0,0 +1,60 @@ +Signature) { + require_once 'Zend/InfoCard/Xml/Security/Transform/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Transform_Exception("Unable to locate Signature Block for EnvelopedSignature Transform"); + } + + unset($sxe->Signature); + + return $sxe->asXML(); + } +} diff --git a/library/Zend/InfoCard/Xml/Security/Transform/Exception.php b/library/Zend/InfoCard/Xml/Security/Transform/Exception.php new file mode 100644 index 0000000000..69912bf64e --- /dev/null +++ b/library/Zend/InfoCard/Xml/Security/Transform/Exception.php @@ -0,0 +1,37 @@ +loadXML($strXMLData); + + if(method_exists($dom, 'C14N')) { + return $dom->C14N(true, false); + } + + require_once 'Zend/InfoCard/Xml/Security/Transform/Exception.php'; + throw new Zend_InfoCard_Xml_Security_Transform_Exception("This transform requires the C14N() method to exist in the DOM extension"); + } +} diff --git a/library/Zend/InfoCard/Xml/SecurityTokenReference.php b/library/Zend/InfoCard/Xml/SecurityTokenReference.php new file mode 100644 index 0000000000..29430565e2 --- /dev/null +++ b/library/Zend/InfoCard/Xml/SecurityTokenReference.php @@ -0,0 +1,173 @@ +asXML(); + } else if (is_string($xmlData)) { + $strXmlData = $xmlData; + } else { + throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance"); + } + + $sxe = simplexml_load_string($strXmlData); + + if($sxe->getName() != "SecurityTokenReference") { + throw new Zend_InfoCard_Xml_Exception("Invalid XML Block provided for SecurityTokenReference"); + } + + return simplexml_load_string($strXmlData, "Zend_InfoCard_Xml_SecurityTokenReference"); + } + + /** + * Return the Key Identifier XML Object + * + * @return Zend_InfoCard_Xml_Element + * @throws Zend_InfoCard_Xml_Exception + */ + protected function _getKeyIdentifier() + { + $this->registerXPathNamespace('o', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'); + list($keyident) = $this->xpath('//o:KeyIdentifier'); + + if(!($keyident instanceof Zend_InfoCard_Xml_Element)) { + throw new Zend_InfoCard_Xml_Exception("Failed to retrieve Key Identifier"); + } + + return $keyident; + } + + /** + * Return the Key URI identifying the thumbprint type used + * + * @return string The thumbprint type URI + * @throws Zend_InfoCard_Xml_Exception + */ + public function getKeyThumbprintType() + { + + $keyident = $this->_getKeyIdentifier(); + + $dom = self::convertToDOM($keyident); + + if(!$dom->hasAttribute('ValueType')) { + throw new Zend_InfoCard_Xml_Exception("Key Identifier did not provide a type for the value"); + } + + return $dom->getAttribute('ValueType'); + } + + + /** + * Return the thumbprint encoding type used as a URI + * + * @return string the URI of the thumbprint encoding used + * @throws Zend_InfoCard_Xml_Exception + */ + public function getKeyThumbprintEncodingType() + { + + $keyident = $this->_getKeyIdentifier(); + + $dom = self::convertToDOM($keyident); + + if(!$dom->hasAttribute('EncodingType')) { + throw new Zend_InfoCard_Xml_Exception("Unable to determine the encoding type for the key identifier"); + } + + return $dom->getAttribute('EncodingType'); + } + + /** + * Get the key reference data used to identify the public key + * + * @param bool $decode if true, will return a decoded version of the key + * @return string the key reference thumbprint, either in binary or encoded form + * @throws Zend_InfoCard_Xml_Exception + */ + public function getKeyReference($decode = true) + { + $keyIdentifier = $this->_getKeyIdentifier(); + + $dom = self::convertToDOM($keyIdentifier); + $encoded = $dom->nodeValue; + + if(empty($encoded)) { + throw new Zend_InfoCard_Xml_Exception("Could not find the Key Reference Encoded Value"); + } + + if($decode) { + + $decoded = ""; + switch($this->getKeyThumbprintEncodingType()) { + case self::ENCODING_BASE64BIN: + + if(version_compare(PHP_VERSION, "5.2.0", ">=")) { + $decoded = base64_decode($encoded, true); + } else { + $decoded = base64_decode($encoded); + } + + break; + default: + throw new Zend_InfoCard_Xml_Exception("Unknown Key Reference Encoding Type: {$this->getKeyThumbprintEncodingType()}"); + } + + if(!$decoded || empty($decoded)) { + throw new Zend_InfoCard_Xml_Exception("Failed to decode key reference"); + } + + return $decoded; + } + + return $encoded; + } +} diff --git a/library/Zend/Json/Decoder.php b/library/Zend/Json/Decoder.php index 8a79f0cdd2..cc83115199 100644 --- a/library/Zend/Json/Decoder.php +++ b/library/Zend/Json/Decoder.php @@ -552,7 +552,7 @@ protected static function _utf162utf8($utf16) return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16'); } - $bytes = (ord($utf16{0}) << 8) | ord($utf16{1}); + $bytes = (ord($utf16[0]) << 8) | ord($utf16[1]); switch (true) { case ((0x7F & $bytes) == $bytes): diff --git a/library/Zend/Json/Encoder.php b/library/Zend/Json/Encoder.php index fbf5b53cca..9013b285c3 100644 --- a/library/Zend/Json/Encoder.php +++ b/library/Zend/Json/Encoder.php @@ -558,17 +558,17 @@ protected static function _utf82utf16($utf8) case 2: // return a UTF-16 character from a 2-byte UTF-8 char // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0x07 & (ord($utf8{0}) >> 2)) - . chr((0xC0 & (ord($utf8{0}) << 6)) - | (0x3F & ord($utf8{1}))); + return chr(0x07 & (ord($utf8[0]) >> 2)) + . chr((0xC0 & (ord($utf8[0]) << 6)) + | (0x3F & ord($utf8[1]))); case 3: // return a UTF-16 character from a 3-byte UTF-8 char // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr((0xF0 & (ord($utf8{0}) << 4)) - | (0x0F & (ord($utf8{1}) >> 2))) - . chr((0xC0 & (ord($utf8{1}) << 6)) - | (0x7F & ord($utf8{2}))); + return chr((0xF0 & (ord($utf8[0]) << 4)) + | (0x0F & (ord($utf8[1]) >> 2))) + . chr((0xC0 & (ord($utf8[1]) << 6)) + | (0x7F & ord($utf8[2]))); } // ignoring UTF-32 for now, sorry diff --git a/library/Zend/Loader/Autoloader.php b/library/Zend/Loader/Autoloader.php index 06e70232fd..a30ccf8aeb 100644 --- a/library/Zend/Loader/Autoloader.php +++ b/library/Zend/Loader/Autoloader.php @@ -115,6 +115,10 @@ public static function autoload($class) { $self = self::getInstance(); + if (strpos($class, "Google") !== false && defined('USE_MONO_GOOGLE') && USE_MONO_GOOGLE === 1) { + return false; + } + foreach ($self->getClassAutoloaders($class) as $autoloader) { if ($autoloader instanceof Zend_Loader_Autoloader_Interface) { if ($autoloader->autoload($class)) { diff --git a/library/Zend/Locale/Data/aa_ER_SAAHO.xml b/library/Zend/Locale/Data/aa_ER_SAAHO.xml new file mode 100644 index 0000000000..cb2b1dfcb6 --- /dev/null +++ b/library/Zend/Locale/Data/aa_ER_SAAHO.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + Nab + San + Sal + Rab + Cam + Jum + Qun + + + Naba Sambat + Sani + Salus + Rabuq + Camus + Jumqata + Qunxa Sambat + + + + + + + diff --git a/library/Zend/Locale/Data/az_AZ.xml b/library/Zend/Locale/Data/az_AZ.xml new file mode 100644 index 0000000000..7f6ee7c7c2 --- /dev/null +++ b/library/Zend/Locale/Data/az_AZ.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/library/Zend/Locale/Data/bs_BA.xml b/library/Zend/Locale/Data/bs_BA.xml new file mode 100644 index 0000000000..0b303d0316 --- /dev/null +++ b/library/Zend/Locale/Data/bs_BA.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/cch.xml b/library/Zend/Locale/Data/cch.xml new file mode 100644 index 0000000000..8e79c0783f --- /dev/null +++ b/library/Zend/Locale/Data/cch.xml @@ -0,0 +1,188 @@ + + + + + + + + + [a {a\u0331} b c {ch} d {dy} e-g {g\u0331} {gb} {gw} {gy} h {hy} i-k ḵ {kp} {kw} l {ly} m n ṉ {ny} o p {ph} {py} r {ry} s {sh} t-w {wh} y {y\u0331} z ʼ] + + + + + + + + Dyon + Baa + Atat + Anas + Atyo + Achi + Atar + Awur + Shad + Shak + Naba + Nata + + + Pen Dyon + Pen Ba'a + Pen Atat + Pen Anas + Pen Atyon + Pen Achirim + Pen Atariba + Pen Awurr + Pen Shadon + Pen Shakur + Pen Kur Naba + Pen Kur Natat + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + Yok + Tung + T. Tung + Tsan + Nas + Nat + Chir + + + Wai Yoka Bawai + Wai Tunga + Toki Gitung + Tsam Kasuwa + Wai Na Nas + Wai Na Tiyon + Wai Na Chirim + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + + + + Q1 + Q2 + Q3 + Q4 + + + Q1 + Q2 + Q3 + Q4 + + + + AM + PM + + + Gabanin Miladi + Miladi + + + GM + M + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + yy/MM/dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + Q yy + + + + + + +HH:mm;-HH:mm + GMT{0} + {0} + + + + + + Aman + + + + + diff --git a/library/Zend/Locale/Data/cch_NG.xml b/library/Zend/Locale/Data/cch_NG.xml new file mode 100644 index 0000000000..41b2dadae2 --- /dev/null +++ b/library/Zend/Locale/Data/cch_NG.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/cop.xml b/library/Zend/Locale/Data/cop.xml new file mode 100644 index 0000000000..39ad5a6205 --- /dev/null +++ b/library/Zend/Locale/Data/cop.xml @@ -0,0 +1,197 @@ + + + + + + + + + [α-ρ σ ϲ τ-ω ϣ ϥ ϧ ϩ ϫ ϭ ϯ] + + + + + + + + ωογτ + Παοπι + Αθορ + Χοιακ + Τωβι + Μεϣιρ + Παρεμϩατ + Φαρμοθι + Παϣαν + Παωνι + Επηπ + Μεϲωρη + Πικογϫι μαβοτ + + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + + + + Q1 + Q2 + Q3 + Q4 + + + Q1 + Q2 + Q3 + Q4 + + + + AM + PM + + + BCE + CE + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + yy/MM/dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + Q yy + + + + + + +HH:mm;-HH:mm + GMT{0} + {0} + + + diff --git a/library/Zend/Locale/Data/dv.xml b/library/Zend/Locale/Data/dv.xml new file mode 100644 index 0000000000..8976f4dc45 --- /dev/null +++ b/library/Zend/Locale/Data/dv.xml @@ -0,0 +1,225 @@ + + + + + + + + + + ދިވެހިބަސް + + + ދިވެހި ރާއްޖެ + + + + + + + [ހ-ޗ \u07A6-\u07B0] + [\u200C \u200D ޙ ޚ ޜ ޢ ޣ ޥ ޛ ޘ ޠ ޡ ޤ ޝ-ޟ ޱ] + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + + + + Q1 + Q2 + Q3 + Q4 + + + Q1 + Q2 + Q3 + Q4 + + + + AM + PM + + + BCE + CE + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + dd-MM-yyyy + + + + + d-M-yy + + + + + + + hh:mm:ss a zzzz + + + + + hh:mm:ss a z + + + + + hh:mm:ss a + + + + + hh:mm a + + + + + + dd-MM + d MMMM + Q yy + MM-yyyy + MMMM y + + + + + + +HH:mm;-HH:mm + GMT{0} + {0} + + + + + , + 0 + + + + + #,##,##0.### + + + + + + + #,##,##0% + + + + + + + ¤ #,##,##0.00 + + + + + + ރ. + + + + + diff --git a/library/Zend/Locale/Data/dv_MV.xml b/library/Zend/Locale/Data/dv_MV.xml new file mode 100644 index 0000000000..6a54b345a4 --- /dev/null +++ b/library/Zend/Locale/Data/dv_MV.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/el_POLYTON.xml b/library/Zend/Locale/Data/el_POLYTON.xml new file mode 100644 index 0000000000..d58e853a49 --- /dev/null +++ b/library/Zend/Locale/Data/el_POLYTON.xml @@ -0,0 +1,541 @@ + + + + + + + + + + + Ἀραβικά + Ἀραμαϊκά + Οὐαλικά + Αἰγυπτιακὰ (ἀρχαῖα) + Ἑλληνικά + Ἀγγλικά + Ἱσπανικά + Ἐσθονικά + Ἰρλανδικά + Σκωτικὰ κελτικά + Ἀρχαῖα Ἑλληνικά + Ἑβραϊκά + Οὑγγρικά + Ἀρμενικά + Ἰνδονησιακά + Ἰνδοευρωπαϊκὰ (ἄλλα) + Ἰρανικά + Ἰσλανδικά + Ἰταλικά + Ἰαπωνικά + Πολλαπλές γλῶσσες + Ἰνδιανικὰ βόρειας Ἀμερικῆς (ἄλλα) + Ὁλλανδικά + Τουρκικά, ὀθωμανικὰ (1500-1928) + Ἀρχαῖα περσικὰ (600-400 π.Χ.) + Φιλιππινέζικα (ἄλλα) + Σημιτικὰ (ἄλλα) + Σλαβικὰ (ἄλλα) + Ἀλβανικά + Οὐκρανικά + Ἰουδαϊκά + + + + + + + + + + Ἀνδόρα + Ἠνωμένα Ἀραβικὰ Ἐμιράτα + Ἀφγανιστάν + Ἀντίγκουα καὶ Μπαρμπούντα + Ἀνγκουίλα + Ἀλβανία + Ἀρμενία + Ὁλλανδικὲς Ἀντίλλες + Ἀνγκόλα + Ἀνταρκτική + Ἀργεντινή + Ἀμερικανικὴ Σαμόα + Αὐστρία + Αὐστραλία + Ἀρούμπα + Ἀζερμπαϊτζάν + Βοσνία - Ἐρζεγοβίνη + Βερμοῦδες + Νῆσος Μπουβέ + Νῆσοι Κόκος (Κήλινγκ) + Κονγκό, Λαϊκὴ Δημοκρατία τοῦ + Κεντροαφρικανικὴ Δημοκρατία + Ἑλβετία + Ἀκτὴ Ἐλεφαντοστού + Νῆσοι Κούκ + Πράσινο Ἀκρωτήριο + Νῆσος Χριστουγέννων + Δομινικανὴ Δημοκρατία + Ἀλγερία + Ἰσημερινός + Ἐσθονία + Αἴγυπτος + Δυτικὴ Σαχάρα + Ἐρυθραία + Ἱσπανία + Αἰθιοπία + Μικρονησία, Ὁμόσπονδες Πολιτεῖες τῆς + Νῆσοι Φερόες + Ἡνωμένο Βασίλειο + Γαλλικὴ Γουιάνα + Ἰσημερινὴ Γουινέα + Ἑλλάδα + Νότια Γεωργία καὶ Νότιες Νήσοι Σάντουιτς + Χὸνγκ Κόνγκ, Εἰδικὴ Διοικητικὴ Περιφέρεια τῆς Κίνας + Νῆσοι Χὲρντ καὶ Μακντόναλντ + Ὁνδούρα + Ἁϊτή + Οὑγγαρία + Ἰνδονησία + Ἰρλανδία + Ἰσραήλ + Ἰνδία + Βρετανικὰ Ἐδάφη Ἰνδικοῦ Ὠκεανοῦ + Ἰράκ + Ἰράν, Ἰσλαμικὴ Δημοκρατία τοῦ + Ἰσλανδία + Ἰταλία + Ἰορδανία + Ἰαπωνία + Σαὶντ Κὶτς καὶ Νέβις + Νῆσοι Κέιμαν + Λατινικὴ Ἀμερική + Ἁγία Λουκία + Σρὶ Λάνκα + Λουξεμβοῦργο + Μολδαβία, Δημοκρατία τῆς + Νῆσοι Μάρσαλ + Μαλί + Μακάο, Εἰδικὴ Διοικητικὴ Περιφέρεια τῆς Κίνας + Νῆσοι Βόρειες Μαριάνες + Νῆσος Νόρφολκ + Ὁλλανδία + Ὀμάν + Γαλλικὴ Πολυνησία + Σαὶντ Πιὲρ καὶ Μικελόν + Παλαιστινιακὰ Ἐδάφη + Σαουδικὴ Ἀραβία + Νῆσοι Σολομῶντος + Ἁγία Ἑλένη + Νῆσοι Σβάλμπαρ καὶ Γιὰν Μαγιέν + Ἅγιος Μαρίνος + Σάο Τομὲ καὶ Πρίνσιπε + Ἒλ Σαλβαδόρ + Συρία, Ἀραβικὴ Δημοκρατία τῆς + Νῆσοι Τὲρκς καὶ Κάικος + Τσάντ + Γαλλικὰ Νότια Ἐδάφη + Ἀνατολικὸ Τιμόρ + Τρινιδὰδ καὶ Τομπάγκο + Οὐκρανία + Οὐγκάντα + Ἀπομακρυσμένες Νησίδες τῶν Ἡνωμένων Πολιτειῶν + Ἡνωμένες Πολιτεῖες + Οὐρουγουάη + Οὐζμπεκιστάν + Ἁγία Ἕδρα (Βατικανό) + Ἅγιος Βικέντιος καὶ Γρεναδίνες + Βρετανικὲς Παρθένοι Νῆσοι + Ἀμερικανικὲς Παρθένοι Νῆσοι + Νῆσοι Οὐάλλις καὶ Φουτουνά + Ὑεμένη + Νότια Ἀφρική + + + Ἡμερολόγιο + + + Βουδιστικὸ ἡμερολόγιο + Κινεζικὸ ἡμερολόγιο + Σειρὰ Direct + Γρηγοριανὸ ἡμερολόγιο + Ἑβραϊκὸ ἡμερολόγιο + Ἰσλαμικὸ ἡμερολόγιο + Ἰσλαμικὸ ἀστικὸ ἡμερολόγιο + Ἰαπωνικὸ ἡμερολόγιο + Σειρὰ τηλεφωνικοῦ καταλόγου + Σειρὰ Πίνγιν + Σειρὰ Stroke + + + + [α ἀ ἄ ἂ ἆ ἁ ἅ ἃ ἇ ά ὰ ᾶ β-ε ἐ ἔ ἒ ἑ ἕ ἓ έ ὲ ζ η ἠ ἤ ἢ ἦ ἡ ἥ ἣ ἧ ή ὴ ῆ θ ι ἰ ἴ ἲ ἶ ἱ ἵ ἳ ἷ ί ὶ ῖ ϊ ΐ ῒ ῗ κ-ο ὄ ὂ ὃ ό ὸ π ρ σ ς τ υ ὐ ὔ ὒ ὖ ὑ ὕ ὓ ὗ ύ ὺ ῦ ϋ ΰ ῢ ῧ φ-ω ὤ ὢ ὦ ὥ ὣ ὧ ώ ὼ ῶ] + + + + + + + + + + + Ἰαν + Ἀπρ + Ἰουν + Ἰουλ + Αὐγ + Ὀκτ + + + Ἰανουαρίου + Ἀπριλίου + Ἰουνίου + Ἰουλίου + Αὐγούστου + Ὀκτωβρίου + + + + + Ἰαν + Ἀπρ + Ἰουν + Ἰουλ + Αὐγ + Ὀκτ + + + Ἰανουάριος + Ἀπρίλιος + Ἰούνιος + Ἰούλιος + Αὔγουστος + Ὀκτώβριος + + + + + + + + + + Πεσέτα Ἀνδόρας + + + Ντιρὰμ Ἡνωμένων Ἀραβικῶν Ἐμιράτων + + + Λὲκ Ἀλβανίας + + + Dram Ἀρμενίας + + + Γκίλντα Ὁλλανδικῶν Ἀντιλλῶν + + + Kwanza Ἀνγκόλας + + + Kwanza Ἀνγκόλας (1977-1990) + + + Νέα Kwanza Ἀνγκόλας (1990-2000) + + + Kwanza Reajustado Ἀνγκόλας (1995-1999) + + + Austral Ἀργεντινῆς + + + Πέσο Ἀργεντινῆς (1983-1985) + + + Πέσο Ἀργεντινῆς + + + Σελίνι Αὐστρίας + + + Δολάριο Αὐστραλίας + + + Γκίλντα Ἀρούμπα + + + Μανὰτ Ἀζερμπαϊτζάν + + + Δηνάριο Βοσνίας-Ἑρζεγοβίνης + + + Μάρκο Βοσνίας-Ἑρζεγοβίνης + + + Φράγκο Βελγίου (οἰκονομικό) + + + Μεταλλικὸ Λὲβ Βουλγαρίας + + + Νέο Λὲβ Βουλγαρίας + + + Δολάριο Καναδᾶ + + + Φράγκο Ἑλβετίας + + + Unidades de Fomento Χιλῆς + + + Πέσο Χιλῆς + + + Σκληρὴ Κορόνα Τσεχοσλοβακίας + + + Ἐσκούδο Πράσινου Ἀκρωτηρίου + + + Ostmark Ἀνατολικῆς Γερμανίας + + + Δηνάριο Ἀλγερίας + + + Sucre Ἰσημερινοῦ + + + Unidad de Valor Constante (UVC) Ἰσημερινοῦ + + + Κορόνα Ἐστονίας + + + Λίρα Αἰγύπτου + + + Nakfa Ἐρυθραίας + + + Πεσέτα Ἱσπανίας + + + Birr Αἰθιοπίας + + + Εὐρώ + + + Λίρα Νήσων Φώλκλαντ + + + Dalasi Γκάμπιας + + + Ekwele Guineana Ἰσημερινῆς Γουινέας + + + Quetzal Γουατεμάλας + + + Γκινέα Ἐσκούδο Πορτογαλίας + + + Δολάριο Χὸνγκ Κόνγκ + + + Gourde Ἁϊτῆς + + + Φιορίνι Οὑγγαρίας + + + Ρούπια Ἰνδονησίας + + + Λίρα Ἰρλανδίας + + + Λίρα Ἰσραήλ + + + Νέο Sheqel Ἰσραήλ + + + Ρούπια Ἰνδίας + + + Δηνάριο Ἰράκ + + + Rial Ἰράκ + + + Κορόνα Ἰσλανδίας + + + Λιρέτα Ἰταλίας + + + Δηνάριο Ἰορδανίας + + + Γιὲν Ἰαπωνίας + + + Ρούπια Σρὶ Λάνκας + + + Pataca Μακάου + + + Πέσο Μεξικοῦ + + + Ἀσημένιο Πέσο Μεξικοῦ (1861-1992) + + + Unidad de Inversion (UDI) Μεξικοῦ + + + Ἐσκούδο Μοζαμβίκης + + + Δολάριο Ναμίμπιας + + + Χρυσὴ Κόρδοβα Νικαράγουας + + + Γκίλντα Ὁλλανδίας + + + Μπαλμπόα Παναμᾶ + + + Kina Παπούα Νέα Γουινέας + + + Ἐσκούδο Πορτογαλίας + + + Γκουαρανὶ Παραγουάης + + + Δολάριο Νήσων Σολομῶντος + + + Ρούπια Σεϋχελῶν + + + Λίρα Ἀγίας Ἑλένης + + + Σοβιετικὸ Ρούβλι + + + Colon Ἒλ Σαλβαδόρ + + + Lilangeni Ζουαζιλάνδης + + + Μπὰτ Ταϊλάνδης + + + Μανὰτ Τουρκμενιστάν + + + Ἐσκούδο Τιμόρ + + + Δολάριο Τρινιδὰδ καὶ Τομπάγκο + + + Hryvnia Οὐκρανίας + + + Karbovanetz Οὐκρανίας + + + Σελίνι Οὐγκάντας (1966-1987) + + + Σελίνι Οὐγκάντας + + + Δολάριο ΗΠΑ (Ἑπόμενη ἡμέρα) + + + Δολάριο ΗΠΑ (Ἴδια ἡμέρα) + + + Πέσο Οὐρουγουάης (1975-1993) + + + Πέσο Uruguayo Οὐρουγουάης + + + Sum Οὐζμπεκιστάν + + + Μπολιβὰλ Βενεζουέλας + + + Tala Δυτικῆς Σαμόας + + + Εὐρωπαϊκὴ Σύνθετη Μονάδα + + + Εὐρωπαϊκὴ Νομισματικὴ Μονάδα + + + Εὐρωπαϊκὴ Μονάδα Λογαριασμοῦ (XBC) + + + Εὐρωπαϊκὴ Μονάδα Λογαριασμοῦ (XBD) + + + Δολάριο Ἀνατολικῆς Καραϊβικῆς + + + Εἰδικὰ Δικαιώματα Ἀνάληψης + + + Εὐρωπαϊκὴ Συναλλαγματικὴ Μονάδα + + + Χρυσὸ Φράγκο Γαλλίας + + + Δηνάριο Ὑεμένης + + + Rial Ὑεμένης + + + Μεταλλικὸ Δηνάριο Γιουγκοσλαβίας + + + Ραντ Νότιας Ἀφρικῆς (οἰκονομικό) + + + Ρὰντ Νότιας Ἀφρικῆς + + + + + + Ναί + Ὄχι + + + + diff --git a/library/Zend/Locale/Data/en_Shaw.xml b/library/Zend/Locale/Data/en_Shaw.xml new file mode 100644 index 0000000000..eac6749d25 --- /dev/null +++ b/library/Zend/Locale/Data/en_Shaw.xml @@ -0,0 +1,185 @@ + + + + + + + + + + አንዶራ + የተባበሩት፡አረብ፡ኤምሬትስ + አልባኒያ + አርሜኒያ + ኔዘርላንድስ፡አንቲልስ + አርጀንቲና + ኦስትሪያ + አውስትሬሊያ + አዘርባጃን + ቦስኒያ፡እና፡ሄርዞጎቪኒያ + ባርቤዶስ + ቤልጄም + ቡልጌሪያ + ባህሬን + ቤርሙዳ + ቦሊቪያ + ብራዚል + ቡህታን + ቤላሩስ + ቤሊዘ + የመካከለኛው፡አፍሪካ፡ሪፐብሊክ + ስዊዘርላንድ + ቺሊ + ካሜሩን + ቻይና + ኮሎምቢያ + ሰርቢያ + ኬፕ፡ቬርዴ + ሳይፕረስ + ቼክ፡ሪፑብሊክ + ጀርመን + ዴንማርክ + ዶሚኒካ + ዶሚኒክ፡ሪፑብሊክ + አልጄሪያ + ኢኳዶር + ኤስቶኒያ + ግብጽ + ምዕራባዊ፡ሳህራ + ኤርትራ + ስፔን + ኢትዮጵያ + ፊንላንድ + ፊጂ + ሚክሮኔዢያ + ፈረንሳይ + እንግሊዝ + ጆርጂያ + የፈረንሳይ፡ጉዊአና + ጋምቢያ + ጊኒ + ኢኳቶሪያል፡ጊኒ + ግሪክ + ቢሳዎ + ጉያና + ሆንግ፡ኮንግ + ክሮኤሽያ + ሀይቲ + ሀንጋሪ + ኢንዶኔዢያ + አየርላንድ + እስራኤል + ህንድ + ኢራቅ + አይስላንድ + ጣሊያን + ጃማይካ + ጆርዳን + ጃፓን + ካምቦዲያ + ኮሞሮስ + ደቡብ፡ኮሪያ + ሰሜን፡ኮሪያ + ክዌት + ሊባኖስ + ሊቱዌኒያ + ላትቪያ + ሊቢያ + ሞሮኮ + ሞልዶቫ + ማከዶኒያ + ሞንጎሊያ + ማካዎ + ሞሪቴኒያ + ማልታ + ማሩሸስ + ሜክሲኮ + ማሌዢያ + ናሚቢያ + ኒው፡ካሌዶኒያ + ናይጄሪያ + ኔዘርላንድ + ኖርዌ + ኔፓል + ኒው፡ዚላንድ + ፔሩ + የፈረንሳይ፡ፖሊኔዢያ + ፓፑዋ፡ኒው፡ጊኒ + ፖላንድ + ፖርታ፡ሪኮ + ሮሜኒያ + ራሺያ + ሳውድአረቢያ + ሱዳን + ስዊድን + ሲንጋፖር + ስሎቬኒያ + ስሎቫኪያ + ሴኔጋል + ሱማሌ + ሲሪያ + ቻድ + የፈረንሳይ፡ደቡባዊ፡ግዛቶች + ታይላንድ + ታጃኪስታን + ምስራቅ፡ቲሞር + ቱኒዚያ + ቱርክ + ትሪኒዳድ፡እና፡ቶባጎ + ታንዛኒያ + ዩጋንዳ + አሜሪካ + ዩዝበኪስታን + ቬንዙዌላ + የእንግሊዝ፡ድንግል፡ደሴቶች + የአሜሪካ፡ቨርጂን፡ደሴቶች + የመን + ደቡብ፡አፍሪካ + ዛምቢያ + + + + [\u135F ᎐-᎙ ሀ-ሆ ለ-ሎ ሐ-ሖ መ-ሞ ሠ-ሦ ረ-ሮ ሰ-ሶ ቀ-ቆ ቈ ቊ-ቍ በ-ቦ ተ-ቶ ኀ-ኆ ኈ ኊ-ኍ ነ-ኖ አ-ኦ ከ-ኮ ኰ ኲ-ኵ ወ-ዎ ዐ-ዖ ዘ-ዞ የ-ዮ ደ-ዶ ገ-ጎ ጐ ጒ-ጕ ጠ-ጦ ጰ-ጶ ጸ-ጾ ፀ-ፆ ፈ-ፎ ፐ-ፖ] + [ሇ ሏ ⶀ ሗ ሟ ᎀ-ᎃ ⶁ ሧ ሯ ⶂ ሷ ⶃ ሸ-ሿ ⶄ ቇ ቐ-ቖ ቘ ቚ-ቝ ቧ ᎄ-ᎇ ⶅ ቮ ቯ ቷ ⶆ ቿ ⶇ ኇ ኗ ⶈ ኟ ⶉ ኧ ⶊ ኯ ኸ-ኾ ዀ ዂ-ዅ ዏ ዟ ⶋ ዠ-ዧ ዷ ⶌ ዸ-ዿ ⶍ ጀ-ጇ ⶎ ጏ ጘ-ጟ ⶓ-ⶖ ጧ ⶏ ጨ-ጯ ⶐ ጷ ⶑ ጿ ፇ ፏ ᎈ-ᎋ ፗ ᎌ-ᎏ ⶒ ፘ-ፚ ⶠ-ⶦ ⶨ-ⶮ ⶰ-ⶶ ⶸ-ⶾ ⷀ-ⷆ ⷈ-ⷎ ⷐ-ⷖ ⷘ-ⷞ] + + + + + + + + ጠሐረ + ከተተ + መገበ + አኀዘ + ግንባ + ሠንየ + ሐመለ + ነሐሰ + ከረመ + ጠቀመ + ኀደረ + ኀሠሠ + + + ጠሐረ + ከተተ + መገበ + አኀዘ + ግንባት + ሠንየ + ሐመለ + ነሐሰ + ከረመ + ጠቀመ + ኀደረ + ኀሠሠ + + + + + + + + + + + + + + + + + + + + + + + እኁድ + ሰኑይ + ሠሉስ + ራብዕ + ሐሙስ + ዓርበ + ቀዳሚ + + + እኁድ + ሰኑይ + ሠሉስ + ራብዕ + ሐሙስ + ዓርበ + ቀዳሚት + + + + + + + + + + + + + + + + + + Q1 + Q2 + Q3 + Q4 + + + Q1 + Q2 + Q3 + Q4 + + + + ጽባሕ + ምሴት + + + ዓ/ዓ + ዓ/ም + + + + + + EEEE፥ dd MMMM መዓልት y G + + + + + dd MMMM y + + + + + dd-MMM-y + + + + + dd/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + dd/MM + dd MMMM + MM/yy + Q yy + MMMM y + + + + + + +HH:mm;-HH:mm + GMT{0} + {0} + + + + + + + + + + ¤#,##0.00 + + + + + + የብራዚል ሪል + + + የቻይና ዩአን ረንሚንቢ + + + የኢትዮጵያ ብር + + + አውሮ + + + የእንግሊዝ ፓውንድ ስተርሊንግ + + + የሕንድ ሩፒ + + + የጃፓን የን + + + የራሻ ሩብል + + + የአሜሪካን ዶላር + + + + + diff --git a/library/Zend/Locale/Data/gez_ER.xml b/library/Zend/Locale/Data/gez_ER.xml new file mode 100644 index 0000000000..b4b498bba4 --- /dev/null +++ b/library/Zend/Locale/Data/gez_ER.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/gez_ET.xml b/library/Zend/Locale/Data/gez_ET.xml new file mode 100644 index 0000000000..5d0cf2ec5b --- /dev/null +++ b/library/Zend/Locale/Data/gez_ET.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/gv_GB.xml b/library/Zend/Locale/Data/gv_GB.xml new file mode 100644 index 0000000000..1cb6b89f22 --- /dev/null +++ b/library/Zend/Locale/Data/gv_GB.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/ha_Arab.xml b/library/Zend/Locale/Data/ha_Arab.xml new file mode 100644 index 0000000000..c4532ad9da --- /dev/null +++ b/library/Zend/Locale/Data/ha_Arab.xml @@ -0,0 +1,94 @@ + + + + + + + + + + Cîhan + Tirkiye + + + salname + rêzkirin + + + mîladî + hîcrî + + + + + + + [a-c ç d e ê f-i î j-s ş t u û v-z] + + + + + + + + çil + sib + adr + nîs + gul + hez + tîr + + + çile + sibat + adar + nîsan + gulan + hezîran + + + + + ç + s + a + n + g + h + + + + + + + + + + çş + + în + ş + + + yekşem + duşem + şê + çarşem + pêncşem + în + şemî + + + + + y + d + s + ç + p + î + ş + + + + + + + Ç1 + Ç2 + Ç3 + Ç4 + + + Ç1 + Ç2 + Ç3 + Ç4 + + + + BN + PN + + + BZ + PZ + + + + + + yy/MM/dd + + + + + + sal + + + meh + + + hefte + + + roj + + + demjimêr + + + xulek + + + çirke + + + + + + + + muẖerem + sefer + rebîʿulewel + rebîʿulaxer + cemazîyelewel + cemazîyelaxer + receb + şeʿban + remezan + şewal + zîlqeʿde + zîlẖece + + + + + + + + + erê:e + na:n + + + + diff --git a/library/Zend/Locale/Data/ku_Latn_TR.xml b/library/Zend/Locale/Data/ku_Latn_TR.xml new file mode 100644 index 0000000000..5d2a227af8 --- /dev/null +++ b/library/Zend/Locale/Data/ku_Latn_TR.xml @@ -0,0 +1,10 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Welt + Afrika + Noordamerika + Süüdamerika + Ozeanien + Westafrika + Middelamerika + Oostafrika + Noordafrika + Zentralafrika + Süüdlich Afrika + Amerika + Karibik + Oostasien + Süüdasien + Süüdoostasien + Süüdeuropa + Australien un Neeseeland + Melanesien + Polynesien + Süüd-Zentralasien + Asien + Zentralasien + Westasien + Europa + Oosteuropa + Noordeuropa + Westeuropa + Gemeenschop vun Unafhängige Staten + Latienamerika un Karibik + Andorra + Vereenigte Araabsche Emiraten + Afghanistan + Antigua un Barbuda + Anguilla + Albanien + Armenien + Nedderlandsche Antillen + Angola + Antarktis + Argentinien + Amerikaansch-Samoa + Öösterriek + Australien + Aruba + Ålandeilannen + Aserbaidschan + Bosnien un Herzegowina + Barbados + Bangladesch + Belgien + Burkina Faso + Bulgarien + Bahrain + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei Darussalam + Bolivien + Brasilien + Bahamas + Bhutan + Bouvet-Eiland + Botswana + Wittrussland + Belize + Kanada + Kokos-Eilannen + Demokraatsche Republik Kongo + Zentralafrikaansche Republik + Republik Kongo + Swiez + Elfenbeenküst + Cook-Eilannen + Chile + Kamerun + China + Kolumbien + Costa Rica + Kuba + Kap Verde + Wiehnachtseiland + Zypern + Tschechien + Düütschland + Dschibuti + Däänmark + Dominica + Dominikaansche Republik + Algerien + Ecuador + Eestland + Ägypten + Westsahara + Eritrea + Spanien + Äthiopien + Finnland + Fidschi + Falkland-Eilannen + Mikronesien + Färöer + Frankriek + Gabun + Vereenigt Königriek + Grenada + Georgien + Franzöösch-Guayana + Guernsey + Ghana + Gibraltar + Gröönland + Gambia + Guinea + Guadeloupe + Äquatorialguinea + Grekenland + Süüdgeorgien un de Südlichen Sandwich-Eilannen + Guatemala + Guam + Guinea-Bissau + Guyana + Sünnerverwaltensrebeed Hongkong + Heard- un McDonald-Eilannen + Honduras + Kroatien + Haiti + Ungarn + Indonesien + Irland + Israel + Insel Man + Indien + Britisch Rebeed in’n Indischen Ozean + Irak + Iran + Iesland + Italien + Jersey + Jamaika + Jordanien + Japan + Kenia + Kirgisistan + Kambodscha + Kiribati + Komoren + St. Kitts un Nevis + Noordkorea + Süüdkorea + Kuwait + Kaiman-Eilannen + Kasachstan + Laos + Libanon + St. Lucia + Liechtensteen + Sri Lanka + Liberia + Lesotho + Litauen + Luxemborg + Lettland + Libyen + Marokko + Monaco + Moldawien + Montenegro + Saint Martin + Madagaskar + Marshall-Eilannen + Makedonien + Mali + Birma + Mongolei + Sünnerverwaltensrebeed Macao + Nöördliche Marianen + Martinique + Mauretanien + Montserrat + Malta + Mauritius + Malediven + Malawi + Mexiko + Malaysia + Mosambik + Namibia + Neekaledonien + Niger + Norfolk + Nigeria + Nikaragua + Nedderlannen + Norwegen + Nepal + Nauru + Niue + Neeseeland + Oman + Panama + Peru + Franzöösch-Polynesien + Papua-Neeguinea + Philippinen + Pakistan + Polen + St. Pierre un Miquelon + Pitcairn + Puerto Rico + Palästinensische Rebeden + Portugal + Palau + Paraguay + Katar + Büter Ozeanien + Europääsche Union + Reunion + Rumänien + Serbien + Russland + Ruanda + Saudi-Arabien + Salomonen + Seychellen + Sudan + Sweden + Singapur + St. Helena + Slowenien + Svalbard un Jan Mayen + Slowakei + Sierra Leone + San Marino + Senegal + Somalia + Surinam + São Tomé un Príncipe + El Salvador + Syrien + Swasiland + Turks- un Caicosinseln + Tschad + Franzöösche Süüd- un Antarktisrebeden + Togo + Thailand + Tadschikistan + Tokelau + Oosttimor + Turkmenistan + Tunesien + Tonga + Törkie + Trinidad un Tobago + Tuvalu + Taiwan + Tansania + Ukraine + Uganda + Amerikaansch-Ozeanien + USA + Uruguay + Usbekistan + Vatikan + St. Vincent un de Grenadinen + Venezuela + Brietsche Jumfern-Eilannen + Amerikaansche Jumfern-Eilannen + Vietnam + Vanuatu + Wallis un Futuna + Samoa + Jemen + Mayotte + Süüdafrika + Sambia + Simbabwe + Unbekannte oder ungüllige Region + + + Ole düütsche Rechtschrievung + Standardiseert Resiaansch Rechtschrievung + Ne’e düütsche Rechtschrievung + Laat Middelfranzöösch bet 1606 + Fröh Neefranzöösch + Oostarmeensch + Westarmeensch + Vereenheitlicht Törksch Latienalphabet + San Giorgio-/Bila-Dialekt + Boontling + Phoneetsch (IPA) + Phoneetsch (UPA) + Lipovaz-Dialekt vun dat Resiaansche + Monotoonsch + Natisone-Dialekt + Gniva-/Njiva-Dialekt + Oseacco-/Osojane-Dialekt + Polytoonsch + Computer + Överarbeidt Rechtschrievung + Resiaansch + Saho + Schottsch Standard-Engelsch + Scouse + Stolvizza-/Solbica-Dialekt + Taraskievica-Rechtschrievung + Valenziaansch + + + Klenner + Bookstaven-Folgreeg + Geldteken + + + Traditschonell Chineesch Sorteerregeln - Big5 + Buddhistisch Klenner + Chineesch Klenner + Direkte Sorteerregeln + Vereenfacht Chineesch Sorteerregeln - GB2312 + Gregoriaansch Klenner + Hebrääsch Klenner + Indsch Nationalklenner + Islaamsch Klenner + Islaamsch Zivilklenner + Japaansch Klenner + Telefonbook-Sorteerregeln + Pinyin-Sorteerregeln + Klenner vun de Republik China + Streekfolg + Traditschonelle Sorteerregeln + + + Metrisch + US-amerikaansch + + + Spraak: {0} + Schrift: {0} + Region: {0} + + + + [a å ä b-o ö p-s ß t u ü v-z] + [á à ă â ā æ ç é è ĕ ê ë ę ē í ì ĭ î ï ī ñ ó ò ŏ ô ø ō œ ú ù ŭ û ū ÿ] + + + + + + + + + + {1} ({0}) + + Unbekannt + + + Süüdpool + + + Wostok + + + Dumont d’Urville + + + Kanaren + + + Ulanbator + + + Mexiko-Stadt + + + Azoren + + + Moskau + + + Wolgograd + + + Jekaterinborg + + + Nowosibirsk + + + Krasnojarsk + + + Jakutsk + + + Wladiwostok + + + Sachalin + + + Kamschatka + + + Uschgorod + + + Saporoschje + + + New Salem, Noord-Dakota + + + Center, Noord-Dakota + + + + + + , + . + ; + % + 0 + # + + + - + E + + + NaN + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + {0} {1} + + + + + {0} Daag + + + {0} Stünnen + + + {0} Minuten + + + {0} Maanden + + + {0} Sekunnen + + + {0} Weken + + + {0} Johren + + + + + jo:j + nee:n + + + + diff --git a/library/Zend/Locale/Data/nds_DE.xml b/library/Zend/Locale/Data/nds_DE.xml new file mode 100644 index 0000000000..2fd28f664f --- /dev/null +++ b/library/Zend/Locale/Data/nds_DE.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/no.xml b/library/Zend/Locale/Data/no.xml new file mode 100644 index 0000000000..45a04abf18 --- /dev/null +++ b/library/Zend/Locale/Data/no.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/ny.xml b/library/Zend/Locale/Data/ny.xml new file mode 100644 index 0000000000..cc462acaec --- /dev/null +++ b/library/Zend/Locale/Data/ny.xml @@ -0,0 +1,188 @@ + + + + + + + + + [a-p r-u w ŵ y z] + [q v x] + + + + + + + + Jan + Feb + Mal + Epu + Mei + Jun + Jul + Oga + Sep + Oku + Nov + Dis + + + Januwale + Febuluwale + Malichi + Epulo + Mei + Juni + Julai + Ogasiti + Seputemba + Okutoba + Novemba + Disemba + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + Mul + Lem + Wir + Tat + Nai + San + Wer + + + Lamulungu + Lolemba + Lachiwiri + Lachitatu + Lachinayi + Lachisanu + Loweruka + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + + + + Q1 + Q2 + Q3 + Q4 + + + Q1 + Q2 + Q3 + Q4 + + + + AM + PM + + + BC + AD + + + BC + AD + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + yy/MM/dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + Q yy + + + + + + +HH:mm;-HH:mm + GMT{0} + {0} + + + + + + Malawian Kwacha + + + + diff --git a/library/Zend/Locale/Data/ny_MW.xml b/library/Zend/Locale/Data/ny_MW.xml new file mode 100644 index 0000000000..aec6f22f0e --- /dev/null +++ b/library/Zend/Locale/Data/ny_MW.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/oc.xml b/library/Zend/Locale/Data/oc.xml new file mode 100644 index 0000000000..986e75b54a --- /dev/null +++ b/library/Zend/Locale/Data/oc.xml @@ -0,0 +1,279 @@ + + + + + + + + + + arabi + lenga artificiala + azerbaijani + berbèr + breton + catalan + lenga celtica + danés + aleman + grec + anglés + espanhòl + bàscol + francés + francés mejan + grec ancian + ebreu + armèni + italian + latin + flamenc + occitan + fenician + occitan ancian + portugués + lenga romança + chinés + + + + + + + + + + + + + + + + + Africa + America centrala + Americas + Austràlia e Nòva Zelanda + Asia + Asia centrala + Euròpa + Andòrra + Afganistan + Antigua e Barbuda + Anguilla + Albania + Armènia + Angòla + Antartica + Argentina + Samòa americana + Àustria + Austràlia + Azerbaijan + Bòsnia e Ercegovina + Barbados + Bangladesh + Belgica + Burkina Faso + Bolgària + Bahrain + Burundi + Benin + Bermuda + Brunei + Bolívia + Brasil + Bahamas + Botan + Isla Bouvet + Botswana + Bielorussia + Belize + Canadà + Còngo - Kinshasa + Republica Centraficana + Còngo - Brazzaville + Soïssa + Còsta d'Evòri + Chile + Cameron + China + Colómbia + Còsta Rica + Cuba + Cap Verd + Chipre + Republica chèca + Alemanha + Jiboti + Danemarc + Republica dominicana + Argeria + Eqüator + Estònia + Egipte + Eritrèa + Espanha + Etiopia + Finlàndia + Fiji + França + Gabon + Reiaume Unit + Guiana francesa + Guinèa Eqüatoriala + Croàcia + Israèl + Índia + Itàlia + Japon + Cambòja + Comòros + Corèa del Nòrd + Corèa del Sud + Islas Caiman + Cazacstan + Libia + Marròc + Mónegue + Birmania + Mauritània + Moçambic + Peró + Portugal + Belau + Union Europèa + Russia + Arabia Saudita + Lo Salvador + Súria + Chad + Timòr Èst + Ucràina + Estats Units + Veneçuèla + Vietnam + Desconegut o Region invalida + + + calendier + òrde alfabetic + moneda + + + Lenga: {0} + Escritura: {0} + Region: {0} + + + + [a á à b-e é è f-i í ï j-o ó ò p-u ú ü v-z] + [á à ç é è í ï ó ò ú ü] + [a-z] + + + + + + + + genièr + febrièr + març + abril + mai + junh + julhet + agost + setembre + octòbre + novembre + dezembre + + + + + + + Dimenge + diluns + dimarç + dimècres + dijòus + divèndres + dissabte + + + + + + era + + + annada + + + mes + + + setmana + + + jorn + ièr + uèi + deman + + + jorn de la setmana + + + ora + + + minuta + + + segonda + + + zòna + + + + + + Ora de: {0} + + + + + + euro + + + + + + {0} jorns + + + {0} oras + + + {0} minutas + + + {0} mes + + + {0} segondas + + + {0} setmanas + + + {0} annadas + + + diff --git a/library/Zend/Locale/Data/oc_FR.xml b/library/Zend/Locale/Data/oc_FR.xml new file mode 100644 index 0000000000..4ff3548db2 --- /dev/null +++ b/library/Zend/Locale/Data/oc_FR.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/pa_IN.xml b/library/Zend/Locale/Data/pa_IN.xml new file mode 100644 index 0000000000..ea123c2037 --- /dev/null +++ b/library/Zend/Locale/Data/pa_IN.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/library/Zend/Locale/Data/pa_PK.xml b/library/Zend/Locale/Data/pa_PK.xml new file mode 100644 index 0000000000..942fa027be --- /dev/null +++ b/library/Zend/Locale/Data/pa_PK.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sa.xml b/library/Zend/Locale/Data/sa.xml new file mode 100644 index 0000000000..c9817742f5 --- /dev/null +++ b/library/Zend/Locale/Data/sa.xml @@ -0,0 +1,150 @@ + + + + + + + + + + अफर + अब्खासियन् + अचिनीस् + अचोलि + अडङ्गमे + अफ्रिक्कान्स् + आफ्रो एष्यन् भाषा + अफ्रिहिलि + अयिनु + अकन् + अक्काटियान् + अलियुट् + अल्गोण्क्यन् भाषा + अंहाऱिक् + अङ्गिक + अपाचे भाषा + अऱबिक् + प्राचीन ईजिप्त्यन् + पुरातन यवन भाषा + नोर्वीजियन् बॊकामल् + संस्कृत भाषा + अल्बेनियन् + आळटिक् भाषा + अज्ञात भाषा + + + + + + + + + + + + भारतम् + + + + [़ ँ-ः ॑-॔ ॐ अ-ऋ ॠ ऌ ॡ ए ऐ ओ-न र ल ळ व-ह ऽ-ॄ ॢ ॣ े ै ो-्] + [\u200C \u200D ०-९ ऍ ऑ ॅ ॉ] + [a-z] + + + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + dd-MM-yyyy + + + + + d-MM-yy + + + + + + + hh:mm:ss a zzzz + + + + + hh:mm:ss a z + + + + + hh:mm:ss a + + + + + hh:mm a + + + + + + dd-MM + d MMMM + Q yy + MM-yyyy + MMMM y + + + + + + +HH:mm;-HH:mm + GMT{0} + {0} + + + + deva + + 0 + + + + + #,##,##0.### + + + + + + + #,##,##0% + + + + + + + ¤#,##,##0.00 + + + + + + रु + + + + + diff --git a/library/Zend/Locale/Data/sa_IN.xml b/library/Zend/Locale/Data/sa_IN.xml new file mode 100644 index 0000000000..6dcb92fb7f --- /dev/null +++ b/library/Zend/Locale/Data/sa_IN.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/sh.xml b/library/Zend/Locale/Data/sh.xml new file mode 100644 index 0000000000..b3778d1a0d --- /dev/null +++ b/library/Zend/Locale/Data/sh.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/sh_BA.xml b/library/Zend/Locale/Data/sh_BA.xml new file mode 100644 index 0000000000..4be524930a --- /dev/null +++ b/library/Zend/Locale/Data/sh_BA.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sh_CS.xml b/library/Zend/Locale/Data/sh_CS.xml new file mode 100644 index 0000000000..3fd7faee5c --- /dev/null +++ b/library/Zend/Locale/Data/sh_CS.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sh_YU.xml b/library/Zend/Locale/Data/sh_YU.xml new file mode 100644 index 0000000000..8b4ec08083 --- /dev/null +++ b/library/Zend/Locale/Data/sh_YU.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sid.xml b/library/Zend/Locale/Data/sid.xml new file mode 100644 index 0000000000..9f85591e4d --- /dev/null +++ b/library/Zend/Locale/Data/sid.xml @@ -0,0 +1,248 @@ + + + + + + + + + + Arabic + German + English + Spanish + French + Hindi + Italian + Japanese + Portuguese + Russian + Sidaamu Afo + Chinese + + + + + + Brazil + China + Germany + Itiyoophiya + France + United Kingdom + India + Italy + Japan + Russia + United States + + + + [a-z] + + + + + + + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + + January + February + March + April + May + June + July + August + September + October + November + December + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Sam + San + Mak + Row + Ham + Arb + Qid + + + Sambata + Sanyo + Maakisanyo + Roowe + Hamuse + Arbe + Qidaame + + + + + S + S + M + R + H + A + Q + + + + + + + Q1 + Q2 + Q3 + Q4 + + + Q1 + Q2 + Q3 + Q4 + + + + soodo + hawwaro + + + YIA + YIG + + + + + + EEEE, MMMM dd, y + + + + + dd MMMM y + + + + + dd-MMM-y + + + + + dd/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + dd/MM + dd MMMM + MM/yy + Q yy + MMMM y + + + + + + +HH:mm;-HH:mm + GMT{0} + {0} + + + + + + + ¤#,##0.00 + + + + + + Brazilian Real + + + Chinese Yuan Renminbi + + + Euro + + + British Pound Sterling + + + Indian Rupee + + + Japanese Yen + + + Russian Ruble + + + US Dollar + + + + + diff --git a/library/Zend/Locale/Data/sid_ET.xml b/library/Zend/Locale/Data/sid_ET.xml new file mode 100644 index 0000000000..479c972dcd --- /dev/null +++ b/library/Zend/Locale/Data/sid_ET.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/sr_BA.xml b/library/Zend/Locale/Data/sr_BA.xml new file mode 100644 index 0000000000..cf79f15b1b --- /dev/null +++ b/library/Zend/Locale/Data/sr_BA.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sr_CS.xml b/library/Zend/Locale/Data/sr_CS.xml new file mode 100644 index 0000000000..2155046757 --- /dev/null +++ b/library/Zend/Locale/Data/sr_CS.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sr_Cyrl_CS.xml b/library/Zend/Locale/Data/sr_Cyrl_CS.xml new file mode 100644 index 0000000000..4545e95085 --- /dev/null +++ b/library/Zend/Locale/Data/sr_Cyrl_CS.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + + + + + + alang Nanci + alang Posniya + alang Pajey + alang Puwei + alang Switjrrant + alang Ipaw + alang Towjih + alang Posey + alang Inglis + alang Nanjiouya ni Nansanminji + alang Htee ni Mayktan + alang Krowtia + alang Intu + alang Inglis niq Intu + alang Itariya + alang Nihong + alang Mondineygrw + alang Srbia + alang Ruski + alang Snmarinow + alang Posey niq Nan + alang Amarika + ini klayi na alang ni + + + Jiyax Yisu Thulang + + + Snamrika + Snyunaydi + + + Kari: {0} + Patas: {0} + Alang: {0} + + + + [a-e g-n {ng} o-u w-y] + [ḏ f ɨ ḻ ṟ ṯ ʉ v z ʼ] + [a-z] + + + + + + + + + + + + + + Kii + Dhi + Tri + Spi + Rii + Mti + Emi + Mai + Mni + Mxi + Mxk + Mxd + + + Kingal idas + Dha idas + Tru idas + Spat idas + Rima idas + Mataru idas + Empitu idas + Maspat idas + Mngari idas + Maxal idas + Maxal kingal idas + Maxal dha idas + + + + + K + D + T + S + R + M + E + P + A + M + K + D + + + + + + + Emp + Kin + Dha + Tru + Spa + Rim + Mat + + + Jiyax sngayan + tgKingal jiyax iyax sngayan + tgDha jiyax iyax sngayan + tgTru jiyax iyax sngayan + tgSpac jiyax iyax sngayan + tgRima jiyax iyax sngayan + tgMataru jiyax iyax sngayan + + + + + E + K + D + T + S + R + M + + + + + + + mn1 + mn2 + mn3 + mn4 + + + mnprxan + mndha + mntru + mnspat + + + + + 1 + 2 + 3 + 4 + + + + Brax kndaax + Baubau kndaax + + + Brah jikan Yisu Thulang + Bukuy jikan Yisu Thulang + + + BRY + BUY + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + yyyy-MM-dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + H:mm + L + M-d + E, M-d + LLL + MMM d + E MMM d + MMMM d + E MMMM d + mm:ss + y + yyyy-M + EEE, yyyy-M-d + y MMM + EEE, y MMM d + y MMMM + yyyy Q + y QQQ + + + + + Hngkawas + + + hngkawas + + + Idas + + + Jiyax iyax sngayan + + + Jiyax + Shiga + Jiyax sayang + Saman + + + Jiyax quri jiyax iyax sngayan + + + Jikan + + + Tuki + + + Spngan + + + Seykn + + + Alang + + + + + + +HH:mm;-HH:mm + JQG{0} + Jikan {0} + + Ini klayi ka Jikan hini + + + Jikan alang Purank + + + Jikan alang Grad + + + Jikan alang Snpaurow + + + Jikan alang Honoruru + + + Jikan alang Ankriji + + + Jikan alang Rosanci + + + Jikan alang Bonhuan + + + Jikan alang Tanbo + + + Jikan alang Jiciak + + + Jikan alang Intiannaporis + + + Jikan alang Niuyue + + + + Jikan Con-Amarika + Snegun Jikan Con-Amarika + Jikan Con-Amarika o Karat Rbagan + + + JCA + SJCA + JCAKR + + + + + Jikan Ton-Amarika + Snegun Jikan Ton-Amarika + Jikan Ton-Amarika o Karat Rbagan + + + JTA + SJTA + JTAKR + + + + + Jikan Yama-Amarika + Snegun Jikan Yama-Amarika + Jikan Hidaw niq Yama-Amarika + + + JYA + SJYA + JHYA + + + + + Jikan Daybinyan + Snegun Jikan Amarika-Daybinyan + Jikan Amarika-Daybinyan o Karat Rbagan + + + JD + SJAD + JADKR + + + + + Jikan Yayun Tasiyan + Snegun Jikan Yayun Tasiyan + Jikan Yayun Tasiyan o Karat Rbagan + + + JYT + SJYT + JYTKR + + + + + Jikan Conow + Jikan Conow o Karat Rbagan + + + JC + JCKR + + + + + Jikan Tonow + Jikan Tonow o Karat Rbagan + + + JT + JTKR + + + + + Jikan Siow + Jikan Siow o Karat Rbagan + + + JS + JSKR + + + + + Jikan Quri Grinweyji + + + JQG + + + + + + + . + , + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + + + + pila Autaria + + + pila Pajey + + + pila Ipaw + + + pila Irow + + + pila Inglis + + + pila Hong Kong + + + pila Intia + + + pila Nihong + + + pila Macao + + + pila Nowey + + + pila Ruski + + + pila Taiwan + + + pila America + + + ini klayi pila ni + + + + + + {0} Jiyax + + + {0} Tuki + + + {0} spngan + + + {0} Idas + + + {0} Seykn + + + {0} Jiyax iyax sngayan + + + {0} Hnkawas + + + + + yiru:y + mnan:m + + + + diff --git a/library/Zend/Locale/Data/trv_TW.xml b/library/Zend/Locale/Data/trv_TW.xml new file mode 100644 index 0000000000..f52b5a1434 --- /dev/null +++ b/library/Zend/Locale/Data/trv_TW.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/tt.xml b/library/Zend/Locale/Data/tt.xml new file mode 100644 index 0000000000..945111d92a --- /dev/null +++ b/library/Zend/Locale/Data/tt.xml @@ -0,0 +1,104 @@ + + + + + + + + + + Татар + + + Россия + + + + [а ә б-е ё ж җ з-о ө п-у ү ф х һ ц-я] + + + + + + + + d MMMM y + + + + + d MMMM y + + + + + dd.MM.yyyy + + + + + dd.MM.yyyy + + + + + + + h:mm:ss a zzzz + + + + + H:mm:ss z + + + + + H:mm:ss + + + + + H:mm + + + + + + H:mm + dd.MM + d MMMM + mm:ss + Q yy + MM.yyyy + MMMM y + + + + + + +HH:mm;-HH:mm + GMT{0} + {0} + + + + + , +   + + + + + #,##0.00¤ + + + + + + р. + + + + + diff --git a/library/Zend/Locale/Data/tt_RU.xml b/library/Zend/Locale/Data/tt_RU.xml new file mode 100644 index 0000000000..8806ab16bd --- /dev/null +++ b/library/Zend/Locale/Data/tt_RU.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/Zend/Locale/Data/ug_CN.xml b/library/Zend/Locale/Data/ug_CN.xml new file mode 100644 index 0000000000..9aad98c6f7 --- /dev/null +++ b/library/Zend/Locale/Data/ug_CN.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/library/Zend/Locale/Data/uz_AF.xml b/library/Zend/Locale/Data/uz_AF.xml new file mode 100644 index 0000000000..3c91fbdc9b --- /dev/null +++ b/library/Zend/Locale/Data/uz_AF.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/library/Zend/Locale/Data/uz_UZ.xml b/library/Zend/Locale/Data/uz_UZ.xml new file mode 100644 index 0000000000..30196daa95 --- /dev/null +++ b/library/Zend/Locale/Data/uz_UZ.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/library/Zend/Locale/Data/wo.xml b/library/Zend/Locale/Data/wo.xml new file mode 100644 index 0000000000..ee1c52bf31 --- /dev/null +++ b/library/Zend/Locale/Data/wo.xml @@ -0,0 +1,36 @@ + + + + + + + + + + Danwaa + Almaa + Angale + Españool + Finlaande + Fraañse + Itaaliee + Jappone + Olaande + Norweejiee + Portugees + Suweedwaa + + + + [a à b-e é ë f g i-n ñ ŋ o ó p-u w-y] + [ã h v z] + [a-z] + + + + +HH:mm;-HH:mm + GMT{0} + {0} + + + diff --git a/library/Zend/Locale/Data/wo_Latn.xml b/library/Zend/Locale/Data/wo_Latn.xml new file mode 100644 index 0000000000..fc7eded0f7 --- /dev/null +++ b/library/Zend/Locale/Data/wo_Latn.xml @@ -0,0 +1,9 @@ + + + + + + + - - - - - - - Ἀνδόρα - Ἠνωμένα Ἀραβικὰ Ἐμιράτα - Ἀφγανιστάν - Ἀντίγκουα καὶ Μπαρμπούντα - Ἀνγκουίλα - Ἀλβανία - Ἀρμενία - Ὁλλανδικὲς Ἀντίλλες - Ἀνγκόλα - Ἀνταρκτική - Ἀργεντινή - Ἀμερικανικὴ Σαμόα - Αὐστρία - Αὐστραλία - Ἀρούμπα - Ἀζερμπαϊτζάν - Βοσνία - Ἐρζεγοβίνη - Βερμοῦδες - Νῆσος Μπουβέ - Νῆσοι Κόκος (Κήλινγκ) - Κονγκό, Λαϊκὴ Δημοκρατία τοῦ - Κεντροαφρικανικὴ Δημοκρατία - Ἑλβετία - Ἀκτὴ Ἐλεφαντοστού - Νῆσοι Κούκ - Πράσινο Ἀκρωτήριο - Νῆσος Χριστουγέννων - Δομινικανὴ Δημοκρατία - Ἀλγερία - Ἰσημερινός - Ἐσθονία - Αἴγυπτος - Δυτικὴ Σαχάρα - Ἐρυθραία - Ἱσπανία - Αἰθιοπία - Μικρονησία, Ὁμόσπονδες Πολιτεῖες τῆς - Νῆσοι Φερόες - Ἡνωμένο Βασίλειο - Γαλλικὴ Γουιάνα - Ἰσημερινὴ Γουινέα - Ἑλλάδα - Νότια Γεωργία καὶ Νότιες Νήσοι Σάντουιτς - Χὸνγκ Κόνγκ, Εἰδικὴ Διοικητικὴ Περιφέρεια τῆς Κίνας - Νῆσοι Χὲρντ καὶ Μακντόναλντ - Ὁνδούρα - Ἁϊτή - Οὑγγαρία - Ἰνδονησία - Ἰρλανδία - Ἰσραήλ - Ἰνδία - Βρετανικὰ Ἐδάφη Ἰνδικοῦ Ὠκεανοῦ - Ἰράκ - Ἰράν, Ἰσλαμικὴ Δημοκρατία τοῦ - Ἰσλανδία - Ἰταλία - Ἰορδανία - Ἰαπωνία - Σαὶντ Κὶτς καὶ Νέβις - Νῆσοι Κέιμαν - Λατινικὴ Ἀμερική - Ἁγία Λουκία - Σρὶ Λάνκα - Λουξεμβοῦργο - Μολδαβία, Δημοκρατία τῆς - Νῆσοι Μάρσαλ - Μαλί - Μακάο, Εἰδικὴ Διοικητικὴ Περιφέρεια τῆς Κίνας - Νῆσοι Βόρειες Μαριάνες - Νῆσος Νόρφολκ - Ὁλλανδία - Ὀμάν - Γαλλικὴ Πολυνησία - Σαὶντ Πιὲρ καὶ Μικελόν - Παλαιστινιακὰ Ἐδάφη - Σαουδικὴ Ἀραβία - Νῆσοι Σολομῶντος - Ἁγία Ἑλένη - Νῆσοι Σβάλμπαρ καὶ Γιὰν Μαγιέν - Ἅγιος Μαρίνος - Σάο Τομὲ καὶ Πρίνσιπε - Ἒλ Σαλβαδόρ - Συρία, Ἀραβικὴ Δημοκρατία τῆς - Νῆσοι Τὲρκς καὶ Κάικος - Τσάντ - Γαλλικὰ Νότια Ἐδάφη - Ἀνατολικὸ Τιμόρ - Τρινιδὰδ καὶ Τομπάγκο - Οὐκρανία - Οὐγκάντα - Ἀπομακρυσμένες Νησίδες τῶν Ἡνωμένων Πολιτειῶν - Ἡνωμένες Πολιτεῖες - Οὐρουγουάη - Οὐζμπεκιστάν - Ἁγία Ἕδρα (Βατικανό) - Ἅγιος Βικέντιος καὶ Γρεναδίνες - Βρετανικὲς Παρθένοι Νῆσοι - Ἀμερικανικὲς Παρθένοι Νῆσοι - Νῆσοι Οὐάλλις καὶ Φουτουνά - Ὑεμένη - Νότια Ἀφρική - - - Ἡμερολόγιο - - - Βουδιστικὸ ἡμερολόγιο - Κινεζικὸ ἡμερολόγιο - Σειρὰ Direct - Γρηγοριανὸ ἡμερολόγιο - Ἑβραϊκὸ ἡμερολόγιο - Ἰσλαμικὸ ἡμερολόγιο - Ἰσλαμικὸ ἀστικὸ ἡμερολόγιο - Ἰαπωνικὸ ἡμερολόγιο - Σειρὰ τηλεφωνικοῦ καταλόγου - Σειρὰ Πίνγιν - Σειρὰ Stroke - - - - [α ἀ ἄ ἂ ἆ ἁ ἅ ἃ ἇ ά ὰ ᾶ β-ε ἐ ἔ ἒ ἑ ἕ ἓ έ ὲ ζ η ἠ ἤ ἢ ἦ ἡ ἥ ἣ ἧ ή ὴ ῆ θ ι ἰ ἴ ἲ ἶ ἱ ἵ ἳ ἷ ί ὶ ῖ ϊ ΐ ῒ ῗ κ-ο ὄ ὂ ὃ ό ὸ π ρ σ ς τ υ ὐ ὔ ὒ ὖ ὑ ὕ ὓ ὗ ύ ὺ ῦ ϋ ΰ ῢ ῧ φ-ω ὤ ὢ ὦ ὥ ὣ ὧ ώ ὼ ῶ] - - - - - - - - - - - Ἰαν - Ἀπρ - Ἰουν - Ἰουλ - Αὐγ - Ὀκτ - - - Ἰανουαρίου - Ἀπριλίου - Ἰουνίου - Ἰουλίου - Αὐγούστου - Ὀκτωβρίου - - - - - Ἰαν - Ἀπρ - Ἰουν - Ἰουλ - Αὐγ - Ὀκτ - - - Ἰανουάριος - Ἀπρίλιος - Ἰούνιος - Ἰούλιος - Αὔγουστος - Ὀκτώβριος - - - - - - - - - - Πεσέτα Ἀνδόρας - - - Ντιρὰμ Ἡνωμένων Ἀραβικῶν Ἐμιράτων - - - Λὲκ Ἀλβανίας - - - Dram Ἀρμενίας - - - Γκίλντα Ὁλλανδικῶν Ἀντιλλῶν - - - Kwanza Ἀνγκόλας - - - Kwanza Ἀνγκόλας (1977-1990) - - - Νέα Kwanza Ἀνγκόλας (1990-2000) - - - Kwanza Reajustado Ἀνγκόλας (1995-1999) - - - Austral Ἀργεντινῆς - - - Πέσο Ἀργεντινῆς (1983-1985) - - - Πέσο Ἀργεντινῆς - - - Σελίνι Αὐστρίας - - - Δολάριο Αὐστραλίας - - - Γκίλντα Ἀρούμπα - - - Μανὰτ Ἀζερμπαϊτζάν - - - Δηνάριο Βοσνίας-Ἑρζεγοβίνης - - - Μάρκο Βοσνίας-Ἑρζεγοβίνης - - - Φράγκο Βελγίου (οἰκονομικό) - - - Μεταλλικὸ Λὲβ Βουλγαρίας - - - Νέο Λὲβ Βουλγαρίας - - - Δολάριο Καναδᾶ - - - Φράγκο Ἑλβετίας - - - Unidades de Fomento Χιλῆς - - - Πέσο Χιλῆς - - - Σκληρὴ Κορόνα Τσεχοσλοβακίας - - - Ἐσκούδο Πράσινου Ἀκρωτηρίου - - - Ostmark Ἀνατολικῆς Γερμανίας - - - Δηνάριο Ἀλγερίας - - - Sucre Ἰσημερινοῦ - - - Unidad de Valor Constante (UVC) Ἰσημερινοῦ - - - Κορόνα Ἐστονίας - - - Λίρα Αἰγύπτου - - - Nakfa Ἐρυθραίας - - - Πεσέτα Ἱσπανίας - - - Birr Αἰθιοπίας - - - Εὐρώ - - - Λίρα Νήσων Φώλκλαντ - - - Dalasi Γκάμπιας - - - Ekwele Guineana Ἰσημερινῆς Γουινέας - - - Quetzal Γουατεμάλας - - - Γκινέα Ἐσκούδο Πορτογαλίας - - - Δολάριο Χὸνγκ Κόνγκ - - - Gourde Ἁϊτῆς - - - Φιορίνι Οὑγγαρίας - - - Ρούπια Ἰνδονησίας - - - Λίρα Ἰρλανδίας - - - Λίρα Ἰσραήλ - - - Νέο Sheqel Ἰσραήλ - - - Ρούπια Ἰνδίας - - - Δηνάριο Ἰράκ - - - Rial Ἰράκ - - - Κορόνα Ἰσλανδίας - - - Λιρέτα Ἰταλίας - - - Δηνάριο Ἰορδανίας - - - Γιὲν Ἰαπωνίας - - - Ρούπια Σρὶ Λάνκας - - - Pataca Μακάου - - - Πέσο Μεξικοῦ - - - Ἀσημένιο Πέσο Μεξικοῦ (1861-1992) - - - Unidad de Inversion (UDI) Μεξικοῦ - - - Ἐσκούδο Μοζαμβίκης - - - Δολάριο Ναμίμπιας - - - Χρυσὴ Κόρδοβα Νικαράγουας - - - Γκίλντα Ὁλλανδίας - - - Μπαλμπόα Παναμᾶ - - - Kina Παπούα Νέα Γουινέας - - - Ἐσκούδο Πορτογαλίας - - - Γκουαρανὶ Παραγουάης - - - Δολάριο Νήσων Σολομῶντος - - - Ρούπια Σεϋχελῶν - - - Λίρα Ἀγίας Ἑλένης - - - Σοβιετικὸ Ρούβλι - - - Colon Ἒλ Σαλβαδόρ - - - Lilangeni Ζουαζιλάνδης - - - Μπὰτ Ταϊλάνδης - - - Μανὰτ Τουρκμενιστάν - - - Ἐσκούδο Τιμόρ - - - Δολάριο Τρινιδὰδ καὶ Τομπάγκο - - - Hryvnia Οὐκρανίας - - - Karbovanetz Οὐκρανίας - - - Σελίνι Οὐγκάντας (1966-1987) - - - Σελίνι Οὐγκάντας - - - Δολάριο ΗΠΑ (Ἑπόμενη ἡμέρα) - - - Δολάριο ΗΠΑ (Ἴδια ἡμέρα) - - - Πέσο Οὐρουγουάης (1975-1993) - - - Πέσο Uruguayo Οὐρουγουάης - - - Sum Οὐζμπεκιστάν - - - Μπολιβὰλ Βενεζουέλας - - - Tala Δυτικῆς Σαμόας - - - Εὐρωπαϊκὴ Σύνθετη Μονάδα - - - Εὐρωπαϊκὴ Νομισματικὴ Μονάδα - - - Εὐρωπαϊκὴ Μονάδα Λογαριασμοῦ (XBC) - - - Εὐρωπαϊκὴ Μονάδα Λογαριασμοῦ (XBD) - - - Δολάριο Ἀνατολικῆς Καραϊβικῆς - - - Εἰδικὰ Δικαιώματα Ἀνάληψης - - - Εὐρωπαϊκὴ Συναλλαγματικὴ Μονάδα - - - Χρυσὸ Φράγκο Γαλλίας - - - Δηνάριο Ὑεμένης - - - Rial Ὑεμένης - - - Μεταλλικὸ Δηνάριο Γιουγκοσλαβίας - - - Ραντ Νότιας Ἀφρικῆς (οἰκονομικό) - - - Ρὰντ Νότιας Ἀφρικῆς - - - - - - Ναί - Ὄχι - - - - diff --git a/library/Zend/Locale/Data/en_Shaw.xml b/library/Zend/Locale/Data/en_Shaw.xml deleted file mode 100644 index eac6749d25..0000000000 --- a/library/Zend/Locale/Data/en_Shaw.xml +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - አንዶራ - የተባበሩት፡አረብ፡ኤምሬትስ - አልባኒያ - አርሜኒያ - ኔዘርላንድስ፡አንቲልስ - አርጀንቲና - ኦስትሪያ - አውስትሬሊያ - አዘርባጃን - ቦስኒያ፡እና፡ሄርዞጎቪኒያ - ባርቤዶስ - ቤልጄም - ቡልጌሪያ - ባህሬን - ቤርሙዳ - ቦሊቪያ - ብራዚል - ቡህታን - ቤላሩስ - ቤሊዘ - የመካከለኛው፡አፍሪካ፡ሪፐብሊክ - ስዊዘርላንድ - ቺሊ - ካሜሩን - ቻይና - ኮሎምቢያ - ሰርቢያ - ኬፕ፡ቬርዴ - ሳይፕረስ - ቼክ፡ሪፑብሊክ - ጀርመን - ዴንማርክ - ዶሚኒካ - ዶሚኒክ፡ሪፑብሊክ - አልጄሪያ - ኢኳዶር - ኤስቶኒያ - ግብጽ - ምዕራባዊ፡ሳህራ - ኤርትራ - ስፔን - ኢትዮጵያ - ፊንላንድ - ፊጂ - ሚክሮኔዢያ - ፈረንሳይ - እንግሊዝ - ጆርጂያ - የፈረንሳይ፡ጉዊአና - ጋምቢያ - ጊኒ - ኢኳቶሪያል፡ጊኒ - ግሪክ - ቢሳዎ - ጉያና - ሆንግ፡ኮንግ - ክሮኤሽያ - ሀይቲ - ሀንጋሪ - ኢንዶኔዢያ - አየርላንድ - እስራኤል - ህንድ - ኢራቅ - አይስላንድ - ጣሊያን - ጃማይካ - ጆርዳን - ጃፓን - ካምቦዲያ - ኮሞሮስ - ደቡብ፡ኮሪያ - ሰሜን፡ኮሪያ - ክዌት - ሊባኖስ - ሊቱዌኒያ - ላትቪያ - ሊቢያ - ሞሮኮ - ሞልዶቫ - ማከዶኒያ - ሞንጎሊያ - ማካዎ - ሞሪቴኒያ - ማልታ - ማሩሸስ - ሜክሲኮ - ማሌዢያ - ናሚቢያ - ኒው፡ካሌዶኒያ - ናይጄሪያ - ኔዘርላንድ - ኖርዌ - ኔፓል - ኒው፡ዚላንድ - ፔሩ - የፈረንሳይ፡ፖሊኔዢያ - ፓፑዋ፡ኒው፡ጊኒ - ፖላንድ - ፖርታ፡ሪኮ - ሮሜኒያ - ራሺያ - ሳውድአረቢያ - ሱዳን - ስዊድን - ሲንጋፖር - ስሎቬኒያ - ስሎቫኪያ - ሴኔጋል - ሱማሌ - ሲሪያ - ቻድ - የፈረንሳይ፡ደቡባዊ፡ግዛቶች - ታይላንድ - ታጃኪስታን - ምስራቅ፡ቲሞር - ቱኒዚያ - ቱርክ - ትሪኒዳድ፡እና፡ቶባጎ - ታንዛኒያ - ዩጋንዳ - አሜሪካ - ዩዝበኪስታን - ቬንዙዌላ - የእንግሊዝ፡ድንግል፡ደሴቶች - የአሜሪካ፡ቨርጂን፡ደሴቶች - የመን - ደቡብ፡አፍሪካ - ዛምቢያ - - - - [\u135F ᎐-᎙ ሀ-ሆ ለ-ሎ ሐ-ሖ መ-ሞ ሠ-ሦ ረ-ሮ ሰ-ሶ ቀ-ቆ ቈ ቊ-ቍ በ-ቦ ተ-ቶ ኀ-ኆ ኈ ኊ-ኍ ነ-ኖ አ-ኦ ከ-ኮ ኰ ኲ-ኵ ወ-ዎ ዐ-ዖ ዘ-ዞ የ-ዮ ደ-ዶ ገ-ጎ ጐ ጒ-ጕ ጠ-ጦ ጰ-ጶ ጸ-ጾ ፀ-ፆ ፈ-ፎ ፐ-ፖ] - [ሇ ሏ ⶀ ሗ ሟ ᎀ-ᎃ ⶁ ሧ ሯ ⶂ ሷ ⶃ ሸ-ሿ ⶄ ቇ ቐ-ቖ ቘ ቚ-ቝ ቧ ᎄ-ᎇ ⶅ ቮ ቯ ቷ ⶆ ቿ ⶇ ኇ ኗ ⶈ ኟ ⶉ ኧ ⶊ ኯ ኸ-ኾ ዀ ዂ-ዅ ዏ ዟ ⶋ ዠ-ዧ ዷ ⶌ ዸ-ዿ ⶍ ጀ-ጇ ⶎ ጏ ጘ-ጟ ⶓ-ⶖ ጧ ⶏ ጨ-ጯ ⶐ ጷ ⶑ ጿ ፇ ፏ ᎈ-ᎋ ፗ ᎌ-ᎏ ⶒ ፘ-ፚ ⶠ-ⶦ ⶨ-ⶮ ⶰ-ⶶ ⶸ-ⶾ ⷀ-ⷆ ⷈ-ⷎ ⷐ-ⷖ ⷘ-ⷞ] - - - - - - - - ጠሐረ - ከተተ - መገበ - አኀዘ - ግንባ - ሠንየ - ሐመለ - ነሐሰ - ከረመ - ጠቀመ - ኀደረ - ኀሠሠ - - - ጠሐረ - ከተተ - መገበ - አኀዘ - ግንባት - ሠንየ - ሐመለ - ነሐሰ - ከረመ - ጠቀመ - ኀደረ - ኀሠሠ - - - - - - - - - - - - - - - - - - - - - - - እኁድ - ሰኑይ - ሠሉስ - ራብዕ - ሐሙስ - ዓርበ - ቀዳሚ - - - እኁድ - ሰኑይ - ሠሉስ - ራብዕ - ሐሙስ - ዓርበ - ቀዳሚት - - - - - - - - - - - - - - - - - - Q1 - Q2 - Q3 - Q4 - - - Q1 - Q2 - Q3 - Q4 - - - - ጽባሕ - ምሴት - - - ዓ/ዓ - ዓ/ም - - - - - - EEEE፥ dd MMMM መዓልት y G - - - - - dd MMMM y - - - - - dd-MMM-y - - - - - dd/MM/yy - - - - - - - h:mm:ss a zzzz - - - - - h:mm:ss a z - - - - - h:mm:ss a - - - - - h:mm a - - - - - - dd/MM - dd MMMM - MM/yy - Q yy - MMMM y - - - - - - +HH:mm;-HH:mm - GMT{0} - {0} - - - - - - - - - - ¤#,##0.00 - - - - - - የብራዚል ሪል - - - የቻይና ዩአን ረንሚንቢ - - - የኢትዮጵያ ብር - - - አውሮ - - - የእንግሊዝ ፓውንድ ስተርሊንግ - - - የሕንድ ሩፒ - - - የጃፓን የን - - - የራሻ ሩብል - - - የአሜሪካን ዶላር - - - - - diff --git a/library/Zend/Locale/Data/gez_ER.xml b/library/Zend/Locale/Data/gez_ER.xml deleted file mode 100644 index b4b498bba4..0000000000 --- a/library/Zend/Locale/Data/gez_ER.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/Zend/Locale/Data/gez_ET.xml b/library/Zend/Locale/Data/gez_ET.xml deleted file mode 100644 index 5d0cf2ec5b..0000000000 --- a/library/Zend/Locale/Data/gez_ET.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/Zend/Locale/Data/gv_GB.xml b/library/Zend/Locale/Data/gv_GB.xml deleted file mode 100644 index 1cb6b89f22..0000000000 --- a/library/Zend/Locale/Data/gv_GB.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/Zend/Locale/Data/ha_Arab.xml b/library/Zend/Locale/Data/ha_Arab.xml deleted file mode 100644 index c4532ad9da..0000000000 --- a/library/Zend/Locale/Data/ha_Arab.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - Cîhan - Tirkiye - - - salname - rêzkirin - - - mîladî - hîcrî - - - - - - - [a-c ç d e ê f-i î j-s ş t u û v-z] - - - - - - - - çil - sib - adr - nîs - gul - hez - tîr - - - çile - sibat - adar - nîsan - gulan - hezîran - - - - - ç - s - a - n - g - h - - - - - - - - - - çş - - în - ş - - - yekşem - duşem - şê - çarşem - pêncşem - în - şemî - - - - - y - d - s - ç - p - î - ş - - - - - - - Ç1 - Ç2 - Ç3 - Ç4 - - - Ç1 - Ç2 - Ç3 - Ç4 - - - - BN - PN - - - BZ - PZ - - - - - - yy/MM/dd - - - - - - sal - - - meh - - - hefte - - - roj - - - demjimêr - - - xulek - - - çirke - - - - - - - - muẖerem - sefer - rebîʿulewel - rebîʿulaxer - cemazîyelewel - cemazîyelaxer - receb - şeʿban - remezan - şewal - zîlqeʿde - zîlẖece - - - - - - - - - erê:e - na:n - - - - diff --git a/library/Zend/Locale/Data/ku_Latn_TR.xml b/library/Zend/Locale/Data/ku_Latn_TR.xml deleted file mode 100644 index 5d2a227af8..0000000000 --- a/library/Zend/Locale/Data/ku_Latn_TR.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Welt - Afrika - Noordamerika - Süüdamerika - Ozeanien - Westafrika - Middelamerika - Oostafrika - Noordafrika - Zentralafrika - Süüdlich Afrika - Amerika - Karibik - Oostasien - Süüdasien - Süüdoostasien - Süüdeuropa - Australien un Neeseeland - Melanesien - Polynesien - Süüd-Zentralasien - Asien - Zentralasien - Westasien - Europa - Oosteuropa - Noordeuropa - Westeuropa - Gemeenschop vun Unafhängige Staten - Latienamerika un Karibik - Andorra - Vereenigte Araabsche Emiraten - Afghanistan - Antigua un Barbuda - Anguilla - Albanien - Armenien - Nedderlandsche Antillen - Angola - Antarktis - Argentinien - Amerikaansch-Samoa - Öösterriek - Australien - Aruba - Ålandeilannen - Aserbaidschan - Bosnien un Herzegowina - Barbados - Bangladesch - Belgien - Burkina Faso - Bulgarien - Bahrain - Burundi - Benin - Saint Barthélemy - Bermuda - Brunei Darussalam - Bolivien - Brasilien - Bahamas - Bhutan - Bouvet-Eiland - Botswana - Wittrussland - Belize - Kanada - Kokos-Eilannen - Demokraatsche Republik Kongo - Zentralafrikaansche Republik - Republik Kongo - Swiez - Elfenbeenküst - Cook-Eilannen - Chile - Kamerun - China - Kolumbien - Costa Rica - Kuba - Kap Verde - Wiehnachtseiland - Zypern - Tschechien - Düütschland - Dschibuti - Däänmark - Dominica - Dominikaansche Republik - Algerien - Ecuador - Eestland - Ägypten - Westsahara - Eritrea - Spanien - Äthiopien - Finnland - Fidschi - Falkland-Eilannen - Mikronesien - Färöer - Frankriek - Gabun - Vereenigt Königriek - Grenada - Georgien - Franzöösch-Guayana - Guernsey - Ghana - Gibraltar - Gröönland - Gambia - Guinea - Guadeloupe - Äquatorialguinea - Grekenland - Süüdgeorgien un de Südlichen Sandwich-Eilannen - Guatemala - Guam - Guinea-Bissau - Guyana - Sünnerverwaltensrebeed Hongkong - Heard- un McDonald-Eilannen - Honduras - Kroatien - Haiti - Ungarn - Indonesien - Irland - Israel - Insel Man - Indien - Britisch Rebeed in’n Indischen Ozean - Irak - Iran - Iesland - Italien - Jersey - Jamaika - Jordanien - Japan - Kenia - Kirgisistan - Kambodscha - Kiribati - Komoren - St. Kitts un Nevis - Noordkorea - Süüdkorea - Kuwait - Kaiman-Eilannen - Kasachstan - Laos - Libanon - St. Lucia - Liechtensteen - Sri Lanka - Liberia - Lesotho - Litauen - Luxemborg - Lettland - Libyen - Marokko - Monaco - Moldawien - Montenegro - Saint Martin - Madagaskar - Marshall-Eilannen - Makedonien - Mali - Birma - Mongolei - Sünnerverwaltensrebeed Macao - Nöördliche Marianen - Martinique - Mauretanien - Montserrat - Malta - Mauritius - Malediven - Malawi - Mexiko - Malaysia - Mosambik - Namibia - Neekaledonien - Niger - Norfolk - Nigeria - Nikaragua - Nedderlannen - Norwegen - Nepal - Nauru - Niue - Neeseeland - Oman - Panama - Peru - Franzöösch-Polynesien - Papua-Neeguinea - Philippinen - Pakistan - Polen - St. Pierre un Miquelon - Pitcairn - Puerto Rico - Palästinensische Rebeden - Portugal - Palau - Paraguay - Katar - Büter Ozeanien - Europääsche Union - Reunion - Rumänien - Serbien - Russland - Ruanda - Saudi-Arabien - Salomonen - Seychellen - Sudan - Sweden - Singapur - St. Helena - Slowenien - Svalbard un Jan Mayen - Slowakei - Sierra Leone - San Marino - Senegal - Somalia - Surinam - São Tomé un Príncipe - El Salvador - Syrien - Swasiland - Turks- un Caicosinseln - Tschad - Franzöösche Süüd- un Antarktisrebeden - Togo - Thailand - Tadschikistan - Tokelau - Oosttimor - Turkmenistan - Tunesien - Tonga - Törkie - Trinidad un Tobago - Tuvalu - Taiwan - Tansania - Ukraine - Uganda - Amerikaansch-Ozeanien - USA - Uruguay - Usbekistan - Vatikan - St. Vincent un de Grenadinen - Venezuela - Brietsche Jumfern-Eilannen - Amerikaansche Jumfern-Eilannen - Vietnam - Vanuatu - Wallis un Futuna - Samoa - Jemen - Mayotte - Süüdafrika - Sambia - Simbabwe - Unbekannte oder ungüllige Region - - - Ole düütsche Rechtschrievung - Standardiseert Resiaansch Rechtschrievung - Ne’e düütsche Rechtschrievung - Laat Middelfranzöösch bet 1606 - Fröh Neefranzöösch - Oostarmeensch - Westarmeensch - Vereenheitlicht Törksch Latienalphabet - San Giorgio-/Bila-Dialekt - Boontling - Phoneetsch (IPA) - Phoneetsch (UPA) - Lipovaz-Dialekt vun dat Resiaansche - Monotoonsch - Natisone-Dialekt - Gniva-/Njiva-Dialekt - Oseacco-/Osojane-Dialekt - Polytoonsch - Computer - Överarbeidt Rechtschrievung - Resiaansch - Saho - Schottsch Standard-Engelsch - Scouse - Stolvizza-/Solbica-Dialekt - Taraskievica-Rechtschrievung - Valenziaansch - - - Klenner - Bookstaven-Folgreeg - Geldteken - - - Traditschonell Chineesch Sorteerregeln - Big5 - Buddhistisch Klenner - Chineesch Klenner - Direkte Sorteerregeln - Vereenfacht Chineesch Sorteerregeln - GB2312 - Gregoriaansch Klenner - Hebrääsch Klenner - Indsch Nationalklenner - Islaamsch Klenner - Islaamsch Zivilklenner - Japaansch Klenner - Telefonbook-Sorteerregeln - Pinyin-Sorteerregeln - Klenner vun de Republik China - Streekfolg - Traditschonelle Sorteerregeln - - - Metrisch - US-amerikaansch - - - Spraak: {0} - Schrift: {0} - Region: {0} - - - - [a å ä b-o ö p-s ß t u ü v-z] - [á à ă â ā æ ç é è ĕ ê ë ę ē í ì ĭ î ï ī ñ ó ò ŏ ô ø ō œ ú ù ŭ û ū ÿ] - - - - - - - - - - {1} ({0}) - - Unbekannt - - - Süüdpool - - - Wostok - - - Dumont d’Urville - - - Kanaren - - - Ulanbator - - - Mexiko-Stadt - - - Azoren - - - Moskau - - - Wolgograd - - - Jekaterinborg - - - Nowosibirsk - - - Krasnojarsk - - - Jakutsk - - - Wladiwostok - - - Sachalin - - - Kamschatka - - - Uschgorod - - - Saporoschje - - - New Salem, Noord-Dakota - - - Center, Noord-Dakota - - - - - - , - . - ; - % - 0 - # - + - - - E - - - NaN - - - - - #,##0.### - - - - - - - #E0 - - - - - - - #,##0 % - - - - - - - #,##0.00 ¤ - - - {0} {1} - - - - - {0} Daag - - - {0} Stünnen - - - {0} Minuten - - - {0} Maanden - - - {0} Sekunnen - - - {0} Weken - - - {0} Johren - - - - - jo:j - nee:n - - - - diff --git a/library/Zend/Locale/Data/nds_DE.xml b/library/Zend/Locale/Data/nds_DE.xml deleted file mode 100644 index 2fd28f664f..0000000000 --- a/library/Zend/Locale/Data/nds_DE.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/Zend/Locale/Data/no.xml b/library/Zend/Locale/Data/no.xml deleted file mode 100644 index 45a04abf18..0000000000 --- a/library/Zend/Locale/Data/no.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/Zend/Locale/Data/ny.xml b/library/Zend/Locale/Data/ny.xml deleted file mode 100644 index cc462acaec..0000000000 --- a/library/Zend/Locale/Data/ny.xml +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - - [a-p r-u w ŵ y z] - [q v x] - - - - - - - - Jan - Feb - Mal - Epu - Mei - Jun - Jul - Oga - Sep - Oku - Nov - Dis - - - Januwale - Febuluwale - Malichi - Epulo - Mei - Juni - Julai - Ogasiti - Seputemba - Okutoba - Novemba - Disemba - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - - - - - - - Mul - Lem - Wir - Tat - Nai - San - Wer - - - Lamulungu - Lolemba - Lachiwiri - Lachitatu - Lachinayi - Lachisanu - Loweruka - - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - - - - - - - Q1 - Q2 - Q3 - Q4 - - - Q1 - Q2 - Q3 - Q4 - - - - AM - PM - - - BC - AD - - - BC - AD - - - - - - EEEE, y MMMM dd - - - - - y MMMM d - - - - - y MMM d - - - - - yy/MM/dd - - - - - - - HH:mm:ss zzzz - - - - - HH:mm:ss z - - - - - HH:mm:ss - - - - - HH:mm - - - - - - Q yy - - - - - - +HH:mm;-HH:mm - GMT{0} - {0} - - - - - - Malawian Kwacha - - - - diff --git a/library/Zend/Locale/Data/ny_MW.xml b/library/Zend/Locale/Data/ny_MW.xml deleted file mode 100644 index aec6f22f0e..0000000000 --- a/library/Zend/Locale/Data/ny_MW.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/Zend/Locale/Data/oc.xml b/library/Zend/Locale/Data/oc.xml deleted file mode 100644 index 986e75b54a..0000000000 --- a/library/Zend/Locale/Data/oc.xml +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - - - arabi - lenga artificiala - azerbaijani - berbèr - breton - catalan - lenga celtica - danés - aleman - grec - anglés - espanhòl - bàscol - francés - francés mejan - grec ancian - ebreu - armèni - italian - latin - flamenc - occitan - fenician - occitan ancian - portugués - lenga romança - chinés - - - - - - - - - - - - - - - - - Africa - America centrala - Americas - Austràlia e Nòva Zelanda - Asia - Asia centrala - Euròpa - Andòrra - Afganistan - Antigua e Barbuda - Anguilla - Albania - Armènia - Angòla - Antartica - Argentina - Samòa americana - Àustria - Austràlia - Azerbaijan - Bòsnia e Ercegovina - Barbados - Bangladesh - Belgica - Burkina Faso - Bolgària - Bahrain - Burundi - Benin - Bermuda - Brunei - Bolívia - Brasil - Bahamas - Botan - Isla Bouvet - Botswana - Bielorussia - Belize - Canadà - Còngo - Kinshasa - Republica Centraficana - Còngo - Brazzaville - Soïssa - Còsta d'Evòri - Chile - Cameron - China - Colómbia - Còsta Rica - Cuba - Cap Verd - Chipre - Republica chèca - Alemanha - Jiboti - Danemarc - Republica dominicana - Argeria - Eqüator - Estònia - Egipte - Eritrèa - Espanha - Etiopia - Finlàndia - Fiji - França - Gabon - Reiaume Unit - Guiana francesa - Guinèa Eqüatoriala - Croàcia - Israèl - Índia - Itàlia - Japon - Cambòja - Comòros - Corèa del Nòrd - Corèa del Sud - Islas Caiman - Cazacstan - Libia - Marròc - Mónegue - Birmania - Mauritània - Moçambic - Peró - Portugal - Belau - Union Europèa - Russia - Arabia Saudita - Lo Salvador - Súria - Chad - Timòr Èst - Ucràina - Estats Units - Veneçuèla - Vietnam - Desconegut o Region invalida - - - calendier - òrde alfabetic - moneda - - - Lenga: {0} - Escritura: {0} - Region: {0} - - - - [a á à b-e é è f-i í ï j-o ó ò p-u ú ü v-z] - [á à ç é è í ï ó ò ú ü] - [a-z] - - - - - - - - genièr - febrièr - març - abril - mai - junh - julhet - agost - setembre - octòbre - novembre - dezembre - - - - - - - Dimenge - diluns - dimarç - dimècres - dijòus - divèndres - dissabte - - - - - - era - - - annada - - - mes - - - setmana - - - jorn - ièr - uèi - deman - - - jorn de la setmana - - - ora - - - minuta - - - segonda - - - zòna - - - - - - Ora de: {0} - - - - - - euro - - - - - - {0} jorns - - - {0} oras - - - {0} minutas - - - {0} mes - - - {0} segondas - - - {0} setmanas - - - {0} annadas - - - diff --git a/library/Zend/Locale/Data/oc_FR.xml b/library/Zend/Locale/Data/oc_FR.xml deleted file mode 100644 index 4ff3548db2..0000000000 --- a/library/Zend/Locale/Data/oc_FR.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/Zend/Locale/Data/pa_IN.xml b/library/Zend/Locale/Data/pa_IN.xml deleted file mode 100644 index ea123c2037..0000000000 --- a/library/Zend/Locale/Data/pa_IN.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/library/Zend/Locale/Data/pa_PK.xml b/library/Zend/Locale/Data/pa_PK.xml deleted file mode 100644 index 942fa027be..0000000000 --- a/library/Zend/Locale/Data/pa_PK.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/library/Zend/Locale/Data/sa.xml b/library/Zend/Locale/Data/sa.xml deleted file mode 100644 index c9817742f5..0000000000 --- a/library/Zend/Locale/Data/sa.xml +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - अफर - अब्खासियन् - अचिनीस् - अचोलि - अडङ्गमे - अफ्रिक्कान्स् - आफ्रो एष्यन् भाषा - अफ्रिहिलि - अयिनु - अकन् - अक्काटियान् - अलियुट् - अल्गोण्क्यन् भाषा - अंहाऱिक् - अङ्गिक - अपाचे भाषा - अऱबिक् - प्राचीन ईजिप्त्यन् - पुरातन यवन भाषा - नोर्वीजियन् बॊकामल् - संस्कृत भाषा - अल्बेनियन् - आळटिक् भाषा - अज्ञात भाषा - - - - - - - - - - - - भारतम् - - - - [़ ँ-ः ॑-॔ ॐ अ-ऋ ॠ ऌ ॡ ए ऐ ओ-न र ल ळ व-ह ऽ-ॄ ॢ ॣ े ै ो-्] - [\u200C \u200D ०-९ ऍ ऑ ॅ ॉ] - [a-z] - - - - - - - - EEEE d MMMM y - - - - - d MMMM y - - - - - dd-MM-yyyy - - - - - d-MM-yy - - - - - - - hh:mm:ss a zzzz - - - - - hh:mm:ss a z - - - - - hh:mm:ss a - - - - - hh:mm a - - - - - - dd-MM - d MMMM - Q yy - MM-yyyy - MMMM y - - - - - - +HH:mm;-HH:mm - GMT{0} - {0} - - - - deva - - 0 - - - - - #,##,##0.### - - - - - - - #,##,##0% - - - - - - - ¤#,##,##0.00 - - - - - - रु - - - - - diff --git a/library/Zend/Locale/Data/sa_IN.xml b/library/Zend/Locale/Data/sa_IN.xml deleted file mode 100644 index 6dcb92fb7f..0000000000 --- a/library/Zend/Locale/Data/sa_IN.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/Zend/Locale/Data/sh.xml b/library/Zend/Locale/Data/sh.xml deleted file mode 100644 index b3778d1a0d..0000000000 --- a/library/Zend/Locale/Data/sh.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/Zend/Locale/Data/sh_BA.xml b/library/Zend/Locale/Data/sh_BA.xml deleted file mode 100644 index 4be524930a..0000000000 --- a/library/Zend/Locale/Data/sh_BA.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/library/Zend/Locale/Data/sh_CS.xml b/library/Zend/Locale/Data/sh_CS.xml deleted file mode 100644 index 3fd7faee5c..0000000000 --- a/library/Zend/Locale/Data/sh_CS.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/library/Zend/Locale/Data/sh_YU.xml b/library/Zend/Locale/Data/sh_YU.xml deleted file mode 100644 index 8b4ec08083..0000000000 --- a/library/Zend/Locale/Data/sh_YU.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/library/Zend/Locale/Data/sid.xml b/library/Zend/Locale/Data/sid.xml deleted file mode 100644 index 9f85591e4d..0000000000 --- a/library/Zend/Locale/Data/sid.xml +++ /dev/null @@ -1,248 +0,0 @@ - - - - - - - - - - Arabic - German - English - Spanish - French - Hindi - Italian - Japanese - Portuguese - Russian - Sidaamu Afo - Chinese - - - - - - Brazil - China - Germany - Itiyoophiya - France - United Kingdom - India - Italy - Japan - Russia - United States - - - - [a-z] - - - - - - - - Jan - Feb - Mar - Apr - May - Jun - Jul - Aug - Sep - Oct - Nov - Dec - - - January - February - March - April - May - June - July - August - September - October - November - December - - - - - J - F - M - A - M - J - J - A - S - O - N - D - - - - - - - Sam - San - Mak - Row - Ham - Arb - Qid - - - Sambata - Sanyo - Maakisanyo - Roowe - Hamuse - Arbe - Qidaame - - - - - S - S - M - R - H - A - Q - - - - - - - Q1 - Q2 - Q3 - Q4 - - - Q1 - Q2 - Q3 - Q4 - - - - soodo - hawwaro - - - YIA - YIG - - - - - - EEEE, MMMM dd, y - - - - - dd MMMM y - - - - - dd-MMM-y - - - - - dd/MM/yy - - - - - - - h:mm:ss a zzzz - - - - - h:mm:ss a z - - - - - h:mm:ss a - - - - - h:mm a - - - - - - dd/MM - dd MMMM - MM/yy - Q yy - MMMM y - - - - - - +HH:mm;-HH:mm - GMT{0} - {0} - - - - - - - ¤#,##0.00 - - - - - - Brazilian Real - - - Chinese Yuan Renminbi - - - Euro - - - British Pound Sterling - - - Indian Rupee - - - Japanese Yen - - - Russian Ruble - - - US Dollar - - - - - diff --git a/library/Zend/Locale/Data/sid_ET.xml b/library/Zend/Locale/Data/sid_ET.xml deleted file mode 100644 index 479c972dcd..0000000000 --- a/library/Zend/Locale/Data/sid_ET.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/Zend/Locale/Data/sr_BA.xml b/library/Zend/Locale/Data/sr_BA.xml deleted file mode 100644 index cf79f15b1b..0000000000 --- a/library/Zend/Locale/Data/sr_BA.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/library/Zend/Locale/Data/sr_CS.xml b/library/Zend/Locale/Data/sr_CS.xml deleted file mode 100644 index 2155046757..0000000000 --- a/library/Zend/Locale/Data/sr_CS.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/library/Zend/Locale/Data/sr_Cyrl_CS.xml b/library/Zend/Locale/Data/sr_Cyrl_CS.xml deleted file mode 100644 index 4545e95085..0000000000 --- a/library/Zend/Locale/Data/sr_Cyrl_CS.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - - - - - - alang Nanci - alang Posniya - alang Pajey - alang Puwei - alang Switjrrant - alang Ipaw - alang Towjih - alang Posey - alang Inglis - alang Nanjiouya ni Nansanminji - alang Htee ni Mayktan - alang Krowtia - alang Intu - alang Inglis niq Intu - alang Itariya - alang Nihong - alang Mondineygrw - alang Srbia - alang Ruski - alang Snmarinow - alang Posey niq Nan - alang Amarika - ini klayi na alang ni - - - Jiyax Yisu Thulang - - - Snamrika - Snyunaydi - - - Kari: {0} - Patas: {0} - Alang: {0} - - - - [a-e g-n {ng} o-u w-y] - [ḏ f ɨ ḻ ṟ ṯ ʉ v z ʼ] - [a-z] - - - - - - - - - - - - - - Kii - Dhi - Tri - Spi - Rii - Mti - Emi - Mai - Mni - Mxi - Mxk - Mxd - - - Kingal idas - Dha idas - Tru idas - Spat idas - Rima idas - Mataru idas - Empitu idas - Maspat idas - Mngari idas - Maxal idas - Maxal kingal idas - Maxal dha idas - - - - - K - D - T - S - R - M - E - P - A - M - K - D - - - - - - - Emp - Kin - Dha - Tru - Spa - Rim - Mat - - - Jiyax sngayan - tgKingal jiyax iyax sngayan - tgDha jiyax iyax sngayan - tgTru jiyax iyax sngayan - tgSpac jiyax iyax sngayan - tgRima jiyax iyax sngayan - tgMataru jiyax iyax sngayan - - - - - E - K - D - T - S - R - M - - - - - - - mn1 - mn2 - mn3 - mn4 - - - mnprxan - mndha - mntru - mnspat - - - - - 1 - 2 - 3 - 4 - - - - Brax kndaax - Baubau kndaax - - - Brah jikan Yisu Thulang - Bukuy jikan Yisu Thulang - - - BRY - BUY - - - - - - EEEE, y MMMM dd - - - - - y MMMM d - - - - - y MMM d - - - - - yyyy-MM-dd - - - - - - - HH:mm:ss zzzz - - - - - HH:mm:ss z - - - - - HH:mm:ss - - - - - HH:mm - - - - - - d - H:mm - L - M-d - E, M-d - LLL - MMM d - E MMM d - MMMM d - E MMMM d - mm:ss - y - yyyy-M - EEE, yyyy-M-d - y MMM - EEE, y MMM d - y MMMM - yyyy Q - y QQQ - - - - - Hngkawas - - - hngkawas - - - Idas - - - Jiyax iyax sngayan - - - Jiyax - Shiga - Jiyax sayang - Saman - - - Jiyax quri jiyax iyax sngayan - - - Jikan - - - Tuki - - - Spngan - - - Seykn - - - Alang - - - - - - +HH:mm;-HH:mm - JQG{0} - Jikan {0} - - Ini klayi ka Jikan hini - - - Jikan alang Purank - - - Jikan alang Grad - - - Jikan alang Snpaurow - - - Jikan alang Honoruru - - - Jikan alang Ankriji - - - Jikan alang Rosanci - - - Jikan alang Bonhuan - - - Jikan alang Tanbo - - - Jikan alang Jiciak - - - Jikan alang Intiannaporis - - - Jikan alang Niuyue - - - - Jikan Con-Amarika - Snegun Jikan Con-Amarika - Jikan Con-Amarika o Karat Rbagan - - - JCA - SJCA - JCAKR - - - - - Jikan Ton-Amarika - Snegun Jikan Ton-Amarika - Jikan Ton-Amarika o Karat Rbagan - - - JTA - SJTA - JTAKR - - - - - Jikan Yama-Amarika - Snegun Jikan Yama-Amarika - Jikan Hidaw niq Yama-Amarika - - - JYA - SJYA - JHYA - - - - - Jikan Daybinyan - Snegun Jikan Amarika-Daybinyan - Jikan Amarika-Daybinyan o Karat Rbagan - - - JD - SJAD - JADKR - - - - - Jikan Yayun Tasiyan - Snegun Jikan Yayun Tasiyan - Jikan Yayun Tasiyan o Karat Rbagan - - - JYT - SJYT - JYTKR - - - - - Jikan Conow - Jikan Conow o Karat Rbagan - - - JC - JCKR - - - - - Jikan Tonow - Jikan Tonow o Karat Rbagan - - - JT - JTKR - - - - - Jikan Siow - Jikan Siow o Karat Rbagan - - - JS - JSKR - - - - - Jikan Quri Grinweyji - - - JQG - - - - - - - . - , - - - - - #,##0.### - - - - - - - #E0 - - - - - - - #,##0% - - - - - - - ¤ #,##0.00 - - - - - - pila Autaria - - - pila Pajey - - - pila Ipaw - - - pila Irow - - - pila Inglis - - - pila Hong Kong - - - pila Intia - - - pila Nihong - - - pila Macao - - - pila Nowey - - - pila Ruski - - - pila Taiwan - - - pila America - - - ini klayi pila ni - - - - - - {0} Jiyax - - - {0} Tuki - - - {0} spngan - - - {0} Idas - - - {0} Seykn - - - {0} Jiyax iyax sngayan - - - {0} Hnkawas - - - - - yiru:y - mnan:m - - - - diff --git a/library/Zend/Locale/Data/trv_TW.xml b/library/Zend/Locale/Data/trv_TW.xml deleted file mode 100644 index f52b5a1434..0000000000 --- a/library/Zend/Locale/Data/trv_TW.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/Zend/Locale/Data/tt.xml b/library/Zend/Locale/Data/tt.xml deleted file mode 100644 index 945111d92a..0000000000 --- a/library/Zend/Locale/Data/tt.xml +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - Татар - - - Россия - - - - [а ә б-е ё ж җ з-о ө п-у ү ф х һ ц-я] - - - - - - - - d MMMM y - - - - - d MMMM y - - - - - dd.MM.yyyy - - - - - dd.MM.yyyy - - - - - - - h:mm:ss a zzzz - - - - - H:mm:ss z - - - - - H:mm:ss - - - - - H:mm - - - - - - H:mm - dd.MM - d MMMM - mm:ss - Q yy - MM.yyyy - MMMM y - - - - - - +HH:mm;-HH:mm - GMT{0} - {0} - - - - - , -   - - - - - #,##0.00¤ - - - - - - р. - - - - - diff --git a/library/Zend/Locale/Data/tt_RU.xml b/library/Zend/Locale/Data/tt_RU.xml deleted file mode 100644 index 8806ab16bd..0000000000 --- a/library/Zend/Locale/Data/tt_RU.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/Zend/Locale/Data/ug_CN.xml b/library/Zend/Locale/Data/ug_CN.xml deleted file mode 100644 index 9aad98c6f7..0000000000 --- a/library/Zend/Locale/Data/ug_CN.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/library/Zend/Locale/Data/uz_AF.xml b/library/Zend/Locale/Data/uz_AF.xml deleted file mode 100644 index 3c91fbdc9b..0000000000 --- a/library/Zend/Locale/Data/uz_AF.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/library/Zend/Locale/Data/uz_UZ.xml b/library/Zend/Locale/Data/uz_UZ.xml deleted file mode 100644 index 30196daa95..0000000000 --- a/library/Zend/Locale/Data/uz_UZ.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/library/Zend/Locale/Data/wo.xml b/library/Zend/Locale/Data/wo.xml deleted file mode 100644 index ee1c52bf31..0000000000 --- a/library/Zend/Locale/Data/wo.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - Danwaa - Almaa - Angale - Españool - Finlaande - Fraañse - Itaaliee - Jappone - Olaande - Norweejiee - Portugees - Suweedwaa - - - - [a à b-e é ë f g i-n ñ ŋ o ó p-u w-y] - [ã h v z] - [a-z] - - - - +HH:mm;-HH:mm - GMT{0} - {0} - - - diff --git a/library/Zend/Locale/Data/wo_Latn.xml b/library/Zend/Locale/Data/wo_Latn.xml deleted file mode 100644 index fc7eded0f7..0000000000 --- a/library/Zend/Locale/Data/wo_Latn.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - -