[gtv-resources] r62 committed - New add with update of videosources.php to fix a bug

0 views
Skip to first unread message

gtv-re...@googlecode.com

unread,
Apr 25, 2012, 6:40:46 PM4/25/12
to google-tv-w...@googlegroups.com
Revision: 62
Author: shaw...@google.com
Date: Wed Apr 25 15:32:46 2012
Log: New add with update of videosources.php to fix a bug

http://code.google.com/p/gtv-resources/source/detail?r=62

Added:
/trunk/gtv_template2_ajax_php_mysql
/trunk/gtv_template2_ajax_php_mysql/Zend
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Assert
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Assert/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Resource
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Resource/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Resource.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Role
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Role/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Role/Registry
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Role/Registry/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Role/Registry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Role.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/DbTable.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Digest.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Http
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Http/Resolver

/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Http/Resolver/Exception.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Http/Resolver/File.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Http/Resolver/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Http.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/InfoCard.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Ldap.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/OpenId.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Result.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Storage
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Storage/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Storage/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Storage/NonPersistent.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Storage/Session.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/Apc.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/File.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/Memcached.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/Sqlite.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/Test.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/ZendPlatform.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Core.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Frontend
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Frontend/Class.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Frontend/File.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Frontend/Function.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Frontend/Output.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Frontend/Page.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Cache.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Config
/trunk/gtv_template2_ajax_php_mysql/Zend/Config/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Config/Ini.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Config/Xml.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Config.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Console
/trunk/gtv_template2_ajax_php_mysql/Zend/Console/Getopt
/trunk/gtv_template2_ajax_php_mysql/Zend/Console/Getopt/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Console/Getopt.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/Abstract.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/ActionStack.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/AjaxContext.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/AutoComplete

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/AutoComplete/Abstract.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/AutoCompleteDojo.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/AutoCompleteScriptaculous.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/ContextSwitch.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/FlashMessenger.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/Json.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/Redirector.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/Url.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/Helper/ViewRenderer.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action/HelperBroker.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Action.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Dispatcher
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Dispatcher/Abstract.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Dispatcher/Exception.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Dispatcher/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Dispatcher/Standard.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Front.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Plugin
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Plugin/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Plugin/ActionStack.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Plugin/Broker.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Plugin/ErrorHandler.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Request
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Request/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Request/Apache404.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Request/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Request/Http.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Request/Simple.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Response
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Response/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Response/Cli.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Response/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Response/Http.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Router
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Router/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Router/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Router/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Router/Rewrite.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Router/Route

/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Router/Route/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Router/Route/Module.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Router/Route/Regex.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Router/Route/Static.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Controller/Router/Route.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Currency
/trunk/gtv_template2_ajax_php_mysql/Zend/Currency/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Currency.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Date
/trunk/gtv_template2_ajax_php_mysql/Zend/Date/Cities.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Date/DateObject.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Date/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Date.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Db2
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Db2/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Db2.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Mysqli
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Mysqli/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Mysqli.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Oracle
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Oracle/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Oracle.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Pdo
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Pdo/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Pdo/Ibm
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Pdo/Ibm/Db2.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Pdo/Ibm/Ids.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Pdo/Ibm.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Pdo/Mssql.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Pdo/Mysql.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Pdo/Oci.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Pdo/Pgsql.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Adapter/Pdo/Sqlite.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Expr.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Profiler
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Profiler/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Profiler/Query.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Profiler.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Select
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Select/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Select.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Db2
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Db2/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Db2.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Mysqli
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Mysqli/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Mysqli.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Oracle
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Oracle/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Oracle.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Pdo
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Pdo/Ibm.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement/Pdo.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Statement.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Row
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Row/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Row/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Row.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Rowset
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Rowset/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Rowset/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Rowset.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Select
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Select/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table/Select.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db/Table.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Db.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Debug.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Atom.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Builder
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Builder/Entry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Builder/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Builder/Header
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Builder/Header/Itunes.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Builder/Header.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Builder/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Builder.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Element.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Entry
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Entry/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Entry/Atom.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Entry/Rss.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed/Rss.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Feed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Alnum.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Alpha.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/BaseName.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Digits.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Dir.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/HtmlEntities.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Inflector.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Input.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Int.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/PregReplace.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/RealPath.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/StringToLower.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/StringToUpper.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/StringTrim.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/StripTags.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/CamelCaseToDash.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/CamelCaseToSeparator.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/CamelCaseToUnderscore.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/DashToCamelCase.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/DashToSeparator.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/DashToUnderscore.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/Separator
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/Separator/Abstract.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/SeparatorToCamelCase.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/SeparatorToDash.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/SeparatorToSeparator.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/UnderscoreToCamelCase.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/UnderscoreToDash.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Filter/Word/UnderscoreToSeparator.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Filter.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/Callback.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/Description.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/DtDdWrapper.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/Errors.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/Fieldset.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/Form.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/FormElements.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/HtmlTag.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/Image.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/Label.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/ViewHelper.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Decorator/ViewScript.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/DisplayGroup.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Button.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Checkbox.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Hash.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Hidden.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Image.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Multi.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/MultiCheckbox.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Multiselect.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Password.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Radio.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Reset.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Select.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Submit.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Text.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Textarea.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element/Xhtml.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Element.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form/SubForm.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Form.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/AuthException.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/BadMethodCallException.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Base.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/BaseMediaSource.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/CaptchaRequiredException.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Entry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Author.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Category.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Content.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Contributor.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Control.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Draft.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Element.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Email.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Generator.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Icon.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Id.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Link.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Logo.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Name.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Person.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Published.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Rights.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Source.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Subtitle.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Summary.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Text.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Title.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Updated.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension/Uri.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Extension.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Feed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/FeedEntryParent.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/FeedSourceParent.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/HttpException.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/IOException.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/InvalidArgumentException.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/LoggingHttpClientAdapterSocket.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/MediaEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/MediaFileSource.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/MediaSource.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App/Util.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/App.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/AuthSub.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/EventEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/EventFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/EventQuery.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/Extension

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/Extension/AccessLevel.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/Extension/Color.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/Extension/Hidden.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/Extension/Link.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/Extension/QuickAdd.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/Extension/Selected.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/Extension/SendEventNotifications.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/Extension/Timezone.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/Extension/WebContent.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/ListEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar/ListFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Calendar.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/ClientLogin.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Docs
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Docs/DocumentListEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Docs/DocumentListFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Docs/Query.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Docs.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Entry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Entry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Extension
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Extension/Distance.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Extension/Exposure.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Extension/FStop.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Extension/Flash.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Extension/FocalLength.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Extension/ImageUniqueId.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Extension/Iso.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Extension/Make.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Extension/Model.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Extension/Tags.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Extension/Time.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif/Feed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Exif.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/AttendeeStatus.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/AttendeeType.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/Comments.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/EntryLink.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/EventStatus.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/ExtendedProperty.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/FeedLink.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/OpenSearchItemsPerPage.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/OpenSearchStartIndex.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/OpenSearchTotalResults.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/OriginalEvent.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/Rating.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/Recurrence.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/RecurrenceException.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/Reminder.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/Transparency.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/Visibility.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/When.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/Where.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension/Who.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Extension.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Feed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/EmailListEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/EmailListFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/EmailListQuery.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/EmailListRecipientEntry.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/EmailListRecipientFeed.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/EmailListRecipientQuery.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/Error.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/Extension

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/Extension/EmailList.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/Extension/Login.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/Extension/Name.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/Extension/Nickname.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/Extension/Quota.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/NicknameEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/NicknameFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/NicknameQuery.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/Query.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/ServiceException.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/UserEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/UserFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps/UserQuery.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gapps.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase/Entry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase/Extension

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase/Extension/BaseAttribute.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase/Feed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase/ItemEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase/ItemFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase/ItemQuery.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase/Query.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase/SnippetEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase/SnippetFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase/SnippetQuery.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Gbase.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Geo
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Geo/Entry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Geo/Extension

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Geo/Extension/GeoRssWhere.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Geo/Extension/GmlPoint.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Geo/Extension/GmlPos.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Geo/Feed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Geo.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Kind
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Kind/EventEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Entry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaCategory.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaContent.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaCopyright.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaCredit.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaDescription.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaGroup.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaHash.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaKeywords.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaPlayer.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaRating.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaRestriction.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaText.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaThumbnail.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Extension/MediaTitle.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media/Feed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Media.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/AlbumEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/AlbumFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/AlbumQuery.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/CommentEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Access.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/AlbumId.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/BytesUsed.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Checksum.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Client.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/CommentCount.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/CommentingEnabled.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Height.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Id.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Location.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/MaxPhotosPerAlbum.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Name.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Nickname.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/NumPhotos.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/NumPhotosRemaining.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/PhotoId.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Position.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/QuotaCurrent.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/QuotaLimit.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Rotation.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Size.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Thumbnail.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Timestamp.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/User.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Version.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Weight.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/Extension/Width.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/PhotoEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/PhotoFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/PhotoQuery.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/TagEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/UserEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/UserFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos/UserQuery.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Photos.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Query.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/CellEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/CellFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/CellQuery.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/DocumentQuery.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/Extension

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/Extension/Cell.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/Extension/ColCount.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/Extension/Custom.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/Extension/RowCount.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/ListEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/ListFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/ListQuery.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/SpreadsheetEntry.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/SpreadsheetFeed.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/WorksheetEntry.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets/WorksheetFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/Spreadsheets.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/CommentEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/CommentFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/ContactEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/ContactFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Age.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Books.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Company.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Control.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Description.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Duration.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Gender.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Hobbies.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Hometown.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Link.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Location.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/MediaContent.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/MediaGroup.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Movies.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Music.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/NoEmbed.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Occupation.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Position.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Private.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Racy.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Relationship.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/ReleaseDate.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/School.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/State.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Statistics.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Status.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Token.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/Extension/Username.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/MediaEntry.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/PlaylistListEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/PlaylistListFeed.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/PlaylistVideoEntry.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/PlaylistVideoFeed.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/SubscriptionEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/SubscriptionFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/UserProfileEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/VideoEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/VideoFeed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube/VideoQuery.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata/YouTube.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Gdata.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Http
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/Client
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/Client/Adapter
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/Client/Adapter/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/Client/Adapter/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/Client/Adapter/Proxy.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/Client/Adapter/Socket.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/Client/Adapter/Test.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/Client/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/Client.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/Cookie.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/CookieJar.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Http/Response.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Adapter
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Adapter/Default.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Adapter/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Adapter/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Pki
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Pki/Adapter

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Pki/Adapter/Abstract.php

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Pki/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Pki/Rsa

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Pki/Rsa/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Symmetric
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Symmetric/Adapter

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Symmetric/Adapter/Abstract.php

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Symmetric/Adapter/Aes128cbc.php

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Symmetric/Adapter/Aes256cbc.php

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Symmetric/Aes128cbc

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Symmetric/Aes128cbc/Interface.php

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Symmetric/Aes256cbc

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Symmetric/Aes256cbc/Interface.php

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher/Symmetric/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Cipher.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Claims.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Assertion

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Assertion/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Assertion/Saml.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Assertion.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Element
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Element/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Element.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/EncryptedData

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/EncryptedData/Abstract.php

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/EncryptedData/XmlEnc.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/EncryptedData.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/EncryptedKey.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/KeyInfo
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/KeyInfo/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/KeyInfo/Default.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/KeyInfo/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/KeyInfo/XmlDSig.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/KeyInfo.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Security

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Security/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Security/Transform

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Security/Transform/EnvelopedSignature.php

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Security/Transform/Exception.php

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Security/Transform/Interface.php

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Security/Transform/XmlExcC14N.php

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Security/Transform.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/Security.php

/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard/Xml/SecurityTokenReference.php
/trunk/gtv_template2_ajax_php_mysql/Zend/InfoCard.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Json
/trunk/gtv_template2_ajax_php_mysql/Zend/Json/Decoder.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Json/Encoder.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Json/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Json.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Layout
/trunk/gtv_template2_ajax_php_mysql/Zend/Layout/Controller
/trunk/gtv_template2_ajax_php_mysql/Zend/Layout/Controller/Action
/trunk/gtv_template2_ajax_php_mysql/Zend/Layout/Controller/Action/Helper

/trunk/gtv_template2_ajax_php_mysql/Zend/Layout/Controller/Action/Helper/Layout.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Layout/Controller/Plugin

/trunk/gtv_template2_ajax_php_mysql/Zend/Layout/Controller/Plugin/Layout.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Layout/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Layout.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Ldap
/trunk/gtv_template2_ajax_php_mysql/Zend/Ldap/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Ldap.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Loader
/trunk/gtv_template2_ajax_php_mysql/Zend/Loader/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Loader/PluginLoader
/trunk/gtv_template2_ajax_php_mysql/Zend/Loader/PluginLoader/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Loader/PluginLoader/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Loader/PluginLoader.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Loader.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/Translation.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/aa.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/aa_DJ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/aa_ER.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/aa_ER_SAAHO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/aa_ET.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/af.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/af_NA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/af_ZA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ak.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ak_GH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/am.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/am_ET.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_AE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_BH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_DZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_EG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_IQ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_JO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_KW.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_LB.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_LY.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_MA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_OM.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_QA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_SA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_SD.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_SY.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_TN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ar_YE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/as.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/as_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/az.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/az_AZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/az_Cyrl.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/az_Cyrl_AZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/az_Latn.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/az_Latn_AZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/be.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/be_BY.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/bg.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/bg_BG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/bn.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/bn_BD.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/bn_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/bo.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/bo_CN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/bo_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/bs.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/bs_BA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/byn.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/byn_ER.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ca.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ca_ES.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/cch.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/cch_NG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/cop.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/cop_Arab.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/cop_Arab_EG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/cop_Arab_US.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/cop_EG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/cop_US.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/cs.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/cs_CZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/cy.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/cy_GB.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/da.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/da_DK.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/de.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/de_AT.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/de_BE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/de_CH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/de_DE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/de_LI.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/de_LU.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/dv.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/dv_MV.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/dz.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/dz_BT.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ee.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ee_GH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ee_TG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/el.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/el_CY.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/el_GR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/el_POLYTON.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/el_POLYTONI.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_AS.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_AU.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_BE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_BW.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_BZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_CA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_GB.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_GU.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_HK.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_IE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_JM.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_MH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_MP.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_MT.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_NA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_NZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_PH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_PK.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_SG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_TT.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_UM.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_US.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_US_POSIX.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_VI.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_ZA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/en_ZW.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/eo.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_AR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_BO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_CL.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_CO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_CR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_DO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_EC.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_ES.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_GT.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_HN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_MX.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_NI.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_PA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_PE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_PR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_PY.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_SV.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_US.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_UY.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/es_VE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/et.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/et_EE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/eu.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/eu_ES.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fa.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fa_AF.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fa_IR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fi.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fi_FI.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fil.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fo.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fo_FO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fr.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fr_BE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fr_CA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fr_CH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fr_FR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fr_LU.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fr_MC.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fur.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/fur_IT.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ga.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ga_IE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/gaa.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/gaa_GH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/gez.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/gez_ER.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/gez_ET.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/gl.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/gl_ES.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/gu.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/gu_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/gv.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/gv_GB.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ha.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ha_Arab.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ha_Arab_NG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ha_GH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ha_Latn.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ha_Latn_GH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ha_Latn_NE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ha_Latn_NG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ha_NE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ha_NG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/haw.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/haw_US.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/he.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/he_IL.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/hi.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/hi_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/hr.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/hr_HR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/hu.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/hu_HU.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/hy.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/hy_AM.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/hy_AM_REVISED.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ia.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/id.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/id_ID.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ig.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ig_NG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ii.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ii_CN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/is.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/is_IS.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/it.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/it_CH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/it_IT.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/iu.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ja.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ja_JP.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ka.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ka_GE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kaj.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kaj_NG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kam.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kam_KE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kcg.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kcg_NG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kfo.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kfo_NG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kk.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kk_KZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kl.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kl_GL.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/km.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/km_KH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kn.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kn_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ko.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ko_KR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kok.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kok_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kpe.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kpe_GN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kpe_LR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ku.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ku_Arab.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ku_IQ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ku_IR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ku_Latn.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ku_Latn_IQ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ku_Latn_IR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ku_Latn_SY.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ku_Latn_TR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ku_SY.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ku_TR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kw.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/kw_GB.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ky.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ky_KG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ln.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ln_CD.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ln_CG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/lo.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/lo_LA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/lt.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/lt_LT.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/lv.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/lv_LV.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/mk.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/mk_MK.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ml.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ml_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/mn.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/mn_MN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/mr.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/mr_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ms.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ms_BN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ms_MY.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/mt.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/mt_MT.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/my.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/my_MM.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/nb.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/nb_NO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ne.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ne_NP.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/nl.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/nl_BE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/nl_NL.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/nn.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/nn_NO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/nr.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/nr_ZA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/nso.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/nso_ZA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ny.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ny_MW.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/om.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/om_ET.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/om_KE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/or.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/or_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/pa.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/pa_Arab.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/pa_Arab_PK.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/pa_Guru.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/pa_Guru_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/pa_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/pa_PK.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/pl.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/pl_PL.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ps.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ps_AF.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/pt.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/pt_BR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/pt_PT.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ro.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ro_RO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/root.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ru.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ru_RU.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ru_UA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/rw.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/rw_RW.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sa.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sa_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/se.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/se_FI.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/se_NO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sh.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sh_BA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sh_CS.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sh_YU.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sid.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sid_ET.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sk.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sk_SK.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sl.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sl_SI.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/so.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/so_DJ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/so_ET.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/so_KE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/so_SO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sq.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sq_AL.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_BA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_CS.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_Cyrl.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_Cyrl_BA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_Cyrl_CS.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_Cyrl_ME.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_Cyrl_RS.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_Cyrl_YU.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_Latn.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_Latn_BA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_Latn_CS.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_Latn_ME.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_Latn_RS.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_Latn_YU.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_ME.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_RS.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sr_YU.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ss.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ss_ZA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ssy.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/st.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/st_ZA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/supplementalData.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sv.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sv_FI.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sv_SE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sw.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sw_KE.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/sw_TZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/syr.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/syr_SY.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ta.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ta_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/te.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/te_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/tg.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/tg_TJ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/th.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/th_TH.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ti.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ti_ER.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ti_ET.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/tig.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/tig_ER.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/tn.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/tn_ZA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/to.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/to_TO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/tr.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/tr_TR.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ts.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ts_ZA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/tt.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/tt_RU.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ug.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/uk.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/uk_UA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/und.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/und_ZZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ur.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ur_IN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ur_PK.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/uz.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/uz_AF.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/uz_Arab.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/uz_Arab_AF.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/uz_Cyrl.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/uz_Cyrl_UZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/uz_Latn.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/uz_Latn_UZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/uz_UZ.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ve.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/ve_ZA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/vi.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/vi_VN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/wal.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/wal_ET.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/wo.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/wo_Arab.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/wo_Arab_SN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/wo_Latn.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/wo_Latn_SN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/wo_SN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/xh.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/xh_ZA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/yo.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/yo_NG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh_CN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh_HK.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh_Hans.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh_Hans_CN.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh_Hans_SG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh_Hant.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh_Hant_HK.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh_Hant_MO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh_Hant_TW.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh_MO.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh_SG.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zh_TW.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zu.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data/zu_ZA.xml
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Data.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Format.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Math
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Math/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Math/PhpMath.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale/Math.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Locale.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Filter
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Filter/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Filter/Message.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Filter/Priority.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Filter/Suppress.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Formatter
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Formatter/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Formatter/Simple.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Formatter/Xml.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Writer
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Writer/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Writer/Db.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Writer/Mock.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Writer/Null.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log/Writer/Stream.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Log.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Message.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Part.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Protocol
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Protocol/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Protocol/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Protocol/Imap.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Protocol/Pop3.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Protocol/Smtp
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Protocol/Smtp/Auth

/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Protocol/Smtp/Auth/Crammd5.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Protocol/Smtp/Auth/Login.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Protocol/Smtp/Auth/Plain.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Protocol/Smtp.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Folder
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Folder/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Folder/Maildir.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Folder/Mbox.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Folder.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Imap.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Maildir.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Mbox.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Pop3.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Writable

/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Writable/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage/Writable/Maildir.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Storage.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Transport
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Transport/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Transport/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Transport/Sendmail.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail/Transport/Smtp.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mail.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Acceleration.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Angle.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Area.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Binary.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Capacitance.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Cooking
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Cooking/Volume.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Cooking/Weight.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Current.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Density.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Energy.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Flow
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Flow/Mass.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Flow/Mole.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Flow/Volume.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Force.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Frequency.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Illumination.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Length.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Lightness.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Number.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Power.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Pressure.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Speed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Temperature.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Torque.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Viscosity
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Viscosity/Dynamic.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Viscosity/Kinematic.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Volume.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Measure/Weight.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Memory
/trunk/gtv_template2_ajax_php_mysql/Zend/Memory/AccessController.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Memory/Container
/trunk/gtv_template2_ajax_php_mysql/Zend/Memory/Container/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Memory/Container/Locked.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Memory/Container/Movable.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Memory/Container.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Memory/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Memory/Manager.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Memory/Value.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Memory.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mime
/trunk/gtv_template2_ajax_php_mysql/Zend/Mime/Decode.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mime/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mime/Message.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mime/Part.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Mime.php
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Consumer
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Consumer/Storage
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Consumer/Storage/File.php
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Consumer/Storage.php
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Consumer.php
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Extension
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Extension/Sreg.php
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Extension.php
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Provider
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Provider/Storage
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Provider/Storage/File.php
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Provider/Storage.php
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Provider/User
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Provider/User/Session.php
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Provider/User.php
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId/Provider.php
/trunk/gtv_template2_ajax_php_mysql/Zend/OpenId.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Cmap
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Cmap/ByteEncoding
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Cmap/ByteEncoding/Static.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Cmap/ByteEncoding.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Cmap/SegmentToDelta.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Cmap/TrimmedTable.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Cmap.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Color
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Color/Cmyk.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Color/GrayScale.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Color/Html.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Color/Rgb.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Color.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Const.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Array.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Boolean.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Dictionary.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Name.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Null.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Numeric.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Object
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Object/Stream.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Object.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Reference
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Reference/Context.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Reference/Table.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Reference.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/Stream.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/String
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/String/Binary.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element/String.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Element.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/ElementFactory
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/ElementFactory/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/ElementFactory/Proxy.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/ElementFactory.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParser
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParser/Font
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParser/Font/OpenType

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParser/Font/OpenType/TrueType.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParser/Font/OpenType.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParser/Font.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParser/Image
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParser/Image/Png.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParser/Image.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParser.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParserDataSource
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParserDataSource/File.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParserDataSource/String.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/FileParserDataSource.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Filter
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Filter/Ascii85.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Filter/AsciiHex.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Filter/Compression
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Filter/Compression/Flate.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Filter/Compression/Lzw.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Filter/Compression.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Filter/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Font.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Image.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Page.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Parser
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Parser/Stream.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Parser.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/PhpArray.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/CidFont

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/CidFont/TrueType.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/CidFont.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Extracted.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/FontDescriptor.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Parsed

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Parsed/TrueType.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Parsed.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/Courier.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/CourierBold.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/CourierBoldOblique.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/CourierOblique.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/Helvetica.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/HelveticaBold.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/HelveticaBoldOblique.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/HelveticaOblique.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/Symbol.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/TimesBold.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/TimesBoldItalic.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/TimesItalic.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/TimesRoman.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard/ZapfDingbats.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple/Standard.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Simple.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font/Type0.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Font.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Image
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Image/Jpeg.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Image/Png.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Image/Tiff.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/Image.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource/ImageFactory.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Resource.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/StringParser.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Style.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Trailer
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Trailer/Generator.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Trailer/Keeper.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/Trailer.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf/UpdateInfoContainer.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Pdf.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Registry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Request
/trunk/gtv_template2_ajax_php_mysql/Zend/Request/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Rest
/trunk/gtv_template2_ajax_php_mysql/Zend/Rest/Client
/trunk/gtv_template2_ajax_php_mysql/Zend/Rest/Client/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Rest/Client/Result.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Rest/Client.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Rest/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Rest/Server
/trunk/gtv_template2_ajax_php_mysql/Zend/Rest/Server/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Rest/Server.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common/Text

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common/Text/CaseInsensitive.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum/CaseInsensitive.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8/CaseInsensitive.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num/CaseInsensitive.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer/Common.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Analyzer.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/Token.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/TokenFilter

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/TokenFilter/LowerCase.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/TokenFilter/LowerCaseUtf8.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/TokenFilter/ShortWords.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/TokenFilter/StopWords.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Analysis/TokenFilter.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Document
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Document/Html.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Document.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/FSM.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/FSMAction.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Field.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index/DictionaryLoader.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index/FieldInfo.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index/SegmentInfo.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index/SegmentInfoPriorityQueue.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index/SegmentMerger.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index/SegmentWriter

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index/SegmentWriter/DocumentWriter.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index/SegmentWriter/StreamWriter.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index/SegmentWriter.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index/Term.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index/TermInfo.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Index/Writer.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/LockManager.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/PriorityQueue.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Proxy.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/BooleanExpressionRecognizer.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Query

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Query/Boolean.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Query/Empty.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Query/Fuzzy.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Query/Insignificant.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Query/MultiTerm.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Query/Phrase.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Query/Range.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Query/Term.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Query/Wildcard.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Query.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/QueryEntry

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/QueryEntry/Phrase.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/QueryEntry/Subquery.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/QueryEntry/Term.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/QueryEntry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/QueryHit.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/QueryLexer.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/QueryParser.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/QueryParserContext.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/QueryParserException.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/QueryToken.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Similarity

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Similarity/Default.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Similarity.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Weight

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Weight/Boolean.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Weight/Empty.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Weight/MultiTerm.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Weight/Phrase.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Weight/Term.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Search/Weight.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Storage
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Storage/Directory

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Storage/Directory/Filesystem.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Storage/Directory.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Storage/File

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Storage/File/Filesystem.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Storage/File/Memory.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene/Storage/File.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Search/Lucene.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Reflection
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Reflection/Class.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Reflection/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Reflection/Function

/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Reflection/Function/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Reflection/Function.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Reflection/Method.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Reflection/Node.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Reflection/Parameter.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Reflection/Prototype.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Reflection/ReturnValue.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Server/Reflection.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Akismet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon/Accessories.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon/CustomerReview.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon/EditorialReview.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon/Image.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon/Item.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon/ListmaniaList.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon/Offer.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon/OfferSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon/Query.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon/ResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon/SimilarProduct.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Amazon.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Audioscrobbler.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Delicious
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Delicious/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Delicious/Post.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Delicious/PostList.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Delicious/SimplePost.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Delicious.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Flickr
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Flickr/Image.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Flickr/Result.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Flickr/ResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Flickr.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Nirvanix
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Nirvanix/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Nirvanix/Namespace

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Nirvanix/Namespace/Base.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Nirvanix/Namespace/Imfs.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Nirvanix/Response.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Nirvanix.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy/Link.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy/LinkQuery.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy/LinkSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy/Note.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy/NoteSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy/Tag.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy/TagSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy/Watchlist.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy/WatchlistFilter.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy/WatchlistFilterSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy/WatchlistSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Simpy.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/SlideShare
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/SlideShare/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/SlideShare/SlideShow.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/SlideShare.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/StrikeIron
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/StrikeIron/Base.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/StrikeIron/Decorator.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/StrikeIron/Exception.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/StrikeIron/SalesUseTaxBasic.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/StrikeIron/USAddressVerification.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/StrikeIron/ZipCodeInfo.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/StrikeIron.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/Author.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/BlogInfoResult.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/CosmosResult.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/CosmosResultSet.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/DailyCountsResult.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/DailyCountsResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/Exception.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/GetInfoResult.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/KeyInfoResult.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/Result.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/ResultSet.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/SearchResult.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/SearchResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/TagResult.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/TagResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/TagsResult.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/TagsResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/Utils.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati/Weblog.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Technorati.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/Image.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/ImageResult.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/ImageResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/InlinkDataResult.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/InlinkDataResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/LocalResult.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/LocalResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/NewsResult.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/NewsResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/PageDataResult.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/PageDataResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/Result.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/ResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/VideoResult.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/VideoResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/WebResult.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo/WebResultSet.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Service/Yahoo.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Session
/trunk/gtv_template2_ajax_php_mysql/Zend/Session/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Session/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Session/Namespace.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Session/SaveHandler
/trunk/gtv_template2_ajax_php_mysql/Zend/Session/SaveHandler/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Session/Validator
/trunk/gtv_template2_ajax_php_mysql/Zend/Session/Validator/Abstract.php

/trunk/gtv_template2_ajax_php_mysql/Zend/Session/Validator/HttpUserAgent.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Session/Validator/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Session.php
/trunk/gtv_template2_ajax_php_mysql/Zend/TimeSync
/trunk/gtv_template2_ajax_php_mysql/Zend/TimeSync/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/TimeSync/Ntp.php
/trunk/gtv_template2_ajax_php_mysql/Zend/TimeSync/Protocol.php
/trunk/gtv_template2_ajax_php_mysql/Zend/TimeSync/Sntp.php
/trunk/gtv_template2_ajax_php_mysql/Zend/TimeSync.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate/Adapter
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate/Adapter/Array.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate/Adapter/Csv.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate/Adapter/Gettext.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate/Adapter/Qt.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate/Adapter/Tbx.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate/Adapter/Tmx.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate/Adapter/Xliff.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate/Adapter/XmlTm.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate/Adapter.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Translate.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Uri
/trunk/gtv_template2_ajax_php_mysql/Zend/Uri/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Uri/Http.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Uri.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Alnum.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Alpha.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Barcode
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Barcode/Ean13.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Barcode/UpcA.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Barcode.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Between.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Ccnum.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Date.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Digits.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/EmailAddress.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Float.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/GreaterThan.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Hex.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Hostname
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Hostname/At.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Hostname/Ch.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Hostname/De.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Hostname/Fi.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Hostname/Hu.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Hostname/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Hostname/Li.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Hostname/No.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Hostname/Se.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Hostname.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Identical.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/InArray.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Int.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Ip.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/LessThan.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/NotEmpty.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/Regex.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate/StringLength.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Validate.php
/trunk/gtv_template2_ajax_php_mysql/Zend/Version.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Abstract.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Action.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/DeclareVars.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Doctype.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Fieldset.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Form.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormButton.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormCheckbox.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormElement.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormErrors.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormFile.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormHidden.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormImage.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormLabel.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormMultiCheckbox.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormNote.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormPassword.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormRadio.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormReset.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormSelect.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormSubmit.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormText.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/FormTextarea.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/HeadLink.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/HeadMeta.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/HeadScript.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/HeadStyle.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/HeadTitle.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/HtmlList.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/InlineScript.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Json.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Layout.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Partial
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Partial/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Partial.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/PartialLoop.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Placeholder
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Placeholder/Container

/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Placeholder/Container/Abstract.php

/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Placeholder/Container/Exception.php

/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Placeholder/Container/Standalone.php

/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Placeholder/Container.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Placeholder/Registry

/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Placeholder/Registry/Exception.php

/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Placeholder/Registry.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Placeholder.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Translate.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Helper/Url.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View/Interface.php
/trunk/gtv_template2_ajax_php_mysql/Zend/View.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Client
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Client/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Client/FaultException.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Client/HttpException.php

/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Client/IntrospectException.php

/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Client/ServerIntrospection.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Client/ServerProxy.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Client.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Fault.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Request
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Request/Http.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Request/Stdin.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Request.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Response
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Response/Http.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Response.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Server
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Server/Cache.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Server/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Server/Fault.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Server.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value/Array.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value/Base64.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value/Boolean.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value/Collection.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value/DateTime.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value/Double.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value/Exception.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value/Integer.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value/Nil.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value/Scalar.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value/String.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value/Struct.php
/trunk/gtv_template2_ajax_php_mysql/Zend/XmlRpc/Value.php
/trunk/gtv_template2_ajax_php_mysql/css
/trunk/gtv_template2_ajax_php_mysql/css/controls.css
/trunk/gtv_template2_ajax_php_mysql/css/styles.css
/trunk/gtv_template2_ajax_php_mysql/db.php
/trunk/gtv_template2_ajax_php_mysql/gtv_template.sql
/trunk/gtv_template2_ajax_php_mysql/images
/trunk/gtv_template2_ajax_php_mysql/images/acme-logo-small.png
/trunk/gtv_template2_ajax_php_mysql/images/arrowL.png
/trunk/gtv_template2_ajax_php_mysql/images/arrowR.png
/trunk/gtv_template2_ajax_php_mysql/images/big-img.jpg
/trunk/gtv_template2_ajax_php_mysql/images/bt-play.png
/trunk/gtv_template2_ajax_php_mysql/images/control-FF-over.png
/trunk/gtv_template2_ajax_php_mysql/images/control-FF.png
/trunk/gtv_template2_ajax_php_mysql/images/control-REW-over.png
/trunk/gtv_template2_ajax_php_mysql/images/control-REW.png
/trunk/gtv_template2_ajax_php_mysql/images/control-first-over.png
/trunk/gtv_template2_ajax_php_mysql/images/control-first.png
/trunk/gtv_template2_ajax_php_mysql/images/control-last-over.png
/trunk/gtv_template2_ajax_php_mysql/images/control-last.png
/trunk/gtv_template2_ajax_php_mysql/images/control-pause-over.png
/trunk/gtv_template2_ajax_php_mysql/images/control-pause.png
/trunk/gtv_template2_ajax_php_mysql/images/control-play-over.png
/trunk/gtv_template2_ajax_php_mysql/images/control-play.png
/trunk/gtv_template2_ajax_php_mysql/images/img-thumbnail-11.jpg
/trunk/gtv_template2_ajax_php_mysql/images/spotlightgallery-logo.png
/trunk/gtv_template2_ajax_php_mysql/images/statusBar.png
/trunk/gtv_template2_ajax_php_mysql/images/thumbs
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb01.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb02.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb03.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb04.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb05.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb06.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb07.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb08.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb09.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb10.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb11.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb12.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb13.jpg
/trunk/gtv_template2_ajax_php_mysql/images/thumbs/thumb14.jpg
/trunk/gtv_template2_ajax_php_mysql/images/tooltipTime-big.png
/trunk/gtv_template2_ajax_php_mysql/images/tooltipTime-small.png
/trunk/gtv_template2_ajax_php_mysql/index.html
/trunk/gtv_template2_ajax_php_mysql/js
/trunk/gtv_template2_ajax_php_mysql/js/carousel.js
/trunk/gtv_template2_ajax_php_mysql/js/dataprovider.js
/trunk/gtv_template2_ajax_php_mysql/js/gtvcore.js
/trunk/gtv_template2_ajax_php_mysql/js/index.js
/trunk/gtv_template2_ajax_php_mysql/js/keycontrol.js
/trunk/gtv_template2_ajax_php_mysql/js/sidenav.js
/trunk/gtv_template2_ajax_php_mysql/js/tooltip.js
/trunk/gtv_template2_ajax_php_mysql/js/videocontrol.js
/trunk/gtv_template2_ajax_php_mysql/js/videoprogressbar.js
/trunk/gtv_template2_ajax_php_mysql/videosources.php

=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Assert/Interface.php Wed
Apr 25 15:32:46 2012
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Interface.php 8963 2008-03-21 17:48:13Z thomas $
+ */
+
+
+/**
+ * @see Zend_Acl
+ */
+require_once 'Zend/Acl.php';
+
+
+/**
+ * @see Zend_Acl_Role_Interface
+ */
+require_once 'Zend/Acl/Role/Interface.php';
+
+
+/**
+ * @see Zend_Acl_Resource_Interface
+ */
+require_once 'Zend/Acl/Resource/Interface.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+interface Zend_Acl_Assert_Interface
+{
+ /**
+ * Returns true if and only if the assertion conditions are met
+ *
+ * This method is passed the ACL, Role, Resource, and privilege to
which the authorization query applies. If the
+ * $role, $resource, or $privilege parameters are null, it means that
the query applies to all Roles, Resources, or
+ * privileges, respectively.
+ *
+ * @param Zend_Acl $acl
+ * @param Zend_Acl_Role_Interface $role
+ * @param Zend_Acl_Resource_Interface $resource
+ * @param string $privilege
+ * @return boolean
+ */
+ public function assert(Zend_Acl $acl, Zend_Acl_Role_Interface $role =
null, Zend_Acl_Resource_Interface $resource = null,
+ $privilege = null);
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Exception.php Wed Apr 25
15:32:46 2012
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Exception.php 8963 2008-03-21 17:48:13Z thomas $
+ */
+
+
+/**
+ * @see Zend_Exception
+ */
+require_once 'Zend/Exception.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Acl_Exception extends Zend_Exception
+{}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Resource/Interface.php Wed
Apr 25 15:32:46 2012
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Interface.php 8963 2008-03-21 17:48:13Z thomas $
+ */
+
+
+/**
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+interface Zend_Acl_Resource_Interface
+{
+ /**
+ * Returns the string identifier of the Resource
+ *
+ * @return string
+ */
+ public function getResourceId();
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Resource.php Wed Apr 25
15:32:46 2012
@@ -0,0 +1,65 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Resource.php 8963 2008-03-21 17:48:13Z thomas $
+ */
+
+
+/**
+ * @see Zend_Acl_Resource_Interface
+ */
+require_once 'Zend/Acl/Resource/Interface.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Acl_Resource implements Zend_Acl_Resource_Interface
+{
+ /**
+ * Unique id of Resource
+ *
+ * @var string
+ */
+ protected $_resourceId;
+
+ /**
+ * Sets the Resource identifier
+ *
+ * @param string $resourceId
+ * @return void
+ */
+ public function __construct($resourceId)
+ {
+ $this->_resourceId = (string) $resourceId;
+ }
+
+ /**
+ * Defined by Zend_Acl_Resource_Interface; returns the Resource
identifier
+ *
+ * @return string
+ */
+ public function getResourceId()
+ {
+ return $this->_resourceId;
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Role/Interface.php Wed Apr
25 15:32:46 2012
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Interface.php 8963 2008-03-21 17:48:13Z thomas $
+ */
+
+
+/**
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+interface Zend_Acl_Role_Interface
+{
+ /**
+ * Returns the string identifier of the Role
+ *
+ * @return string
+ */
+ public function getRoleId();
+}
=======================================
--- /dev/null
+++
/trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Role/Registry/Exception.php
Wed Apr 25 15:32:46 2012
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Exception.php 8963 2008-03-21 17:48:13Z thomas $
+ */
+
+
+/**
+ * @see Zend_Acl_Exception
+ */
+require_once 'Zend/Acl/Exception.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Acl_Role_Registry_Exception extends Zend_Acl_Exception
+{}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Role/Registry.php Wed Apr
25 15:32:46 2012
@@ -0,0 +1,266 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Registry.php 8963 2008-03-21 17:48:13Z thomas $
+ */
+
+
+/**
+ * @see Zend_Acl_Role_Interface
+ */
+require_once 'Zend/Acl/Role/Interface.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Acl_Role_Registry
+{
+ /**
+ * Internal Role registry data storage
+ *
+ * @var array
+ */
+ protected $_roles = array();
+
+ /**
+ * Adds a Role having an identifier unique to the registry
+ *
+ * The $parents parameter may be a reference to, or the string
identifier for,
+ * a Role existing in the registry, or $parents may be passed as an
array of
+ * these - mixing string identifiers and objects is ok - to indicate
the Roles
+ * from which the newly added Role will directly inherit.
+ *
+ * In order to resolve potential ambiguities with conflicting rules
inherited
+ * from different parents, the most recently added parent takes
precedence over
+ * parents that were previously added. In other words, the first
parent added
+ * will have the least priority, and the last parent added will have
the
+ * highest priority.
+ *
+ * @param Zend_Acl_Role_Interface $role
+ * @param Zend_Acl_Role_Interface|string|array $parents
+ * @throws Zend_Acl_Role_Registry_Exception
+ * @return Zend_Acl_Role_Registry Provides a fluent interface
+ */
+ public function add(Zend_Acl_Role_Interface $role, $parents = null)
+ {
+ $roleId = $role->getRoleId();
+
+ if ($this->has($roleId)) {
+ /**
+ * @see Zend_Acl_Role_Registry_Exception
+ */
+ require_once 'Zend/Acl/Role/Registry/Exception.php';
+ throw new Zend_Acl_Role_Registry_Exception("Role id '$roleId'
already exists in the registry");
+ }
+
+ $roleParents = array();
+
+ if (null !== $parents) {
+ if (!is_array($parents)) {
+ $parents = array($parents);
+ }
+ /**
+ * @see Zend_Acl_Role_Registry_Exception
+ */
+ require_once 'Zend/Acl/Role/Registry/Exception.php';
+ foreach ($parents as $parent) {
+ try {
+ if ($parent instanceof Zend_Acl_Role_Interface) {
+ $roleParentId = $parent->getRoleId();
+ } else {
+ $roleParentId = $parent;
+ }
+ $roleParent = $this->get($roleParentId);
+ } catch (Zend_Acl_Role_Registry_Exception $e) {
+ throw new Zend_Acl_Role_Registry_Exception("Parent
Role id '$roleParentId' does not exist");
+ }
+ $roleParents[$roleParentId] = $roleParent;
+ $this->_roles[$roleParentId]['children'][$roleId] = $role;
+ }
+ }
+
+ $this->_roles[$roleId] = array(
+ 'instance' => $role,
+ 'parents' => $roleParents,
+ 'children' => array()
+ );
+
+ return $this;
+ }
+
+ /**
+ * Returns the identified Role
+ *
+ * The $role parameter can either be a Role or a Role identifier.
+ *
+ * @param Zend_Acl_Role_Interface|string $role
+ * @throws Zend_Acl_Role_Registry_Exception
+ * @return Zend_Acl_Role_Interface
+ */
+ public function get($role)
+ {
+ if ($role instanceof Zend_Acl_Role_Interface) {
+ $roleId = $role->getRoleId();
+ } else {
+ $roleId = (string) $role;
+ }
+
+ if (!$this->has($role)) {
+ /**
+ * @see Zend_Acl_Role_Registry_Exception
+ */
+ require_once 'Zend/Acl/Role/Registry/Exception.php';
+ throw new Zend_Acl_Role_Registry_Exception("Role '$roleId' not
found");
+ }
+
+ return $this->_roles[$roleId]['instance'];
+ }
+
+ /**
+ * Returns true if and only if the Role exists in the registry
+ *
+ * The $role parameter can either be a Role or a Role identifier.
+ *
+ * @param Zend_Acl_Role_Interface|string $role
+ * @return boolean
+ */
+ public function has($role)
+ {
+ if ($role instanceof Zend_Acl_Role_Interface) {
+ $roleId = $role->getRoleId();
+ } else {
+ $roleId = (string) $role;
+ }
+
+ return isset($this->_roles[$roleId]);
+ }
+
+ /**
+ * Returns an array of an existing Role's parents
+ *
+ * The array keys are the identifiers of the parent Roles, and the
values are
+ * the parent Role instances. The parent Roles are ordered in this
array by
+ * ascending priority. The highest priority parent Role, last in the
array,
+ * corresponds with the parent Role most recently added.
+ *
+ * If the Role does not have any parents, then an empty array is
returned.
+ *
+ * @param Zend_Acl_Role_Interface|string $role
+ * @uses Zend_Acl_Role_Registry::get()
+ * @return array
+ */
+ public function getParents($role)
+ {
+ $roleId = $this->get($role)->getRoleId();
+
+ return $this->_roles[$roleId]['parents'];
+ }
+
+ /**
+ * Returns true if and only if $role inherits from $inherit
+ *
+ * Both parameters may be either a Role or a Role identifier. If
+ * $onlyParents is true, then $role must inherit directly from
+ * $inherit in order to return true. By default, this method looks
+ * through the entire inheritance DAG to determine whether $role
+ * inherits from $inherit through its ancestor Roles.
+ *
+ * @param Zend_Acl_Role_Interface|string $role
+ * @param Zend_Acl_Role_Interface|string $inherit
+ * @param boolean $onlyParents
+ * @throws Zend_Acl_Role_Registry_Exception
+ * @return boolean
+ */
+ public function inherits($role, $inherit, $onlyParents = false)
+ {
+ /**
+ * @see Zend_Acl_Role_Registry_Exception
+ */
+ require_once 'Zend/Acl/Role/Registry/Exception.php';
+ try {
+ $roleId = $this->get($role)->getRoleId();
+ $inheritId = $this->get($inherit)->getRoleId();
+ } catch (Zend_Acl_Role_Registry_Exception $e) {
+ throw $e;
+ }
+
+ $inherits = isset($this->_roles[$roleId]['parents'][$inheritId]);
+
+ if ($inherits || $onlyParents) {
+ return $inherits;
+ }
+
+ foreach ($this->_roles[$roleId]['parents'] as $parentId =>
$parent) {
+ if ($this->inherits($parentId, $inheritId)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Removes the Role from the registry
+ *
+ * The $role parameter can either be a Role or a Role identifier.
+ *
+ * @param Zend_Acl_Role_Interface|string $role
+ * @throws Zend_Acl_Role_Registry_Exception
+ * @return Zend_Acl_Role_Registry Provides a fluent interface
+ */
+ public function remove($role)
+ {
+ /**
+ * @see Zend_Acl_Role_Registry_Exception
+ */
+ require_once 'Zend/Acl/Role/Registry/Exception.php';
+ try {
+ $roleId = $this->get($role)->getRoleId();
+ } catch (Zend_Acl_Role_Registry_Exception $e) {
+ throw $e;
+ }
+
+ foreach ($this->_roles[$roleId]['children'] as $childId => $child)
{
+ unset($this->_roles[$childId]['parents'][$roleId]);
+ }
+ foreach ($this->_roles[$roleId]['parents'] as $parentId =>
$parent) {
+ unset($this->_roles[$parentId]['children'][$roleId]);
+ }
+
+ unset($this->_roles[$roleId]);
+
+ return $this;
+ }
+
+ /**
+ * Removes all Roles from the registry
+ *
+ * @return Zend_Acl_Role_Registry Provides a fluent interface
+ */
+ public function removeAll()
+ {
+ $this->_roles = array();
+
+ return $this;
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Acl/Role.php Wed Apr 25
15:32:46 2012
@@ -0,0 +1,65 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Role.php 8963 2008-03-21 17:48:13Z thomas $
+ */
+
+
+/**
+ * @see Zend_Acl_Role_Interface
+ */
+require_once 'Zend/Acl/Role/Interface.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Acl_Role implements Zend_Acl_Role_Interface
+{
+ /**
+ * Unique id of Role
+ *
+ * @var string
+ */
+ protected $_roleId;
+
+ /**
+ * Sets the Role identifier
+ *
+ * @param string $id
+ * @return void
+ */
+ public function __construct($roleId)
+ {
+ $this->_roleId = (string) $roleId;
+ }
+
+ /**
+ * Defined by Zend_Acl_Role_Interface; returns the Role identifier
+ *
+ * @return string
+ */
+ public function getRoleId()
+ {
+ return $this->_roleId;
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Acl.php Wed Apr 25 15:32:46
2012
@@ -0,0 +1,1036 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Acl.php 9419 2008-05-08 16:30:53Z darby $
+ */
+
+
+/**
+ * @see Zend_Acl_Resource_Interface
+ */
+require_once 'Zend/Acl/Resource/Interface.php';
+
+
+/**
+ * @see Zend_Acl_Role_Registry
+ */
+require_once 'Zend/Acl/Role/Registry.php';
+
+
+/**
+ * @see Zend_Acl_Assert_Interface
+ */
+require_once 'Zend/Acl/Assert/Interface.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Acl
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Acl
+{
+ /**
+ * Rule type: allow
+ */
+ const TYPE_ALLOW = 'TYPE_ALLOW';
+
+ /**
+ * Rule type: deny
+ */
+ const TYPE_DENY = 'TYPE_DENY';
+
+ /**
+ * Rule operation: add
+ */
+ const OP_ADD = 'OP_ADD';
+
+ /**
+ * Rule operation: remove
+ */
+ const OP_REMOVE = 'OP_REMOVE';
+
+ /**
+ * Role registry
+ *
+ * @var Zend_Acl_Role_Registry
+ */
+ protected $_roleRegistry = null;
+
+ /**
+ * Resource tree
+ *
+ * @var array
+ */
+ protected $_resources = array();
+
+ /**
+ * ACL rules; whitelist (deny everything to all) by default
+ *
+ * @var array
+ */
+ protected $_rules = array(
+ 'allResources' => array(
+ 'allRoles' => array(
+ 'allPrivileges' => array(
+ 'type' => self::TYPE_DENY,
+ 'assert' => null
+ ),
+ 'byPrivilegeId' => array()
+ ),
+ 'byRoleId' => array()
+ ),
+ 'byResourceId' => array()
+ );
+
+ /**
+ * Adds a Role having an identifier unique to the registry
+ *
+ * The $parents parameter may be a reference to, or the string
identifier for,
+ * a Role existing in the registry, or $parents may be passed as an
array of
+ * these - mixing string identifiers and objects is ok - to indicate
the Roles
+ * from which the newly added Role will directly inherit.
+ *
+ * In order to resolve potential ambiguities with conflicting rules
inherited
+ * from different parents, the most recently added parent takes
precedence over
+ * parents that were previously added. In other words, the first
parent added
+ * will have the least priority, and the last parent added will have
the
+ * highest priority.
+ *
+ * @param Zend_Acl_Role_Interface $role
+ * @param Zend_Acl_Role_Interface|string|array $parents
+ * @uses Zend_Acl_Role_Registry::add()
+ * @return Zend_Acl Provides a fluent interface
+ */
+ public function addRole(Zend_Acl_Role_Interface $role, $parents = null)
+ {
+ $this->_getRoleRegistry()->add($role, $parents);
+
+ return $this;
+ }
+
+ /**
+ * Returns the identified Role
+ *
+ * The $role parameter can either be a Role or Role identifier.
+ *
+ * @param Zend_Acl_Role_Interface|string $role
+ * @uses Zend_Acl_Role_Registry::get()
+ * @return Zend_Acl_Role_Interface
+ */
+ public function getRole($role)
+ {
+ return $this->_getRoleRegistry()->get($role);
+ }
+
+ /**
+ * Returns true if and only if the Role exists in the registry
+ *
+ * The $role parameter can either be a Role or a Role identifier.
+ *
+ * @param Zend_Acl_Role_Interface|string $role
+ * @uses Zend_Acl_Role_Registry::has()
+ * @return boolean
+ */
+ public function hasRole($role)
+ {
+ return $this->_getRoleRegistry()->has($role);
+ }
+
+ /**
+ * Returns true if and only if $role inherits from $inherit
+ *
+ * Both parameters may be either a Role or a Role identifier. If
+ * $onlyParents is true, then $role must inherit directly from
+ * $inherit in order to return true. By default, this method looks
+ * through the entire inheritance DAG to determine whether $role
+ * inherits from $inherit through its ancestor Roles.
+ *
+ * @param Zend_Acl_Role_Interface|string $role
+ * @param Zend_Acl_Role_Interface|string $inherit
+ * @param boolean $onlyParents
+ * @uses Zend_Acl_Role_Registry::inherits()
+ * @return boolean
+ */
+ public function inheritsRole($role, $inherit, $onlyParents = false)
+ {
+ return $this->_getRoleRegistry()->inherits($role, $inherit,
$onlyParents);
+ }
+
+ /**
+ * Removes the Role from the registry
+ *
+ * The $role parameter can either be a Role or a Role identifier.
+ *
+ * @param Zend_Acl_Role_Interface|string $role
+ * @uses Zend_Acl_Role_Registry::remove()
+ * @return Zend_Acl Provides a fluent interface
+ */
+ public function removeRole($role)
+ {
+ $this->_getRoleRegistry()->remove($role);
+
+ if ($role instanceof Zend_Acl_Role_Interface) {
+ $roleId = $role->getRoleId();
+ } else {
+ $roleId = $role;
+ }
+
+ foreach ($this->_rules['allResources']['byRoleId'] as
$roleIdCurrent => $rules) {
+ if ($roleId === $roleIdCurrent) {
+
unset($this->_rules['allResources']['byRoleId'][$roleIdCurrent]);
+ }
+ }
+ foreach ($this->_rules['byResourceId'] as $resourceIdCurrent =>
$visitor) {
+ foreach ($visitor['byRoleId'] as $roleIdCurrent => $rules) {
+ if ($roleId === $roleIdCurrent) {
+
unset($this->_rules['byResourceId'][$resourceIdCurrent]['byRoleId'][$roleIdCurrent]);
+ }
+ }
+ }
+
+ return $this;
+ }
+
+ /**
+ * Removes all Roles from the registry
+ *
+ * @uses Zend_Acl_Role_Registry::removeAll()
+ * @return Zend_Acl Provides a fluent interface
+ */
+ public function removeRoleAll()
+ {
+ $this->_getRoleRegistry()->removeAll();
+
+ foreach ($this->_rules['allResources']['byRoleId'] as
$roleIdCurrent => $rules) {
+
unset($this->_rules['allResources']['byRoleId'][$roleIdCurrent]);
+ }
+ foreach ($this->_rules['byResourceId'] as $resourceIdCurrent =>
$visitor) {
+ foreach ($visitor['byRoleId'] as $roleIdCurrent => $rules) {
+
unset($this->_rules['byResourceId'][$resourceIdCurrent]['byRoleId'][$roleIdCurrent]);
+ }
+ }
+
+ return $this;
+ }
+
+ /**
+ * Adds a Resource having an identifier unique to the ACL
+ *
+ * The $parent parameter may be a reference to, or the string
identifier for,
+ * the existing Resource from which the newly added Resource will
inherit.
+ *
+ * @param Zend_Acl_Resource_Interface $resource
+ * @param Zend_Acl_Resource_Interface|string $parent
+ * @throws Zend_Acl_Exception
+ * @return Zend_Acl Provides a fluent interface
+ */
+ public function add(Zend_Acl_Resource_Interface $resource, $parent =
null)
+ {
+ $resourceId = $resource->getResourceId();
+
+ if ($this->has($resourceId)) {
+ require_once 'Zend/Acl/Exception.php';
+ throw new Zend_Acl_Exception("Resource id '$resourceId'
already exists in the ACL");
+ }
+
+ $resourceParent = null;
+
+ if (null !== $parent) {
+ try {
+ if ($parent instanceof Zend_Acl_Resource_Interface) {
+ $resourceParentId = $parent->getResourceId();
+ } else {
+ $resourceParentId = $parent;
+ }
+ $resourceParent = $this->get($resourceParentId);
+ } catch (Zend_Acl_Exception $e) {
+ throw new Zend_Acl_Exception("Parent Resource
id '$resourceParentId' does not exist");
+ }
+ $this->_resources[$resourceParentId]['children'][$resourceId]
= $resource;
+ }
+
+ $this->_resources[$resourceId] = array(
+ 'instance' => $resource,
+ 'parent' => $resourceParent,
+ 'children' => array()
+ );
+
+ return $this;
+ }
+
+ /**
+ * Returns the identified Resource
+ *
+ * The $resource parameter can either be a Resource or a Resource
identifier.
+ *
+ * @param Zend_Acl_Resource_Interface|string $resource
+ * @throws Zend_Acl_Exception
+ * @return Zend_Acl_Resource_Interface
+ */
+ public function get($resource)
+ {
+ if ($resource instanceof Zend_Acl_Resource_Interface) {
+ $resourceId = $resource->getResourceId();
+ } else {
+ $resourceId = (string) $resource;
+ }
+
+ if (!$this->has($resource)) {
+ require_once 'Zend/Acl/Exception.php';
+ throw new Zend_Acl_Exception("Resource '$resourceId' not
found");
+ }
+
+ return $this->_resources[$resourceId]['instance'];
+ }
+
+ /**
+ * Returns true if and only if the Resource exists in the ACL
+ *
+ * The $resource parameter can either be a Resource or a Resource
identifier.
+ *
+ * @param Zend_Acl_Resource_Interface|string $resource
+ * @return boolean
+ */
+ public function has($resource)
+ {
+ if ($resource instanceof Zend_Acl_Resource_Interface) {
+ $resourceId = $resource->getResourceId();
+ } else {
+ $resourceId = (string) $resource;
+ }
+
+ return isset($this->_resources[$resourceId]);
+ }
+
+ /**
+ * Returns true if and only if $resource inherits from $inherit
+ *
+ * Both parameters may be either a Resource or a Resource identifier.
If
+ * $onlyParent is true, then $resource must inherit directly from
+ * $inherit in order to return true. By default, this method looks
+ * through the entire inheritance tree to determine whether $resource
+ * inherits from $inherit through its ancestor Resources.
+ *
+ * @param Zend_Acl_Resource_Interface|string $resource
+ * @param Zend_Acl_Resource_Interface|string $inherit
+ * @param boolean $onlyParent
+ * @throws Zend_Acl_Resource_Registry_Exception
+ * @return boolean
+ */
+ public function inherits($resource, $inherit, $onlyParent = false)
+ {
+ try {
+ $resourceId = $this->get($resource)->getResourceId();
+ $inheritId = $this->get($inherit)->getResourceId();
+ } catch (Zend_Acl_Exception $e) {
+ throw $e;
+ }
+
+ if (null !== $this->_resources[$resourceId]['parent']) {
+ $parentId =
$this->_resources[$resourceId]['parent']->getResourceId();
+ if ($inheritId === $parentId) {
+ return true;
+ } else if ($onlyParent) {
+ return false;
+ }
+ } else {
+ return false;
+ }
+
+ while (null !== $this->_resources[$parentId]['parent']) {
+ $parentId =
$this->_resources[$parentId]['parent']->getResourceId();
+ if ($inheritId === $parentId) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Removes a Resource and all of its children
+ *
+ * The $resource parameter can either be a Resource or a Resource
identifier.
+ *
+ * @param Zend_Acl_Resource_Interface|string $resource
+ * @throws Zend_Acl_Exception
+ * @return Zend_Acl Provides a fluent interface
+ */
+ public function remove($resource)
+ {
+ try {
+ $resourceId = $this->get($resource)->getResourceId();
+ } catch (Zend_Acl_Exception $e) {
+ throw $e;
+ }
+
+ $resourcesRemoved = array($resourceId);
+ if (null !== ($resourceParent =
$this->_resources[$resourceId]['parent'])) {
+
unset($this->_resources[$resourceParent->getResourceId()]['children'][$resourceId]);
+ }
+ foreach ($this->_resources[$resourceId]['children'] as $childId =>
$child) {
+ $this->remove($childId);
+ $resourcesRemoved[] = $childId;
+ }
+
+ foreach ($resourcesRemoved as $resourceIdRemoved) {
+ foreach ($this->_rules['byResourceId'] as $resourceIdCurrent
=> $rules) {
+ if ($resourceIdRemoved === $resourceIdCurrent) {
+
unset($this->_rules['byResourceId'][$resourceIdCurrent]);
+ }
+ }
+ }
+
+ unset($this->_resources[$resourceId]);
+
+ return $this;
+ }
+
+ /**
+ * Removes all Resources
+ *
+ * @return Zend_Acl Provides a fluent interface
+ */
+ public function removeAll()
+ {
+ foreach ($this->_resources as $resourceId => $resource) {
+ foreach ($this->_rules['byResourceId'] as $resourceIdCurrent
=> $rules) {
+ if ($resourceId === $resourceIdCurrent) {
+
unset($this->_rules['byResourceId'][$resourceIdCurrent]);
+ }
+ }
+ }
+
+ $this->_resources = array();
+
+ return $this;
+ }
+
+ /**
+ * Adds an "allow" rule to the ACL
+ *
+ * @param Zend_Acl_Role_Interface|string|array $roles
+ * @param Zend_Acl_Resource_Interface|string|array $resources
+ * @param string|array $privileges
+ * @param Zend_Acl_Assert_Interface $assert
+ * @uses Zend_Acl::setRule()
+ * @return Zend_Acl Provides a fluent interface
+ */
+ public function allow($roles = null, $resources = null, $privileges =
null, Zend_Acl_Assert_Interface $assert = null)
+ {
+ return $this->setRule(self::OP_ADD, self::TYPE_ALLOW, $roles,
$resources, $privileges, $assert);
+ }
+
+ /**
+ * Adds a "deny" rule to the ACL
+ *
+ * @param Zend_Acl_Role_Interface|string|array $roles
+ * @param Zend_Acl_Resource_Interface|string|array $resources
+ * @param string|array $privileges
+ * @param Zend_Acl_Assert_Interface $assert
+ * @uses Zend_Acl::setRule()
+ * @return Zend_Acl Provides a fluent interface
+ */
+ public function deny($roles = null, $resources = null, $privileges =
null, Zend_Acl_Assert_Interface $assert = null)
+ {
+ return $this->setRule(self::OP_ADD, self::TYPE_DENY, $roles,
$resources, $privileges, $assert);
+ }
+
+ /**
+ * Removes "allow" permissions from the ACL
+ *
+ * @param Zend_Acl_Role_Interface|string|array $roles
+ * @param Zend_Acl_Resource_Interface|string|array $resources
+ * @param string|array $privileges
+ * @uses Zend_Acl::setRule()
+ * @return Zend_Acl Provides a fluent interface
+ */
+ public function removeAllow($roles = null, $resources = null,
$privileges = null)
+ {
+ return $this->setRule(self::OP_REMOVE, self::TYPE_ALLOW, $roles,
$resources, $privileges);
+ }
+
+ /**
+ * Removes "deny" restrictions from the ACL
+ *
+ * @param Zend_Acl_Role_Interface|string|array $roles
+ * @param Zend_Acl_Resource_Interface|string|array $resources
+ * @param string|array $privileges
+ * @uses Zend_Acl::setRule()
+ * @return Zend_Acl Provides a fluent interface
+ */
+ public function removeDeny($roles = null, $resources = null,
$privileges = null)
+ {
+ return $this->setRule(self::OP_REMOVE, self::TYPE_DENY, $roles,
$resources, $privileges);
+ }
+
+ /**
+ * Performs operations on ACL rules
+ *
+ * The $operation parameter may be either OP_ADD or OP_REMOVE,
depending on whether the
+ * user wants to add or remove a rule, respectively:
+ *
+ * OP_ADD specifics:
+ *
+ * A rule is added that would allow one or more Roles access to
[certain $privileges
+ * upon] the specified Resource(s).
+ *
+ * OP_REMOVE specifics:
+ *
+ * The rule is removed only in the context of the given Roles,
Resources, and privileges.
+ * Existing rules to which the remove operation does not apply
would remain in the
+ * ACL.
+ *
+ * The $type parameter may be either TYPE_ALLOW or TYPE_DENY,
depending on whether the
+ * rule is intended to allow or deny permission, respectively.
+ *
+ * The $roles and $resources parameters may be references to, or the
string identifiers for,
+ * existing Resources/Roles, or they may be passed as arrays of these
- mixing string identifiers
+ * and objects is ok - to indicate the Resources and Roles to which
the rule applies. If either
+ * $roles or $resources is null, then the rule applies to all Roles or
all Resources, respectively.
+ * Both may be null in order to work with the default rule of the ACL.
+ *
+ * The $privileges parameter may be used to further specify that the
rule applies only
+ * to certain privileges upon the Resource(s) in question. This may be
specified to be a single
+ * privilege with a string, and multiple privileges may be specified
as an array of strings.
+ *
+ * If $assert is provided, then its assert() method must return true
in order for
+ * the rule to apply. If $assert is provided with $roles, $resources,
and $privileges all
+ * equal to null, then a rule having a type of:
+ *
+ * TYPE_ALLOW will imply a type of TYPE_DENY, and
+ *
+ * TYPE_DENY will imply a type of TYPE_ALLOW
+ *
+ * when the rule's assertion fails. This is because the ACL needs to
provide expected
+ * behavior when an assertion upon the default ACL rule fails.
+ *
+ * @param string $operation
+ * @param string $type
+ * @param Zend_Acl_Role_Interface|string|array $roles
+ * @param Zend_Acl_Resource_Interface|string|array $resources
+ * @param string|array $privileges
+ * @param Zend_Acl_Assert_Interface $assert
+ * @throws Zend_Acl_Exception
+ * @uses Zend_Acl_Role_Registry::get()
+ * @uses Zend_Acl::get()
+ * @return Zend_Acl Provides a fluent interface
+ */
+ public function setRule($operation, $type, $roles = null, $resources =
null, $privileges = null,
+ Zend_Acl_Assert_Interface $assert = null)
+ {
+ // ensure that the rule type is valid; normalize input to uppercase
+ $type = strtoupper($type);
+ if (self::TYPE_ALLOW !== $type && self::TYPE_DENY !== $type) {
+ require_once 'Zend/Acl/Exception.php';
+ throw new Zend_Acl_Exception("Unsupported rule type; must be
either '" . self::TYPE_ALLOW . "' or '"
+ . self::TYPE_DENY . "'");
+ }
+
+ // ensure that all specified Roles exist; normalize input to array
of Role objects or null
+ if (!is_array($roles)) {
+ $roles = array($roles);
+ } else if (0 === count($roles)) {
+ $roles = array(null);
+ }
+ $rolesTemp = $roles;
+ $roles = array();
+ foreach ($rolesTemp as $role) {
+ if (null !== $role) {
+ $roles[] = $this->_getRoleRegistry()->get($role);
+ } else {
+ $roles[] = null;
+ }
+ }
+ unset($rolesTemp);
+
+ // ensure that all specified Resources exist; normalize input to
array of Resource objects or null
+ if (!is_array($resources)) {
+ $resources = array($resources);
+ } else if (0 === count($resources)) {
+ $resources = array(null);
+ }
+ $resourcesTemp = $resources;
+ $resources = array();
+ foreach ($resourcesTemp as $resource) {
+ if (null !== $resource) {
+ $resources[] = $this->get($resource);
+ } else {
+ $resources[] = null;
+ }
+ }
+ unset($resourcesTemp);
+
+ // normalize privileges to array
+ if (null === $privileges) {
+ $privileges = array();
+ } else if (!is_array($privileges)) {
+ $privileges = array($privileges);
+ }
+
+ switch ($operation) {
+
+ // add to the rules
+ case self::OP_ADD:
+ foreach ($resources as $resource) {
+ foreach ($roles as $role) {
+ $rules =& $this->_getRules($resource, $role, true);
+ if (0 === count($privileges)) {
+ $rules['allPrivileges']['type'] = $type;
+ $rules['allPrivileges']['assert'] = $assert;
+ if (!isset($rules['byPrivilegeId'])) {
+ $rules['byPrivilegeId'] = array();
+ }
+ } else {
+ foreach ($privileges as $privilege) {
+
$rules['byPrivilegeId'][$privilege]['type'] = $type;
+
$rules['byPrivilegeId'][$privilege]['assert'] = $assert;
+ }
+ }
+ }
+ }
+ break;
+
+ // remove from the rules
+ case self::OP_REMOVE:
+ foreach ($resources as $resource) {
+ foreach ($roles as $role) {
+ $rules =& $this->_getRules($resource, $role);
+ if (null === $rules) {
+ continue;
+ }
+ if (0 === count($privileges)) {
+ if (null === $resource && null === $role) {
+ if ($type ===
$rules['allPrivileges']['type']) {
+ $rules = array(
+ 'allPrivileges' => array(
+ 'type' => self::TYPE_DENY,
+ 'assert' => null
+ ),
+ 'byPrivilegeId' => array()
+ );
+ }
+ continue;
+ }
+ if ($type === $rules['allPrivileges']['type'])
{
+ unset($rules['allPrivileges']);
+ }
+ } else {
+ foreach ($privileges as $privilege) {
+ if
(isset($rules['byPrivilegeId'][$privilege]) &&
+ $type ===
$rules['byPrivilegeId'][$privilege]['type']) {
+
unset($rules['byPrivilegeId'][$privilege]);
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ default:
+ require_once 'Zend/Acl/Exception.php';
+ throw new Zend_Acl_Exception("Unsupported operation; must
be either '" . self::OP_ADD . "' or '"
+ . self::OP_REMOVE . "'");
+ }
+
+ return $this;
+ }
+
+ /**
+ * Returns true if and only if the Role has access to the Resource
+ *
+ * The $role and $resource parameters may be references to, or the
string identifiers for,
+ * an existing Resource and Role combination.
+ *
+ * If either $role or $resource is null, then the query applies to all
Roles or all Resources,
+ * respectively. Both may be null to query whether the ACL has
a "blacklist" rule
+ * (allow everything to all). By default, Zend_Acl creates
a "whitelist" rule (deny
+ * everything to all), and this method would return false unless this
default has
+ * been overridden (i.e., by executing $acl->allow()).
+ *
+ * If a $privilege is not provided, then this method returns false if
and only if the
+ * Role is denied access to at least one privilege upon the Resource.
In other words, this
+ * method returns true if and only if the Role is allowed all
privileges on the Resource.
+ *
+ * This method checks Role inheritance using a depth-first traversal
of the Role registry.
+ * The highest priority parent (i.e., the parent most recently added)
is checked first,
+ * and its respective parents are checked similarly before the
lower-priority parents of
+ * the Role are checked.
+ *
+ * @param Zend_Acl_Role_Interface|string $role
+ * @param Zend_Acl_Resource_Interface|string $resource
+ * @param string $privilege
+ * @uses Zend_Acl::get()
+ * @uses Zend_Acl_Role_Registry::get()
+ * @return boolean
+ */
+ public function isAllowed($role = null, $resource = null, $privilege =
null)
+ {
+ if (null !== $role) {
+ $role = $this->_getRoleRegistry()->get($role);
+ }
+
+ if (null !== $resource) {
+ $resource = $this->get($resource);
+ }
+
+ if (null === $privilege) {
+ // query on all privileges
+ do {
+ // depth-first search on $role if it is not 'allRoles'
pseudo-parent
+ if (null !== $role && null !== ($result =
$this->_roleDFSAllPrivileges($role, $resource, $privilege))) {
+ return $result;
+ }
+
+ // look for rule on 'allRoles' psuedo-parent
+ if (null !== ($rules = $this->_getRules($resource, null)))
{
+ foreach ($rules['byPrivilegeId'] as $privilege =>
$rule) {
+ if (self::TYPE_DENY === ($ruleTypeOnePrivilege =
$this->_getRuleType($resource, null, $privilege))) {
+ return false;
+ }
+ }
+ if (null !== ($ruleTypeAllPrivileges =
$this->_getRuleType($resource, null, null))) {
+ return self::TYPE_ALLOW === $ruleTypeAllPrivileges;
+ }
+ }
+
+ // try next Resource
+ $resource =
$this->_resources[$resource->getResourceId()]['parent'];
+
+ } while (true); // loop terminates at 'allResources'
pseudo-parent
+ } else {
+ // query on one privilege
+ do {
+ // depth-first search on $role if it is not 'allRoles'
pseudo-parent
+ if (null !== $role && null !== ($result =
$this->_roleDFSOnePrivilege($role, $resource, $privilege))) {
+ return $result;
+ }
+
+ // look for rule on 'allRoles' pseudo-parent
+ if (null !== ($ruleType = $this->_getRuleType($resource,
null, $privilege))) {
+ return self::TYPE_ALLOW === $ruleType;
+ } else if (null !== ($ruleTypeAllPrivileges =
$this->_getRuleType($resource, null, null))) {
+ return self::TYPE_ALLOW === $ruleTypeAllPrivileges;
+ }
+
+ // try next Resource
+ $resource =
$this->_resources[$resource->getResourceId()]['parent'];
+
+ } while (true); // loop terminates at 'allResources'
pseudo-parent
+ }
+ }
+
+ /**
+ * Returns the Role registry for this ACL
+ *
+ * If no Role registry has been created yet, a new default Role
registry
+ * is created and returned.
+ *
+ * @return Zend_Acl_Role_Registry
+ */
+ protected function _getRoleRegistry()
+ {
+ if (null === $this->_roleRegistry) {
+ $this->_roleRegistry = new Zend_Acl_Role_Registry();
+ }
+ return $this->_roleRegistry;
+ }
+
+ /**
+ * Performs a depth-first search of the Role DAG, starting at $role,
in order to find a rule
+ * allowing/denying $role access to all privileges upon $resource
+ *
+ * This method returns true if a rule is found and allows access. If a
rule exists and denies access,
+ * then this method returns false. If no applicable rule is found,
then this method returns null.
+ *
+ * @param Zend_Acl_Role_Interface $role
+ * @param Zend_Acl_Resource_Interface $resource
+ * @return boolean|null
+ */
+ protected function _roleDFSAllPrivileges(Zend_Acl_Role_Interface
$role, Zend_Acl_Resource_Interface $resource = null)
+ {
+ $dfs = array(
+ 'visited' => array(),
+ 'stack' => array()
+ );
+
+ if (null !== ($result = $this->_roleDFSVisitAllPrivileges($role,
$resource, $dfs))) {
+ return $result;
+ }
+
+ while (null !== ($role = array_pop($dfs['stack']))) {
+ if (!isset($dfs['visited'][$role->getRoleId()])) {
+ if (null !== ($result =
$this->_roleDFSVisitAllPrivileges($role, $resource, $dfs))) {
+ return $result;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Visits an $role in order to look for a rule allowing/denying $role
access to all privileges upon $resource
+ *
+ * This method returns true if a rule is found and allows access. If a
rule exists and denies access,
+ * then this method returns false. If no applicable rule is found,
then this method returns null.
+ *
+ * This method is used by the internal depth-first search algorithm
and may modify the DFS data structure.
+ *
+ * @param Zend_Acl_Role_Interface $role
+ * @param Zend_Acl_Resource_Interface $resource
+ * @param array $dfs
+ * @return boolean|null
+ * @throws Zend_Acl_Exception
+ */
+ protected function _roleDFSVisitAllPrivileges(Zend_Acl_Role_Interface
$role, Zend_Acl_Resource_Interface $resource = null,
+ &$dfs = null)
+ {
+ if (null === $dfs) {
+ /**
+ * @see Zend_Acl_Exception
+ */
+ require_once 'Zend/Acl/Exception.php';
+ throw new Zend_Acl_Exception('$dfs parameter may not be null');
+ }
+
+ if (null !== ($rules = $this->_getRules($resource, $role))) {
+ foreach ($rules['byPrivilegeId'] as $privilege => $rule) {
+ if (self::TYPE_DENY === ($ruleTypeOnePrivilege =
$this->_getRuleType($resource, $role, $privilege))) {
+ return false;
+ }
+ }
+ if (null !== ($ruleTypeAllPrivileges =
$this->_getRuleType($resource, $role, null))) {
+ return self::TYPE_ALLOW === $ruleTypeAllPrivileges;
+ }
+ }
+
+ $dfs['visited'][$role->getRoleId()] = true;
+ foreach ($this->_getRoleRegistry()->getParents($role) as
$roleParentId => $roleParent) {
+ $dfs['stack'][] = $roleParent;
+ }
+
+ return null;
+ }
+
+ /**
+ * Performs a depth-first search of the Role DAG, starting at $role,
in order to find a rule
+ * allowing/denying $role access to a $privilege upon $resource
+ *
+ * This method returns true if a rule is found and allows access. If a
rule exists and denies access,
+ * then this method returns false. If no applicable rule is found,
then this method returns null.
+ *
+ * @param Zend_Acl_Role_Interface $role
+ * @param Zend_Acl_Resource_Interface $resource
+ * @param string $privilege
+ * @return boolean|null
+ * @throws Zend_Acl_Exception
+ */
+ protected function _roleDFSOnePrivilege(Zend_Acl_Role_Interface $role,
Zend_Acl_Resource_Interface $resource = null,
+ $privilege = null)
+ {
+ if (null === $privilege) {
+ /**
+ * @see Zend_Acl_Exception
+ */
+ require_once 'Zend/Acl/Exception.php';
+ throw new Zend_Acl_Exception('$privilege parameter may not be
null');
+ }
+
+ $dfs = array(
+ 'visited' => array(),
+ 'stack' => array()
+ );
+
+ if (null !== ($result = $this->_roleDFSVisitOnePrivilege($role,
$resource, $privilege, $dfs))) {
+ return $result;
+ }
+
+ while (null !== ($role = array_pop($dfs['stack']))) {
+ if (!isset($dfs['visited'][$role->getRoleId()])) {
+ if (null !== ($result =
$this->_roleDFSVisitOnePrivilege($role, $resource, $privilege, $dfs))) {
+ return $result;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Visits an $role in order to look for a rule allowing/denying $role
access to a $privilege upon $resource
+ *
+ * This method returns true if a rule is found and allows access. If a
rule exists and denies access,
+ * then this method returns false. If no applicable rule is found,
then this method returns null.
+ *
+ * This method is used by the internal depth-first search algorithm
and may modify the DFS data structure.
+ *
+ * @param Zend_Acl_Role_Interface $role
+ * @param Zend_Acl_Resource_Interface $resource
+ * @param string $privilege
+ * @param array $dfs
+ * @return boolean|null
+ * @throws Zend_Acl_Exception
+ */
+ protected function _roleDFSVisitOnePrivilege(Zend_Acl_Role_Interface
$role, Zend_Acl_Resource_Interface $resource = null,
+ $privilege = null, &$dfs =
null)
+ {
+ if (null === $privilege) {
+ /**
+ * @see Zend_Acl_Exception
+ */
+ require_once 'Zend/Acl/Exception.php';
+ throw new Zend_Acl_Exception('$privilege parameter may not be
null');
+ }
+
+ if (null === $dfs) {
+ /**
+ * @see Zend_Acl_Exception
+ */
+ require_once 'Zend/Acl/Exception.php';
+ throw new Zend_Acl_Exception('$dfs parameter may not be null');
+ }
+
+ if (null !== ($ruleTypeOnePrivilege =
$this->_getRuleType($resource, $role, $privilege))) {
+ return self::TYPE_ALLOW === $ruleTypeOnePrivilege;
+ } else if (null !== ($ruleTypeAllPrivileges =
$this->_getRuleType($resource, $role, null))) {
+ return self::TYPE_ALLOW === $ruleTypeAllPrivileges;
+ }
+
+ $dfs['visited'][$role->getRoleId()] = true;
+ foreach ($this->_getRoleRegistry()->getParents($role) as
$roleParentId => $roleParent) {
+ $dfs['stack'][] = $roleParent;
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns the rule type associated with the specified Resource, Role,
and privilege
+ * combination.
+ *
+ * If a rule does not exist or its attached assertion fails, which
means that
+ * the rule is not applicable, then this method returns null.
Otherwise, the
+ * rule type applies and is returned as either TYPE_ALLOW or TYPE_DENY.
+ *
+ * If $resource or $role is null, then this means that the rule must
apply to
+ * all Resources or Roles, respectively.
+ *
+ * If $privilege is null, then the rule must apply to all privileges.
+ *
+ * If all three parameters are null, then the default ACL rule type is
returned,
+ * based on whether its assertion method passes.
+ *
+ * @param Zend_Acl_Resource_Interface $resource
+ * @param Zend_Acl_Role_Interface $role
+ * @param string $privilege
+ * @return string|null
+ */
+ protected function _getRuleType(Zend_Acl_Resource_Interface $resource
= null, Zend_Acl_Role_Interface $role = null,
+ $privilege = null)
+ {
+ // get the rules for the $resource and $role
+ if (null === ($rules = $this->_getRules($resource, $role))) {
+ return null;
+ }
+
+ // follow $privilege
+ if (null === $privilege) {
+ if (isset($rules['allPrivileges'])) {
+ $rule = $rules['allPrivileges'];
+ } else {
+ return null;
+ }
+ } else if (!isset($rules['byPrivilegeId'][$privilege])) {
+ return null;
+ } else {
+ $rule = $rules['byPrivilegeId'][$privilege];
+ }
+
+ // check assertion if necessary
+ if (null === $rule['assert'] || $rule['assert']->assert($this,
$role, $resource, $privilege)) {
+ return $rule['type'];
+ } else if (null !== $resource || null !== $role || null !==
$privilege) {
+ return null;
+ } else if (self::TYPE_ALLOW === $rule['type']) {
+ return self::TYPE_DENY;
+ } else {
+ return self::TYPE_ALLOW;
+ }
+ }
+
+ /**
+ * Returns the rules associated with a Resource and a Role, or null if
no such rules exist
+ *
+ * If either $resource or $role is null, this means that the rules
returned are for all Resources or all Roles,
+ * respectively. Both can be null to return the default rule set for
all Resources and all Roles.
+ *
+ * If the $create parameter is true, then a rule set is first created
and then returned to the caller.
+ *
+ * @param Zend_Acl_Resource_Interface $resource
+ * @param Zend_Acl_Role_Interface $role
+ * @param boolean $create
+ * @return array|null
+ */
+ protected function &_getRules(Zend_Acl_Resource_Interface $resource =
null, Zend_Acl_Role_Interface $role = null,
+ $create = false)
+ {
+ // create a reference to null
+ $null = null;
+ $nullRef =& $null;
+
***The diff for this file has been truncated for email.***
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/DbTable.php Wed
Apr 25 15:32:46 2012
@@ -0,0 +1,461 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: DbTable.php 8964 2008-03-21 17:53:14Z thomas $
+ */
+
+
+/**
+ * @see Zend_Auth_Adapter_Interface
+ */
+require_once 'Zend/Auth/Adapter/Interface.php';
+
+/**
+ * @see Zend_Db_Adapter_Abstract
+ */
+require_once 'Zend/Db/Adapter/Abstract.php';
+
+/**
+ * @see Zend_Auth_Result
+ */
+require_once 'Zend/Auth/Result.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Adapter_DbTable implements Zend_Auth_Adapter_Interface
+{
+ /**
+ * Database Connection
+ *
+ * @var Zend_Db_Adapter_Abstract
+ */
+ protected $_zendDb = null;
+
+ /**
+ * $_tableName - the table name to check
+ *
+ * @var string
+ */
+ protected $_tableName = null;
+
+ /**
+ * $_identityColumn - the column to use as the identity
+ *
+ * @var string
+ */
+ protected $_identityColumn = null;
+
+ /**
+ * $_credentialColumns - columns to be used as the credentials
+ *
+ * @var string
+ */
+ protected $_credentialColumn = null;
+
+ /**
+ * $_identity - Identity value
+ *
+ * @var string
+ */
+ protected $_identity = null;
+
+ /**
+ * $_credential - Credential values
+ *
+ * @var string
+ */
+ protected $_credential = null;
+
+ /**
+ * $_credentialTreatment - Treatment applied to the credential, such
as MD5() or PASSWORD()
+ *
+ * @var string
+ */
+ protected $_credentialTreatment = null;
+
+ /**
+ * $_authenticateResultInfo
+ *
+ * @var array
+ */
+ protected $_authenticateResultInfo = null;
+
+ /**
+ * $_resultRow - Results of database authentication query
+ *
+ * @var array
+ */
+ protected $_resultRow = null;
+
+ /**
+ * __construct() - Sets configuration options
+ *
+ * @param Zend_Db_Adapter_Abstract $zendDb
+ * @param string $tableName
+ * @param string $identityColumn
+ * @param string $credentialColumn
+ * @param string $credentialTreatment
+ * @return void
+ */
+ public function __construct(Zend_Db_Adapter_Abstract $zendDb,
$tableName = null, $identityColumn = null,
+ $credentialColumn = null,
$credentialTreatment = null)
+ {
+ $this->_zendDb = $zendDb;
+
+ if (null !== $tableName) {
+ $this->setTableName($tableName);
+ }
+
+ if (null !== $identityColumn) {
+ $this->setIdentityColumn($identityColumn);
+ }
+
+ if (null !== $credentialColumn) {
+ $this->setCredentialColumn($credentialColumn);
+ }
+
+ if (null !== $credentialTreatment) {
+ $this->setCredentialTreatment($credentialTreatment);
+ }
+ }
+
+ /**
+ * setTableName() - set the table name to be used in the select query
+ *
+ * @param string $tableName
+ * @return Zend_Auth_Adapter_DbTable Provides a fluent interface
+ */
+ public function setTableName($tableName)
+ {
+ $this->_tableName = $tableName;
+ return $this;
+ }
+
+ /**
+ * setIdentityColumn() - set the column name to be used as the
identity column
+ *
+ * @param string $identityColumn
+ * @return Zend_Auth_Adapter_DbTable Provides a fluent interface
+ */
+ public function setIdentityColumn($identityColumn)
+ {
+ $this->_identityColumn = $identityColumn;
+ return $this;
+ }
+
+ /**
+ * setCredentialColumn() - set the column name to be used as the
credential column
+ *
+ * @param string $credentialColumn
+ * @return Zend_Auth_Adapter_DbTable Provides a fluent interface
+ */
+ public function setCredentialColumn($credentialColumn)
+ {
+ $this->_credentialColumn = $credentialColumn;
+ return $this;
+ }
+
+ /**
+ * setCredentialTreatment() - allows the developer to pass a
parameterized string that is
+ * used to transform or treat the input credential data
+ *
+ * In many cases, passwords and other sensitive data are encrypted,
hashed, encoded,
+ * obscured, or otherwise treated through some function or algorithm.
By specifying a
+ * parameterized treatment string with this method, a developer may
apply arbitrary SQL
+ * upon input credential data.
+ *
+ * Examples:
+ *
+ * 'PASSWORD(?)'
+ * 'MD5(?)'
+ *
+ * @param string $treatment
+ * @return Zend_Auth_Adapter_DbTable Provides a fluent interface
+ */
+ public function setCredentialTreatment($treatment)
+ {
+ $this->_credentialTreatment = $treatment;
+ return $this;
+ }
+
+ /**
+ * setIdentity() - set the value to be used as the identity
+ *
+ * @param string $value
+ * @return Zend_Auth_Adapter_DbTable Provides a fluent interface
+ */
+ public function setIdentity($value)
+ {
+ $this->_identity = $value;
+ return $this;
+ }
+
+ /**
+ * setCredential() - set the credential value to be used, optionally
can specify a treatment
+ * to be used, should be supplied in parameterized form, such
as 'MD5(?)' or 'PASSWORD(?)'
+ *
+ * @param string $credential
+ * @return Zend_Auth_Adapter_DbTable Provides a fluent interface
+ */
+ public function setCredential($credential)
+ {
+ $this->_credential = $credential;
+ return $this;
+ }
+
+ /**
+ * getResultRowObject() - Returns the result row as a stdClass object
+ *
+ * @param string|array $returnColumns
+ * @param string|array $omitColumns
+ * @return stdClass|boolean
+ */
+ public function getResultRowObject($returnColumns = null, $omitColumns
= null)
+ {
+ if (!$this->_resultRow) {
+ return false;
+ }
+
+ $returnObject = new stdClass();
+
+ if (null !== $returnColumns) {
+
+ $availableColumns = array_keys($this->_resultRow);
+ foreach ( (array) $returnColumns as $returnColumn) {
+ if (in_array($returnColumn, $availableColumns)) {
+ $returnObject->{$returnColumn} =
$this->_resultRow[$returnColumn];
+ }
+ }
+ return $returnObject;
+
+ } elseif (null !== $omitColumns) {
+
+ $omitColumns = (array) $omitColumns;
+ foreach ($this->_resultRow as $resultColumn => $resultValue) {
+ if (!in_array($resultColumn, $omitColumns)) {
+ $returnObject->{$resultColumn} = $resultValue;
+ }
+ }
+ return $returnObject;
+
+ } else {
+
+ foreach ($this->_resultRow as $resultColumn => $resultValue) {
+ $returnObject->{$resultColumn} = $resultValue;
+ }
+ return $returnObject;
+
+ }
+ }
+
+ /**
+ * authenticate() - defined by Zend_Auth_Adapter_Interface. This
method is called to
+ * attempt an authenication. Previous to this call, this adapter
would have already
+ * been configured with all nessissary information to successfully
connect to a database
+ * table and attempt to find a record matching the provided identity.
+ *
+ * @throws Zend_Auth_Adapter_Exception if answering the authentication
query is impossible
+ * @return Zend_Auth_Result
+ */
+ public function authenticate()
+ {
+ $this->_authenticateSetup();
+ $dbSelect = $this->_authenticateCreateSelect();
+ $resultIdentities = $this->_authenticateQuerySelect($dbSelect);
+
+ if ( ($authResult =
$this->_authenticateValidateResultset($resultIdentities)) instanceof
Zend_Auth_Result) {
+ return $authResult;
+ }
+
+ $authResult =
$this->_authenticateValidateResult(array_shift($resultIdentities));
+ return $authResult;
+ }
+
+ /**
+ * _authenticateSetup() - This method abstracts the steps involved
with making sure
+ * that this adapter was indeed setup properly with all required
peices of information.
+ *
+ * @throws Zend_Auth_Adapter_Exception - in the event that setup was
not done properly
+ * @return true
+ */
+ protected function _authenticateSetup()
+ {
+ $exception = null;
+
+ if ($this->_tableName == '') {
+ $exception = 'A table must be supplied for the
Zend_Auth_Adapter_DbTable authentication adapter.';
+ } elseif ($this->_identityColumn == '') {
+ $exception = 'An identity column must be supplied for the
Zend_Auth_Adapter_DbTable authentication adapter.';
+ } elseif ($this->_credentialColumn == '') {
+ $exception = 'A credential column must be supplied for the
Zend_Auth_Adapter_DbTable authentication adapter.';
+ } elseif ($this->_identity == '') {
+ $exception = 'A value for the identity was not provided prior
to authentication with Zend_Auth_Adapter_DbTable.';
+ } elseif ($this->_credential === null) {
+ $exception = 'A credential value was not provided prior to
authentication with Zend_Auth_Adapter_DbTable.';
+ }
+
+ if (null !== $exception) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception($exception);
+ }
+
+ $this->_authenticateResultInfo = array(
+ 'code' => Zend_Auth_Result::FAILURE,
+ 'identity' => $this->_identity,
+ 'messages' => array()
+ );
+
+ return true;
+ }
+
+ /**
+ * _authenticateCreateSelect() - This method creates a Zend_Db_Select
object that
+ * is completely configured to be queried against the database.
+ *
+ * @return Zend_Db_Select
+ */
+ protected function _authenticateCreateSelect()
+ {
+ // build credential expression
+ if (empty($this->_credentialTreatment) ||
(strpos($this->_credentialTreatment, "?") === false)) {
+ $this->_credentialTreatment = '?';
+ }
+
+ $credentialExpression = new Zend_Db_Expr(
+ '(CASE WHEN ' .
+ $this->_zendDb->quoteInto(
+ $this->_zendDb->quoteIdentifier($this->_credentialColumn,
true)
+ . ' = ' . $this->_credentialTreatment, $this->_credential
+ )
+ . ' THEN 1 ELSE 0 END) AS '
+ . $this->_zendDb->quoteIdentifier('zend_auth_credential_match')
+ );
+
+ // get select
+ $dbSelect = $this->_zendDb->select();
+ $dbSelect->from($this->_tableName, array('*',
$credentialExpression))
+
->where($this->_zendDb->quoteIdentifier($this->_identityColumn, true) . '
= ?', $this->_identity);
+
+ return $dbSelect;
+ }
+
+ /**
+ * _authenticateQuerySelect() - This method accepts a Zend_Db_Select
object and
+ * performs a query against the database with that object.
+ *
+ * @param Zend_Db_Select $dbSelect
+ * @throws Zend_Auth_Adapter_Exception - when a invalid select object
is encoutered
+ * @return array
+ */
+ protected function _authenticateQuerySelect(Zend_Db_Select $dbSelect)
+ {
+ try {
+ if ($this->_zendDb->getFetchMode() != Zend_DB::FETCH_ASSOC) {
+ $origDbFetchMode = $this->_zendDb->getFetchMode();
+ $this->_zendDb->setFetchMode(Zend_DB::FETCH_ASSOC);
+ }
+ $resultIdentities =
$this->_zendDb->fetchAll($dbSelect->__toString());
+ if (isset($origDbFetchMode)) {
+ $this->_zendDb->setFetchMode($origDbFetchMode);
+ unset($origDbFetchMode);
+ }
+ } catch (Exception $e) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('The supplied parameters
to Zend_Auth_Adapter_DbTable failed to '
+ . 'produce a valid sql
statement, please check table and column names '
+ . 'for validity.');
+ }
+ return $resultIdentities;
+ }
+
+ /**
+ * _authenticateValidateResultSet() - This method attempts to make
certian that only one
+ * record was returned in the result set
+ *
+ * @param array $resultIdentities
+ * @return true|Zend_Auth_Result
+ */
+ protected function _authenticateValidateResultSet(array
$resultIdentities)
+ {
+
+
+ if (count($resultIdentities) < 1) {
+ $this->_authenticateResultInfo['code'] =
Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND;
+ $this->_authenticateResultInfo['messages'][] = 'A record with
the supplied identity could not be found.';
+ return $this->_authenticateCreateAuthResult();
+ } elseif (count($resultIdentities) > 1) {
+ $this->_authenticateResultInfo['code'] =
Zend_Auth_Result::FAILURE_IDENTITY_AMBIGUOUS;
+ $this->_authenticateResultInfo['messages'][] = 'More than one
record matches the supplied identity.';
+ return $this->_authenticateCreateAuthResult();
+ }
+
+ return true;
+ }
+
+ /**
+ * _authenticateValidateResult() - This method attempts to validate
that the record in the
+ * result set is indeed a record that matched the identity provided to
this adapter.
+ *
+ * @param array $resultIdentity
+ * @return Zend_Auth_Result
+ */
+ protected function _authenticateValidateResult($resultIdentity)
+ {
+ if ($resultIdentity['zend_auth_credential_match'] != '1') {
+ $this->_authenticateResultInfo['code'] =
Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID;
+ $this->_authenticateResultInfo['messages'][] = 'Supplied
credential is invalid.';
+ return $this->_authenticateCreateAuthResult();
+ }
+
+ unset($resultIdentity['zend_auth_credential_match']);
+ $this->_resultRow = $resultIdentity;
+
+ $this->_authenticateResultInfo['code'] = Zend_Auth_Result::SUCCESS;
+ $this->_authenticateResultInfo['messages'][] = 'Authentication
successful.';
+ return $this->_authenticateCreateAuthResult();
+ }
+
+ /**
+ * _authenticateCreateAuthResult() - This method creates a
Zend_Auth_Result object
+ * from the information that has been collected during the
authenticate() attempt.
+ *
+ * @return Zend_Auth_Result
+ */
+ protected function _authenticateCreateAuthResult()
+ {
+ return new Zend_Auth_Result(
+ $this->_authenticateResultInfo['code'],
+ $this->_authenticateResultInfo['identity'],
+ $this->_authenticateResultInfo['messages']
+ );
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Digest.php Wed
Apr 25 15:32:46 2012
@@ -0,0 +1,230 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Digest.php 9669 2008-06-11 08:23:41Z doctorrock83 $
+ */
+
+
+/**
+ * @see Zend_Auth_Adapter_Interface
+ */
+require_once 'Zend/Auth/Adapter/Interface.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Adapter_Digest implements Zend_Auth_Adapter_Interface
+{
+ /**
+ * Filename against which authentication queries are performed
+ *
+ * @var string
+ */
+ protected $_filename;
+
+ /**
+ * Digest authentication realm
+ *
+ * @var string
+ */
+ protected $_realm;
+
+ /**
+ * Digest authentication user
+ *
+ * @var string
+ */
+ protected $_username;
+
+ /**
+ * Password for the user of the realm
+ *
+ * @var string
+ */
+ protected $_password;
+
+ /**
+ * Sets adapter options
+ *
+ * @param mixed $filename
+ * @param mixed $realm
+ * @param mixed $username
+ * @param mixed $password
+ * @return void
+ */
+ public function __construct($filename = null, $realm = null, $username
= null, $password = null)
+ {
+ $options = array('filename', 'realm', 'username', 'password');
+ foreach ($options as $option) {
+ if (null !== $$option) {
+ $methodName = 'set' . ucfirst($option);
+ $this->$methodName($$option);
+ }
+ }
+ }
+
+ /**
+ * Returns the filename option value or null if it has not yet been set
+ *
+ * @return string|null
+ */
+ public function getFilename()
+ {
+ return $this->_filename;
+ }
+
+ /**
+ * Sets the filename option value
+ *
+ * @param mixed $filename
+ * @return Zend_Auth_Adapter_Digest Provides a fluent interface
+ */
+ public function setFilename($filename)
+ {
+ $this->_filename = (string) $filename;
+ return $this;
+ }
+
+ /**
+ * Returns the realm option value or null if it has not yet been set
+ *
+ * @return string|null
+ */
+ public function getRealm()
+ {
+ return $this->_realm;
+ }
+
+ /**
+ * Sets the realm option value
+ *
+ * @param mixed $realm
+ * @return Zend_Auth_Adapter_Digest Provides a fluent interface
+ */
+ public function setRealm($realm)
+ {
+ $this->_realm = (string) $realm;
+ return $this;
+ }
+
+ /**
+ * Returns the username option value or null if it has not yet been set
+ *
+ * @return string|null
+ */
+ public function getUsername()
+ {
+ return $this->_username;
+ }
+
+ /**
+ * Sets the username option value
+ *
+ * @param mixed $username
+ * @return Zend_Auth_Adapter_Digest Provides a fluent interface
+ */
+ public function setUsername($username)
+ {
+ $this->_username = (string) $username;
+ return $this;
+ }
+
+ /**
+ * Returns the password option value or null if it has not yet been set
+ *
+ * @return string|null
+ */
+ public function getPassword()
+ {
+ return $this->_password;
+ }
+
+ /**
+ * Sets the password option value
+ *
+ * @param mixed $password
+ * @return Zend_Auth_Adapter_Digest Provides a fluent interface
+ */
+ public function setPassword($password)
+ {
+ $this->_password = (string) $password;
+ return $this;
+ }
+
+ /**
+ * Defined by Zend_Auth_Adapter_Interface
+ *
+ * @throws Zend_Auth_Adapter_Exception
+ * @return Zend_Auth_Result
+ */
+ public function authenticate()
+ {
+ $optionsRequired =
array('filename', 'realm', 'username', 'password');
+ foreach ($optionsRequired as $optionRequired) {
+ if (null === $this->{"_$optionRequired"}) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new
Zend_Auth_Adapter_Exception("Option '$optionRequired' must be set before
authentication");
+ }
+ }
+
+ if (false === ($fileHandle = @fopen($this->_filename, 'r'))) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception("Cannot
open '$this->_filename' for reading");
+ }
+
+ $id = "$this->_username:$this->_realm";
+ $idLength = strlen($id);
+
+ $result = array(
+ 'code' => Zend_Auth_Result::FAILURE,
+ 'identity' => array(
+ 'realm' => $this->_realm,
+ 'username' => $this->_username,
+ ),
+ 'messages' => array()
+ );
+
+ while ($line = trim(fgets($fileHandle))) {
+ if (substr($line, 0, $idLength) === $id) {
+ if (substr($line, -32) ===
md5("$this->_username:$this->_realm:$this->_password")) {
+ $result['code'] = Zend_Auth_Result::SUCCESS;
+ } else {
+ $result['code'] =
Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID;
+ $result['messages'][] = 'Password incorrect';
+ }
+ return new Zend_Auth_Result($result['code'],
$result['identity'], $result['messages']);
+ }
+ }
+
+ $result['code'] = Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND;
+ $result['messages'][] = "Username '$this->_username' and
realm '$this->_realm' combination not found";
+ return new Zend_Auth_Result($result['code'], $result['identity'],
$result['messages']);
+ }
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Exception.php Wed
Apr 25 15:32:46 2012
@@ -0,0 +1,38 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Exception.php 8964 2008-03-21 17:53:14Z thomas $
+ */
+
+
+/**
+ * Zend_Auth_Exception
+ */
+require_once 'Zend/Auth/Exception.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Adapter_Exception extends Zend_Auth_Exception
+{}
=======================================
--- /dev/null
+++
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Http/Resolver/Exception.php
Wed Apr 25 15:32:46 2012
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter_Http
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Exception.php 8964 2008-03-21 17:53:14Z thomas $
+ */
+
+
+/**
+ * @see Zend_Auth_Exception
+ */
+require_once 'Zend/Auth/Exception.php';
+
+
+/**
+ * HTTP Auth Resolver Exception
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter_Http
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Adapter_Http_Resolver_Exception extends Zend_Auth_Exception
+{}
=======================================
--- /dev/null
+++
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Http/Resolver/File.php
Wed Apr 25 15:32:46 2012
@@ -0,0 +1,167 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter_Http
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: File.php 8964 2008-03-21 17:53:14Z thomas $
+ */
+
+
+/**
+ * @see Zend_Auth_Adapter_Http_Resolver_Interface
+ */
+require_once 'Zend/Auth/Adapter/Http/Resolver/Interface.php';
+
+
+/**
+ * HTTP Authentication File Resolver
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter_Http
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Adapter_Http_Resolver_File implements
Zend_Auth_Adapter_Http_Resolver_Interface
+{
+ /**
+ * Path to credentials file
+ *
+ * @var string
+ */
+ protected $_file;
+
+ /**
+ * Constructor
+ *
+ * @param string $path Complete filename where the credentials are
stored
+ * @return void
+ */
+ public function __construct($path = '')
+ {
+ if (!empty($path)) {
+ $this->setFile($path);
+ }
+ }
+
+ /**
+ * Set the path to the credentials file
+ *
+ * @param string $path
+ * @throws Zend_Auth_Adapter_Http_Resolver_Exception
+ * @return Zend_Auth_Adapter_Http_Resolver_File Provides a fluent
interface
+ */
+ public function setFile($path)
+ {
+ if (empty($path) || !is_readable($path)) {
+ /**
+ * @see Zend_Auth_Adapter_Http_Resolver_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Http/Resolver/Exception.php';
+ throw new Zend_Auth_Adapter_Http_Resolver_Exception('Path not
readable: ' . $path);
+ }
+ $this->_file = $path;
+
+ return $this;
+ }
+
+ /**
+ * Returns the path to the credentials file
+ *
+ * @return string
+ */
+ public function getFile()
+ {
+ return $this->_file;
+ }
+
+ /**
+ * Resolve credentials
+ *
+ * Only the first matching username/realm combination in the file is
+ * returned. If the file contains credentials for Digest
authentication,
+ * the returned string is the password hash, or h(a1) from RFC 2617.
The
+ * returned string is the plain-text password for Basic authentication.
+ *
+ * The expected format of the file is:
+ * username:realm:sharedSecret
+ *
+ * That is, each line consists of the user's username, the applicable
+ * authentication realm, and the password or hash, each delimited by
+ * colons.
+ *
+ * @param string $username Username
+ * @param string $realm Authentication Realm
+ * @throws Zend_Auth_Adapter_Http_Resolver_Exception
+ * @return string|false User's shared secret, if the user is found in
the
+ * realm, false otherwise.
+ */
+ public function resolve($username, $realm)
+ {
+ if (empty($username)) {
+ /**
+ * @see Zend_Auth_Adapter_Http_Resolver_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Http/Resolver/Exception.php';
+ throw new Zend_Auth_Adapter_Http_Resolver_Exception('Username
is required');
+ } else if (!ctype_print($username) || strpos($username, ':') !==
false) {
+ /**
+ * @see Zend_Auth_Adapter_Http_Resolver_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Http/Resolver/Exception.php';
+ throw new Zend_Auth_Adapter_Http_Resolver_Exception('Username
must consist only of printable characters, '
+ . 'excluding
the colon');
+ }
+ if (empty($realm)) {
+ /**
+ * @see Zend_Auth_Adapter_Http_Resolver_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Http/Resolver/Exception.php';
+ throw new Zend_Auth_Adapter_Http_Resolver_Exception('Realm is
required');
+ } else if (!ctype_print($realm) || strpos($realm, ':') !== false) {
+ /**
+ * @see Zend_Auth_Adapter_Http_Resolver_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Http/Resolver/Exception.php';
+ throw new Zend_Auth_Adapter_Http_Resolver_Exception('Realm
must consist only of printable characters, '
+ . 'excluding
the colon.');
+ }
+
+ // Open file, read through looking for matching credentials
+ $fp = @fopen($this->_file, 'r');
+ if (!$fp) {
+ /**
+ * @see Zend_Auth_Adapter_Http_Resolver_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Http/Resolver/Exception.php';
+ throw new Zend_Auth_Adapter_Http_Resolver_Exception('Unable to
open password file: ' . $this->_file);
+ }
+
+ // No real validation is done on the contents of the password
file. The
+ // assumption is that we trust the administrators to keep it
secure.
+ while (($line = fgetcsv($fp, 512, ':')) !== false) {
+ if ($line[0] == $username && $line[1] == $realm) {
+ $password = $line[2];
+ fclose($fp);
+ return $password;
+ }
+ }
+
+ fclose($fp);
+ return false;
+ }
+}
=======================================
--- /dev/null
+++
/trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Http/Resolver/Interface.php
Wed Apr 25 15:32:46 2012
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter_Http
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Interface.php 8964 2008-03-21 17:53:14Z thomas $
+ */
+
+
+/**
+ * Auth HTTP Resolver Interface
+ *
+ * Defines an interace to resolve a username/realm combination into a
shared
+ * secret usable by HTTP Authentication.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter_Http
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+interface Zend_Auth_Adapter_Http_Resolver_Interface
+{
+ /**
+ * Resolve username/realm to password/hash/etc.
+ *
+ * @param string $username Username
+ * @param string $realm Authentication Realm
+ * @return string|false User's shared secret, if the user is found in
the
+ * realm, false otherwise.
+ */
+ public function resolve($username, $realm);
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Http.php Wed Apr
25 15:32:46 2012
@@ -0,0 +1,847 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter_Http
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Http.php 10489 2008-07-26 21:49:54Z alexander $
+ */
+
+
+/**
+ * @see Zend_Auth_Adapter_Interface
+ */
+require_once 'Zend/Auth/Adapter/Interface.php';
+
+
+/**
+ * HTTP Authentication Adapter
+ *
+ * Implements a pretty good chunk of RFC 2617.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter_Http
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @todo Support auth-int
+ * @todo Track nonces, nonce-count, opaque for replay protection and
stale support
+ * @todo Support Authentication-Info header
+ */
+class Zend_Auth_Adapter_Http implements Zend_Auth_Adapter_Interface
+{
+ /**
+ * Reference to the HTTP Request object
+ *
+ * @var Zend_Controller_Request_Http
+ */
+ protected $_request;
+
+ /**
+ * Reference to the HTTP Response object
+ *
+ * @var Zend_Controller_Response_Http
+ */
+ protected $_response;
+
+ /**
+ * Object that looks up user credentials for the Basic scheme
+ *
+ * @var Zend_Auth_Adapter_Http_Resolver_Interface
+ */
+ protected $_basicResolver;
+
+ /**
+ * Object that looks up user credentials for the Digest scheme
+ *
+ * @var Zend_Auth_Adapter_Http_Resolver_Interface
+ */
+ protected $_digestResolver;
+
+ /**
+ * List of authentication schemes supported by this class
+ *
+ * @var array
+ */
+ protected $_supportedSchemes = array('basic', 'digest');
+
+ /**
+ * List of schemes this class will accept from the client
+ *
+ * @var array
+ */
+ protected $_acceptSchemes;
+
+ /**
+ * Space-delimited list of protected domains for Digest Auth
+ *
+ * @var string
+ */
+ protected $_domains;
+
+ /**
+ * The protection realm to use
+ *
+ * @var string
+ */
+ protected $_realm;
+
+ /**
+ * Nonce timeout period
+ *
+ * @var integer
+ */
+ protected $_nonceTimeout;
+
+ /**
+ * Whether to send the opaque value in the header. True by default
+ *
+ * @var boolean
+ */
+ protected $_useOpaque;
+
+ /**
+ * List of the supported digest algorithms. I want to support both MD5
and
+ * MD5-sess, but MD5-sess won't make it into the first version.
+ *
+ * @var array
+ */
+ protected $_supportedAlgos = array('MD5');
+
+ /**
+ * The actual algorithm to use. Defaults to MD5
+ *
+ * @var string
+ */
+ protected $_algo;
+
+ /**
+ * List of supported qop options. My intetion is to support
both 'auth' and
+ * 'auth-int', but 'auth-int' won't make it into the first version.
+ *
+ * @var array
+ */
+ protected $_supportedQops = array('auth');
+
+ /**
+ * Whether or not to do Proxy Authentication instead of origin server
+ * authentication (send 407's instead of 401's). Off by default.
+ *
+ * @var boolean
+ */
+ protected $_imaProxy;
+
+ /**
+ * Flag indicating the client is IE and didn't bother to return the
opaque string
+ *
+ * @var boolean
+ */
+ protected $_ieNoOpaque;
+
+ /**
+ * Constructor
+ *
+ * @param array $config Configuration settings:
+ * 'accept_schemes' => 'basic'|'digest'|'basic digest'
+ * 'realm' => <string>
+ * 'digest_domains' => <string> Space-delimited list of URIs
+ * 'nonce_timeout' => <int>
+ * 'use_opaque' => <bool> Whether to send the opaque value in the
header
+ * 'alogrithm' => <string> See $_supportedAlgos. Default: MD5
+ * 'proxy_auth' => <bool> Whether to do authentication as a Proxy
+ * @throws Zend_Auth_Adapter_Exception
+ * @return void
+ */
+ public function __construct(array $config)
+ {
+ if (!extension_loaded('hash')) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception(__CLASS__ . ' requires
the \'hash\' extension');
+ }
+
+ $this->_request = null;
+ $this->_response = null;
+ $this->_ieNoOpaque = false;
+
+
+ if (empty($config['accept_schemes'])) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('Config key
\'accept_schemes\' is required');
+ }
+
+ $schemes = explode(' ', $config['accept_schemes']);
+ $this->_acceptSchemes = array_intersect($schemes,
$this->_supportedSchemes);
+ if (empty($this->_acceptSchemes)) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('No supported schemes
given in \'accept_schemes\'. Valid values: '
+ . implode(', ',
$this->_supportedSchemes));
+ }
+
+ // Double-quotes are used to delimit the realm string in the HTTP
header,
+ // and colons are field delimiters in the password file.
+ if (empty($config['realm']) ||
+ !ctype_print($config['realm']) ||
+ strpos($config['realm'], ':') !== false ||
+ strpos($config['realm'], '"') !== false) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('Config key \'realm\' is
required, and must contain only printable '
+ . 'characters, excluding
quotation marks and colons');
+ } else {
+ $this->_realm = $config['realm'];
+ }
+
+ if (in_array('digest', $this->_acceptSchemes)) {
+ if (empty($config['digest_domains']) ||
+ !ctype_print($config['digest_domains']) ||
+ strpos($config['digest_domains'], '"') !== false) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('Config key
\'digest_domains\' is required, and must contain '
+ . 'only printable
characters, excluding quotation marks');
+ } else {
+ $this->_domains = $config['digest_domains'];
+ }
+
+ if (empty($config['nonce_timeout']) ||
+ !is_numeric($config['nonce_timeout'])) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('Config key
\'nonce_timeout\' is required, and must be an '
+ . 'integer');
+ } else {
+ $this->_nonceTimeout = (int) $config['nonce_timeout'];
+ }
+
+ // We use the opaque value unless explicitly told not to
+ if (isset($config['use_opaque']) && false == (bool)
$config['use_opaque']) {
+ $this->_useOpaque = false;
+ } else {
+ $this->_useOpaque = true;
+ }
+
+ if (isset($config['algorithm']) &&
in_array($config['algorithm'], $this->_supportedAlgos)) {
+ $this->_algo = $config['algorithm'];
+ } else {
+ $this->_algo = 'MD5';
+ }
+ }
+
+ // Don't be a proxy unless explicitly told to do so
+ if (isset($config['proxy_auth']) && true == (bool)
$config['proxy_auth']) {
+ $this->_imaProxy = true; // I'm a Proxy
+ } else {
+ $this->_imaProxy = false;
+ }
+ }
+
+ /**
+ * Setter for the _basicResolver property
+ *
+ * @param Zend_Auth_Adapter_Http_Resolver_Interface $resolver
+ * @return Zend_Auth_Adapter_Http Provides a fluent interface
+ */
+ public function
setBasicResolver(Zend_Auth_Adapter_Http_Resolver_Interface $resolver)
+ {
+ $this->_basicResolver = $resolver;
+
+ return $this;
+ }
+
+ /**
+ * Getter for the _basicResolver property
+ *
+ * @return Zend_Auth_Adapter_Http_Resolver_Interface
+ */
+ public function getBasicResolver()
+ {
+ return $this->_basicResolver;
+ }
+
+ /**
+ * Setter for the _digestResolver property
+ *
+ * @param Zend_Auth_Adapter_Http_Resolver_Interface $resolver
+ * @return Zend_Auth_Adapter_Http Provides a fluent interface
+ */
+ public function
setDigestResolver(Zend_Auth_Adapter_Http_Resolver_Interface $resolver)
+ {
+ $this->_digestResolver = $resolver;
+
+ return $this;
+ }
+
+ /**
+ * Getter for the _digestResolver property
+ *
+ * @return Zend_Auth_Adapter_Http_Resolver_Interface
+ */
+ public function getDigestResolver()
+ {
+ return $this->_digestResolver;
+ }
+
+ /**
+ * Setter for the Request object
+ *
+ * @param Zend_Controller_Request_Http $request
+ * @return Zend_Auth_Adapter_Http Provides a fluent interface
+ */
+ public function setRequest(Zend_Controller_Request_Http $request)
+ {
+ $this->_request = $request;
+
+ return $this;
+ }
+
+ /**
+ * Getter for the Request object
+ *
+ * @return Zend_Controller_Request_Http
+ */
+ public function getRequest()
+ {
+ return $this->_request;
+ }
+
+ /**
+ * Setter for the Response object
+ *
+ * @param Zend_Controller_Response_Http $response
+ * @return Zend_Auth_Adapter_Http Provides a fluent interface
+ */
+ public function setResponse(Zend_Controller_Response_Http $response)
+ {
+ $this->_response = $response;
+
+ return $this;
+ }
+
+ /**
+ * Getter for the Response object
+ *
+ * @return Zend_Controller_Response_Http
+ */
+ public function getResponse()
+ {
+ return $this->_response;
+ }
+
+ /**
+ * Authenticate
+ *
+ * @throws Zend_Auth_Adapter_Exception
+ * @return Zend_Auth_Result
+ */
+ public function authenticate()
+ {
+ if (empty($this->_request) ||
+ empty($this->_response)) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('Request and Response
objects must be set before calling '
+ . 'authenticate()');
+ }
+
+ if ($this->_imaProxy) {
+ $getHeader = 'Proxy-Authorization';
+ } else {
+ $getHeader = 'Authorization';
+ }
+
+ $authHeader = $this->_request->getHeader($getHeader);
+ if (!$authHeader) {
+ return $this->_challengeClient();
+ }
+
+ list($clientScheme) = explode(' ', $authHeader);
+ $clientScheme = strtolower($clientScheme);
+
+ // The server can issue multiple challenges, but the client should
+ // answer with only the selected auth scheme.
+ if (!in_array($clientScheme, $this->_supportedSchemes)) {
+ $this->_response->setHttpResponseCode(400);
+ return new Zend_Auth_Result(
+ Zend_Auth_Result::FAILURE_UNCATEGORIZED,
+ array(),
+ array('Client requested an incorrect or unsupported
authentication scheme')
+ );
+ }
+
+ // client sent a scheme that is not the one required
+ if (!in_array($clientScheme, $this->_acceptSchemes)) {
+ // challenge again the client
+ return $this->_challengeClient();
+ }
+
+ switch ($clientScheme) {
+ case 'basic':
+ $result = $this->_basicAuth($authHeader);
+ break;
+ case 'digest':
+ $result = $this->_digestAuth($authHeader);
+ break;
+ default:
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('Unsupported
authentication scheme');
+ }
+
+ return $result;
+ }
+
+ /**
+ * Challenge Client
+ *
+ * Sets a 401 or 407 Unauthorized response code, and creates the
+ * appropriate Authenticate header(s) to prompt for credentials.
+ *
+ * @return Zend_Auth_Result Always returns a non-identity Auth result
+ */
+ protected function _challengeClient()
+ {
+ if ($this->_imaProxy) {
+ $statusCode = 407;
+ $headerName = 'Proxy-Authenticate';
+ } else {
+ $statusCode = 401;
+ $headerName = 'WWW-Authenticate';
+ }
+
+ $this->_response->setHttpResponseCode($statusCode);
+
+ // Send a challenge in each acceptable authentication scheme
+ if (in_array('basic', $this->_acceptSchemes)) {
+ $this->_response->setHeader($headerName,
$this->_basicHeader());
+ }
+ if (in_array('digest', $this->_acceptSchemes)) {
+ $this->_response->setHeader($headerName,
$this->_digestHeader());
+ }
+ return new Zend_Auth_Result(
+ Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID,
+ array(),
+ array('Invalid or absent credentials; challenging client')
+ );
+ }
+
+ /**
+ * Basic Header
+ *
+ * Generates a Proxy- or WWW-Authenticate header value in the Basic
+ * authentication scheme.
+ *
+ * @return string Authenticate header value
+ */
+ protected function _basicHeader()
+ {
+ return 'Basic realm="' . $this->_realm . '"';
+ }
+
+ /**
+ * Digest Header
+ *
+ * Generates a Proxy- or WWW-Authenticate header value in the Digest
+ * authentication scheme.
+ *
+ * @return string Authenticate header value
+ */
+ protected function _digestHeader()
+ {
+ $wwwauth = 'Digest realm="' . $this->_realm . '", '
+ . 'domain="' . $this->_domains . '", '
+ . 'nonce="' . $this->_calcNonce() . '", '
+ . ($this->_useOpaque ? 'opaque="' .
$this->_calcOpaque() . '", ' : '')
+ . 'algorithm="' . $this->_algo . '", '
+ . 'qop="' . implode(',', $this->_supportedQops) . '"';
+
+ return $wwwauth;
+ }
+
+ /**
+ * Basic Authentication
+ *
+ * @param string $header Client's Authorization header
+ * @throws Zend_Auth_Adapter_Exception
+ * @return Zend_Auth_Result
+ */
+ protected function _basicAuth($header)
+ {
+ if (empty($header)) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('The value of the client
Authorization header is required');
+ }
+ if (empty($this->_basicResolver)) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('A basicResolver object
must be set before doing Basic '
+ . 'authentication');
+ }
+
+ // Decode the Authorization header
+ $auth = substr($header, strlen('Basic '));
+ $auth = base64_decode($auth);
+ if (!$auth) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('Unable to base64_decode
Authorization header value');
+ }
+
+ // See ZF-1253. Validate the credentials the same way the digest
+ // implementation does. If invalid credentials are detected,
+ // re-challenge the client.
+ if (!ctype_print($auth)) {
+ return $this->_challengeClient();
+ }
+ // Fix for ZF-1515: Now re-challenges on empty username or password
+ $creds = array_filter(explode(':', $auth));
+ if (count($creds) != 2) {
+ return $this->_challengeClient();
+ }
+
+ $password = $this->_basicResolver->resolve($creds[0],
$this->_realm);
+ if ($password && $password == $creds[1]) {
+ $identity =
array('username'=>$creds[0], 'realm'=>$this->_realm);
+ return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS,
$identity);
+ } else {
+ return $this->_challengeClient();
+ }
+ }
+
+ /**
+ * Digest Authentication
+ *
+ * @param string $header Client's Authorization header
+ * @throws Zend_Auth_Adapter_Exception
+ * @return Zend_Auth_Result Valid auth result only on successful auth
+ */
+ protected function _digestAuth($header)
+ {
+ if (empty($header)) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('The value of the client
Authorization header is required');
+ }
+ if (empty($this->_digestResolver)) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('A digestResolver object
must be set before doing Digest authentication');
+ }
+
+ $data = $this->_parseDigestAuth($header);
+ if ($data === false) {
+ $this->_response->setHttpResponseCode(400);
+ return new Zend_Auth_Result(
+ Zend_Auth_Result::FAILURE_UNCATEGORIZED,
+ array(),
+ array('Invalid Authorization header format')
+ );
+ }
+
+ // See ZF-1052. This code was a bit too unforgiving of invalid
+ // usernames. Now, if the username is bad, we re-challenge the
client.
+ if ('::invalid::' == $data['username']) {
+ return $this->_challengeClient();
+ }
+
+ // Verify that the client sent back the same nonce
+ if ($this->_calcNonce() != $data['nonce']) {
+ return $this->_challengeClient();
+ }
+ // The opaque value is also required to match, but of course IE
doesn't
+ // play ball.
+ if (!$this->_ieNoOpaque && $this->_calcOpaque() !=
$data['opaque']) {
+ return $this->_challengeClient();
+ }
+
+ // Look up the user's password hash. If not found, deny access.
+ // This makes no assumptions about how the password hash was
+ // constructed beyond that it must have been built in such a way as
+ // to be recreatable with the current settings of this object.
+ $ha1 = $this->_digestResolver->resolve($data['username'],
$data['realm']);
+ if ($ha1 === false) {
+ return $this->_challengeClient();
+ }
+
+ // If MD5-sess is used, a1 value is made of the user's password
+ // hash with the server and client nonce appended, separated by
+ // colons.
+ if ($this->_algo == 'MD5-sess') {
+ $ha1 = hash('md5', $ha1 . ':' . $data['nonce'] . ':' .
$data['cnonce']);
+ }
+
+ // Calculate h(a2). The value of this hash depends on the qop
+ // option selected by the client and the supported hash functions
+ switch ($data['qop']) {
+ case 'auth':
+ $a2 = $this->_request->getMethod() . ':' . $data['uri'];
+ break;
+ case 'auth-int':
+ // Should be REQUEST_METHOD . ':' . uri . ':' .
hash(entity-body),
+ // but this isn't supported yet, so fall through to
default case
+ default:
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('Client requested an
unsupported qop option');
+ }
+ // Using hash() should make parameterizing the hash algorithm
+ // easier
+ $ha2 = hash('md5', $a2);
+
+
+ // Calculate the server's version of the request-digest. This must
+ // match $data['response']. See RFC 2617, section 3.2.2.1
+ $message = $data['nonce'] . ':' . $data['nc'] . ':' .
$data['cnonce'] . ':' . $data['qop'] . ':' . $ha2;
+ $digest = hash('md5', $ha1 . ':' . $message);
+
+ // If our digest matches the client's let them in, otherwise return
+ // a 401 code and exit to prevent access to the protected resource.
+ if ($digest == $data['response']) {
+ $identity =
array('username'=>$data['username'], 'realm'=>$data['realm']);
+ return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS,
$identity);
+ } else {
+ return $this->_challengeClient();
+ }
+ }
+
+ /**
+ * Calculate Nonce
+ *
+ * @return string The nonce value
+ */
+ protected function _calcNonce()
+ {
+ // Once subtle consequence of this timeout calculation is that it
+ // actually divides all of time into _nonceTimeout-sized sections,
such
+ // that the value of timeout is the point in time of the next
+ // approaching "boundary" of a section. This allows the server to
+ // consistently generate the same timeout (and hence the same nonce
+ // value) across requests, but only as long as one of those
+ // "boundaries" is not crossed between requests. If that happens,
the
+ // nonce will change on its own, and effectively log the user out.
This
+ // would be surprising if the user just logged in.
+ $timeout = ceil(time() / $this->_nonceTimeout) *
$this->_nonceTimeout;
+
+ $nonce = hash('md5', $timeout . ':' .
$this->_request->getServer('HTTP_USER_AGENT') . ':' . __CLASS__);
+ return $nonce;
+ }
+
+ /**
+ * Calculate Opaque
+ *
+ * The opaque string can be anything; the client must return it
exactly as
+ * it was sent. It may be useful to store data in this string in some
+ * applications. Ideally, a new value for this would be generated each
time
+ * a WWW-Authenticate header is sent (in order to reduce
predictability),
+ * but we would have to be able to create the same exact value across
at
+ * least two separate requests from the same client.
+ *
+ * @return string The opaque value
+ */
+ protected function _calcOpaque()
+ {
+ return hash('md5', 'Opaque Data:' . __CLASS__);
+ }
+
+ /**
+ * Parse Digest Authorization header
+ *
+ * @param string $header Client's Authorization: HTTP header
+ * @return array|false Data elements from header, or false if any part
of
+ * the header is invalid
+ */
+ protected function _parseDigestAuth($header)
+ {
+ $temp = null;
+ $data = array();
+
+ // See ZF-1052. Detect invalid usernames instead of just returning
a
+ // 400 code.
+ $ret = preg_match('/username="([^"]+)"/', $header, $temp);
+ if (!$ret || empty($temp[1])
+ || !ctype_print($temp[1])
+ || strpos($temp[1], ':') !== false) {
+ $data['username'] = '::invalid::';
+ } else {
+ $data['username'] = $temp[1];
+ }
+ $temp = null;
+
+ $ret = preg_match('/realm="([^"]+)"/', $header, $temp);
+ if (!$ret || empty($temp[1])) {
+ return false;
+ }
+ if (!ctype_print($temp[1]) || strpos($temp[1], ':') !== false) {
+ return false;
+ } else {
+ $data['realm'] = $temp[1];
+ }
+ $temp = null;
+
+ $ret = preg_match('/nonce="([^"]+)"/', $header, $temp);
+ if (!$ret || empty($temp[1])) {
+ return false;
+ }
+ if (!ctype_xdigit($temp[1])) {
+ return false;
+ } else {
+ $data['nonce'] = $temp[1];
+ }
+ $temp = null;
+
+ $ret = preg_match('/uri="([^"]+)"/', $header, $temp);
+ if (!$ret || empty($temp[1])) {
+ return false;
+ }
+ // Section 3.2.2.5 in RFC 2617 says the authenticating server must
+ // verify that the URI field in the Authorization header is for the
+ // same resource requested in the Request Line.
+ $rUri = @parse_url($this->_request->getRequestUri());
+ $cUri = @parse_url($temp[1]);
+ if (false === $rUri || false === $cUri) {
+ return false;
+ } else {
+ // Make sure the path portion of both URIs is the same
+ if ($rUri['path'] != $cUri['path']) {
+ return false;
+ }
+ // Section 3.2.2.5 seems to suggest that the value of the URI
+ // Authorization field should be made into an absolute URI if
the
+ // Request URI is absolute, but it's vague, and that's a bunch
of
+ // code I don't want to write right now.
+ $data['uri'] = $temp[1];
+ }
+ $temp = null;
+
+ $ret = preg_match('/response="([^"]+)"/', $header, $temp);
+ if (!$ret || empty($temp[1])) {
+ return false;
+ }
+ if (32 != strlen($temp[1]) || !ctype_xdigit($temp[1])) {
+ return false;
+ } else {
+ $data['response'] = $temp[1];
+ }
+ $temp = null;
+
+ // The spec says this should default to MD5 if omitted. OK, so how
does
+ // that square with the algo we send out in the WWW-Authenticate
header,
+ // if it can easily be overridden by the client?
+ $ret = preg_match('/algorithm="?(' . $this->_algo . ')"?/',
$header, $temp);
+ if ($ret && !empty($temp[1])
+ && in_array($temp[1], $this->_supportedAlgos)) {
+ $data['algorithm'] = $temp[1];
+ } else {
+ $data['algorithm'] = 'MD5'; // = $this->_algo; ?
+ }
+ $temp = null;
+
+ // Not optional in this implementation
+ $ret = preg_match('/cnonce="([^"]+)"/', $header, $temp);
+ if (!$ret || empty($temp[1])) {
+ return false;
+ }
+ if (!ctype_print($temp[1])) {
+ return false;
+ } else {
+ $data['cnonce'] = $temp[1];
+ }
+ $temp = null;
+
+ // If the server sent an opaque value, the client must send it back
+ if ($this->_useOpaque) {
+ $ret = preg_match('/opaque="([^"]+)"/', $header, $temp);
+ if (!$ret || empty($temp[1])) {
+
+ // Big surprise: IE isn't RFC 2617-compliant.
+ if (false !==
strpos($this->_request->getHeader('User-Agent'), 'MSIE')) {
+ $temp[1] = '';
+ $this->_ieNoOpaque = true;
+ } else {
+ return false;
+ }
+ }
+ // This implementation only sends MD5 hex strings in the
opaque value
+ if (!$this->_ieNoOpaque &&
+ (32 != strlen($temp[1]) || !ctype_xdigit($temp[1]))) {
+ return false;
+ } else {
+ $data['opaque'] = $temp[1];
+ }
+ $temp = null;
+ }
+
+ // Not optional in this implementation, but must be one of the
supported
+ // qop types
+ $ret = preg_match('/qop="?(' . implode('|',
$this->_supportedQops) . ')"?/', $header, $temp);
+ if (!$ret || empty($temp[1])) {
+ return false;
+ }
+ if (!in_array($temp[1], $this->_supportedQops)) {
+ return false;
+ } else {
+ $data['qop'] = $temp[1];
+ }
+ $temp = null;
+
+ // Not optional in this implementation. The spec says this value
+ // shouldn't be a quoted string, but apparently some
implementations
+ // quote it anyway. See ZF-1544.
+ $ret = preg_match('/nc="?([0-9A-Fa-f]{8})"?/', $header, $temp);
+ if (!$ret || empty($temp[1])) {
+ return false;
+ }
+ if (8 != strlen($temp[1]) || !ctype_xdigit($temp[1])) {
+ return false;
+ } else {
+ $data['nc'] = $temp[1];
+ }
+ $temp = null;
+
+ return $data;
+ }
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/InfoCard.php Wed
Apr 25 15:32:46 2012
@@ -0,0 +1,261 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: InfoCard.php 9231 2008-04-16 20:26:24Z matthew $
+ */
+
+/**
+ * @see Zend_Auth_Adapter_Interface
+ */
+require_once 'Zend/Auth/Adapter/Interface.php';
+
+/**
+ * @see Zend_Auth_Result
+ */
+require_once 'Zend/Auth/Result.php';
+
+/**
+ * @see Zend_InfoCard
+ */
+require_once 'Zend/InfoCard.php';
+
+/**
+ * A Zend_Auth Authentication Adapter allowing the use of Information
Cards as an
+ * authentication mechanism
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Adapter_InfoCard implements Zend_Auth_Adapter_Interface
+{
+ /**
+ * The XML Token being authenticated
+ *
+ * @var string
+ */
+ protected $_xmlToken;
+
+ /**
+ * The instance of Zend_InfoCard
+ *
+ * @var Zend_InfoCard
+ */
+ protected $_infoCard;
+
+ /**
+ * Constructor
+ *
+ * @param string $strXmlDocument The XML Token provided by the client
+ * @return void
+ */
+ public function __construct($strXmlDocument)
+ {
+ $this->_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
+ );
+ }
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Interface.php Wed
Apr 25 15:32:46 2012
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Interface.php 8964 2008-03-21 17:53:14Z thomas $
+ */
+
+
+/**
+ * @see Zend_Auth_Result
+ */
+require_once 'Zend/Auth/Result.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+interface Zend_Auth_Adapter_Interface
+{
+ /**
+ * Performs an authentication attempt
+ *
+ * @throws Zend_Auth_Adapter_Exception If authentication cannot be
performed
+ * @return Zend_Auth_Result
+ */
+ public function authenticate();
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/Ldap.php Wed Apr
25 15:32:46 2012
@@ -0,0 +1,273 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Ldap.php 8964 2008-03-21 17:53:14Z thomas $
+ */
+
+/**
+ * @see Zend_Auth_Adapter_Interface
+ */
+require_once 'Zend/Auth/Adapter/Interface.php';
+
+/**
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Adapter_Ldap implements Zend_Auth_Adapter_Interface
+{
+
+ /**
+ * The Zend_Ldap context.
+ *
+ * @var Zend_Ldap
+ */
+ protected $_ldap = null;
+
+ /**
+ * The array of arrays of Zend_Ldap options passed to the constructor.
+ *
+ * @var array
+ */
+ protected $_options = null;
+
+ /**
+ * The username of the account being authenticated.
+ *
+ * @var string
+ */
+ protected $_username = null;
+
+ /**
+ * The password of the account being authenticated.
+ *
+ * @var string
+ */
+ protected $_password = null;
+
+ /**
+ * Constructor
+ *
+ * @param array $options An array of arrays of Zend_Ldap options
+ * @param string $username The username of the account being
authenticated
+ * @param string $password The password of the account being
authenticated
+ * @return void
+ */
+ public function __construct(array $options = array(), $username =
null, $password = null)
+ {
+ $this->_options = $options;
+ if ($username !== null) {
+ $this->setUsername($username);
+ }
+ if ($password !== null) {
+ $this->setPassword($password);
+ }
+ }
+
+ /**
+ * Returns the username of the account being authenticated, or
+ * NULL if none is set.
+ *
+ * @return string|null
+ */
+ public function getUsername()
+ {
+ return $this->_username;
+ }
+
+ /**
+ * Sets the username for binding
+ *
+ * @param string $username The username for binding
+ * @return Zend_Auth_Adapter_Ldap Provides a fluent interface
+ */
+ public function setUsername($username)
+ {
+ $this->_username = (string) $username;
+ return $this;
+ }
+
+ /**
+ * Returns the password of the account being authenticated, or
+ * NULL if none is set.
+ *
+ * @return string|null
+ */
+ public function getPassword()
+ {
+ return $this->_password;
+ }
+
+ /**
+ * Sets the passwort for the account
+ *
+ * @param string $password The password of the account being
authenticated
+ * @return Zend_Auth_Adapter_Ldap Provides a fluent interface
+ */
+ public function setPassword($password)
+ {
+ $this->_password = (string) $password;
+ return $this;
+ }
+
+ /**
+ * Returns the LDAP Object
+ *
+ * @return Zend_Ldap The Zend_Ldap object used to authenticate the
credentials
+ */
+ public function getLdap()
+ {
+ if ($this->_ldap === null) {
+ /**
+ * @see Zend_Ldap
+ */
+ require_once 'Zend/Ldap.php';
+ $this->_ldap = new Zend_Ldap();
+ }
+ return $this->_ldap;
+ }
+
+ /**
+ * Authenticate the user
+ *
+ * @throws Zend_Auth_Adapter_Exception
+ * @return Zend_Auth_Result
+ */
+ public function authenticate()
+ {
+ /**
+ * @see Zend_Ldap_Exception
+ */
+ require_once 'Zend/Ldap/Exception.php';
+
+ $messages = array();
+ $messages[0] = ''; // reserved
+ $messages[1] = ''; // reserved
+
+ $username = $this->_username;
+ $password = $this->_password;
+
+ if (!$username) {
+ $code = Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND;
+ $messages[0] = 'A username is required';
+ return new Zend_Auth_Result($code, '', $messages);
+ }
+ if (!$password) {
+ /* A password is required because some servers will
+ * treat an empty password as an anonymous bind.
+ */
+ $code = Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID;
+ $messages[0] = 'A password is required';
+ return new Zend_Auth_Result($code, '', $messages);
+ }
+
+ $ldap = $this->getLdap();
+
+ $code = Zend_Auth_Result::FAILURE;
+ $messages[0] = "Authority not found: $username";
+
+ /* Iterate through each server and try to authenticate the supplied
+ * credentials against it.
+ */
+ foreach ($this->_options as $name => $options) {
+
+ if (!is_array($options)) {
+ /**
+ * @see Zend_Auth_Adapter_Exception
+ */
+ require_once 'Zend/Auth/Adapter/Exception.php';
+ throw new Zend_Auth_Adapter_Exception('Adapter options
array not in array');
+ }
+ $ldap->setOptions($options);
+
+ try {
+
+ $canonicalName = $ldap->getCanonicalAccountName($username);
+
+ if ($messages[1])
+ $messages[] = $messages[1];
+ $messages[1] = '';
+ $messages[] = $this->_optionsToString($options);
+
+ $ldap->bind($canonicalName, $password);
+
+ $messages[0] = '';
+ $messages[1] = '';
+ $messages[] = "$canonicalName authentication successful";
+
+ return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS,
$canonicalName, $messages);
+ } catch (Zend_Ldap_Exception $zle) {
+
+ /* LDAP based authentication is notoriously difficult to
diagnose. Therefore
+ * we bend over backwards to capture and record every
possible bit of
+ * information when something goes wrong.
+ */
+
+ $err = $zle->getCode();
+
+ if ($err == Zend_Ldap_Exception::LDAP_X_DOMAIN_MISMATCH) {
+ /* This error indicates that the domain supplied in the
+ * username did not match the domains in the server
options
+ * and therefore we should just skip to the next set of
+ * server options.
+ */
+ continue;
+ } else if ($err ==
Zend_Ldap_Exception::LDAP_NO_SUCH_OBJECT) {
+ $code = Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND;
+ $messages[0] = "Account not found: $username";
+ } else if ($err ==
Zend_Ldap_Exception::LDAP_INVALID_CREDENTIALS) {
+ $code = Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID;
+ $messages[0] = 'Invalid credentials';
+ } else {
+ $line = $zle->getLine();
+ $messages[] = $zle->getFile() . "($line): " .
$zle->getMessage();
+ $messages[] = str_replace($password, '*****',
$zle->getTraceAsString());
+ $messages[0] = 'An unexpected failure occurred';
+ }
+ $messages[1] = $zle->getMessage();
+ }
+ }
+
+ $msg = isset($messages[1]) ? $messages[1] : $messages[0];
+ $messages[] = "$username authentication failed: $msg";
+
+ return new Zend_Auth_Result($code, $username, $messages);
+ }
+
+ /**
+ * Converts options to string
+ *
+ * @param array $options
+ * @return string
+ */
+ private function _optionsToString(array $options)
+ {
+ $str = '';
+ foreach ($options as $key => $val) {
+ if ($key === 'password')
+ $val = '*****';
+ if ($str)
+ $str .= ',';
+ $str .= $key . '=' . $val;
+ }
+ return $str;
+ }
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Adapter/OpenId.php Wed
Apr 25 15:32:46 2012
@@ -0,0 +1,290 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: OpenId.php 10097 2008-07-15 15:14:38Z dmitry $
+ */
+
+
+/**
+ * @see Zend_Auth_Adapter_Interface
+ */
+require_once 'Zend/Auth/Adapter/Interface.php';
+
+
+/**
+ * @see Zend_OpenId_Consumer
+ */
+require_once 'Zend/OpenId/Consumer.php';
+
+
+/**
+ * A Zend_Auth Authentication Adapter allowing the use of OpenID protocol
as an
+ * authentication mechanism
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Adapter
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Adapter_OpenId implements Zend_Auth_Adapter_Interface
+{
+ /**
+ * The identity value being authenticated
+ *
+ * @var string
+ */
+ private $_id = null;
+
+ /**
+ * Reference to an implementation of a storage object
+ *
+ * @var Zend_OpenId_Consumer_Storage
+ */
+ private $_storage = null;
+
+ /**
+ * The URL to redirect response from server to
+ *
+ * @var string
+ */
+ private $_returnTo = null;
+
+ /**
+ * The HTTP URL to identify consumer on server
+ *
+ * @var string
+ */
+ private $_root = null;
+
+ /**
+ * Extension object or array of extensions objects
+ *
+ * @var string
+ */
+ private $_extensions = null;
+
+ /**
+ * The response object to perform HTTP or HTML form redirection
+ *
+ * @var Zend_Controller_Response_Abstract
+ */
+ private $_response = null;
+
+ /**
+ * Enables or disables interaction with user during authentication on
+ * OpenID provider.
+ *
+ * @var bool
+ */
+ private $_check_immediate = false;
+
+ /**
+ * HTTP client to make HTTP requests
+ *
+ * @var Zend_Http_Client $_httpClient
+ */
+ private $_httpClient = null;
+
+ /**
+ * Constructor
+ *
+ * @param string $id the identity value
+ * @param Zend_OpenId_Consumer_Storage $storage an optional
implementation
+ * of a storage object
+ * @param string $returnTo HTTP URL to redirect response from server to
+ * @param string $root HTTP URL to identify consumer on server
+ * @param mixed $extensions extension object or array of extensions
objects
+ * @param Zend_Controller_Response_Abstract $response an optional
response
+ * object to perform HTTP or HTML form redirection
+ * @return void
+ */
+ public function __construct($id = null,
+ Zend_OpenId_Consumer_Storage $storage =
null,
+ $returnTo = null,
+ $root = null,
+ $extensions = null,
+ Zend_Controller_Response_Abstract
$response = null) {
+ $this->_id = $id;
+ $this->_storage = $storage;
+ $this->_returnTo = $returnTo;
+ $this->_root = $root;
+ $this->_extensions = $extensions;
+ $this->_response = $response;
+ }
+
+ /**
+ * Sets the value to be used as the identity
+ *
+ * @param string $id the identity value
+ * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
+ */
+ public function setIdentity($id)
+ {
+ $this->_id = $id;
+ return $this;
+ }
+
+ /**
+ * Sets the storage implementation which will be use by OpenId
+ *
+ * @param Zend_OpenId_Consumer_Storage $storage
+ * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
+ */
+ public function setStorage(Zend_OpenId_Consumer_Storage $storage)
+ {
+ $this->_storage = $storage;
+ return $this;
+ }
+
+ /**
+ * Sets the HTTP URL to redirect response from server to
+ *
+ * @param string $returnTo
+ * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
+ */
+ public function setReturnTo($returnTo)
+ {
+ $this->_returnTo = $returnTo;
+ return $this;
+ }
+
+ /**
+ * Sets HTTP URL to identify consumer on server
+ *
+ * @param string $root
+ * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
+ */
+ public function setRoot($root)
+ {
+ $this->_root = $root;
+ return $this;
+ }
+
+ /**
+ * Sets OpenID extension(s)
+ *
+ * @param mixed $extensions
+ * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
+ */
+ public function setExtensions($extensions)
+ {
+ $this->_extensions = $extensions;
+ return $this;
+ }
+
+ /**
+ * Sets an optional response object to perform HTTP or HTML form
redirection
+ *
+ * @param string $root
+ * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
+ */
+ public function setResponse($response)
+ {
+ $this->_response = $response;
+ return $this;
+ }
+
+ /**
+ * Enables or disables interaction with user during authentication on
+ * OpenID provider.
+ *
+ * @param bool $check_immediate
+ * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
+ */
+ public function setCheckImmediate($check_immediate)
+ {
+ $this->_check_immediate = $check_immediate;
+ return $this;
+ }
+
+ /**
+ * Sets HTTP client object to make HTTP requests
+ *
+ * @param Zend_Http_Client $client HTTP client object to be used
+ */
+ public function setHttpClient($client) {
+ $this->_httpClient = $client;
+ }
+
+ /**
+ * Authenticates the given OpenId identity.
+ * Defined by Zend_Auth_Adapter_Interface.
+ *
+ * @throws Zend_Auth_Adapter_Exception If answering the authentication
query is impossible
+ * @return Zend_Auth_Result
+ */
+ public function authenticate() {
+ $id = $this->_id;
+ if (!empty($id)) {
+ $consumer = new Zend_OpenId_Consumer($this->_storage);
+ $consumer->setHttpClient($this->_httpClient);
+ /* login() is never returns on success */
+ if (!$this->_check_immediate) {
+ if (!$consumer->login($id,
+ $this->_returnTo,
+ $this->_root,
+ $this->_extensions,
+ $this->_response)) {
+ return new Zend_Auth_Result(
+ Zend_Auth_Result::FAILURE,
+ $id,
+ array("Authentication failed"));
+ }
+ } else {
+ if (!$consumer->check($id,
+ $this->_returnTo,
+ $this->_root,
+ $this->_extensions,
+ $this->_response)) {
+ return new Zend_Auth_Result(
+ Zend_Auth_Result::FAILURE,
+ $id,
+ array("Authentication failed"));
+ }
+ }
+ } else {
+ $params = (isset($_SERVER['REQUEST_METHOD']) &&
+ $_SERVER['REQUEST_METHOD']=='POST') ? $_POST: $_GET;
+ if (!isset($params['openid_mode'])) {
+ return new Zend_Auth_Result(
+ Zend_Auth_Result::FAILURE,
+ $id,
+ array("Authentication failed"));
+ }
+ $consumer = new Zend_OpenId_Consumer($this->_storage);
+ $consumer->setHttpClient($this->_httpClient);
+ if ($consumer->verify(
+ $params,
+ $id,
+ $this->_extensions)) {
+ return new Zend_Auth_Result(
+ Zend_Auth_Result::SUCCESS,
+ $id,
+ array("Authentication successful"));
+ } else {
+ return new Zend_Auth_Result(
+ Zend_Auth_Result::FAILURE,
+ $id,
+ array("Authentication failed"));
+ }
+ }
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Exception.php Wed Apr 25
15:32:46 2012
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Exception.php 8964 2008-03-21 17:53:14Z thomas $
+ */
+
+
+/**
+ * @see Zend_Exception
+ */
+require_once 'Zend/Exception.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Auth
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Exception extends Zend_Exception
+{}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Result.php Wed Apr 25
15:32:46 2012
@@ -0,0 +1,148 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Result.php 8964 2008-03-21 17:53:14Z thomas $
+ */
+
+
+/**
+ * @category Zend
+ * @package Zend_Auth
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Result
+{
+ /**
+ * General Failure
+ */
+ const FAILURE = 0;
+
+ /**
+ * Failure due to identity not being found.
+ */
+ const FAILURE_IDENTITY_NOT_FOUND = -1;
+
+ /**
+ * Failure due to identity being ambiguous.
+ */
+ const FAILURE_IDENTITY_AMBIGUOUS = -2;
+
+ /**
+ * Failure due to invalid credential being supplied.
+ */
+ const FAILURE_CREDENTIAL_INVALID = -3;
+
+ /**
+ * Failure due to uncategorized reasons.
+ */
+ const FAILURE_UNCATEGORIZED = -4;
+
+ /**
+ * Authentication success.
+ */
+ const SUCCESS = 1;
+
+ /**
+ * Authentication result code
+ *
+ * @var int
+ */
+ protected $_code;
+
+ /**
+ * The identity used in the authentication attempt
+ *
+ * @var mixed
+ */
+ protected $_identity;
+
+ /**
+ * An array of string reasons why the authentication attempt was
unsuccessful
+ *
+ * If authentication was successful, this should be an empty array.
+ *
+ * @var array
+ */
+ protected $_messages;
+
+ /**
+ * Sets the result code, identity, and failure messages
+ *
+ * @param int $code
+ * @param mixed $identity
+ * @param array $messages
+ * @return void
+ */
+ public function __construct($code, $identity, array $messages =
array())
+ {
+ $code = (int) $code;
+
+ if ($code < self::FAILURE_UNCATEGORIZED) {
+ $code = self::FAILURE;
+ } elseif ($code > self::SUCCESS ) {
+ $code = 1;
+ }
+
+ $this->_code = $code;
+ $this->_identity = $identity;
+ $this->_messages = $messages;
+ }
+
+ /**
+ * Returns whether the result represents a successful authentication
attempt
+ *
+ * @return boolean
+ */
+ public function isValid()
+ {
+ return ($this->_code > 0) ? true : false;
+ }
+
+ /**
+ * getCode() - Get the result code for this authentication attempt
+ *
+ * @return int
+ */
+ public function getCode()
+ {
+ return $this->_code;
+ }
+
+ /**
+ * Returns the identity used in the authentication attempt
+ *
+ * @return mixed
+ */
+ public function getIdentity()
+ {
+ return $this->_identity;
+ }
+
+ /**
+ * Returns an array of string reasons why the authentication attempt
was unsuccessful
+ *
+ * If authentication was successful, this method returns an empty
array.
+ *
+ * @return array
+ */
+ public function getMessages()
+ {
+ return $this->_messages;
+ }
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Storage/Exception.php Wed
Apr 25 15:32:46 2012
@@ -0,0 +1,38 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Storage
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Exception.php 9231 2008-04-16 20:26:24Z matthew $
+ */
+
+
+/**
+ * @see Zend_Auth_Exception
+ */
+require_once 'Zend/Auth/Exception.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Storage
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Storage_Exception extends Zend_Auth_Exception
+{}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Storage/Interface.php Wed
Apr 25 15:32:46 2012
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Storage
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Interface.php 8964 2008-03-21 17:53:14Z thomas $
+ */
+
+
+/**
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Storage
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+interface Zend_Auth_Storage_Interface
+{
+ /**
+ * Returns true if and only if storage is empty
+ *
+ * @throws Zend_Auth_Storage_Exception If it is impossible to
determine whether storage is empty
+ * @return boolean
+ */
+ public function isEmpty();
+
+ /**
+ * Returns the contents of storage
+ *
+ * Behavior is undefined when storage is empty.
+ *
+ * @throws Zend_Auth_Storage_Exception If reading contents from
storage is impossible
+ * @return mixed
+ */
+ public function read();
+
+ /**
+ * Writes $contents to storage
+ *
+ * @param mixed $contents
+ * @throws Zend_Auth_Storage_Exception If writing $contents to storage
is impossible
+ * @return void
+ */
+ public function write($contents);
+
+ /**
+ * Clears contents from storage
+ *
+ * @throws Zend_Auth_Storage_Exception If clearing contents from
storage is impossible
+ * @return void
+ */
+ public function clear();
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Storage/NonPersistent.php
Wed Apr 25 15:32:46 2012
@@ -0,0 +1,96 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Storage
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: NonPersistent.php 8964 2008-03-21 17:53:14Z thomas $
+ */
+
+
+/**
+ * @see Zend_Auth_Storage_Interface
+ */
+require_once 'Zend/Auth/Storage/Interface.php';
+
+
+/**
+ * Non-Persistent Auth Storage
+ *
+ * Since HTTP Authentication happens again on each request, this will
always be
+ * re-populated. So there's no need to use sessions, this simple value
class
+ * will hold the data for rest of the current request.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Storage
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Storage_NonPersistent implements
Zend_Auth_Storage_Interface
+{
+ /**
+ * Holds the actual auth data
+ */
+ protected $_data;
+
+
+ /**
+ * Returns true if and only if storage is empty
+ *
+ * @throws Zend_Auth_Storage_Exception If it is impossible to
determine whether storage is empty
+ * @return boolean
+ */
+ public function isEmpty()
+ {
+ return empty($this->_data);
+ }
+
+ /**
+ * Returns the contents of storage
+ * Behavior is undefined when storage is empty.
+ *
+ * @throws Zend_Auth_Storage_Exception If reading contents from
storage is impossible
+ * @return mixed
+ */
+ public function read()
+ {
+ return $this->_data;
+ }
+
+ /**
+ * Writes $contents to storage
+ *
+ * @param mixed $contents
+ * @throws Zend_Auth_Storage_Exception If writing $contents to storage
is impossible
+ * @return void
+ */
+ public function write($contents)
+ {
+ $this->_data = $contents;
+ }
+
+ /**
+ * Clears contents from storage
+ *
+ * @throws Zend_Auth_Storage_Exception If clearing contents from
storage is impossible
+ * @return void
+ */
+ public function clear()
+ {
+ $this->_data = null;
+ }
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth/Storage/Session.php Wed
Apr 25 15:32:46 2012
@@ -0,0 +1,150 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Storage
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Session.php 8964 2008-03-21 17:53:14Z thomas $
+ */
+
+
+/**
+ * @see Zend_Auth_Storage_Interface
+ */
+require_once 'Zend/Auth/Storage/Interface.php';
+
+
+/**
+ * @see Zend_Session
+ */
+require_once 'Zend/Session.php';
+
+
+/**
+ * @category Zend
+ * @package Zend_Auth
+ * @subpackage Zend_Auth_Storage
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth_Storage_Session implements Zend_Auth_Storage_Interface
+{
+ /**
+ * Default session namespace
+ */
+ const NAMESPACE_DEFAULT = 'Zend_Auth';
+
+ /**
+ * Default session object member name
+ */
+ const MEMBER_DEFAULT = 'storage';
+
+ /**
+ * Object to proxy $_SESSION storage
+ *
+ * @var Zend_Session_Namespace
+ */
+ protected $_session;
+
+ /**
+ * Session namespace
+ *
+ * @var mixed
+ */
+ protected $_namespace;
+
+ /**
+ * Session object member
+ *
+ * @var mixed
+ */
+ protected $_member;
+
+ /**
+ * Sets session storage options and initializes session namespace
object
+ *
+ * @param mixed $namespace
+ * @param mixed $member
+ * @return void
+ */
+ public function __construct($namespace = self::NAMESPACE_DEFAULT,
$member = self::MEMBER_DEFAULT)
+ {
+ $this->_namespace = $namespace;
+ $this->_member = $member;
+ $this->_session = new Zend_Session_Namespace($this->_namespace);
+ }
+
+ /**
+ * Returns the session namespace
+ *
+ * @return string
+ */
+ public function getNamespace()
+ {
+ return $this->_namespace;
+ }
+
+ /**
+ * Returns the name of the session object member
+ *
+ * @return string
+ */
+ public function getMember()
+ {
+ return $this->_member;
+ }
+
+ /**
+ * Defined by Zend_Auth_Storage_Interface
+ *
+ * @return boolean
+ */
+ public function isEmpty()
+ {
+ return !isset($this->_session->{$this->_member});
+ }
+
+ /**
+ * Defined by Zend_Auth_Storage_Interface
+ *
+ * @return mixed
+ */
+ public function read()
+ {
+ return $this->_session->{$this->_member};
+ }
+
+ /**
+ * Defined by Zend_Auth_Storage_Interface
+ *
+ * @param mixed $contents
+ * @return void
+ */
+ public function write($contents)
+ {
+ $this->_session->{$this->_member} = $contents;
+ }
+
+ /**
+ * Defined by Zend_Auth_Storage_Interface
+ *
+ * @return void
+ */
+ public function clear()
+ {
+ unset($this->_session->{$this->_member});
+ }
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Auth.php Wed Apr 25 15:32:46
2012
@@ -0,0 +1,161 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Auth
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ * @version $Id: Auth.php 9136 2008-04-04 13:58:29Z thomas $
+ */
+
+
+/**
+ * @category Zend
+ * @package Zend_Auth
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Auth
+{
+ /**
+ * Singleton instance
+ *
+ * @var Zend_Auth
+ */
+ protected static $_instance = null;
+
+ /**
+ * Persistent storage handler
+ *
+ * @var Zend_Auth_Storage_Interface
+ */
+ protected $_storage = null;
+
+ /**
+ * Singleton pattern implementation makes "new" unavailable
+ *
+ * @return void
+ */
+ private function __construct()
+ {}
+
+ /**
+ * Singleton pattern implementation makes "clone" unavailable
+ *
+ * @return void
+ */
+ private function __clone()
+ {}
+
+ /**
+ * Returns an instance of Zend_Auth
+ *
+ * Singleton pattern implementation
+ *
+ * @return Zend_Auth Provides a fluent interface
+ */
+ public static function getInstance()
+ {
+ if (null === self::$_instance) {
+ self::$_instance = new self();
+ }
+
+ return self::$_instance;
+ }
+
+ /**
+ * Returns the persistent storage handler
+ *
+ * Session storage is used by default unless a different storage
adapter has been set.
+ *
+ * @return Zend_Auth_Storage_Interface
+ */
+ public function getStorage()
+ {
+ if (null === $this->_storage) {
+ /**
+ * @see Zend_Auth_Storage_Session
+ */
+ require_once 'Zend/Auth/Storage/Session.php';
+ $this->setStorage(new Zend_Auth_Storage_Session());
+ }
+
+ return $this->_storage;
+ }
+
+ /**
+ * Sets the persistent storage handler
+ *
+ * @param Zend_Auth_Storage_Interface $storage
+ * @return Zend_Auth Provides a fluent interface
+ */
+ public function setStorage(Zend_Auth_Storage_Interface $storage)
+ {
+ $this->_storage = $storage;
+ return $this;
+ }
+
+ /**
+ * Authenticates against the supplied adapter
+ *
+ * @param Zend_Auth_Adapter_Interface $adapter
+ * @return Zend_Auth_Result
+ */
+ public function authenticate(Zend_Auth_Adapter_Interface $adapter)
+ {
+ $result = $adapter->authenticate();
+
+ if ($result->isValid()) {
+ $this->getStorage()->write($result->getIdentity());
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns true if and only if an identity is available from storage
+ *
+ * @return boolean
+ */
+ public function hasIdentity()
+ {
+ return !$this->getStorage()->isEmpty();
+ }
+
+ /**
+ * Returns the identity from storage or null if no identity is
available
+ *
+ * @return mixed|null
+ */
+ public function getIdentity()
+ {
+ $storage = $this->getStorage();
+
+ if ($storage->isEmpty()) {
+ return null;
+ }
+
+ return $storage->read();
+ }
+
+ /**
+ * Clears the identity from persistent storage
+ *
+ * @return void
+ */
+ public function clearIdentity()
+ {
+ $this->getStorage()->clear();
+ }
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/Apc.php Wed Apr
25 15:32:46 2012
@@ -0,0 +1,167 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+
+
+/**
+ * @see Zend_Cache_Backend_Interface
+ */
+require_once 'Zend/Cache/Backend/Interface.php';
+
+/**
+ * @see Zend_Cache_Backend
+ */
+require_once 'Zend/Cache/Backend.php';
+
+
+/**
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Cache_Backend_Apc extends Zend_Cache_Backend implements
Zend_Cache_Backend_Interface
+{
+ /**
+ * Constructor
+ *
+ * @param array $options associative array of options
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ public function __construct($options = array())
+ {
+ if (!extension_loaded('apc')) {
+ Zend_Cache::throwException('The apc extension must be loaded
for using this backend !');
+ }
+ parent::__construct($options);
+ }
+
+ /**
+ * Test if a cache is available for the given id and (if yes) return
it (false else)
+ *
+ * WARNING $doNotTestCacheValidity=true is unsupported by the Apc
backend
+ *
+ * @param string $id cache id
+ * @param boolean $doNotTestCacheValidity if set to true, the cache
validity won't be tested
+ * @return string cached datas (or false)
+ */
+ public function load($id, $doNotTestCacheValidity = false)
+ {
+ if ($doNotTestCacheValidity) {
+ $this->_log("Zend_Cache_Backend_Apc::load() :
\$doNotTestCacheValidity=true is unsupported by the Apc backend");
+ }
+ $tmp = apc_fetch($id);
+ if (is_array($tmp)) {
+ return $tmp[0];
+ }
+ return false;
+ }
+
+ /**
+ * Test if a cache is available or not (for the given id)
+ *
+ * @param string $id cache id
+ * @return mixed false (a cache is not available) or "last modified"
timestamp (int) of the available cache record
+ */
+ public function test($id)
+ {
+ $tmp = apc_fetch($id);
+ if (is_array($tmp)) {
+ return $tmp[1];
+ }
+ return false;
+ }
+
+ /**
+ * Save some string datas into a cache record
+ *
+ * Note : $data is always "string" (serialization is done by the
+ * core not by the backend)
+ *
+ * @param string $data datas to cache
+ * @param string $id cache id
+ * @param array $tags array of strings, the cache record will be
tagged by each string entry
+ * @param int $specificLifetime if != false, set a specific lifetime
for this cache record (null => infinite lifetime)
+ * @return boolean true if no problem
+ */
+ public function save($data, $id, $tags = array(), $specificLifetime =
false)
+ {
+ $lifetime = $this->getLifetime($specificLifetime);
+ $result = apc_store($id, array($data, time()), $lifetime);
+ if (count($tags) > 0) {
+ $this->_log("Zend_Cache_Backend_Apc::save() : tags are
unsupported by the Apc backend");
+ }
+ return $result;
+ }
+
+ /**
+ * Remove a cache record
+ *
+ * @param string $id cache id
+ * @return boolean true if no problem
+ */
+ public function remove($id)
+ {
+ return apc_delete($id);
+ }
+
+ /**
+ * Clean some cache records
+ *
+ * Available modes are :
+ * 'all' (default) => remove all cache entries ($tags is not used)
+ * 'old' => remove too old cache entries ($tags is not used)
+ * 'matchingTag' => remove cache entries matching all given tags
+ * ($tags can be an array of strings or a single
string)
+ * 'notMatchingTag' => remove cache entries not matching one of the
given tags
+ * ($tags can be an array of strings or a single
string)
+ *
+ * @param string $mode clean mode
+ * @param array $tags array of tags
+ * @return boolean true if no problem
+ */
+ public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags =
array())
+ {
+ if ($mode==Zend_Cache::CLEANING_MODE_ALL) {
+ return apc_clear_cache('user');
+ }
+ if ($mode==Zend_Cache::CLEANING_MODE_OLD) {
+ $this->_log("Zend_Cache_Backend_Apc::clean() :
CLEANING_MODE_OLD is unsupported by the Apc backend");
+ }
+ if ($mode==Zend_Cache::CLEANING_MODE_MATCHING_TAG) {
+ $this->_log("Zend_Cache_Backend_Apc::clean() : tags are
unsupported by the Apc backend");
+ }
+ if ($mode==Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG) {
+ $this->_log("Zend_Cache_Backend_Apc::clean() : tags are
unsupported by the Apc backend");
+ }
+ }
+
+ /**
+ * Return true if the automatic cleaning is available for the backend
+ *
+ * @return boolean
+ */
+ public function isAutomaticCleaningAvailable()
+ {
+ return false;
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/File.php Wed Apr
25 15:32:46 2012
@@ -0,0 +1,716 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+
+
+/**
+ * @see Zend_Cache_Backend_Interface
+ */
+require_once 'Zend/Cache/Backend/Interface.php';
+
+/**
+ * @see Zend_Cache_Backend
+ */
+require_once 'Zend/Cache/Backend.php';
+
+
+/**
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Cache_Backend_File extends Zend_Cache_Backend implements
Zend_Cache_Backend_Interface
+{
+ /**
+ * Available options
+ *
+ * =====> (string) cache_dir :
+ * - Directory where to put the cache files
+ *
+ * =====> (boolean) file_locking :
+ * - Enable / disable file_locking
+ * - Can avoid cache corruption under bad circumstances but it doesn't
work on multithread
+ * webservers and on NFS filesystems for example
+ *
+ * =====> (boolean) read_control :
+ * - Enable / disable read control
+ * - If enabled, a control key is embeded in cache file and this key
is compared with the one
+ * calculated after the reading.
+ *
+ * =====> (string) read_control_type :
+ * - Type of read control (only if read control is enabled). Available
values are :
+ * 'md5' for a md5 hash control (best but slowest)
+ * 'crc32' for a crc32 hash control (lightly less safe but faster,
better choice)
+ * 'adler32' for an adler32 hash control (excellent choice too,
faster than crc32)
+ * 'strlen' for a length only test (fastest)
+ *
+ * =====> (int) hashed_directory_level :
+ * - Hashed directory level
+ * - Set the hashed directory structure level. 0 means "no hashed
directory
+ * structure", 1 means "one level of directory", 2 means "two
levels"...
+ * This option can speed up the cache only when you have many
thousands of
+ * cache file. Only specific benchs can help you to choose the perfect
value
+ * for you. Maybe, 1 or 2 is a good start.
+ *
+ * =====> (int) hashed_directory_umask :
+ * - Umask for hashed directory structure
+ *
+ * =====> (string) file_name_prefix :
+ * - prefix for cache files
+ * - be really carefull with this option because a too generic value
in a system cache dir
+ * (like /tmp) can cause disasters when cleaning the cache
+ *
+ * =====> (int) cache_file_umask :
+ * - Umask for cache files
+ *
+ * =====> (int) metatadatas_array_max_size :
+ * - max size for the metadatas array (don't change this value unless
you
+ * know what you are doing)
+ *
+ * @var array available options
+ */
+ protected $_options = array(
+ 'cache_dir' => null,
+ 'file_locking' => true,
+ 'read_control' => true,
+ 'read_control_type' => 'crc32',
+ 'hashed_directory_level' => 0,
+ 'hashed_directory_umask' => 0700,
+ 'file_name_prefix' => 'zend_cache',
+ 'cache_file_umask' => 0600,
+ 'metadatas_array_max_size' => 100
+ );
+
+ /**
+ * Array of metadatas (each item is an associative array)
+ *
+ * @var array
+ */
+ private $_metadatasArray = array();
+
+
+ /**
+ * Constructor
+ *
+ * @param array $options associative array of options
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ public function __construct($options = array())
+ {
+ parent::__construct($options);
+ if (!is_null($this->_options['cache_dir'])) { // particular case
for this option
+ $this->setCacheDir($this->_options['cache_dir']);
+ } else {
+ $this->setCacheDir(self::getTmpDir() . DIRECTORY_SEPARATOR,
false);
+ }
+ if (isset($this->_options['file_name_prefix'])) { // particular
case for this option
+ if (!preg_match('~^[\w]+$~',
$this->_options['file_name_prefix'])) {
+ Zend_Cache::throwException('Invalid file_name_prefix :
must use only [a-zA-A0-9_]');
+ }
+ }
+ if ($this->_options['metadatas_array_max_size'] < 10) {
+ Zend_Cache::throwException('Invalid metadatas_array_max_size,
must be > 10');
+ }
+ }
+
+ /**
+ * Set the cache_dir (particular case of setOption() method)
+ *
+ * @param string $value
+ * @param boolean $trailingSeparator If true, add a trailing
separator is necessary
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ public function setCacheDir($value, $trailingSeparator = true)
+ {
+ if (!is_dir($value)) {
+ Zend_Cache::throwException('cache_dir must be a directory');
+ }
+ if (!is_writable($value)) {
+ Zend_Cache::throwException('cache_dir is not writable');
+ }
+ if ($trailingSeparator) {
+ // add a trailing DIRECTORY_SEPARATOR if necessary
+ $value = rtrim(realpath($value), '\\/') . DIRECTORY_SEPARATOR;
+ }
+ $this->_options['cache_dir'] = $value;
+ }
+
+ /**
+ * Test if a cache is available for the given id and (if yes) return
it (false else)
+ *
+ * @param string $id cache id
+ * @param boolean $doNotTestCacheValidity if set to true, the cache
validity won't be tested
+ * @return string|false cached datas
+ */
+ public function load($id, $doNotTestCacheValidity = false)
+ {
+ if (!($this->_test($id, $doNotTestCacheValidity))) {
+ // The cache is not hit !
+ return false;
+ }
+ $metadatas = $this->_getMetadatas($id);
+ $file = $this->_file($id);
+ $data = $this->_fileGetContents($file);
+ if ($this->_options['read_control']) {
+ $hashData = $this->_hash($data,
$this->_options['read_control_type']);
+ $hashControl = $metadatas['hash'];
+ if ($hashData != $hashControl) {
+ // Problem detected by the read control !
+ $this->_log('Zend_Cache_Backend_File::load() /
read_control : stored hash and computed hash do not match');
+ $this->remove($id);
+ return false;
+ }
+ }
+ return $data;
+ }
+
+ /**
+ * Test if a cache is available or not (for the given id)
+ *
+ * @param string $id cache id
+ * @return mixed false (a cache is not available) or "last modified"
timestamp (int) of the available cache record
+ */
+ public function test($id)
+ {
+ clearstatcache();
+ return $this->_test($id, false);
+ }
+
+ /**
+ * Save some string datas into a cache record
+ *
+ * Note : $data is always "string" (serialization is done by the
+ * core not by the backend)
+ *
+ * @param string $data Datas to cache
+ * @param string $id Cache id
+ * @param array $tags Array of strings, the cache record
will be tagged by each string entry
+ * @param int $specificLifetime If != false, set a specific
lifetime for this cache record (null => infinite lifetime)
+ * @return boolean true if no problem
+ */
+ public function save($data, $id, $tags = array(), $specificLifetime =
false)
+ {
+ clearstatcache();
+ $file = $this->_file($id);
+ $path = $this->_path($id);
+ $firstTry = true;
+ $result = false;
+ if ($this->_options['hashed_directory_level'] > 0) {
+ if (!is_writable($path)) {
+ // maybe, we just have to build the directory structure
+ @mkdir($this->_path($id),
$this->_options['hashed_directory_umask'], true);
+ @chmod($this->_path($id),
$this->_options['hashed_directory_umask']); // see #ZF-320 (this line is
required in some configurations)
+ }
+ if (!is_writable($path)) {
+ return false;
+ }
+ }
+ if ($this->_options['read_control']) {
+ $hash = $this->_hash($data,
$this->_options['read_control_type']);
+ } else {
+ $hash = '';
+ }
+ $metadatas = array(
+ 'hash' => $hash,
+ 'mtime' => time(),
+ 'expire' =>
$this->_expireTime($this->getLifetime($specificLifetime)),
+ 'tags' => $tags
+ );
+ $res = $this->_setMetadatas($id, $metadatas);
+ if (!$res) {
+ // FIXME : log
+ return false;
+ }
+ $res = $this->_filePutContents($file, $data);
+ return $res;
+ }
+
+ /**
+ * Remove a cache record
+ *
+ * @param string $id cache id
+ * @return boolean true if no problem
+ */
+ public function remove($id)
+ {
+ $file = $this->_file($id);
+ return ($this->_delMetadatas($id) && $this->_remove($file));
+ }
+
+ /**
+ * Clean some cache records
+ *
+ * Available modes are :
+ * 'all' (default) => remove all cache entries ($tags is not used)
+ * 'old' => remove too old cache entries ($tags is not used)
+ * 'matchingTag' => remove cache entries matching all given tags
+ * ($tags can be an array of strings or a single
string)
+ * 'notMatchingTag' => remove cache entries not matching one of the
given tags
+ * ($tags can be an array of strings or a single
string)
+ *
+ * @param string $mode clean mode
+ * @param tags array $tags array of tags
+ * @return boolean true if no problem
+ */
+ public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags =
array())
+ {
+ // We use this private method to hide the recursive stuff
+ clearstatcache();
+ return $this->_clean($this->_options['cache_dir'], $mode, $tags);
+ }
+
+ /**
+ * PUBLIC METHOD FOR UNIT TESTING ONLY !
+ *
+ * Force a cache record to expire
+ *
+ * @param string $id cache id
+ */
+ public function ___expire($id)
+ {
+ $metadatas = $this->_getMetadatas($id);
+ if ($metadatas) {
+ $metadatas['expire'] = 1;
+ $this->_setMetadatas($id, $metadatas);
+ }
+ }
+
+ /**
+ * Get a metadatas record
+ *
+ * @param string $id Cache id
+ * @return array|false Associative array of metadatas
+ */
+ private function _getMetadatas($id)
+ {
+ if (isset($this->_metadatasArray[$id])) {
+ return $this->_metadatasArray[$id];
+ } else {
+ $metadatas = $this->_loadMetadatas($id);
+ if (!$metadatas) {
+ return false;
+ }
+ $this->_setMetadatas($id, $metadatas, false);
+ return $metadatas;
+ }
+ }
+
+ /**
+ * Set a metadatas record
+ *
+ * @param string $id Cache id
+ * @param array $metadatas Associative array of metadatas
+ * @param boolean $save optional pass false to disable saving to
file
+ * @return boolean True if no problem
+ */
+ private function _setMetadatas($id, $metadatas, $save = true)
+ {
+ if (count($this->_metadatasArray) >=
$this->_options['metadatas_array_max_size']) {
+ $n = (int) ($this->_options['metadatas_array_max_size'] / 10);
+ $this->_metadatasArray = array_slice($this->_metadatasArray,
$n);
+ }
+ if ($save) {
+ $result = $this->_saveMetadatas($id, $metadatas);
+ if (!$result) {
+ return false;
+ }
+ }
+ $this->_metadatasArray[$id] = $metadatas;
+ return true;
+ }
+
+ /**
+ * Drop a metadata record
+ *
+ * @param string $id Cache id
+ * @return boolean True if no problem
+ */
+ private function _delMetadatas($id)
+ {
+ if (isset($this->_metadatasArray[$id])) {
+ unset($this->_metadatasArray[$id]);
+ }
+ $file = $this->_metadatasFile($id);
+ return $this->_remove($file);
+ }
+
+ /**
+ * Clear the metadatas array
+ *
+ * @return void
+ */
+ private function _cleanMetadatas()
+ {
+ $this->_metadatasArray = array();
+ }
+
+ /**
+ * Load metadatas from disk
+ *
+ * @param string $id Cache id
+ * @return array|false Metadatas associative array
+ */
+ private function _loadMetadatas($id)
+ {
+ $file = $this->_metadatasFile($id);
+ $result = $this->_fileGetContents($file);
+ if (!$result) {
+ return false;
+ }
+ $tmp = @unserialize($result);
+ return $tmp;
+ }
+
+ /**
+ * Save metadatas to disk
+ *
+ * @param string $id Cache id
+ * @param array $metadatas Associative array
+ * @return boolean True if no problem
+ */
+ private function _saveMetadatas($id, $metadatas)
+ {
+ $file = $this->_metadatasFile($id);
+ $result = $this->_filePutContents($file, serialize($metadatas));
+ if (!$result) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Make and return a file name (with path) for metadatas
+ *
+ * @param string $id Cache id
+ * @return string Metadatas file name (with path)
+ */
+ private function _metadatasFile($id)
+ {
+ $path = $this->_path($id);
+ $fileName = $this->_idToFileName('internal-metadatas---' . $id);
+ return $path . $fileName;
+ }
+
+ /**
+ * Check if the given filename is a metadatas one
+ *
+ * @param string $fileName File name
+ * @return boolean True if it's a metadatas one
+ */
+ private function _isMetadatasFile($fileName)
+ {
+ $id = $this->_fileNameToId($fileName);
+ if (substr($id, 0, 21) == 'internal-metadatas---') {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Remove a file
+ *
+ * If we can't remove the file (because of locks or any problem), we
will touch
+ * the file to invalidate it
+ *
+ * @param string $file Complete file path
+ * @return boolean True if ok
+ */
+ private function _remove($file)
+ {
+ if (!is_file($file)) {
+ return false;
+ }
+ if (!@unlink($file)) {
+ # we can't remove the file (because of locks or any problem)
+ $this->_log("Zend_Cache_Backend_File::_remove() : we can't
remove $file");
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Clean some cache records (private method used for recursive stuff)
+ *
+ * Available modes are :
+ * Zend_Cache::CLEANING_MODE_ALL (default) => remove all cache
entries ($tags is not used)
+ * Zend_Cache::CLEANING_MODE_OLD => remove too old cache
entries ($tags is not used)
+ * Zend_Cache::CLEANING_MODE_MATCHING_TAG => remove cache entries
matching all given tags
+ * ($tags can be an
array of strings or a single string)
+ * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries
not {matching one of the given tags}
+ * ($tags can be an
array of strings or a single string)
+ *
+ * @param string $dir Directory to clean
+ * @param string $mode Clean mode
+ * @param array $tags Array of tags
+ * @throws Zend_Cache_Exception
+ * @return boolean True if no problem
+ */
+ private function _clean($dir, $mode = Zend_Cache::CLEANING_MODE_ALL,
$tags = array())
+ {
+ if (!is_dir($dir)) {
+ return false;
+ }
+ $result = true;
+ $prefix = $this->_options['file_name_prefix'];
+ $glob = @glob($dir . $prefix . '--*');
+ if ($glob === false) {
+ return true;
+ }
+ foreach ($glob as $file) {
+ if (is_file($file)) {
+ $fileName = basename($file);
+ if ($this->_isMetadatasFile($fileName)) {
+ // in CLEANING_MODE_ALL, we drop anything, even
remainings old metadatas files
+ if ($mode != Zend_Cache::CLEANING_MODE_ALL) {
+ continue;
+ }
+ }
+ $id = $this->_fileNameToId($fileName);
+ $metadatas = $this->_getMetadatas($id);
+ if ($metadatas === FALSE) {
+ $metadatas = array('expire' => 1, 'tags' => array());
+ }
+ switch ($mode) {
+ case Zend_Cache::CLEANING_MODE_ALL:
+ $res = $this->remove($id);
+ if (!$res) {
+ // in this case only, we accept a problem with
the metadatas file drop
+ $res = $this->_remove($file);
+ }
+ $result = $result && $res;
+ break;
+ case Zend_Cache::CLEANING_MODE_OLD:
+ if (time() > $metadatas['expire']) {
+ $result = ($result) && ($this->remove($id));
+ }
+ break;
+ case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
+ $matching = true;
+ foreach ($tags as $tag) {
+ if (!in_array($tag, $metadatas['tags'])) {
+ $matching = false;
+ break;
+ }
+ }
+ if ($matching) {
+ $result = ($result) && ($this->remove($id));
+ }
+ break;
+ case Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG:
+ $matching = false;
+ foreach ($tags as $tag) {
+ if (in_array($tag, $metadatas['tags'])) {
+ $matching = true;
+ break;
+ }
+ }
+ if (!$matching) {
+ $result = ($result) && $this->remove($id);
+ }
+ break;
+ default:
+ Zend_Cache::throwException('Invalid mode for
clean() method');
+ break;
+ }
+ }
+ if ((is_dir($file)) and
($this->_options['hashed_directory_level']>0)) {
+ // Recursive call
+ $result = ($result) && ($this->_clean($file .
DIRECTORY_SEPARATOR, $mode, $tags));
+ if ($mode=='all') {
+ // if mode=='all', we try to drop the structure too
+ @rmdir($file);
+ }
+ }
+ }
+ return $result;
+ }
+
+ /**
+ * Compute & return the expire time
+ *
+ * @return int expire time (unix timestamp)
+ */
+ private function _expireTime($lifetime)
+ {
+ if (is_null($lifetime)) {
+ return 9999999999;
+ }
+ return time() + $lifetime;
+ }
+
+ /**
+ * Make a control key with the string containing datas
+ *
+ * @param string $data Data
+ * @param string $controlType Type of control 'md5', 'crc32'
or 'strlen'
+ * @throws Zend_Cache_Exception
+ * @return string Control key
+ */
+ private function _hash($data, $controlType)
+ {
+ switch ($controlType) {
+ case 'md5':
+ return md5($data);
+ case 'crc32':
+ return crc32($data);
+ case 'strlen':
+ return strlen($data);
+ case 'adler32':
+ return hash('adler32', $data);
+ default:
+ Zend_Cache::throwException("Incorrect hash function :
$controlType");
+ }
+ }
+
+ /**
+ * Transform a cache id into a file name and return it
+ *
+ * @param string $id Cache id
+ * @return string File name
+ */
+ private function _idToFileName($id)
+ {
+ $prefix = $this->_options['file_name_prefix'];
+ $result = $prefix . '---' . $id;
+ return $result;
+ }
+
+ /**
+ * Make and return a file name (with path)
+ *
+ * @param string $id Cache id
+ * @return string File name (with path)
+ */
+ private function _file($id)
+ {
+ $path = $this->_path($id);
+ $fileName = $this->_idToFileName($id);
+ return $path . $fileName;
+ }
+
+ /**
+ * Return the complete directory path of a filename (including
hashedDirectoryStructure)
+ *
+ * @param string $id Cache id
+ * @return string Complete directory path
+ */
+ private function _path($id)
+ {
+ $root = $this->_options['cache_dir'];
+ $prefix = $this->_options['file_name_prefix'];
+ if ($this->_options['hashed_directory_level']>0) {
+ $hash = hash('adler32', $id);
+ for ($i=0 ; $i < $this->_options['hashed_directory_level'] ;
$i++) {
+ $root = $root . $prefix . '--' . substr($hash, 0, $i +
1) . DIRECTORY_SEPARATOR;
+ }
+ }
+ return $root;
+ }
+
+ /**
+ * Test if the given cache id is available (and still valid as a cache
record)
+ *
+ * @param string $id Cache id
+ * @param boolean $doNotTestCacheValidity If set to true, the cache
validity won't be tested
+ * @return boolean|mixed false (a cache is not available) or "last
modified" timestamp (int) of the available cache record
+ */
+ private function _test($id, $doNotTestCacheValidity)
+ {
+ $metadatas = $this->_getMetadatas($id);
+ if (!$metadatas) {
+ return false;
+ }
+ if ($doNotTestCacheValidity || (time() <= $metadatas['expire'])) {
+ return $metadatas['mtime'];
+ }
+ return false;
+ }
+
+ /**
+ * Return the file content of the given file
+ *
+ * @param string $file File complete path
+ * @return string File content (or false if problem)
+ */
+ private function _fileGetContents($file)
+ {
+ $result = false;
+ if (!is_file($file)) {
+ return false;
+ }
+ $mqr = get_magic_quotes_runtime();
+ set_magic_quotes_runtime(0);
+ $f = @fopen($file, 'rb');
+ if ($f) {
+ if ($this->_options['file_locking']) @flock($f, LOCK_SH);
+ $fsize = @filesize($file);
+ if ($fsize == 0) {
+ $result = '';
+ } else {
+ $result = fread($f, $fsize);
+ }
+ if ($this->_options['file_locking']) @flock($f, LOCK_UN);
+ @fclose($f);
+ }
+ set_magic_quotes_runtime($mqr);
+ return $result;
+ }
+
+ /**
+ * Put the given string into the given file
+ *
+ * @param string $file File complete path
+ * @param string $string String to put in file
+ * @return boolean true if no problem
+ */
+ private function _filePutContents($file, $string)
+ {
+ $result = false;
+ $f = @fopen($file, 'wb');
+ if ($f) {
+ if ($this->_options['file_locking']) @flock($f, LOCK_EX);
+ $tmp = @fwrite($f, $string);
+ if (!($tmp === FALSE)) {
+ $result = true;
+ }
+ if ($this->_options['file_locking']) @flock($f, LOCK_UN);
+ @fclose($f);
+ }
+ @chmod($file, $this->_options['cache_file_umask']);
+ return $result;
+ }
+
+ /**
+ * Transform a file name into cache id and return it
+ *
+ * @param string $fileName File name
+ * @return string Cache id
+ */
+ private function _fileNameToId($fileName)
+ {
+ $prefix = $this->_options['file_name_prefix'];
+ return preg_replace('~^' . $prefix . '---(.*)$~', '$1', $fileName);
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/Interface.php
Wed Apr 25 15:32:46 2012
@@ -0,0 +1,96 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+
+
+/**
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+interface Zend_Cache_Backend_Interface
+{
+ /**
+ * Set the frontend directives
+ *
+ * @param array $directives assoc of directives
+ */
+ public function setDirectives($directives);
+
+ /**
+ * Test if a cache is available for the given id and (if yes) return
it (false else)
+ *
+ * Note : return value is always "string" (unserialization is done by
the core not by the backend)
+ *
+ * @param string $id Cache id
+ * @param boolean $doNotTestCacheValidity If set to true, the cache
validity won't be tested
+ * @return string|false cached datas
+ */
+ public function load($id, $doNotTestCacheValidity = false);
+
+ /**
+ * Test if a cache is available or not (for the given id)
+ *
+ * @param string $id cache id
+ * @return mixed|false (a cache is not available) or "last modified"
timestamp (int) of the available cache record
+ */
+ public function test($id);
+
+ /**
+ * Save some string datas into a cache record
+ *
+ * Note : $data is always "string" (serialization is done by the
+ * core not by the backend)
+ *
+ * @param string $data Datas to cache
+ * @param string $id Cache id
+ * @param array $tags Array of strings, the cache record
will be tagged by each string entry
+ * @param int $specificLifetime If != false, set a specific
lifetime for this cache record (null => infinite lifetime)
+ * @return boolean true if no problem
+ */
+ public function save($data, $id, $tags = array(), $specificLifetime =
false);
+
+ /**
+ * Remove a cache record
+ *
+ * @param string $id Cache id
+ * @return boolean True if no problem
+ */
+ public function remove($id);
+
+ /**
+ * Clean some cache records
+ *
+ * Available modes are :
+ * Zend_Cache::CLEANING_MODE_ALL (default) => remove all cache
entries ($tags is not used)
+ * Zend_Cache::CLEANING_MODE_OLD => remove too old cache
entries ($tags is not used)
+ * Zend_Cache::CLEANING_MODE_MATCHING_TAG => remove cache entries
matching all given tags
+ * ($tags can be an
array of strings or a single string)
+ * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries
not {matching one of the given tags}
+ * ($tags can be an
array of strings or a single string)
+ *
+ * @param string $mode Clean mode
+ * @param array $tags Array of tags
+ * @return boolean true if no problem
+ */
+ public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags =
array());
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/Memcached.php
Wed Apr 25 15:32:46 2012
@@ -0,0 +1,234 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+
+
+/**
+ * @see Zend_Cache_Backend_Interface
+ */
+require_once 'Zend/Cache/Backend/Interface.php';
+
+/**
+ * @see Zend_Cache_Backend
+ */
+require_once 'Zend/Cache/Backend.php';
+
+
+/**
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Cache_Backend_Memcached extends Zend_Cache_Backend implements
Zend_Cache_Backend_Interface
+{
+ /**
+ * Default Host IP Address or DNS
+ */
+ const DEFAULT_HOST = '127.0.0.1';
+
+ /**
+ * Default port
+ */
+ const DEFAULT_PORT = 11211;
+
+ /**
+ * Persistent
+ */
+ const DEFAULT_PERSISTENT = true;
+
+ /**
+ * Available options
+ *
+ * =====> (array) servers :
+ * an array of memcached server ; each memcached server is described
by an associative array :
+ * 'host' => (string) : the name of the memcached server
+ * 'port' => (int) : the port of the memcached server
+ * 'persistent' => (bool) : use or not persistent connections to this
memcached server
+ *
+ * =====> (boolean) compression :
+ * true if you want to use on-the-fly compression
+ *
+ * @var array available options
+ */
+ protected $_options = array(
+ 'servers' => array(array(
+ 'host' => Zend_Cache_Backend_Memcached::DEFAULT_HOST,
+ 'port' => Zend_Cache_Backend_Memcached::DEFAULT_PORT,
+ 'persistent' =>
Zend_Cache_Backend_Memcached::DEFAULT_PERSISTENT
+ )),
+ 'compression' => false
+ );
+
+ /**
+ * Memcache object
+ *
+ * @var mixed memcache object
+ */
+ private $_memcache = null;
+
+ /**
+ * Constructor
+ *
+ * @param array $options associative array of options
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ public function __construct($options = array())
+ {
+ if (!extension_loaded('memcache')) {
+ Zend_Cache::throwException('The memcache extension must be
loaded for using this backend !');
+ }
+ parent::__construct($options);
+ if (isset($this->_options['servers'])) {
+ $value= $this->_options['servers'];
+ if (isset($value['host'])) {
+ // in this case, $value seems to be a simple associative
array (one server only)
+ $value = array(0 => $value); // let's transform it into a
classical array of associative arrays
+ }
+ $this->setOption('servers', $value);
+ }
+ $this->_memcache = new Memcache;
+ foreach ($this->_options['servers'] as $server) {
+ if (!array_key_exists('persistent', $server)) {
+ $server['persistent'] =
Zend_Cache_Backend_Memcached::DEFAULT_PERSISTENT;
+ }
+ if (!array_key_exists('port', $server)) {
+ $server['port'] =
Zend_Cache_Backend_Memcached::DEFAULT_PORT;
+ }
+ $this->_memcache->addServer($server['host'], $server['port'],
$server['persistent']);
+ }
+ }
+
+ /**
+ * Test if a cache is available for the given id and (if yes) return
it (false else)
+ *
+ * @param string $id Cache id
+ * @param boolean $doNotTestCacheValidity If set to true, the cache
validity won't be tested
+ * @return string|false cached datas
+ */
+ public function load($id, $doNotTestCacheValidity = false)
+ {
+ // WARNING : $doNotTestCacheValidity is not supported !!!
+ if ($doNotTestCacheValidity) {
+ $this->_log("Zend_Cache_Backend_Memcached::load() :
\$doNotTestCacheValidity=true is unsupported by the Memcached backend");
+ }
+ $tmp = $this->_memcache->get($id);
+ if (is_array($tmp)) {
+ return $tmp[0];
+ }
+ return false;
+ }
+
+ /**
+ * Test if a cache is available or not (for the given id)
+ *
+ * @param string $id Cache id
+ * @return mixed|false (a cache is not available) or "last modified"
timestamp (int) of the available cache record
+ */
+ public function test($id)
+ {
+ $tmp = $this->_memcache->get($id);
+ if (is_array($tmp)) {
+ return $tmp[1];
+ }
+ return false;
+ }
+
+ /**
+ * Save some string datas into a cache record
+ *
+ * Note : $data is always "string" (serialization is done by the
+ * core not by the backend)
+ *
+ * @param string $data Datas to cache
+ * @param string $id Cache id
+ * @param array $tags Array of strings, the cache record
will be tagged by each string entry
+ * @param int $specificLifetime If != false, set a specific
lifetime for this cache record (null => infinite lifetime)
+ * @return boolean True if no problem
+ */
+ public function save($data, $id, $tags = array(), $specificLifetime =
false)
+ {
+ $lifetime = $this->getLifetime($specificLifetime);
+ if ($this->_options['compression']) {
+ $flag = MEMCACHE_COMPRESSED;
+ } else {
+ $flag = 0;
+ }
+ $result = $this->_memcache->set($id, array($data, time()), $flag,
$lifetime);
+ if (count($tags) > 0) {
+ $this->_log("Zend_Cache_Backend_Memcached::save() : tags are
unsupported by the Memcached backend");
+ }
+ return $result;
+ }
+
+ /**
+ * Remove a cache record
+ *
+ * @param string $id Cache id
+ * @return boolean True if no problem
+ */
+ public function remove($id)
+ {
+ return $this->_memcache->delete($id);
+ }
+
+ /**
+ * Clean some cache records
+ *
+ * Available modes are :
+ * 'all' (default) => remove all cache entries ($tags is not used)
+ * 'old' => remove too old cache entries ($tags is not used)
+ * 'matchingTag' => remove cache entries matching all given tags
+ * ($tags can be an array of strings or a single
string)
+ * 'notMatchingTag' => remove cache entries not matching one of the
given tags
+ * ($tags can be an array of strings or a single
string)
+ *
+ * @param string $mode Clean mode
+ * @param array $tags Array of tags
+ * @return boolean True if no problem
+ */
+ public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags =
array())
+ {
+ if ($mode==Zend_Cache::CLEANING_MODE_ALL) {
+ return $this->_memcache->flush();
+ }
+ if ($mode==Zend_Cache::CLEANING_MODE_OLD) {
+ $this->_log("Zend_Cache_Backend_Memcached::clean() :
CLEANING_MODE_OLD is unsupported by the Memcached backend");
+ }
+ if ($mode==Zend_Cache::CLEANING_MODE_MATCHING_TAG) {
+ $this->_log("Zend_Cache_Backend_Memcached::clean() : tags are
unsupported by the Memcached backend");
+ }
+ if ($mode==Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG) {
+ $this->_log("Zend_Cache_Backend_Memcached::clean() : tags are
unsupported by the Memcached backend");
+ }
+ }
+
+ /**
+ * Return true if the automatic cleaning is available for the backend
+ *
+ * @return boolean
+ */
+ public function isAutomaticCleaningAvailable()
+ {
+ return false;
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/Sqlite.php Wed
Apr 25 15:32:46 2012
@@ -0,0 +1,427 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+
+
+/**
+ * @see Zend_Cache_Backend_Interface
+ */
+require_once 'Zend/Cache/Backend/Interface.php';
+
+/**
+ * @see Zend_Cache_Backend
+ */
+require_once 'Zend/Cache/Backend.php';
+
+/**
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Cache_Backend_Sqlite extends Zend_Cache_Backend implements
Zend_Cache_Backend_Interface
+{
+ /**
+ * Available options
+ *
+ * =====> (string) cache_db_complete_path :
+ * - the complete path (filename included) of the SQLITE database
+ *
+ * ====> (int) automatic_vacuum_factor :
+ * - Disable / Tune the automatic vacuum process
+ * - The automatic vacuum process defragment the database file (and
make it smaller)
+ * when a clean() or delete() is called
+ * 0 => no automatic vacuum
+ * 1 => systematic vacuum (when delete() or clean()
methods are called)
+ * x (integer) > 1 => automatic vacuum randomly 1 times on x
clean() or delete()
+ *
+ * @var array Available options
+ */
+ protected $_options = array(
+ 'cache_db_complete_path' => null,
+ 'automatic_vacuum_factor' => 10
+ );
+
+ /**
+ * DB ressource
+ *
+ * @var mixed $_db
+ */
+ private $_db = null;
+
+ /**
+ * Constructor
+ *
+ * @param array $options Associative array of options
+ * @throws Zend_cache_Exception
+ * @return void
+ */
+ public function __construct($options = array())
+ {
+ parent::__construct($options);
+ if (is_null($this->_options['cache_db_complete_path'])) {
+ Zend_Cache::throwException('cache_db_complete_path option has
to set');
+ }
+ if (!extension_loaded('sqlite')) {
+ Zend_Cache::throwException("Cannot use SQLite storage because
the 'sqlite' extension is not loaded in the current PHP environment");
+ }
+ $this->_getConnection();
+ }
+
+ /**
+ * Destructor
+ *
+ * @return void
+ */
+ public function __destruct()
+ {
+ @sqlite_close($this->_getConnection());
+ }
+
+ /**
+ * Test if a cache is available for the given id and (if yes) return
it (false else)
+ *
+ * @param string $id Cache id
+ * @param boolean $doNotTestCacheValidity If set to true, the cache
validity won't be tested
+ * @return string|false Cached datas
+ */
+ public function load($id, $doNotTestCacheValidity = false)
+ {
+ $sql = "SELECT content FROM cache WHERE id='$id'";
+ if (!$doNotTestCacheValidity) {
+ $sql = $sql . " AND (expire=0 OR expire>" . time() . ')';
+ }
+ $result = $this->_query($sql);
+ $row = @sqlite_fetch_array($result);
+ if ($row) {
+ return $row['content'];
+ }
+ return false;
+ }
+
+ /**
+ * Test if a cache is available or not (for the given id)
+ *
+ * @param string $id Cache id
+ * @return mixed|false (a cache is not available) or "last modified"
timestamp (int) of the available cache record
+ */
+ public function test($id)
+ {
+ $sql = "SELECT lastModified FROM cache WHERE id='$id' AND
(expire=0 OR expire>" . time() . ')';
+ $result = $this->_query($sql);
+ $row = @sqlite_fetch_array($result);
+ if ($row) {
+ return ((int) $row['lastModified']);
+ }
+ return false;
+ }
+
+ /**
+ * Save some string datas into a cache record
+ *
+ * Note : $data is always "string" (serialization is done by the
+ * core not by the backend)
+ *
+ * @param string $data Datas to cache
+ * @param string $id Cache id
+ * @param array $tags Array of strings, the cache record
will be tagged by each string entry
+ * @param int $specificLifetime If != false, set a specific
lifetime for this cache record (null => infinite lifetime)
+ * @throws Zend_Cache_Exception
+ * @return boolean True if no problem
+ */
+ public function save($data, $id, $tags = array(), $specificLifetime =
false)
+ {
+ if (!$this->_checkStructureVersion()) {
+ $this->_buildStructure();
+ if (!$this->_checkStructureVersion()) {
+ Zend_Cache::throwException("Impossible to build cache
structure in " . $this->_options['cache_db_complete_path']);
+ }
+ }
+ $lifetime = $this->getLifetime($specificLifetime);
+ $data = @sqlite_escape_string($data);
+ $mktime = time();
+ if (is_null($lifetime)) {
+ $expire = 0;
+ } else {
+ $expire = $mktime + $lifetime;
+ }
+ $this->_query("DELETE FROM cache WHERE id='$id'");
+ $sql = "INSERT INTO cache (id, content, lastModified, expire)
VALUES ('$id', '$data', $mktime, $expire)";
+ $res = $this->_query($sql);
+ if (!$res) {
+ $this->_log("Zend_Cache_Backend_Sqlite::save() : impossible to
store the cache id=$id");
+ return false;
+ }
+ $res = true;
+ foreach ($tags as $tag) {
+ $res = $res && $this->_registerTag($id, $tag);
+ }
+ return $res;
+ }
+
+ /**
+ * Remove a cache record
+ *
+ * @param string $id Cache id
+ * @return boolean True if no problem
+ */
+ public function remove($id)
+ {
+ $res = $this->_query("SELECT COUNT(*) AS nbr FROM cache WHERE
id='$id'");
+ $result1 = @sqlite_fetch_single($res);
+ $result2 = $this->_query("DELETE FROM cache WHERE id='$id'");
+ $result3 = $this->_query("DELETE FROM tag WHERE id='$id'");
+ $this->_automaticVacuum();
+ return ($result1 && $result2 && $result3);
+ }
+
+ /**
+ * Clean some cache records
+ *
+ * Available modes are :
+ * Zend_Cache::CLEANING_MODE_ALL (default) => remove all cache
entries ($tags is not used)
+ * Zend_Cache::CLEANING_MODE_OLD => remove too old cache
entries ($tags is not used)
+ * Zend_Cache::CLEANING_MODE_MATCHING_TAG => remove cache entries
matching all given tags
+ * ($tags can be an
array of strings or a single string)
+ * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries
not {matching one of the given tags}
+ * ($tags can be an
array of strings or a single string)
+ *
+ * @param string $mode Clean mode
+ * @param array $tags Array of tags
+ * @return boolean True if no problem
+ */
+ public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags =
array())
+ {
+ $return = $this->_clean($mode, $tags);
+ $this->_automaticVacuum();
+ return $return;
+ }
+
+ /**
+ * PUBLIC METHOD FOR UNIT TESTING ONLY !
+ *
+ * Force a cache record to expire
+ *
+ * @param string $id Cache id
+ */
+ public function ___expire($id)
+ {
+ $time = time() - 1;
+ $this->_query("UPDATE cache SET lastModified=$time, expire=$time
WHERE id='$id'");
+ }
+
+ /**
+ * Return the connection resource
+ *
+ * If we are not connected, the connection is made
+ *
+ * @throws Zend_Cache_Exception
+ * @return resource Connection resource
+ */
+ private function _getConnection()
+ {
+ if (is_resource($this->_db)) {
+ return $this->_db;
+ } else {
+ $this->_db =
@sqlite_open($this->_options['cache_db_complete_path']);
+ if (!(is_resource($this->_db))) {
+ Zend_Cache::throwException("Impossible to open " .
$this->_options['cache_db_complete_path'] . " cache DB file");
+ }
+ return $this->_db;
+ }
+ }
+
+ /**
+ * Execute an SQL query silently
+ *
+ * @param string $query SQL query
+ * @return mixed|false query results
+ */
+ private function _query($query)
+ {
+ $db = $this->_getConnection();
+ if (is_resource($db)) {
+ $res = @sqlite_query($db, $query);
+ if ($res === false) {
+ return false;
+ } else {
+ return $res;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Deal with the automatic vacuum process
+ *
+ * @return void
+ */
+ private function _automaticVacuum()
+ {
+ if ($this->_options['automatic_vacuum_factor'] > 0) {
+ $rand = rand(1, $this->_options['automatic_vacuum_factor']);
+ if ($rand == 1) {
+ $this->_query('VACUUM');
+ @sqlite_close($this->_getConnection());
+ }
+ }
+ }
+
+ /**
+ * Register a cache id with the given tag
+ *
+ * @param string $id Cache id
+ * @param string $tag Tag
+ * @return boolean True if no problem
+ */
+ private function _registerTag($id, $tag) {
+ $res = $this->_query("DELETE FROM TAG WHERE name='$tag' AND
id='$id'");
+ $res = $this->_query("INSERT INTO tag (name, id) VALUES
('$tag', '$id')");
+ if (!$res) {
+ $this->_log("Zend_Cache_Backend_Sqlite::_registerTag() :
impossible to register tag=$tag on id=$id");
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Build the database structure
+ *
+ * @return false
+ */
+ private function _buildStructure()
+ {
+ $this->_query('DROP INDEX tag_id_index');
+ $this->_query('DROP INDEX tag_name_index');
+ $this->_query('DROP INDEX cache_id_expire_index');
+ $this->_query('DROP TABLE version');
+ $this->_query('DROP TABLE cache');
+ $this->_query('DROP TABLE tag');
+ $this->_query('CREATE TABLE version (num INTEGER PRIMARY KEY)');
+ $this->_query('CREATE TABLE cache (id TEXT PRIMARY KEY, content
BLOB, lastModified INTEGER, expire INTEGER)');
+ $this->_query('CREATE TABLE tag (name TEXT, id TEXT)');
+ $this->_query('CREATE INDEX tag_id_index ON tag(id)');
+ $this->_query('CREATE INDEX tag_name_index ON tag(name)');
+ $this->_query('CREATE INDEX cache_id_expire_index ON cache(id,
expire)');
+ $this->_query('INSERT INTO version (num) VALUES (1)');
+ }
+
+ /**
+ * Check if the database structure is ok (with the good version)
+ *
+ * @return boolean True if ok
+ */
+ private function _checkStructureVersion()
+ {
+ $result = $this->_query("SELECT num FROM version");
+ if (!$result) return false;
+ $row = @sqlite_fetch_array($result);
+ if (!$row) {
+ return false;
+ }
+ if (((int) $row['num']) != 1) {
+ // old cache structure
+
$this->_log('Zend_Cache_Backend_Sqlite::_checkStructureVersion() : old
cache structure version detected => the cache is going to be dropped');
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Clean some cache records
+ *
+ * Available modes are :
+ * Zend_Cache::CLEANING_MODE_ALL (default) => remove all cache
entries ($tags is not used)
+ * Zend_Cache::CLEANING_MODE_OLD => remove too old cache
entries ($tags is not used)
+ * Zend_Cache::CLEANING_MODE_MATCHING_TAG => remove cache entries
matching all given tags
+ * ($tags can be an
array of strings or a single string)
+ * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries
not {matching one of the given tags}
+ * ($tags can be an
array of strings or a single string)
+ *
+ * @param string $mode Clean mode
+ * @param array $tags Array of tags
+ * @return boolean True if no problem
+ */
+ private function _clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags =
array())
+ {
+ if ($mode==Zend_Cache::CLEANING_MODE_ALL) {
+ $res1 = $this->_query('DELETE FROM cache');
+ $res2 = $this->_query('DELETE FROM tag');
+ return $res1 && $res2;
+ }
+ if ($mode==Zend_Cache::CLEANING_MODE_OLD) {
+ $mktime = time();
+ $res1 = $this->_query("DELETE FROM tag WHERE id IN (SELECT id
FROM cache WHERE expire>0 AND expire<=$mktime)");
+ $res2 = $this->_query("DELETE FROM cache WHERE expire>0 AND
expire<=$mktime");
+ return $res1 && $res2;
+ }
+ if ($mode==Zend_Cache::CLEANING_MODE_MATCHING_TAG) {
+ $first = true;
+ $ids = array();
+ foreach ($tags as $tag) {
+ $res = $this->_query("SELECT DISTINCT(id) AS id FROM tag
WHERE name='$tag'");
+ if (!$res) {
+ return false;
+ }
+ $rows = @sqlite_fetch_all($res, SQLITE_ASSOC);
+ $ids2 = array();
+ foreach ($rows as $row) {
+ $ids2[] = $row['id'];
+ }
+ if ($first) {
+ $ids = $ids2;
+ $first = false;
+ } else {
+ $ids = array_intersect($ids, $ids2);
+ }
+ }
+ $result = true;
+ foreach ($ids as $id) {
+ $result = $result && ($this->remove($id));
+ }
+ return $result;
+ }
+ if ($mode==Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG) {
+ $res = $this->_query("SELECT id FROM cache");
+ $rows = @sqlite_fetch_all($res, SQLITE_ASSOC);
+ $result = true;
+ foreach ($rows as $row) {
+ $id = $row['id'];
+ $matching = false;
+ foreach ($tags as $tag) {
+ $res = $this->_query("SELECT COUNT(*) AS nbr FROM tag
WHERE name='$tag' AND id='$id'");
+ if (!$res) {
+ return false;
+ }
+ $nbr = (int) @sqlite_fetch_single($res);
+ if ($nbr > 0) {
+ $matching = true;
+ }
+ }
+ if (!$matching) {
+ $result = $result && $this->remove($id);
+ }
+ }
+ return $result;
+ }
+ return false;
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/Test.php Wed Apr
25 15:32:46 2012
@@ -0,0 +1,265 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+
+
+/**
+ * @see Zend_Cache_Backend_Interface
+ */
+require_once 'Zend/Cache/Backend/Interface.php';
+
+
+/**
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Cache_Backend_Test implements Zend_Cache_Backend_Interface
+{
+ /**
+ * Available options
+ *
+ * @var array available options
+ */
+ private $_options = array();
+
+ /**
+ * Frontend or Core directives
+ *
+ * @var array directives
+ */
+ private $_directives = array();
+
+ /**
+ * Array to log actions
+ *
+ * @var array $_log
+ */
+ private $_log = array();
+
+ /**
+ * Current index for log array
+ *
+ * @var int $_index
+ */
+ private $_index = 0;
+
+ /**
+ * Constructor
+ *
+ * @param array $options associative array of options
+ * @return void
+ */
+ public function __construct($options = array())
+ {
+ $this->_addLog('construct', array($options));
+ }
+
+ /**
+ * Set the frontend directives
+ *
+ * @param array $directives assoc of directives
+ * @return void
+ */
+ public function setDirectives($directives)
+ {
+ $this->_addLog('setDirectives', array($directives));
+ }
+
+ /**
+ * Test if a cache is available for the given id and (if yes) return
it (false else)
+ *
+ * For this test backend only, if $id == 'false', then the method will
return false
+ * if $id == 'serialized', the method will return a serialized array
+ * ('foo' else)
+ *
+ * @param string $id Cache id
+ * @param boolean $doNotTestCacheValidity If set to true, the cache
validity won't be tested
+ * @return string Cached datas (or false)
+ */
+ public function load($id, $doNotTestCacheValidity = false)
+ {
+ $this->_addLog('get', array($id, $doNotTestCacheValidity));
+ if ($id=='false') {
+ return false;
+ }
+ if ($id=='serialized') {
+ return serialize(array('foo'));
+ }
+ if ($id=='serialized2') {
+ return serialize(array('contentType' => null, 'data'
=> 'foo'));
+ }
+ if (($id=='71769f39054f75894288e397df04e445') or
($id=='615d222619fb20b527168340cebd0578')) {
+ return serialize(array('foo', 'bar'));
+ }
+ if (($id=='8a02d218a5165c467e7a5747cc6bd4b6') or
($id=='648aca1366211d17cbf48e65dc570bee')) {
+ return serialize(array('foo', 'bar'));
+ }
+ return 'foo';
+ }
+
+ /**
+ * Test if a cache is available or not (for the given id)
+ *
+ * For this test backend only, if $id == 'false', then the method will
return false
+ * (123456 else)
+ *
+ * @param string $id Cache id
+ * @return mixed|false false (a cache is not available) or "last
modified" timestamp (int) of the available cache record
+ */
+ public function test($id)
+ {
+ $this->_addLog('test', array($id));
+ if ($id=='false') {
+ return false;
+ }
+ if (($id=='d8523b3ee441006261eeffa5c3d3a0a7') or
($id=='3c439c922209e2cb0b54d6deffccd75a')) {
+ return false;
+ }
+ if (($id=='40f649b94977c0a6e76902e2a0b43587') or
($id=='e83249ea22178277d5befc2c5e2e9ace')) {
+ return false;
+ }
+ return 123456;
+ }
+
+ /**
+ * Save some string datas into a cache record
+ *
+ * For this test backend only, if $id == 'false', then the method will
return false
+ * (true else)
+ *
+ * @param string $data Datas to cache
+ * @param string $id Cache id
+ * @param array $tags Array of strings, the cache record
will be tagged by each string entry
+ * @param int $specificLifetime If != false, set a specific
lifetime for this cache record (null => infinite lifetime)
+ * @return boolean True if no problem
+ */
+ public function save($data, $id, $tags = array(), $specificLifetime =
false)
+ {
+ $this->_addLog('save', array($data, $id, $tags));
+ if ($id=='false') {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Remove a cache record
+ *
+ * For this test backend only, if $id == 'false', then the method will
return false
+ * (true else)
+ *
+ * @param string $id Cache id
+ * @return boolean True if no problem
+ */
+ public function remove($id)
+ {
+ $this->_addLog('remove', array($id));
+ if ($id=='false') {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Clean some cache records
+ *
+ * For this test backend only, if $mode == 'false', then the method
will return false
+ * (true else)
+ *
+ * Available modes are :
+ * Zend_Cache::CLEANING_MODE_ALL (default) => remove all cache
entries ($tags is not used)
+ * Zend_Cache::CLEANING_MODE_OLD => remove too old cache
entries ($tags is not used)
+ * Zend_Cache::CLEANING_MODE_MATCHING_TAG => remove cache entries
matching all given tags
+ * ($tags can be an
array of strings or a single string)
+ * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries
not {matching one of the given tags}
+ * ($tags can be an
array of strings or a single string)
+ *
+ * @param string $mode Clean mode
+ * @param array $tags Array of tags
+ * @return boolean True if no problem
+ */
+ public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags =
array())
+ {
+ $this->_addLog('clean', array($mode, $tags));
+ if ($mode=='false') {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Get the last log
+ *
+ * @return string The last log
+ */
+ public function getLastLog()
+ {
+ return $this->_log[$this->_index - 1];
+ }
+
+ /**
+ * Get the log index
+ *
+ * @return int Log index
+ */
+ public function getLogIndex()
+ {
+ return $this->_index;
+ }
+
+ /**
+ * Get the complete log array
+ *
+ * @return array Complete log array
+ */
+ public function getAllLogs()
+ {
+ return $this->_log;
+ }
+
+ /**
+ * Return true if the automatic cleaning is available for the backend
+ *
+ * @return boolean
+ */
+ public function isAutomaticCleaningAvailable()
+ {
+ return true;
+ }
+
+ /**
+ * Add an event to the log array
+ *
+ * @param string $methodName MethodName
+ * @param array $args Arguments
+ * @return void
+ */
+ private function _addLog($methodName, $args)
+ {
+ $this->_log[$this->_index] = array(
+ 'methodName' => $methodName,
+ 'args' => $args
+ );
+ $this->_index = $this->_index + 1;
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend/ZendPlatform.php
Wed Apr 25 15:32:46 2012
@@ -0,0 +1,285 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+
+/**
+ * @see Zend_Cache_Backend_Interface
+ */
+require_once 'Zend/Cache/Backend.php';
+
+/**
+ * @see Zend_Cache_Backend_Interface
+ */
+require_once 'Zend/Cache/Backend/Interface.php';
+
+
+/**
+ * Impementation of Zend Cache Backend using the Zend Platform (Output
Content Caching)
+ *
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Cache_Backend_ZendPlatform extends Zend_Cache_Backend
implements Zend_Cache_Backend_Interface
+{
+ /**
+ * internal ZP prefix
+ */
+ const TAGS_PREFIX = "internal_ZPtag:";
+
+ /**
+ * Constructor
+ * Validate that the Zend Platform is loaded and licensed
+ *
+ * @param array $options Associative array of options
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ public function __construct($options = array())
+ {
+ if (!function_exists('accelerator_license_info')) {
+ Zend_Cache::throwException('The Zend Platform extension must
be loaded for using this backend !');
+ }
+ if (!function_exists('accelerator_get_configuration')) {
+ $licenseInfo = accelerator_license_info();
+ Zend_Cache::throwException('The Zend Platform extension is not
loaded correctly: '.$licenseInfo['failure_reason']);
+ }
+ $accConf = accelerator_get_configuration();
+ if (@!$accConf['output_cache_licensed']) {
+ Zend_Cache::throwException('The Zend Platform extension does
not have the proper license to use content caching features');
+ }
+ if (@!$accConf['output_cache_enabled']) {
+ Zend_Cache::throwException('The Zend Platform content caching
feature must be enabled for using this backend, set the
\'zend_accelerator.output_cache_enabled\' directive to On !');
+ }
+ if (!is_writable($accConf['output_cache_dir'])) {
+ Zend_Cache::throwException('The cache copies directory \''.
ini_get('zend_accelerator.output_cache_dir') .'\' must be writable !');
+ }
+ parent:: __construct($options);
+ }
+
+ /**
+ * Test if a cache is available for the given id and (if yes) return
it (false else)
+ *
+ * @param string $id Cache id
+ * @param boolean $doNotTestCacheValidity If set to true, the cache
validity won't be tested
+ * @return string Cached data (or false)
+ */
+ public function load($id, $doNotTestCacheValidity = false)
+ {
+ // doNotTestCacheValidity implemented by giving zero lifetime to
the cache
+ if ($doNotTestCacheValidity) {
+ $lifetime = 0;
+ } else {
+ $lifetime = $this->_directives['lifetime'];
+ }
+ $res = output_cache_get($id, $lifetime);
+ if($res) {
+ return $res[0];
+ } else {
+ return false;
+ }
+ }
+
+
+ /**
+ * Test if a cache is available or not (for the given id)
+ *
+ * @param string $id Cache id
+ * @return mixed|false false (a cache is not available) or "last
modified" timestamp (int) of the available cache record
+ */
+ public function test($id)
+ {
+ $result = output_cache_get($id, $this->_directives['lifetime']);
+ if ($result) {
+ return $result[1];
+ }
+ return false;
+ }
+
+ /**
+ * Save some string datas into a cache record
+ *
+ * Note : $data is always "string" (serialization is done by the
+ * core not by the backend)
+ *
+ * @param string $data Data to cache
+ * @param string $id Cache id
+ * @param array $tags Array of strings, the cache record
will be tagged by each string entry
+ * @param int $specificLifetime If != false, set a specific
lifetime for this cache record (null => infinite lifetime)
+ * @return boolean true if no problem
+ */
+ public function save($data, $id, $tags = array(), $specificLifetime =
false)
+ {
+ if (!($specificLifetime === false)) {
+ $this->_log("Zend_Cache_Backend_ZendPlatform::save() : non
false specifc lifetime is unsuported for this backend");
+ }
+
+ $lifetime = $this->_directives['lifetime'];
+ $result1 = output_cache_put($id, array($data, time()));
+ $result2 = (count($tags) == 0);
+
+ foreach ($tags as $tag) {
+ $tagid = self::TAGS_PREFIX.$tag;
+ $old_tags = output_cache_get($tagid, $lifetime);
+ if ($old_tags === false) {
+ $old_tags = array();
+ }
+ $old_tags[$id] = $id;
+ output_cache_remove_key($tagid);
+ $result2 = output_cache_put($tagid, $old_tags);
+ }
+
+ return $result1 && $result2;
+ }
+
+
+ /**
+ * Remove a cache record
+ *
+ * @param string $id Cache id
+ * @return boolean True if no problem
+ */
+ public function remove($id)
+ {
+ return output_cache_remove_key($id);
+ }
+
+
+ /**
+ * Clean some cache records
+ *
+ * Available modes are :
+ * Zend_Cache::CLEANING_MODE_ALL (default) => remove all cache
entries ($tags is not used)
+ * Zend_Cache::CLEANING_MODE_OLD => remove too old cache
entries ($tags is not used)
+ * This mode is not
supported in this backend
+ * Zend_Cache::CLEANING_MODE_MATCHING_TAG => remove cache entries
matching all given tags
+ * ($tags can be an
array of strings or a single string)
+ * This mode is not
supported in this backend
+ * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries
not matching one of the given tags
+ * ($tags can be an
array of strings or a single string)
+ * This mode is not
supported in this backend
+ *
+ * @param string $mode Clean mode
+ * @param array $tags Array of tags
+ * @return boolean True if no problem
+ */
+ public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags =
array())
+ {
+ if ($mode==Zend_Cache::CLEANING_MODE_MATCHING_TAG) {
+ $idlist = null;
+ foreach ($tags as $tag) {
+ $next_idlist = output_cache_get(self::TAGS_PREFIX.$tag,
$this->_directives['lifetime']);
+ if ($idlist) {
+ $idlist = array_intersect_assoc($idlist, $next_idlist);
+ } else {
+ $idlist = $next_idlist;
+ }
+ if (count($idlist) == 0) {
+ // if ID list is already empty - we may skip checking
other IDs
+ $idlist = null;
+ break;
+ }
+ }
+ if ($idlist) {
+ foreach ($idlist as $id) {
+ output_cache_remove_key($id);
+ }
+ }
+ return true;
+ }
+ if ($mode==Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG) {
+ $this->_log("Zend_Cache_Backend_ZendPlatform::clean() :
CLEANING_MODE_NOT_MATCHING_TAG is not supported by the Zend Platform
backend");
+ }
+ $cache_dir = ini_get('zend_accelerator.output_cache_dir');
+ if (!$cache_dir) {
+ return false;
+ }
+ $cache_dir .= '/.php_cache_api/';
+ return $this->_clean($cache_dir, $mode);
+ }
+
+ /**
+ * Clean a directory and recursivly go over it's subdirectories
+ *
+ * Remove all the cached files that need to be cleaned (according to
mode and files mtime)
+ *
+ * @param string $dir Path of directory ot clean
+ * @param string $mode The same parameter as in
Zend_Cache_Backend_ZendPlatform::clean()
+ * @return boolean True if ok
+ */
+ private function _clean($dir, $mode)
+ {
+ $d = @dir($dir);
+ if (!$d) {
+ return false;
+ }
+ $result = true;
+ while (false !== ($file = $d->read())) {
+ if ($file == '.' || $file == '..') {
+ continue;
+ }
+ $file = $d->path . $file;
+ if (is_dir($file)) {
+ $result = ($this->_clean($file .'/', $mode)) && ($result);
+ } else {
+ if ($mode == Zend_Cache::CLEANING_MODE_ALL) {
+ $result = ($this->_remove($file)) && ($result);
+ } else if ($mode == Zend_Cache::CLEANING_MODE_OLD) {
+ // Files older than lifetime get deleted from cache
+ if (!is_null($this->_directives['lifetime'])) {
+ if ((time() - @filemtime($file)) >
$this->_directives['lifetime']) {
+ $result = ($this->_remove($file)) && ($result);
+ }
+ }
+ }
+ }
+ }
+ $d->close();
+ return $result;
+ }
+
+ /**
+ * Remove a file
+ *
+ * If we can't remove the file (because of locks or any problem), we
will touch
+ * the file to invalidate it
+ *
+ * @param string $file Complete file path
+ * @return boolean True if ok
+ */
+ private function _remove($file)
+ {
+ if (!@unlink($file)) {
+ # If we can't remove the file (because of locks or any
problem), we will touch
+ # the file to invalidate it
+ $this->_log("Zend_Cache_Backend_ZendPlatform::_remove() : we
can't remove $file => we are going to try to invalidate it");
+ if (is_null($this->_directives['lifetime'])) {
+ return false;
+ }
+ if (!file_exists($file)) {
+ return false;
+ }
+ return @touch($file, time() -
2*abs($this->_directives['lifetime']));
+ }
+ return true;
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Backend.php Wed Apr 25
15:32:46 2012
@@ -0,0 +1,224 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+
+
+/**
+ * @package Zend_Cache
+ * @subpackage Zend_Cache_Backend
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Cache_Backend
+{
+ /**
+ * Frontend or Core directives
+ *
+ * =====> (int) lifetime :
+ * - Cache lifetime (in seconds)
+ * - If null, the cache is valid forever
+ *
+ * =====> (int) logging :
+ * - if set to true, a logging is activated throw Zend_Log
+ *
+ * @var array directives
+ */
+ protected $_directives = array(
+ 'lifetime' => 3600,
+ 'logging' => false,
+ 'logger' => null
+ );
+
+ /**
+ * Available options
+ *
+ * @var array available options
+ */
+ protected $_options = array();
+
+ /**
+ * Constructor
+ *
+ * @param array $options Associative array of options
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ public function __construct($options = array())
+ {
+ if (!is_array($options)) {
+ Zend_Cache::throwException('Options parameter must be an
array');
+ }
+ while (list($name, $value) = each($options)) {
+ $this->setOption($name, $value);
+ }
+ }
+
+ /**
+ * Set the frontend directives
+ *
+ * @param array $directives Assoc of directives
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ public function setDirectives($directives)
+ {
+ if (!is_array($directives)) Zend_Cache::throwException('Directives
parameter must be an array');
+ while (list($name, $value) = each($directives)) {
+ if (!is_string($name)) {
+ Zend_Cache::throwException("Incorrect option name :
$name");
+ }
+ $name = strtolower($name);
+ if (array_key_exists($name, $this->_directives)) {
+ $this->_directives[$name] = $value;
+ }
+
+ }
+
+ $this->_loggerSanity();
+ }
+
+ /**
+ * Set an option
+ *
+ * @param string $name
+ * @param mixed $value
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ public function setOption($name, $value)
+ {
+ if (!is_string($name)) {
+ Zend_Cache::throwException("Incorrect option name : $name");
+ }
+ $name = strtolower($name);
+ if (!array_key_exists($name, $this->_options)) {
+ Zend_Cache::throwException("Incorrect option name : $name");
+ }
+ $this->_options[$name] = $value;
+ }
+
+ /**
+ * Get the life time
+ *
+ * if $specificLifetime is not false, the given specific life time is
used
+ * else, the global lifetime is used
+ *
+ * @param int $specificLifetime
+ * @return int Cache life time
+ */
+ public function getLifetime($specificLifetime)
+ {
+ if ($specificLifetime === false) {
+ return $this->_directives['lifetime'];
+ }
+ return $specificLifetime;
+ }
+
+ /**
+ * Return true if the automatic cleaning is available for the backend
+ *
+ * @return boolean
+ */
+ public function isAutomaticCleaningAvailable()
+ {
+ return true;
+ }
+
+ /**
+ * Return a system-wide tmp directory
+ *
+ * @return string System-wide tmp directory
+ */
+ static function getTmpDir()
+ {
+ if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
+ // windows...
+ foreach (array($_ENV, $_SERVER) as $tab) {
+ foreach (array('TEMP', 'TMP', 'windir', 'SystemRoot') as
$key) {
+ if (isset($tab[$key])) {
+ $result = $tab[$key];
+ if (($key == 'windir') or ($key == 'SystemRoot')) {
+ $result = $result . '\\temp';
+ }
+ return $result;
+ }
+ }
+ }
+ return '\\temp';
+ } else {
+ // unix...
+ if (isset($_ENV['TMPDIR'])) return $_ENV['TMPDIR'];
+ if (isset($_SERVER['TMPDIR'])) return $_SERVER['TMPDIR'];
+ return '/tmp';
+ }
+ }
+
+ /**
+ * Make sure if we enable logging that the Zend_Log class
+ * is available.
+ * Create a default log object if none is set.
+ *
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ protected function _loggerSanity()
+ {
+ if (!isset($this->_directives['logging']) |
| !$this->_directives['logging']) {
+ return;
+ }
+ try {
+ /**
+ * @see Zend_Loader
+ * @see Zend_Log
+ */
+ require_once 'Zend/Loader.php';
+ Zend_Loader::loadClass('Zend_Log');
+ } catch (Zend_Exception $e) {
+ Zend_Cache::throwException('Logging feature is enabled but the
Zend_Log class is not available');
+ }
+ if (isset($this->_directives['logger']) &&
$this->_directives['logger'] instanceof Zend_Log) {
+ return;
+ }
+ // Create a default logger to the standard output stream
+ Zend_Loader::loadClass('Zend_Log_Writer_Stream');
+ $logger = new Zend_Log(new Zend_Log_Writer_Stream('php://output'));
+ $this->_directives['logger'] = $logger;
+ }
+
+ /**
+ * Log a message at the WARN (4) priority.
+ *
+ * @param string $message
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ protected function _log($message, $priority = 4)
+ {
+ if (!$this->_directives['logging']) {
+ return;
+ }
+ if (!(isset($this->_directives['logger']) ||
$this->_directives['logger'] instanceof Zend_Log)) {
+ Zend_Cache::throwException('Logging is enabled but logger is
not set');
+ }
+ $logger = $this->_directives['logger'];
+ $logger->log($message, $priority);
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/gtv_template2_ajax_php_mysql/Zend/Cache/Core.php Wed Apr 25
15:32:46 2012
@@ -0,0 +1,474 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to lic...@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Cache
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+
+
+/**
+ * @package Zend_Cache
+ * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc.
(http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD
License
+ */
+class Zend_Cache_Core
+{
+ /**
+ * Backend Object
+ *
+ * @var object $_backend
+ */
+ private $_backend = null;
+
+ /**
+ * Available options
+ *
+ * ====> (boolean) write_control :
+ * - Enable / disable write control (the cache is read just after
writing to detect corrupt entries)
+ * - Enable write control will lightly slow the cache writing but not
the cache reading
+ * Write control can detect some corrupt cache files but maybe it's
not a perfect control
+ *
+ * ====> (boolean) caching :
+ * - Enable / disable caching
+ * (can be very useful for the debug of cached scripts)
+ *
+ * =====> (string) cache_id_prefix :
+ * - prefix for cache ids (namespace)
+ *
+ * ====> (boolean) automatic_serialization :
+ * - Enable / disable automatic serialization
+ * - It can be used to save directly datas which aren't strings (but
it's slower)
+ *
+ * ====> (int) automatic_cleaning_factor :
+ * - Disable / Tune the automatic cleaning process
+ * - The automatic cleaning process destroy too old (for the given
life time)
+ * cache files when a new cache file is written :
+ * 0 => no automatic cache cleaning
+ * 1 => systematic cache cleaning
+ * x (integer) > 1 => automatic cleaning randomly 1 times on x
cache write
+ *
+ * ====> (int) lifetime :
+ * - Cache lifetime (in seconds)
+ * - If null, the cache is valid forever.
+ *
+ * ====> (boolean) logging :
+ * - If set to true, logging is activated (but the system is slower)
+ *
+ * ====> (boolean) ignore_user_abort
+ * - If set to true, the core will set the ignore_user_abort PHP flag
inside the
+ * save() method to avoid cache corruptions in some cases (default
false)
+ *
+ * @var array $_options available options
+ */
+ protected $_options = array(
+ 'write_control' => true,
+ 'caching' => true,
+ 'cache_id_prefix' => null,
+ 'automatic_serialization' => false,
+ 'automatic_cleaning_factor' => 10,
+ 'lifetime' => 3600,
+ 'logging' => false,
+ 'logger' => null,
+ 'ignore_user_abort' => false
+ );
+
+ /**
+ * Array of options which have to be transfered to backend
+ *
+ * @var array $_directivesList
+ */
+ protected static $_directivesList =
array('lifetime', 'logging', 'logger');
+
+ /**
+ * Not used for the core, just a sort a hint to get a common
setOption() method (for the core and for frontends)
+ *
+ * @var array $_specificOptions
+ */
+ protected $_specificOptions = array();
+
+ /**
+ * Last used cache id
+ *
+ * @var string $_lastId
+ */
+ private $_lastId = null;
+
+ /**
+ * Constructor
+ *
+ * @param array $options Associative array of options
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ public function __construct($options = array())
+ {
+ if (!is_array($options)) {
+ Zend_Cache::throwException('Options parameter must be an
array');
+ }
+ while (list($name, $value) = each($options)) {
+ $this->setOption($name, $value);
+ }
+ $this->_loggerSanity();
+ }
+
+ /**
+ * Set the backend
+ *
+ * @param object $backendObject
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ public function setBackend($backendObject)
+ {
+ if (!is_object($backendObject)) {
+ Zend_Cache::throwException('Incorrect backend object !');
+ }
+ $this->_backend= $backendObject;
+ // some options (listed in $_directivesList) have to be given
+ // to the backend too (even if they are not "backend specific")
+ $directives = array();
+ foreach (Zend_Cache_Core::$_directivesList as $directive) {
+ $directives[$directive] = $this->_options[$directive];
+ }
+ $this->_backend->setDirectives($directives);
+ }
+
+ /**
+ * Public frontend to set an option
+ *
+ * There is an additional validation (relatively to the protected
_setOption method)
+ *
+ * @param string $name Name of the option
+ * @param mixed $value Value of the option
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ public function setOption($name, $value)
+ {
+ if (is_string($name)) {
+ $name = strtolower($name);
+ if (array_key_exists($name, $this->_options)) {
+ // This is a Core option
+ $this->_setOption($name, $value);
+ return;
+ }
+ if (array_key_exists($name, $this->_specificOptions)) {
+ // This a specic option of this frontend
+ $this->_specificOptions[$name] = $value;
+ return;
+ }
+ }
+ Zend_Cache::throwException("Incorrect option name : $name");
+ }
+
+ /**
+ * Set an option
+ *
+ * @param string $name Name of the option
+ * @param mixed $value Value of the option
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ private function _setOption($name, $value)
+ {
+ if (!is_string($name) || !array_key_exists($name,
$this->_options)) {
+ Zend_Cache::throwException("Incorrect option name : $name");
+ }
+ $this->_options[$name] = $value;
+ }
+
+ /**
+ * Force a new lifetime
+ *
+ * The new value is set for the core/frontend but for the backend too
(directive)
+ *
+ * @param int $newLifetime New lifetime (in seconds)
+ * @return void
+ */
+ public function setLifetime($newLifetime)
+ {
+ $this->_options['lifetime'] = $newLifetime;
+ $this->_backend->setDirectives(array(
+ 'lifetime' => $newLifetime
+ ));
+ }
+
+ /**
+ * Test if a cache is available for the given id and (if yes) return
it (false else)
+ *
+ * @param string $id Cache id
+ * @param boolean $doNotTestCacheValidity If set to true, the cache
validity won't be tested
+ * @param boolean $doNotUnserialize Do not serialize (even if
automatic_serialization is true) => for internal use
+ * @return mixed|false Cached datas
+ */
+ public function load($id, $doNotTestCacheValidity = false,
$doNotUnserialize = false)
+ {
+ if (!$this->_options['caching']) {
+ return false;
+ }
+ $id = $this->_id($id); // cache id may need prefix
+ $this->_lastId = $id;
+ self::_validateIdOrTag($id);
+ $data = $this->_backend->load($id, $doNotTestCacheValidity);
+ if ($data===false) {
+ // no cache available
+ return false;
+ }
+ if ((!$doNotUnserialize) &&
$this->_options['automatic_serialization']) {
+ // we need to unserialize before sending the result
+ return unserialize($data);
+ }
+ return $data;
+ }
+
+ /**
+ * Test if a cache is available for the given id
+ *
+ * @param string $id Cache id
+ * @return boolean True is a cache is available, false else
+ */
+ public function test($id)
+ {
+ if (!$this->_options['caching']) {
+ return false;
+ }
+ $id = $this->_id($id); // cache id may need prefix
+ self::_validateIdOrTag($id);
+ $this->_lastId = $id;
+ return $this->_backend->test($id);
+ }
+
+ /**
+ * Save some data in a cache
+ *
+ * @param mixed $data Data to put in cache (can be another
type than string if automatic_serialization is on)
+ * @param cache $id Cache id (if not set, the last cache
id will be used)
+ * @param array $tags Cache tags
+ * @param int $specificLifetime If != false, set a specific lifetime
for this cache record (null => infinite lifetime)
+ * @throws Zend_Cache_Exception
+ * @return boolean True if no problem
+ */
+ public function save($data, $id = null, $tags = array(),
$specificLifetime = false)
+ {
+ if (!$this->_options['caching']) {
+ return true;
+ }
+ if (is_null($id)) {
+ $id = $this->_lastId;
+ } else {
+ $id = $this->_id($id);
+ }
+ self::_validateIdOrTag($id);
+ self::_validateTagsArray($tags);
+ if ($this->_options['automatic_serialization']) {
+ // we need to serialize datas before storing them
+ $data = serialize($data);
+ } else {
+ if (!is_string($data)) {
+ Zend_Cache::throwException("Datas must be string or set
automatic_serialization = true");
+ }
+ }
+ // automatic cleaning
+ if ($this->_options['automatic_cleaning_factor'] > 0) {
+ $rand = rand(1, $this->_options['automatic_cleaning_factor']);
+ if ($rand==1) {
+ if ($this->_backend->isAutomaticCleaningAvailable()) {
+ $this->clean(Zend_Cache::CLEANING_MODE_OLD);
+ } else {
+ $this->_log('Zend_Cache_Core::save() / automatic
cleaning is not available with this backend');
+ }
+ }
+ }
+ if ($this->_options['ignore_user_abort']) {
+ $abort = ignore_user_abort(true);
+ }
+ $result = $this->_backend->save($data, $id, $tags,
$specificLifetime);
+ if ($this->_options['ignore_user_abort']) {
+ ignore_user_abort($abort);
+ }
+ if (!$result) {
+ // maybe the cache is corrupted, so we remove it !
+ if ($this->_options['logging']) {
+ $this->_log("Zend_Cache_Core::save() : impossible to save
cache (id=$id)");
+ }
+ $this->remove($id);
+ return false;
+ }
+ if ($this->_options['write_control']) {
+ $data2 = $this->_backend->load($id, true);
+ if ($data!=$data2) {
+ $this->_log('Zend_Cache_Core::save() / write_control :
written and read data do not match');
+ $this->remove($id);
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Remove a cache
+ *
+ * @param string $id Cache id to remove
+ * @return boolean True if ok
+ */
+ public function remove($id)
+ {
+ if (!$this->_options['caching']) {
+ return true;
+ }
+ $id = $this->_id($id); // cache id may need prefix
+ self::_validateIdOrTag($id);
+ return $this->_backend->remove($id);
+ }
+
+ /**
+ * Clean cache entries
+ *
+ * Available modes are :
+ * 'all' (default) => remove all cache entries ($tags is not used)
+ * 'old' => remove too old cache entries ($tags is not used)
+ * 'matchingTag' => remove cache entries matching all given tags
+ * ($tags can be an array of strings or a single
string)
+ * 'notMatchingTag' => remove cache entries not matching one of the
given tags
+ * ($tags can be an array of strings or a single
string)
+ *
+ * @param string $mode
+ * @param array|string $tags
+ * @throws Zend_Cache_Exception
+ * @return boolean True if ok
+ */
+ public function clean($mode = 'all', $tags = array())
+ {
+ if (!$this->_options['caching']) {
+ return true;
+ }
+ if (!in_array($mode, array(Zend_Cache::CLEANING_MODE_ALL,
Zend_Cache::CLEANING_MODE_OLD, Zend_Cache::CLEANING_MODE_MATCHING_TAG,
Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG))) {
+ Zend_Cache::throwException('Invalid cleaning mode');
+ }
+ self::_validateTagsArray($tags);
+ return $this->_backend->clean($mode, $tags);
+ }
+
+ /**
+ * Validate a cache id or a tag (security, reliable filenames,
reserved prefixes...)
+ *
+ * Throw an exception if a problem is found
+ *
+ * @param string $string Cache id or tag
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ private static function _validateIdOrTag($string)
+ {
+ if (!is_string($string)) {
+ Zend_Cache::throwException('Invalid id or tag : must be a
string');
+ }
+ if (substr($string, 0, 9) == 'internal-') {
+ Zend_Cache::throwException('"internal-*" ids or tags are
reserved');
+ }
+ if (!preg_match('~^[\w]+$~D', $string)) {
+ Zend_Cache::throwException("Invalid id or tag '$string' : must
use only [a-zA-Z0-9_]");
+ }
+ }
+
+ /**
+ * Validate a tags array (security, reliable filenames, reserved
prefixes...)
+ *
+ * Throw an exception if a problem is found
+ *
+ * @param array $tags Array of tags
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ private static function _validateTagsArray($tags)
+ {
+ if (!is_array($tags)) {
+ Zend_Cache::throwException('Invalid tags array : must be an
array');
+ }
+ foreach($tags as $tag) {
+ self::_validateIdOrTag($tag);
+ }
+ reset($tags);
+ }
+
+ /**
+ * Make sure if we enable logging that the Zend_Log class
+ * is available.
+ * Create a default log object if none is set.
+ *
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ protected function _loggerSanity()
+ {
+ if (!isset($this->_options['logging']) |
| !$this->_options['logging']) {
+ return;
+ }
+ try {
+ /**
+ * @see Zend_Loader
+ * @see Zend_Log
+ */
+ require_once 'Zend/Loader.php';
+ Zend_Loader::loadClass('Zend_Log');
+ } catch (Zend_Exception $e) {
+ Zend_Cache::throwException('Logging feature is enabled but the
Zend_Log class is not available');
+ }
+ if (isset($this->_options['logger']) && $this->_options['logger']
instanceof Zend_Log) {
+ return;
+ }
+ // Create a default logger to the standard output stream
+ Zend_Loader::loadClass('Zend_Log_Writer_Stream');
+ $logger = new Zend_Log(new Zend_Log_Writer_Stream('php://output'));
+ $this->_options['logger'] = $logger;
+ }
+
+ /**
+ * Log a message at the WARN (4) priority.
+ *
+ * @param string $message
+ * @throws Zend_Cache_Exception
+ * @return void
+ */
+ protected function _log($message, $priority = 4)
+ {
+ if (!$this->_options['logging']) {
+ return;
+ }
+ if (!(isset($this->_options['logger']) ||
$this->_options['logger'] instanceof Zend_Log)) {
+ Zend_Cache::throwException('Logging is enabled but logger is
not set');
+ }
+ $logger = $this->_options['logger'];
+ $logger->log($message, $priority);
+ }
+
+ /**
+ * Make and return a cache id
+ *
+ * Checks 'cache_id_prefix' and returns new id with prefix or simply
the id if null
+ *
+ * @param string $id Cache id
+ * @return string Cache id (with or without prefix)
+ */
+ private function _id($id)
+ {
+ if (!is_null($id) && isset($this->_options['cache_id_prefix'])) {
+ return $this->_options['cache_id_prefix'] . $id; // return
with prefix
+ }
+ return $id; // no prefix, just return the $id passed
+ }
+
+}
=======================================
***Additional files exist in this changeset.***
Reply all
Reply to author
Forward
0 new messages