From: Roland Häder Date: Wed, 20 Apr 2011 04:22:48 +0000 (+0000) Subject: eol-style set #3 X-Git-Url: https://git.mxchange.org/?p=core.git;a=commitdiff_plain;h=09ebb4597f5955b41fb693f3eed1d66f286e8448 eol-style set #3 --- diff --git a/.gitattributes b/.gitattributes index 14d4ecc2..f9dbe0df 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,46 +1,40 @@ * text=auto !eol /application-external.txt svneol=native#text/plain -docs/COPYING -text -docs/COPYING.documents -text -docs/COPYING.software -text -docs/NEWS -text -docs/README -text -docs/THANKS -text docs/TODOs.txt svneol=native#text/plain -inc/.htaccess -text svneol=unset#text/plain +inc/.htaccess svneol=native#text/plain inc/classes.php svneol=native#text/plain -inc/classes/.htaccess -text svneol=unset#text/plain -inc/classes/exceptions/.htaccess -text svneol=unset#text/plain -inc/classes/exceptions/actions/.htaccess -text svneol=unset#text/plain +inc/classes/.htaccess svneol=native#text/plain +inc/classes/exceptions/.htaccess svneol=native#text/plain +inc/classes/exceptions/actions/.htaccess svneol=native#text/plain inc/classes/exceptions/actions/class_InvalidActionException.php svneol=native#text/plain -inc/classes/exceptions/auth/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/auth/.htaccess svneol=native#text/plain inc/classes/exceptions/auth/class_UserAuthorizationException.php svneol=native#text/plain inc/classes/exceptions/class_ svneol=native#text/plain inc/classes/exceptions/class_FrameworkException.php svneol=native#text/plain -inc/classes/exceptions/compressor/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/compressor/.htaccess svneol=native#text/plain inc/classes/exceptions/compressor/class_MismatchingCompressorsException.php svneol=native#text/plain -inc/classes/exceptions/controller/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/controller/.htaccess svneol=native#text/plain inc/classes/exceptions/controller/class_DefaultControllerException.php svneol=native#text/plain inc/classes/exceptions/controller/class_InvalidControllerException.php svneol=native#text/plain -inc/classes/exceptions/criteria/.htaccess -text svneol=unset#text/plain -inc/classes/exceptions/crypto/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/criteria/.htaccess svneol=native#text/plain +inc/classes/exceptions/crypto/.htaccess svneol=native#text/plain inc/classes/exceptions/crypto/class_EncryptInvalidLengthException.php svneol=native#text/plain inc/classes/exceptions/crypto/class_EncryptMissingException.php svneol=native#text/plain -inc/classes/exceptions/database/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/database/.htaccess svneol=native#text/plain inc/classes/exceptions/database/class_ svneol=native#text/plain inc/classes/exceptions/database/class_DatabaseException.php svneol=native#text/plain -inc/classes/exceptions/database/general/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/database/general/.htaccess svneol=native#text/plain inc/classes/exceptions/database/general/class_SqlException.php svneol=native#text/plain -inc/classes/exceptions/database/local_file/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/database/local_file/.htaccess svneol=native#text/plain inc/classes/exceptions/database/local_file/class_SavePathIsEmptyException.php svneol=native#text/plain inc/classes/exceptions/database/local_file/class_SavePathIsNoDirectoryException.php svneol=native#text/plain inc/classes/exceptions/database/local_file/class_SavePathReadProtectedException.php svneol=native#text/plain inc/classes/exceptions/database/local_file/class_SavePathWriteProtectedException.php svneol=native#text/plain -inc/classes/exceptions/database/wrapper/.htaccess -text svneol=unset#text/plain -inc/classes/exceptions/filter/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/database/wrapper/.htaccess svneol=native#text/plain +inc/classes/exceptions/filter/.htaccess svneol=native#text/plain inc/classes/exceptions/filter/class_FilterChainException.php svneol=native#text/plain inc/classes/exceptions/filter/class_InvalidFilterChainException.php svneol=native#text/plain -inc/classes/exceptions/helper/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/helper/.htaccess svneol=native#text/plain inc/classes/exceptions/helper/class_FormClosedException.php svneol=native#text/plain inc/classes/exceptions/helper/class_FormGroupClosedException.php svneol=native#text/plain inc/classes/exceptions/helper/class_FormOpenedException.php svneol=native#text/plain @@ -50,7 +44,7 @@ inc/classes/exceptions/helper/class_HelperSubGroupAlreadyCreatedException.php sv inc/classes/exceptions/helper/class_InvalidFormNameException.php svneol=native#text/plain inc/classes/exceptions/helper/class_NoGroupOpenedException.php svneol=native#text/plain inc/classes/exceptions/helper/class_UserInstanceMissingException.php svneol=native#text/plain -inc/classes/exceptions/io/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/io/.htaccess svneol=native#text/plain inc/classes/exceptions/io/class_DirPointerNotOpenedException.php svneol=native#text/plain inc/classes/exceptions/io/class_FileIoException.php svneol=native#text/plain inc/classes/exceptions/io/class_FileNotFoundException.php svneol=native#text/plain @@ -63,14 +57,14 @@ inc/classes/exceptions/io/class_InvalidResourceException.php svneol=native#text/ inc/classes/exceptions/io/class_PathIsEmptyException.php svneol=native#text/plain inc/classes/exceptions/io/class_PathIsNoDirectoryException.php svneol=native#text/plain inc/classes/exceptions/io/class_PathReadProtectedException.php svneol=native#text/plain -inc/classes/exceptions/language/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/language/.htaccess svneol=native#text/plain inc/classes/exceptions/language/class_InvalidLanguagePathStringException.php svneol=native#text/plain inc/classes/exceptions/language/class_LanguagePathIsEmptyException.php svneol=native#text/plain inc/classes/exceptions/language/class_LanguagePathIsNoDirectoryException.php svneol=native#text/plain inc/classes/exceptions/language/class_LanguagePathReadProtectedException.php svneol=native#text/plain inc/classes/exceptions/language/class_MissingFileIoHandlerException.php svneol=native#text/plain inc/classes/exceptions/language/class_MissingLanguageHandlerException.php svneol=native#text/plain -inc/classes/exceptions/main/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/main/.htaccess svneol=native#text/plain inc/classes/exceptions/main/class_AssertionException.php svneol=native#text/plain inc/classes/exceptions/main/class_ClassMismatchException.php svneol=native#text/plain inc/classes/exceptions/main/class_ClassNotFoundException.php svneol=native#text/plain @@ -94,23 +88,23 @@ inc/classes/exceptions/main/class_NullPointerException.php svneol=native#text/pl inc/classes/exceptions/main/class_ResponseHeadersAlreadySentException.php svneol=native#text/plain inc/classes/exceptions/main/class_UnsupportedOperationException.php svneol=native#text/plain inc/classes/exceptions/main/class_VariableIsNotSetException.php svneol=native#text/plain -inc/classes/exceptions/result/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/result/.htaccess svneol=native#text/plain inc/classes/exceptions/result/class_InvalidDatabaseResultException.php svneol=native#text/plain inc/classes/exceptions/result/class_ResultUpdateException.php svneol=native#text/plain -inc/classes/exceptions/socket/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/socket/.htaccess svneol=native#text/plain inc/classes/exceptions/socket/class_InvalidServerSocketException.php svneol=native#text/plain inc/classes/exceptions/socket/class_InvalidSocketException.php svneol=native#text/plain inc/classes/exceptions/socket/class_NoSocketRegisteredException.php svneol=native#text/plain inc/classes/exceptions/socket/class_SocketShutdownException.php svneol=native#text/plain -inc/classes/exceptions/stacker/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/stacker/.htaccess svneol=native#text/plain inc/classes/exceptions/stacker/class_AlreadyInitializedStackerException.php svneol=native#text/plain inc/classes/exceptions/stacker/class_EmptyStackerException.php svneol=native#text/plain inc/classes/exceptions/stacker/class_FullStackerException.php svneol=native#text/plain inc/classes/exceptions/stacker/class_NoStackerException.php svneol=native#text/plain -inc/classes/exceptions/state/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/state/.htaccess svneol=native#text/plain inc/classes/exceptions/state/class_InvalidStateException.php svneol=native#text/plain inc/classes/exceptions/state/class_InvalidStateInstanceException.php svneol=native#text/plain -inc/classes/exceptions/template/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/template/.htaccess svneol=native#text/plain inc/classes/exceptions/template/class_BasePathIsEmptyException.php svneol=native#text/plain inc/classes/exceptions/template/class_BasePathIsNoDirectoryException.php svneol=native#text/plain inc/classes/exceptions/template/class_BasePathReadProtectedException.php svneol=native#text/plain @@ -118,59 +112,59 @@ inc/classes/exceptions/template/class_InvalidBasePathStringException.php svneol= inc/classes/exceptions/template/class_NoVariableException.php svneol=native#text/plain inc/classes/exceptions/template/class_UnexpectedTemplateTypeException.php svneol=native#text/plain inc/classes/exceptions/template/class_UnsupportedTemplateEngineException.php svneol=native#text/plain -inc/classes/exceptions/user/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/user/.htaccess svneol=native#text/plain inc/classes/exceptions/user/class_AccountPasswordMismatchException.php svneol=native#text/plain inc/classes/exceptions/user/class_UserEmailMissingException.php svneol=native#text/plain inc/classes/exceptions/user/class_UserPasswordMismatchException.php svneol=native#text/plain inc/classes/exceptions/user/class_UsernameMissingException.php svneol=native#text/plain -inc/classes/exceptions/xml/.htaccess -text svneol=unset#text/plain +inc/classes/exceptions/xml/.htaccess svneol=native#text/plain inc/classes/exceptions/xml/class_InvalidXmlNodeException.php svneol=native#text/plain inc/classes/exceptions/xml/class_XmlNodeMismatchException.php svneol=native#text/plain inc/classes/exceptions/xml/class_XmlParserException.php svneol=native#text/plain -inc/classes/interfaces/.htaccess -text svneol=unset#text/plain -inc/classes/interfaces/actions/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/.htaccess svneol=native#text/plain +inc/classes/interfaces/actions/.htaccess svneol=native#text/plain inc/classes/interfaces/actions/class_PerformableAction.php svneol=native#text/plain -inc/classes/interfaces/actions/commands/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/actions/commands/.htaccess svneol=native#text/plain inc/classes/interfaces/actions/commands/class_Commandable.php svneol=native#text/plain -inc/classes/interfaces/application/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/application/.htaccess svneol=native#text/plain inc/classes/interfaces/application/class_ManageableApplication.php svneol=native#text/plain -inc/classes/interfaces/auth/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/auth/.htaccess svneol=native#text/plain inc/classes/interfaces/auth/class_Authorizeable.php svneol=native#text/plain -inc/classes/interfaces/cache/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/cache/.htaccess svneol=native#text/plain inc/classes/interfaces/cache/class_Cacheable.php svneol=native#text/plain -inc/classes/interfaces/captcha/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/captcha/.htaccess svneol=native#text/plain inc/classes/interfaces/captcha/class_SolveableCaptcha.php svneol=native#text/plain inc/classes/interfaces/class_ svneol=native#text/plain inc/classes/interfaces/class_FrameworkInterface.php svneol=native#text/plain -inc/classes/interfaces/compressor/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/compressor/.htaccess svneol=native#text/plain inc/classes/interfaces/compressor/class_Compressor.php svneol=native#text/plain -inc/classes/interfaces/controller/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/controller/.htaccess svneol=native#text/plain inc/classes/interfaces/controller/class_Controller.php svneol=native#text/plain -inc/classes/interfaces/criteria/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/criteria/.htaccess svneol=native#text/plain inc/classes/interfaces/criteria/class_Criteria.php svneol=native#text/plain -inc/classes/interfaces/criteria/extended/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/criteria/extended/.htaccess svneol=native#text/plain inc/classes/interfaces/criteria/extended/class_LocalSearchCriteria.php svneol=native#text/plain inc/classes/interfaces/criteria/extended/class_LocalUpdateCriteria.php svneol=native#text/plain inc/classes/interfaces/criteria/extended/class_StoreableCriteria.php svneol=native#text/plain -inc/classes/interfaces/crypto/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/crypto/.htaccess svneol=native#text/plain inc/classes/interfaces/crypto/class_Cryptable.php svneol=native#text/plain -inc/classes/interfaces/database/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/database/.htaccess svneol=native#text/plain inc/classes/interfaces/database/class_FrameworkDatabaseInterface.php svneol=native#text/plain inc/classes/interfaces/database/class_Updateable.php svneol=native#text/plain -inc/classes/interfaces/database/frontend/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/database/frontend/.htaccess svneol=native#text/plain inc/classes/interfaces/database/frontend/class_DatabaseFrontendInterface.php svneol=native#text/plain -inc/classes/interfaces/database/middleware/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/database/middleware/.htaccess svneol=native#text/plain inc/classes/interfaces/database/middleware/class_DatabaseConnector.php svneol=native#text/plain -inc/classes/interfaces/database/wrapper/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/database/wrapper/.htaccess svneol=native#text/plain inc/classes/interfaces/database/wrapper/class_BookablePointsWrapper.php svneol=native#text/plain inc/classes/interfaces/database/wrapper/class_ManageableAccountWrapper.php svneol=native#text/plain -inc/classes/interfaces/debug/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/debug/.htaccess svneol=native#text/plain inc/classes/interfaces/debug/class_Debugger.php svneol=native#text/plain -inc/classes/interfaces/discovery/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/discovery/.htaccess svneol=native#text/plain inc/classes/interfaces/discovery/class_Discoverable.php svneol=native#text/plain -inc/classes/interfaces/filter/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/filter/.htaccess svneol=native#text/plain inc/classes/interfaces/filter/class_Filterable.php svneol=native#text/plain -inc/classes/interfaces/helper/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/helper/.htaccess svneol=native#text/plain inc/classes/interfaces/helper/class_HelpableLogin.php svneol=native#text/plain inc/classes/interfaces/helper/class_HelpableTemplate.php svneol=native#text/plain inc/classes/interfaces/helper/class_Helper.php svneol=native#text/plain @@ -178,94 +172,94 @@ inc/classes/interfaces/helper/login/.htaccess svneol=native#text/plain inc/classes/interfaces/helper/login/class_HelpableLogin.php svneol=native#text/plain inc/classes/interfaces/helper/template/.htaccess svneol=native#text/plain inc/classes/interfaces/helper/template/class_HelpableTemplate.php svneol=native#text/plain -inc/classes/interfaces/io/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/io/.htaccess svneol=native#text/plain inc/classes/interfaces/io/class_Streamable.php svneol=native#text/plain -inc/classes/interfaces/io/file/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/io/file/.htaccess svneol=native#text/plain inc/classes/interfaces/io/file/class_FileInputStreamer.php svneol=native#text/plain inc/classes/interfaces/io/file/class_FileOutputStreamer.php svneol=native#text/plain -inc/classes/interfaces/io/output/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/io/output/.htaccess svneol=native#text/plain inc/classes/interfaces/io/output/class_OutputStreamer.php svneol=native#text/plain -inc/classes/interfaces/language/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/language/.htaccess svneol=native#text/plain inc/classes/interfaces/language/class_ManageableLanguage.php svneol=native#text/plain -inc/classes/interfaces/login/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/login/.htaccess svneol=native#text/plain inc/classes/interfaces/login/class_LoginableUser.php svneol=native#text/plain -inc/classes/interfaces/mailer/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/mailer/.htaccess svneol=native#text/plain inc/classes/interfaces/mailer/class_DeliverableMail.php svneol=native#text/plain -inc/classes/interfaces/menu/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/menu/.htaccess svneol=native#text/plain inc/classes/interfaces/menu/class_RenderableMenu.php svneol=native#text/plain -inc/classes/interfaces/parser/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/parser/.htaccess svneol=native#text/plain inc/classes/interfaces/parser/class_Parseable.php svneol=native#text/plain -inc/classes/interfaces/points/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/points/.htaccess svneol=native#text/plain inc/classes/interfaces/points/class_BookablePoints.php svneol=native#text/plain -inc/classes/interfaces/reader/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/reader/.htaccess svneol=native#text/plain inc/classes/interfaces/reader/class_ReadableNews.php svneol=native#text/plain -inc/classes/interfaces/registration/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/registration/.htaccess svneol=native#text/plain inc/classes/interfaces/registration/class_UserRegister.php svneol=native#text/plain -inc/classes/interfaces/registry/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/registry/.htaccess svneol=native#text/plain inc/classes/interfaces/registry/class_Register.php svneol=native#text/plain inc/classes/interfaces/registry/class_Registerable.php svneol=native#text/plain -inc/classes/interfaces/registry/socket/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/registry/socket/.htaccess svneol=native#text/plain inc/classes/interfaces/registry/socket/class_RegisterableSocket.php svneol=native#text/plain -inc/classes/interfaces/request/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/request/.htaccess svneol=native#text/plain inc/classes/interfaces/request/class_Requestable.php svneol=native#text/plain -inc/classes/interfaces/resolver/.htaccess -text svneol=unset#text/plain -inc/classes/interfaces/resolver/actions/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/resolver/.htaccess svneol=native#text/plain +inc/classes/interfaces/resolver/actions/.htaccess svneol=native#text/plain inc/classes/interfaces/resolver/actions/class_ActionResolver.php svneol=native#text/plain inc/classes/interfaces/resolver/class_Resolver.php svneol=native#text/plain -inc/classes/interfaces/resolver/commands/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/resolver/commands/.htaccess svneol=native#text/plain inc/classes/interfaces/resolver/commands/class_CommandResolver.php svneol=native#text/plain -inc/classes/interfaces/resolver/controller/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/resolver/controller/.htaccess svneol=native#text/plain inc/classes/interfaces/resolver/controller/class_ControllerResolver.php svneol=native#text/plain -inc/classes/interfaces/resolver/state/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/resolver/state/.htaccess svneol=native#text/plain inc/classes/interfaces/resolver/state/class_StateResolver.php svneol=native#text/plain -inc/classes/interfaces/response/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/response/.htaccess svneol=native#text/plain inc/classes/interfaces/response/class_Responseable.php svneol=native#text/plain -inc/classes/interfaces/result/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/result/.htaccess svneol=native#text/plain inc/classes/interfaces/result/class_SearchableResult.php svneol=native#text/plain inc/classes/interfaces/result/class_UpdateableResult.php svneol=native#text/plain -inc/classes/interfaces/stacker/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/stacker/.htaccess svneol=native#text/plain inc/classes/interfaces/stacker/class_Stackable.php svneol=native#text/plain -inc/classes/interfaces/state/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/state/.htaccess svneol=native#text/plain inc/classes/interfaces/state/class_Stateable.php svneol=native#text/plain -inc/classes/interfaces/streams/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/streams/.htaccess svneol=native#text/plain inc/classes/interfaces/streams/class_Streamable.php svneol=native#text/plain -inc/classes/interfaces/streams/crypto/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/streams/crypto/.htaccess svneol=native#text/plain inc/classes/interfaces/streams/crypto/class_EncryptableStream.php svneol=native#text/plain inc/classes/interfaces/streams/input/.htaccess svneol=native#text/plain inc/classes/interfaces/streams/input/class_InputStreamable.php svneol=native#text/plain inc/classes/interfaces/streams/output/.htaccess svneol=native#text/plain inc/classes/interfaces/streams/output/class_OutputStreamable.php svneol=native#text/plain -inc/classes/interfaces/template/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/template/.htaccess svneol=native#text/plain inc/classes/interfaces/template/class_CompileableTemplate.php svneol=native#text/plain inc/classes/interfaces/template/view/class_ViewHelper.php svneol=native#text/plain -inc/classes/interfaces/user/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/user/.htaccess svneol=native#text/plain inc/classes/interfaces/user/class_ManageableAccount.php svneol=native#text/plain -inc/classes/interfaces/user/extended/.htaccess -text svneol=unset#text/plain +inc/classes/interfaces/user/extended/.htaccess svneol=native#text/plain inc/classes/interfaces/user/extended/class_ManageableGuest.php svneol=native#text/plain inc/classes/interfaces/user/extended/class_ManageableMember.php svneol=native#text/plain -inc/classes/main/.htaccess -text svneol=unset#text/plain -inc/classes/main/actions/.htaccess -text svneol=unset#text/plain +inc/classes/main/.htaccess svneol=native#text/plain +inc/classes/main/actions/.htaccess svneol=native#text/plain inc/classes/main/actions/class_ svneol=native#text/plain inc/classes/main/actions/class_BaseAction.php svneol=native#text/plain -inc/classes/main/actions/post_registration/.htaccess -text svneol=unset#text/plain +inc/classes/main/actions/post_registration/.htaccess svneol=native#text/plain inc/classes/main/actions/post_registration/class_LoginAfterRegistrationAction.php svneol=native#text/plain -inc/classes/main/actions/web/.htaccess -text svneol=unset#text/plain +inc/classes/main/actions/web/.htaccess svneol=native#text/plain inc/classes/main/actions/web/class_WebLoginProfileAction.php svneol=native#text/plain -inc/classes/main/application/.htaccess -text svneol=unset#text/plain +inc/classes/main/application/.htaccess svneol=native#text/plain inc/classes/main/application/class_BaseApplication.php svneol=native#text/plain -inc/classes/main/auth/.htaccess -text svneol=unset#text/plain +inc/classes/main/auth/.htaccess svneol=native#text/plain inc/classes/main/auth/class_CookieAuth.php svneol=native#text/plain -inc/classes/main/cache/.htaccess -text svneol=unset#text/plain +inc/classes/main/cache/.htaccess svneol=native#text/plain inc/classes/main/cache/class_MemoryCache.php svneol=native#text/plain inc/classes/main/class_ svneol=native#text/plain inc/classes/main/class_BaseFrameworkSystem.php svneol=native#text/plain inc/classes/main/class_FrameworkArrayObject.php svneol=native#text/plain -inc/classes/main/commands/.htaccess -text svneol=unset#text/plain +inc/classes/main/commands/.htaccess svneol=native#text/plain inc/classes/main/commands/class_ svneol=native#text/plain inc/classes/main/commands/class_BaseCommand.php svneol=native#text/plain -inc/classes/main/commands/image/.htaccess -text svneol=unset#text/plain +inc/classes/main/commands/image/.htaccess svneol=native#text/plain inc/classes/main/commands/image/class_ImageCodeCaptchaCommand.php svneol=native#text/plain -inc/classes/main/commands/web/.htaccess -text svneol=unset#text/plain +inc/classes/main/commands/web/.htaccess svneol=native#text/plain inc/classes/main/commands/web/class_ svneol=native#text/plain inc/classes/main/commands/web/class_WebConfirmCommand.php svneol=native#text/plain inc/classes/main/commands/web/class_WebDoFormCommand.php svneol=native#text/plain @@ -279,32 +273,32 @@ inc/classes/main/commands/web/class_WebProblemCommand.php svneol=native#text/pla inc/classes/main/commands/web/class_WebRegisterCommand.php svneol=native#text/plain inc/classes/main/commands/web/class_WebResendLinkCommand.php svneol=native#text/plain inc/classes/main/commands/web/class_WebStatusCommand.php svneol=native#text/plain -inc/classes/main/compressor/.htaccess -text svneol=unset#text/plain +inc/classes/main/compressor/.htaccess svneol=native#text/plain inc/classes/main/compressor/class_Bzip2Compressor.php svneol=native#text/plain inc/classes/main/compressor/class_GzipCompressor.php svneol=native#text/plain inc/classes/main/compressor/class_NullCompressor.php svneol=native#text/plain -inc/classes/main/console/.htaccess -text svneol=unset#text/plain +inc/classes/main/console/.htaccess svneol=native#text/plain inc/classes/main/console/class_ConsoleTools.php svneol=native#text/plain -inc/classes/main/container/.htaccess -text svneol=unset#text/plain +inc/classes/main/container/.htaccess svneol=native#text/plain inc/classes/main/container/class_ svneol=native#text/plain inc/classes/main/container/class_BaseContainer.php svneol=native#text/plain -inc/classes/main/container/socket/.htaccess -text svneol=unset#text/plain +inc/classes/main/container/socket/.htaccess svneol=native#text/plain inc/classes/main/container/socket/class_SocketContainer.php svneol=native#text/plain -inc/classes/main/controller/.htaccess -text svneol=unset#text/plain -inc/classes/main/controller/captcha/.htaccess -text svneol=unset#text/plain +inc/classes/main/controller/.htaccess svneol=native#text/plain +inc/classes/main/controller/captcha/.htaccess svneol=native#text/plain inc/classes/main/controller/captcha/class_ImageCodeCaptchaController.php svneol=native#text/plain inc/classes/main/controller/class_ svneol=native#text/plain inc/classes/main/controller/class_BaseController.php svneol=native#text/plain -inc/classes/main/controller/console/.htaccess -text svneol=unset#text/plain +inc/classes/main/controller/console/.htaccess svneol=native#text/plain inc/classes/main/controller/console/class_ConsoleDefaultController.php svneol=native#text/plain inc/classes/main/controller/console/class_ConsoleDefaultNewsController.php svneol=native#text/plain -inc/classes/main/controller/form/.htaccess -text svneol=unset#text/plain +inc/classes/main/controller/form/.htaccess svneol=native#text/plain inc/classes/main/controller/form/class_WebDoFormController.php svneol=native#text/plain -inc/classes/main/controller/image/.htaccess -text svneol=unset#text/plain +inc/classes/main/controller/image/.htaccess svneol=native#text/plain inc/classes/main/controller/image/class_ImageDefaultController.php svneol=native#text/plain -inc/classes/main/controller/login/.htaccess -text svneol=unset#text/plain +inc/classes/main/controller/login/.htaccess svneol=native#text/plain inc/classes/main/controller/login/class_WebLoginAreaController.php svneol=native#text/plain -inc/classes/main/controller/web/.htaccess -text svneol=unset#text/plain +inc/classes/main/controller/web/.htaccess svneol=native#text/plain inc/classes/main/controller/web/class_ svneol=native#text/plain inc/classes/main/controller/web/class_WebConfirmController.php svneol=native#text/plain inc/classes/main/controller/web/class_WebDefaultController.php svneol=native#text/plain @@ -316,88 +310,88 @@ inc/classes/main/controller/web/class_WebLogoutDoneController.php svneol=native# inc/classes/main/controller/web/class_WebProblemController.php svneol=native#text/plain inc/classes/main/controller/web/class_WebRegisterController.php svneol=native#text/plain inc/classes/main/controller/web/class_WebStatusController.php svneol=native#text/plain -inc/classes/main/criteria/.htaccess -text svneol=unset#text/plain +inc/classes/main/criteria/.htaccess svneol=native#text/plain inc/classes/main/criteria/class_BaseCriteria.php svneol=native#text/plain -inc/classes/main/criteria/dataset/.htaccess -text svneol=unset#text/plain +inc/classes/main/criteria/dataset/.htaccess svneol=native#text/plain inc/classes/main/criteria/dataset/class_DataSetCriteria.php svneol=native#text/plain -inc/classes/main/criteria/search/.htaccess -text svneol=unset#text/plain +inc/classes/main/criteria/search/.htaccess svneol=native#text/plain inc/classes/main/criteria/search/class_SearchCriteria.php svneol=native#text/plain -inc/classes/main/criteria/update/.htaccess -text svneol=unset#text/plain +inc/classes/main/criteria/update/.htaccess svneol=native#text/plain inc/classes/main/criteria/update/class_UpdateCriteria.php svneol=native#text/plain -inc/classes/main/crypto/.htaccess -text svneol=unset#text/plain +inc/classes/main/crypto/.htaccess svneol=native#text/plain inc/classes/main/crypto/class_CryptoHelper.php svneol=native#text/plain -inc/classes/main/database/.htaccess -text svneol=unset#text/plain +inc/classes/main/database/.htaccess svneol=native#text/plain inc/classes/main/database/class_ svneol=native#text/plain inc/classes/main/database/class_BaseDatabaseFrontend.php svneol=native#text/plain inc/classes/main/database/class_BaseDatabaseWrapper.php svneol=native#text/plain -inc/classes/main/database/databases/.htaccess -text svneol=unset#text/plain +inc/classes/main/database/databases/.htaccess svneol=native#text/plain inc/classes/main/database/databases/class_LocalFileDatabase.php svneol=native#text/plain -inc/classes/main/database/wrapper/.htaccess -text svneol=unset#text/plain +inc/classes/main/database/wrapper/.htaccess svneol=native#text/plain inc/classes/main/database/wrapper/class_NewsDatabaseWrapper.php svneol=native#text/plain inc/classes/main/database/wrapper/class_PaymentsDatabaseWrapper.php svneol=native#text/plain inc/classes/main/database/wrapper/class_UserDatabaseWrapper.php svneol=native#text/plain inc/classes/main/database/wrapper/class_UserPointsDatabaseWrapper.php svneol=native#text/plain -inc/classes/main/debug/.htaccess -text svneol=unset#text/plain +inc/classes/main/debug/.htaccess svneol=native#text/plain inc/classes/main/debug/class_DebugConsoleOutput.php svneol=native#text/plain inc/classes/main/debug/class_DebugErrorLogOutput.php svneol=native#text/plain inc/classes/main/debug/class_DebugWebOutput.php svneol=native#text/plain -inc/classes/main/decorator/.htaccess -text svneol=unset#text/plain +inc/classes/main/decorator/.htaccess svneol=native#text/plain inc/classes/main/decorator/class_BaseDecorator.php svneol=native#text/plain -inc/classes/main/decorator/template/.htaccess -text svneol=unset#text/plain +inc/classes/main/decorator/template/.htaccess svneol=native#text/plain inc/classes/main/decorator/template/class_XmlRewriterTemplateDecorator.php svneol=native#text/plain -inc/classes/main/decorator/xml/.htaccess -text svneol=unset#text/plain +inc/classes/main/decorator/xml/.htaccess svneol=native#text/plain inc/classes/main/decorator/xml/class_XmlCompactorDecorator.php svneol=native#text/plain -inc/classes/main/discovery/.htaccess -text svneol=unset#text/plain +inc/classes/main/discovery/.htaccess svneol=native#text/plain inc/classes/main/discovery/class_ svneol=native#text/plain inc/classes/main/discovery/class_BaseDiscovery.php svneol=native#text/plain -inc/classes/main/discovery/payment/.htaccess -text svneol=unset#text/plain +inc/classes/main/discovery/payment/.htaccess svneol=native#text/plain inc/classes/main/discovery/payment/class_LocalPaymentDiscovery.php svneol=native#text/plain -inc/classes/main/factories/.htaccess -text svneol=unset#text/plain -inc/classes/main/factories/cache/.htaccess -text svneol=unset#text/plain +inc/classes/main/factories/.htaccess svneol=native#text/plain +inc/classes/main/factories/cache/.htaccess svneol=native#text/plain inc/classes/main/factories/cache/class_CacheFactory.php svneol=native#text/plain inc/classes/main/factories/class_BaseFactory.php svneol=native#text/plain -inc/classes/main/factories/database/.htaccess -text svneol=unset#text/plain +inc/classes/main/factories/database/.htaccess svneol=native#text/plain inc/classes/main/factories/database/class_DatabaseWrapperFactory.php svneol=native#text/plain -inc/classes/main/factories/objects/.htaccess -text svneol=unset#text/plain +inc/classes/main/factories/objects/.htaccess svneol=native#text/plain inc/classes/main/factories/objects/class_ObjectFactory.php svneol=native#text/plain -inc/classes/main/factories/registry/.htaccess -text svneol=unset#text/plain +inc/classes/main/factories/registry/.htaccess svneol=native#text/plain inc/classes/main/factories/registry/class_SocketRegistryFactory.php svneol=native#text/plain -inc/classes/main/factories/web/.htaccess -text svneol=unset#text/plain +inc/classes/main/factories/web/.htaccess svneol=native#text/plain inc/classes/main/factories/web/class_WebNewsFactory.php svneol=native#text/plain inc/classes/main/factories/xml/.htaccess svneol=native#text/plain inc/classes/main/factories/xml/class_XmlTemplateEngineFactory.php svneol=native#text/plain -inc/classes/main/filter/.htaccess -text svneol=unset#text/plain -inc/classes/main/filter/auth/.htaccess -text svneol=unset#text/plain +inc/classes/main/filter/.htaccess svneol=native#text/plain +inc/classes/main/filter/auth/.htaccess svneol=native#text/plain inc/classes/main/filter/auth/class_UserAuthFilter.php svneol=native#text/plain -inc/classes/main/filter/change/.htaccess -text svneol=unset#text/plain +inc/classes/main/filter/change/.htaccess svneol=native#text/plain inc/classes/main/filter/change/class_EmailChangeFilter.php svneol=native#text/plain inc/classes/main/filter/change/class_PasswordChangeFilter.php svneol=native#text/plain -inc/classes/main/filter/checkboxes/.htaccess -text svneol=unset#text/plain +inc/classes/main/filter/checkboxes/.htaccess svneol=native#text/plain inc/classes/main/filter/checkboxes/class_RulesAcceptedFilter.php svneol=native#text/plain inc/classes/main/filter/class_ svneol=native#text/plain inc/classes/main/filter/class_BaseFilter.php svneol=native#text/plain inc/classes/main/filter/class_BaseFilterDecorator.php svneol=native#text/plain inc/classes/main/filter/class_FilterChain.php svneol=native#text/plain -inc/classes/main/filter/crypto/.htaccess -text svneol=unset#text/plain +inc/classes/main/filter/crypto/.htaccess svneol=native#text/plain inc/classes/main/filter/crypto/class_CaptchaEncryptFilter.php svneol=native#text/plain -inc/classes/main/filter/decorator/.htaccess -text svneol=unset#text/plain -inc/classes/main/filter/guest/.htaccess -text svneol=unset#text/plain +inc/classes/main/filter/decorator/.htaccess svneol=native#text/plain +inc/classes/main/filter/guest/.htaccess svneol=native#text/plain inc/classes/main/filter/guest/class_UserNameIsGuestFilter.php svneol=native#text/plain -inc/classes/main/filter/news/.htaccess -text svneol=unset#text/plain +inc/classes/main/filter/news/.htaccess svneol=native#text/plain inc/classes/main/filter/news/class_NewsDownloadFilter.php svneol=native#text/plain inc/classes/main/filter/news/class_NewsProcessFilter.php svneol=native#text/plain -inc/classes/main/filter/null/.htaccess -text svneol=unset#text/plain +inc/classes/main/filter/null/.htaccess svneol=native#text/plain inc/classes/main/filter/null/class_NullFilter.php svneol=native#text/plain -inc/classes/main/filter/payment/.htaccess -text svneol=unset#text/plain +inc/classes/main/filter/payment/.htaccess svneol=native#text/plain inc/classes/main/filter/payment/class_PaymentDiscoveryFilter.php svneol=native#text/plain -inc/classes/main/filter/update/.htaccess -text svneol=unset#text/plain +inc/classes/main/filter/update/.htaccess svneol=native#text/plain inc/classes/main/filter/update/class_UserStatusConfimedUpdateFilter.php svneol=native#text/plain inc/classes/main/filter/update/class_UserUpdateFilter.php svneol=native#text/plain -inc/classes/main/filter/validator/.htaccess -text svneol=unset#text/plain +inc/classes/main/filter/validator/.htaccess svneol=native#text/plain inc/classes/main/filter/validator/class_EmailValidatorFilter.php svneol=native#text/plain inc/classes/main/filter/validator/class_PasswordValidatorFilter.php svneol=native#text/plain inc/classes/main/filter/validator/class_UserNameValidatorFilter.php svneol=native#text/plain -inc/classes/main/filter/verifier/.htaccess -text svneol=unset#text/plain +inc/classes/main/filter/verifier/.htaccess svneol=native#text/plain inc/classes/main/filter/verifier/class_AccountPasswordVerifierFilter.php svneol=native#text/plain inc/classes/main/filter/verifier/class_ConfirmCodeVerifierFilter.php svneol=native#text/plain inc/classes/main/filter/verifier/class_GraphicalCodeCaptchaVerifierFilter.php svneol=native#text/plain @@ -407,182 +401,176 @@ inc/classes/main/filter/verifier/class_UserGuestVerifierFilter.php svneol=native inc/classes/main/filter/verifier/class_UserNameVerifierFilter.php svneol=native#text/plain inc/classes/main/filter/verifier/class_UserStatusVerifierFilter.php svneol=native#text/plain inc/classes/main/filter/verifier/class_UserUnconfirmedVerifierFilter.php svneol=native#text/plain -inc/classes/main/helper/.htaccess -text svneol=unset#text/plain -inc/classes/main/helper/captcha/.htaccess -text svneol=unset#text/plain +inc/classes/main/helper/.htaccess svneol=native#text/plain +inc/classes/main/helper/captcha/.htaccess svneol=native#text/plain inc/classes/main/helper/captcha/class_ svneol=native#text/plain inc/classes/main/helper/captcha/class_BaseCaptcha.php svneol=native#text/plain -inc/classes/main/helper/captcha/images/.htaccess -text svneol=unset#text/plain +inc/classes/main/helper/captcha/images/.htaccess svneol=native#text/plain inc/classes/main/helper/captcha/images/class_ImageHelper.php svneol=native#text/plain -inc/classes/main/helper/captcha/web/.htaccess -text svneol=unset#text/plain +inc/classes/main/helper/captcha/web/.htaccess svneol=native#text/plain inc/classes/main/helper/captcha/web/class_GraphicalCodeCaptcha.php svneol=native#text/plain inc/classes/main/helper/class_ svneol=native#text/plain inc/classes/main/helper/class_BaseHelper.php svneol=native#text/plain -inc/classes/main/helper/login/.htaccess -text svneol=unset#text/plain +inc/classes/main/helper/login/.htaccess svneol=native#text/plain inc/classes/main/helper/login/class_BaseLoginHelper.php svneol=native#text/plain -inc/classes/main/helper/web/.htaccess -text svneol=unset#text/plain -inc/classes/main/helper/web/blocks/.htaccess -text svneol=unset#text/plain +inc/classes/main/helper/web/.htaccess svneol=native#text/plain +inc/classes/main/helper/web/blocks/.htaccess svneol=native#text/plain inc/classes/main/helper/web/blocks/class_WebBlockHelper.php svneol=native#text/plain inc/classes/main/helper/web/class_ svneol=native#text/plain inc/classes/main/helper/web/class_BaseWebHelper.php svneol=native#text/plain -inc/classes/main/helper/web/forms/.htaccess -text svneol=unset#text/plain +inc/classes/main/helper/web/forms/.htaccess svneol=native#text/plain inc/classes/main/helper/web/forms/class_WebFormHelper.php svneol=native#text/plain -inc/classes/main/helper/web/links/.htaccess -text svneol=unset#text/plain +inc/classes/main/helper/web/links/.htaccess svneol=native#text/plain inc/classes/main/helper/web/links/class_WebLinkHelper.php svneol=native#text/plain -inc/classes/main/images/.htaccess -text svneol=unset#text/plain +inc/classes/main/images/.htaccess svneol=native#text/plain inc/classes/main/images/class_ svneol=native#text/plain inc/classes/main/images/class_BaseImage.php svneol=native#text/plain -inc/classes/main/images/extended/.htaccess -text svneol=unset#text/plain +inc/classes/main/images/extended/.htaccess svneol=native#text/plain inc/classes/main/images/extended/class_PngImage.php svneol=native#text/plain -inc/classes/main/io/.htaccess -text svneol=unset#text/plain +inc/classes/main/io/.htaccess svneol=native#text/plain inc/classes/main/io/class_FileIoStream.php svneol=native#text/plain inc/classes/main/io/class_FrameworkDirectoryPointer.php svneol=native#text/plain inc/classes/main/io/class_FrameworkFileInputPointer.php svneol=native#text/plain inc/classes/main/io/class_FrameworkFileOutputPointer.php svneol=native#text/plain -inc/classes/main/language/.htaccess -text svneol=unset#text/plain +inc/classes/main/language/.htaccess svneol=native#text/plain inc/classes/main/language/class_LanguageSystem.php svneol=native#text/plain -inc/classes/main/mailer/.htaccess -text svneol=unset#text/plain +inc/classes/main/mailer/.htaccess svneol=native#text/plain inc/classes/main/mailer/class_ svneol=native#text/plain inc/classes/main/mailer/class_BaseMailer.php svneol=native#text/plain -inc/classes/main/mailer/debug/.htaccess -text svneol=unset#text/plain +inc/classes/main/mailer/debug/.htaccess svneol=native#text/plain inc/classes/main/mailer/debug/class_DebugMailer.php svneol=native#text/plain -inc/classes/main/menu/.htaccess -text svneol=unset#text/plain +inc/classes/main/menu/.htaccess svneol=native#text/plain inc/classes/main/menu/class_BaseMenu.php svneol=native#text/plain -inc/classes/main/output/.htaccess -text svneol=unset#text/plain +inc/classes/main/output/.htaccess svneol=native#text/plain inc/classes/main/output/class_ConsoleOutput.php svneol=native#text/plain inc/classes/main/output/class_WebOutput.php svneol=native#text/plain -inc/classes/main/parser/.htaccess -text svneol=unset#text/plain +inc/classes/main/parser/.htaccess svneol=native#text/plain inc/classes/main/parser/class_ svneol=native#text/plain inc/classes/main/parser/class_BaseParser.php svneol=native#text/plain -inc/classes/main/parser/xml/.htaccess -text svneol=unset#text/plain +inc/classes/main/parser/xml/.htaccess svneol=native#text/plain inc/classes/main/parser/xml/class_XmlParser.php svneol=native#text/plain -inc/classes/main/points/.htaccess -text svneol=unset#text/plain +inc/classes/main/points/.htaccess svneol=native#text/plain inc/classes/main/points/class_UserPoints.php svneol=native#text/plain -inc/classes/main/reader/.htaccess -text svneol=unset#text/plain +inc/classes/main/reader/.htaccess svneol=native#text/plain inc/classes/main/reader/class_ConsoleNewsReader.php svneol=native#text/plain inc/classes/main/reader/class_DefaultNewsReader.php svneol=native#text/plain -inc/classes/main/registration/.htaccess -text svneol=unset#text/plain +inc/classes/main/registration/.htaccess svneol=native#text/plain inc/classes/main/registration/class_BaseRegistration.php svneol=native#text/plain -inc/classes/main/registry/.htaccess -text svneol=unset#text/plain +inc/classes/main/registry/.htaccess svneol=native#text/plain inc/classes/main/registry/class_ svneol=native#text/plain inc/classes/main/registry/class_BaseRegistry.php svneol=native#text/plain -inc/classes/main/registry/generic/.htaccess -text svneol=unset#text/plain +inc/classes/main/registry/generic/.htaccess svneol=native#text/plain inc/classes/main/registry/generic/class_Registry.php svneol=native#text/plain -inc/classes/main/registry/sub/.htaccess -text svneol=unset#text/plain +inc/classes/main/registry/sub/.htaccess svneol=native#text/plain inc/classes/main/registry/sub/class_SubRegistry.php svneol=native#text/plain -inc/classes/main/request/.htaccess -text svneol=unset#text/plain +inc/classes/main/request/.htaccess svneol=native#text/plain inc/classes/main/request/class_ svneol=native#text/plain inc/classes/main/request/class_BaseRequest.php svneol=native#text/plain -inc/classes/main/request/console/.htaccess -text svneol=unset#text/plain +inc/classes/main/request/console/.htaccess svneol=native#text/plain inc/classes/main/request/console/class_ConsoleRequest.php svneol=native#text/plain -inc/classes/main/request/web/.htaccess -text svneol=unset#text/plain +inc/classes/main/request/web/.htaccess svneol=native#text/plain inc/classes/main/request/web/class_HttpRequest.php svneol=native#text/plain -inc/classes/main/resolver/.htaccess -text svneol=unset#text/plain -inc/classes/main/resolver/action/.htaccess -text svneol=unset#text/plain +inc/classes/main/resolver/.htaccess svneol=native#text/plain +inc/classes/main/resolver/action/.htaccess svneol=native#text/plain inc/classes/main/resolver/action/class_BaseActionResolver.php svneol=native#text/plain -inc/classes/main/resolver/action/web/.htaccess -text svneol=unset#text/plain +inc/classes/main/resolver/action/web/.htaccess svneol=native#text/plain inc/classes/main/resolver/action/web/class_WebActionResolver.php svneol=native#text/plain inc/classes/main/resolver/class_BaseResolver.php svneol=native#text/plain -inc/classes/main/resolver/command/.htaccess -text svneol=unset#text/plain +inc/classes/main/resolver/command/.htaccess svneol=native#text/plain inc/classes/main/resolver/command/class_BaseCommandResolver.php svneol=native#text/plain -inc/classes/main/resolver/command/console/.htaccess -text svneol=unset#text/plain +inc/classes/main/resolver/command/console/.htaccess svneol=native#text/plain inc/classes/main/resolver/command/console/class_ConsoleCommandResolver.php svneol=native#text/plain -inc/classes/main/resolver/command/image/.htaccess -text svneol=unset#text/plain +inc/classes/main/resolver/command/image/.htaccess svneol=native#text/plain inc/classes/main/resolver/command/image/class_ImageCommandResolver.php svneol=native#text/plain -inc/classes/main/resolver/command/web/.htaccess -text svneol=unset#text/plain +inc/classes/main/resolver/command/web/.htaccess svneol=native#text/plain inc/classes/main/resolver/command/web/class_ svneol=native#text/plain inc/classes/main/resolver/command/web/class_WebCommandResolver.php svneol=native#text/plain -inc/classes/main/resolver/controller/.htaccess -text svneol=unset#text/plain +inc/classes/main/resolver/controller/.htaccess svneol=native#text/plain inc/classes/main/resolver/controller/class_BaseControllerResolver.php svneol=native#text/plain -inc/classes/main/resolver/controller/console/.htaccess -text svneol=unset#text/plain +inc/classes/main/resolver/controller/console/.htaccess svneol=native#text/plain inc/classes/main/resolver/controller/console/class_ConsoleControllerResolver.php svneol=native#text/plain -inc/classes/main/resolver/controller/image/.htaccess -text svneol=unset#text/plain +inc/classes/main/resolver/controller/image/.htaccess svneol=native#text/plain inc/classes/main/resolver/controller/image/class_ImageControllerResolver.php svneol=native#text/plain -inc/classes/main/resolver/controller/web/.htaccess -text svneol=unset#text/plain +inc/classes/main/resolver/controller/web/.htaccess svneol=native#text/plain inc/classes/main/resolver/controller/web/class_WebControllerResolver.php svneol=native#text/plain inc/classes/main/resolver/request/.htaccess svneol=native#text/plain -inc/classes/main/response/.htaccess -text svneol=unset#text/plain +inc/classes/main/response/.htaccess svneol=native#text/plain inc/classes/main/response/class_BaseResponse.php svneol=native#text/plain -inc/classes/main/response/console/.htaccess -text svneol=unset#text/plain +inc/classes/main/response/console/.htaccess svneol=native#text/plain inc/classes/main/response/console/class_ConsoleResponse.php svneol=native#text/plain -inc/classes/main/response/http/.htaccess -text svneol=unset#text/plain +inc/classes/main/response/http/.htaccess svneol=native#text/plain inc/classes/main/response/http/class_HttpResponse.php svneol=native#text/plain -inc/classes/main/response/image/.htaccess -text svneol=unset#text/plain +inc/classes/main/response/image/.htaccess svneol=native#text/plain inc/classes/main/response/image/class_ImageResponse.php svneol=native#text/plain -inc/classes/main/result/.htaccess -text svneol=unset#text/plain +inc/classes/main/result/.htaccess svneol=native#text/plain inc/classes/main/result/class_DatabaseResult.php svneol=native#text/plain -inc/classes/main/rng/.htaccess -text svneol=unset#text/plain +inc/classes/main/rng/.htaccess svneol=native#text/plain inc/classes/main/rng/class_RandomNumberGenerator.php svneol=native#text/plain -inc/classes/main/stacker/.htaccess -text svneol=unset#text/plain +inc/classes/main/stacker/.htaccess svneol=native#text/plain inc/classes/main/stacker/class_ svneol=native#text/plain inc/classes/main/stacker/class_BaseStacker.php svneol=native#text/plain -inc/classes/main/stacker/fifo/.htaccess -text svneol=unset#text/plain +inc/classes/main/stacker/fifo/.htaccess svneol=native#text/plain inc/classes/main/stacker/fifo/class_FiFoStacker.php svneol=native#text/plain -inc/classes/main/stacker/filo/.htaccess -text svneol=unset#text/plain +inc/classes/main/stacker/filo/.htaccess svneol=native#text/plain inc/classes/main/stacker/filo/class_FiLoStacker.php svneol=native#text/plain -inc/classes/main/streams/.htaccess -text svneol=unset#text/plain +inc/classes/main/streams/.htaccess svneol=native#text/plain inc/classes/main/streams/class_ svneol=native#text/plain inc/classes/main/streams/class_BaseStream.php svneol=native#text/plain -inc/classes/main/streams/crypto/.htaccess -text svneol=unset#text/plain +inc/classes/main/streams/crypto/.htaccess svneol=native#text/plain inc/classes/main/streams/crypto/class_McryptStream.php svneol=native#text/plain inc/classes/main/streams/crypto/class_NullCryptoStream.php svneol=native#text/plain inc/classes/main/streams/input/.htaccess svneol=native#text/plain inc/classes/main/streams/input/class_BaseInputStream.php svneol=native#text/plain inc/classes/main/streams/output/.htaccess svneol=native#text/plain inc/classes/main/streams/output/class_BaseOutputStream.php svneol=native#text/plain -inc/classes/main/template/.htaccess -text svneol=unset#text/plain +inc/classes/main/template/.htaccess svneol=native#text/plain inc/classes/main/template/class_ svneol=native#text/plain inc/classes/main/template/class_BaseTemplateEngine.php svneol=native#text/plain -inc/classes/main/template/console/.htaccess -text svneol=unset#text/plain +inc/classes/main/template/console/.htaccess svneol=native#text/plain inc/classes/main/template/console/class_ConsoleTemplateEngine.php svneol=native#text/plain -inc/classes/main/template/image/.htaccess -text svneol=unset#text/plain +inc/classes/main/template/image/.htaccess svneol=native#text/plain inc/classes/main/template/image/class_ImageTemplateEngine.php svneol=native#text/plain -inc/classes/main/template/mail/.htaccess -text svneol=unset#text/plain +inc/classes/main/template/mail/.htaccess svneol=native#text/plain inc/classes/main/template/mail/class_MailTemplateEngine.php svneol=native#text/plain -inc/classes/main/template/menu/.htaccess -text svneol=unset#text/plain +inc/classes/main/template/menu/.htaccess svneol=native#text/plain inc/classes/main/template/menu/class_MenuTemplateEngine.php svneol=native#text/plain -inc/classes/main/template/web/.htaccess -text svneol=unset#text/plain +inc/classes/main/template/web/.htaccess svneol=native#text/plain inc/classes/main/template/web/class_WebTemplateEngine.php svneol=native#text/plain -inc/classes/main/user/.htaccess -text svneol=unset#text/plain +inc/classes/main/user/.htaccess svneol=native#text/plain inc/classes/main/user/class_BaseUser.php svneol=native#text/plain -inc/classes/main/user/guest/.htaccess -text svneol=unset#text/plain +inc/classes/main/user/guest/.htaccess svneol=native#text/plain inc/classes/main/user/guest/class_Guest.php svneol=native#text/plain -inc/classes/main/user/member/.htaccess -text svneol=unset#text/plain +inc/classes/main/user/member/.htaccess svneol=native#text/plain inc/classes/main/user/member/class_Member.php svneol=native#text/plain -inc/classes/middleware/.htaccess -text svneol=unset#text/plain +inc/classes/middleware/.htaccess svneol=native#text/plain inc/classes/middleware/class_BaseMiddleware.php svneol=native#text/plain -inc/classes/middleware/compressor/.htaccess -text svneol=unset#text/plain +inc/classes/middleware/compressor/.htaccess svneol=native#text/plain inc/classes/middleware/compressor/class_CompressorChannel.php svneol=native#text/plain -inc/classes/middleware/database/.htaccess -text svneol=unset#text/plain +inc/classes/middleware/database/.htaccess svneol=native#text/plain inc/classes/middleware/database/class_DatabaseConnection.php svneol=native#text/plain -inc/classes/middleware/debug/.htaccess -text svneol=unset#text/plain +inc/classes/middleware/debug/.htaccess svneol=native#text/plain inc/classes/middleware/debug/class_DebugMiddleware.php svneol=native#text/plain -inc/classes/middleware/io/.htaccess -text svneol=unset#text/plain +inc/classes/middleware/io/.htaccess svneol=native#text/plain inc/classes/middleware/io/class_FileIoHandler.php svneol=native#text/plain -inc/classes/third_party/.htaccess -text svneol=unset#text/plain -inc/classes/third_party/akismet/.htaccess -text svneol=unset#text/plain -inc/classes/third_party/akismet/akismet.class.php -text svneol=unset#text/plain -inc/classes/third_party/api/.htaccess -text svneol=unset#text/plain -inc/classes/third_party/api/primusportal/.htaccess -text svneol=unset#text/plain -inc/classes/third_party/api/primusportal/class_PrimeraApi.php -text svneol=unset#text/plain -inc/classes/third_party/api/wernisportal/.htaccess -text svneol=unset#text/plain -inc/classes/third_party/api/wernisportal/class_WernisApi.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/.htaccess -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/ChangeLog.txt -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/LICENSE -text -inc/classes/third_party/php_mailer/README -text -inc/classes/third_party/php_mailer/class.phpmailer.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/class.pop3.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/class.smtp.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/docs/extending.html -text -inc/classes/third_party/php_mailer/docs/faq.html -text +inc/classes/third_party/.htaccess svneol=native#text/plain +inc/classes/third_party/akismet/.htaccess svneol=native#text/plain +inc/classes/third_party/akismet/akismet.class.php svneol=native#text/plain +inc/classes/third_party/api/.htaccess svneol=native#text/plain +inc/classes/third_party/api/primusportal/.htaccess svneol=native#text/plain +inc/classes/third_party/api/primusportal/class_PrimeraApi.php svneol=native#text/plain +inc/classes/third_party/api/wernisportal/.htaccess svneol=native#text/plain +inc/classes/third_party/api/wernisportal/class_WernisApi.php svneol=native#text/plain +inc/classes/third_party/php_mailer/.htaccess svneol=native#text/plain +inc/classes/third_party/php_mailer/ChangeLog.txt svneol=native#text/plain +inc/classes/third_party/php_mailer/class.phpmailer.php svneol=native#text/plain +inc/classes/third_party/php_mailer/class.pop3.php svneol=native#text/plain +inc/classes/third_party/php_mailer/class.smtp.php svneol=native#text/plain inc/classes/third_party/php_mailer/docs/pop3_article.txt svneol=native#text/plain inc/classes/third_party/php_mailer/docs/use_gmail.txt svneol=native#text/plain -inc/classes/third_party/php_mailer/examples/contents.html -text inc/classes/third_party/php_mailer/examples/images/bkgrnd.gif -text svneol=unset#image/gif inc/classes/third_party/php_mailer/examples/images/phpmailer.gif -text svneol=unset#image/gif inc/classes/third_party/php_mailer/examples/images/phpmailer.png -text svneol=unset#image/png inc/classes/third_party/php_mailer/examples/images/phpmailer_mini.gif -text svneol=unset#image/gif -inc/classes/third_party/php_mailer/examples/index.html -text inc/classes/third_party/php_mailer/examples/pop3_before_smtp_test.php svneol=native#text/plain inc/classes/third_party/php_mailer/examples/test_gmail.php svneol=native#text/plain inc/classes/third_party/php_mailer/examples/test_mail.php svneol=native#text/plain @@ -602,49 +590,44 @@ inc/classes/third_party/php_mailer/language/phpmailer.lang-fo.php svneol=native# inc/classes/third_party/php_mailer/language/phpmailer.lang-fr.php svneol=native#text/plain inc/classes/third_party/php_mailer/language/phpmailer.lang-hu.php svneol=native#text/plain inc/classes/third_party/php_mailer/language/phpmailer.lang-it.php svneol=native#text/plain -inc/classes/third_party/php_mailer/language/phpmailer.lang-ja.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/language/phpmailer.lang-nl.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/language/phpmailer.lang-no.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/language/phpmailer.lang-pl.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/language/phpmailer.lang-ro.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/language/phpmailer.lang-ru.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/language/phpmailer.lang-se.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/language/phpmailer.lang-tr.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/test/phpmailer_test.php -text svneol=unset#text/plain -inc/classes/third_party/php_mailer/test/phpunit.php -text svneol=unset#text/plain +inc/classes/third_party/php_mailer/language/phpmailer.lang-ja.php svneol=native#text/plain +inc/classes/third_party/php_mailer/language/phpmailer.lang-nl.php svneol=native#text/plain +inc/classes/third_party/php_mailer/language/phpmailer.lang-no.php svneol=native#text/plain +inc/classes/third_party/php_mailer/language/phpmailer.lang-pl.php svneol=native#text/plain +inc/classes/third_party/php_mailer/language/phpmailer.lang-ro.php svneol=native#text/plain +inc/classes/third_party/php_mailer/language/phpmailer.lang-ru.php svneol=native#text/plain +inc/classes/third_party/php_mailer/language/phpmailer.lang-se.php svneol=native#text/plain +inc/classes/third_party/php_mailer/language/phpmailer.lang-tr.php svneol=native#text/plain +inc/classes/third_party/php_mailer/test/phpmailer_test.php svneol=native#text/plain +inc/classes/third_party/php_mailer/test/phpunit.php svneol=native#text/plain inc/classes/third_party/php_mailer/test/test.png -text svneol=unset#image/png inc/config.php svneol=native#text/plain -inc/config/.htaccess -text svneol=unset#text/plain +inc/config/.htaccess svneol=native#text/plain inc/config/class_FrameworkConfiguration.php svneol=native#text/plain inc/config/config-hubmaster.php svneol=native#text/plain inc/database.php svneol=native#text/plain -inc/database/.htaccess -text svneol=unset#text/plain +inc/database/.htaccess svneol=native#text/plain inc/database/lib-local.php svneol=native#text/plain inc/file_io.php svneol=native#text/plain inc/hooks.php svneol=native#text/plain inc/includes.php svneol=native#text/plain inc/language.php svneol=native#text/plain -inc/language/.htaccess -text svneol=unset#text/plain -inc/loader/.htaccess -text svneol=unset#text/plain +inc/language/.htaccess svneol=native#text/plain +inc/loader/.htaccess svneol=native#text/plain inc/loader/class_ClassLoader.php svneol=native#text/plain inc/output.php svneol=native#text/plain inc/selector.php svneol=native#text/plain -/setup-repos.sh -text /svn-externals.txt svneol=native#text/plain -templates/.htaccess -text svneol=unset#text/plain -templates/README.1st -text -templates/_compiled/.htaccess -text svneol=unset#text/plain -templates/images/.htaccess -text svneol=unset#text/plain -templates/images/_cache/.htaccess -text svneol=unset#text/plain -templates/menus/.htaccess -text svneol=unset#text/plain -templates/menus/_cache/.htaccess -text svneol=unset#text/plain +templates/.htaccess svneol=native#text/plain +templates/_compiled/.htaccess svneol=native#text/plain +templates/images/.htaccess svneol=native#text/plain +templates/images/_cache/.htaccess svneol=native#text/plain +templates/menus/.htaccess svneol=native#text/plain +templates/menus/_cache/.htaccess svneol=native#text/plain tests/ConfigTest.php svneol=native#text/plain tests/RegistryTest.php svneol=native#text/plain tests/RequestTest.php svneol=native#text/plain tests/Test.php svneol=native#text/plain -tests/all-tests.sh -text tests/old/contract-test.php svneol=native#text/plain tests/old/loader-test.php svneol=native#text/plain tests/old/personell-test.php svneol=native#text/plain -tests/unittest.sh -text -/todo-builder.sh -text diff --git a/inc/classes/third_party/php_mailer/ChangeLog.txt b/inc/classes/third_party/php_mailer/ChangeLog.txt index 9533ccd9..5de251ee 100644 --- a/inc/classes/third_party/php_mailer/ChangeLog.txt +++ b/inc/classes/third_party/php_mailer/ChangeLog.txt @@ -1,330 +1,330 @@ -ChangeLog - -NOTE: THIS VERSION OF PHPMAILER IS DESIGNED FOR PHP5/PHP6. IT WILL NOT WORK WITH PHP4. - -Version 2.3 (November 06, 2008) - -* added Arabic language (many thanks to Bahjat Al Mostafa) -* removed English language from language files and made it a default within - class.phpmailer.php - if no language is found, it will default to use - the english language translation -* fixed public/private declarations -* corrected line 1728, $basedir to $directory -* added $sign_cert_file to avoid improper duplicate use of $sign_key_file -* corrected $this->Hello on line 612 to $this->Helo -* changed default of $LE to "\r\n" to comply with RFC 2822. Can be set by the user - if default is not acceptable -* removed trim() from return results in EncodeQP -* /test and three files it contained are removed from version 2.3 -* fixed phpunit.php for compliance with PHP5 -* changed $this->AltBody = $textMsg; to $this->AltBody = html_entity_decode($textMsg); -* We have removed the /phpdoc from the downloads. All documentation is now on - the http://phpmailer.codeworxtech.com website. - -Version 2.2.1 () July 19 2008 - -* fixed line 1092 in class.smtp.php (my apologies, error on my part) - -Version 2.2 () July 15 2008 - -* Fixed redirect issue (display of UTF-8 in thank you redirect) -* fixed error in getResponse function declaration (class.pop3.php) -* PHPMailer now PHP6 compliant -* fixed line 1092 in class.smtp.php (endless loop from missing = sign) - -Version 2.1 (Wed, June 04 2008) - -** NOTE: WE HAVE A NEW LANGUAGE VARIABLE FOR DIGITALLY SIGNED S/MIME EMAILS. - IF YOU CAN HELP WITH LANGUAGES OTHER THAN ENGLISH AND SPANISH, IT WOULD BE - APPRECIATED. - -* added S/MIME functionality (ability to digitally sign emails) - BIG THANKS TO "sergiocambra" for posting this patch back in November 2007. - The "Signed Emails" functionality adds the Sign method to pass the private key - filename and the password to read it, and then email will be sent with - content-type multipart/signed and with the digital signature attached. -* fully compatible with E_STRICT error level - - Please note: - In about half the test environments this development version was subjected - to, an error was thrown for the date() functions used (line 1565 and 1569). - This is NOT a PHPMailer error, it is the result of an incorrectly configured - PHP5 installation. The fix is to modify your 'php.ini' file and include the - date.timezone = America/New York - directive, to your own server timezone - - If you do get this error, and are unable to access your php.ini file: - In your PHP script, add - date_default_timezone_set('America/Toronto'); - - do not try to use - $myVar = date_default_timezone_get(); - as a test, it will throw an error. -* added ability to define path (mainly for embedded images) - function MsgHTML($message,$basedir='') ... where: - $basedir is the fully qualified path -* fixed MsgHTML() function: - - Embedded Images where images are specified by :// will not be altered or embedded -* fixed the return value of SMTP exit code ( pclose ) -* addressed issue of multibyte characters in subject line and truncating -* added ability to have user specified Message ID - (default is still that PHPMailer create a unique Message ID) -* corrected unidentified message type to 'application/octet-stream' -* fixed chunk_split() multibyte issue (thanks to Colin Brown, et al). -* added check for added attachments -* enhanced conversion of HTML to text in MsgHTML (thanks to "brunny") - -Version 2.1.0beta2 (Sun, Dec 02 2007) -* implemented updated EncodeQP (thanks to coolbru, aka Marcus Bointon) -* finished all testing, all known bugs corrected, enhancements tested -- note: will NOT work with PHP4. - -please note, this is BETA software -** DO NOT USE THIS IN PRODUCTION OR LIVE PROJECTS -INTENDED STRICTLY FOR TESTING - -Version 2.1.0beta1 -please note, this is BETA software -** DO NOT USE THIS IN PRODUCTION OR LIVE PROJECTS -INTENDED STRICTLY FOR TESTING - -Version 2.0.0 rc2 (Fri, Nov 16 2007), interim release -* implements new property to control VERP in class.smtp.php - example (requires instantiating class.smtp.php): - $mail->do_verp = true; -* POP-before-SMTP functionality included, thanks to Richard Davey - (see class.pop3.php & pop3_before_smtp_test.php for examples) -* included example showing how to use PHPMailer with GMAIL -* fixed the missing Cc in SendMail() and Mail() - -****************** -A note on sending bulk emails: - -If the email you are sending is not personalized, consider using the -"undisclosed-recipient:;" strategy. That is, put all of your recipients -in the Bcc field and set the To field to "undisclosed-recipients:;". -It's a lot faster (only one send) and saves quite a bit on resources. -Contrary to some opinions, this will not get you listed in spam engines - -it's a legitimate way for you to send emails. - -A partial example for use with PHPMailer: - -$mail->AddAddress("undisclosed-recipients:;"); -$mail->AddBCC("email1@anydomain.com,email2@anyotherdomain.com,email3@anyalternatedomain.com"); - -Many email service providers restrict the number of emails that can be sent -in any given time period. Often that is between 50 - 60 emails maximum -per hour or per send session. - -If that's the case, then break up your Bcc lists into chunks that are one -less than your limit, and put a pause in your script. -******************* - -Version 2.0.0 rc1 (Thu, Nov 08 2007), interim release -* dramatically simplified using inline graphics ... it's fully automated and requires no user input -* added automatic document type detection for attachments and pictures -* added MsgHTML() function to replace Body tag for HTML emails -* fixed the SendMail security issues (input validation vulnerability) -* enhanced the AddAddresses functionality so that the "Name" portion is used in the email address -* removed the need to use the AltBody method (set from the HTML, or default text used) -* set the PHP Mail() function as the default (still support SendMail, SMTP Mail) -* removed the need to set the IsHTML property (set automatically) -* added Estonian language file by Indrek Päri -* added header injection patch -* added "set" method to permit users to create their own pseudo-properties like 'X-Headers', etc. - example of use: - $mail->set('X-Priority', '3'); - $mail->set('X-MSMail-Priority', 'Normal'); -* fixed warning message in SMTP get_lines method -* added TLS/SSL SMTP support - example of use: - $mail = new PHPMailer(); - $mail->Mailer = "smtp"; - $mail->Host = "smtp.example.com"; - $mail->SMTPSecure = "tls"; // option - //$mail->SMTPSecure = "ssl"; // option - ... - $mail->Send(); -* PHPMailer has been tested with PHP4 (4.4.7) and PHP5 (5.2.7) -* Works with PHP installed as a module or as CGI-PHP -- NOTE: will NOT work with PHP5 in E_STRICT error mode - -Version 1.73 (Sun, Jun 10 2005) -* Fixed denial of service bug: http://www.cybsec.com/vuln/PHPMailer-DOS.pdf -* Now has a total of 20 translations -* Fixed alt attachments bug: http://tinyurl.com/98u9k - -Version 1.72 (Wed, May 25 2004) -* Added Dutch, Swedish, Czech, Norwegian, and Turkish translations. -* Received: Removed this method because spam filter programs like -SpamAssassin reject this header. -* Fixed error count bug. -* SetLanguage default is now "language/". -* Fixed magic_quotes_runtime bug. - -Version 1.71 (Tue, Jul 28 2003) -* Made several speed enhancements -* Added German and Italian translation files -* Fixed HELO/AUTH bugs on keep-alive connects -* Now provides an error message if language file does not load -* Fixed attachment EOL bug -* Updated some unclear documentation -* Added additional tests and improved others - -Version 1.70 (Mon, Jun 20 2003) -* Added SMTP keep-alive support -* Added IsError method for error detection -* Added error message translation support (SetLanguage) -* Refactored many methods to increase library performance -* Hello now sends the newer EHLO message before HELO as per RFC 2821 -* Removed the boundary class and replaced it with GetBoundary -* Removed queue support methods -* New $Hostname variable -* New Message-ID header -* Received header reformat -* Helo variable default changed to $Hostname -* Removed extra spaces in Content-Type definition (#667182) -* Return-Path should be set to Sender when set -* Adds Q or B encoding to headers when necessary -* quoted-encoding should now encode NULs \000 -* Fixed encoding of body/AltBody (#553370) -* Adds "To: undisclosed-recipients:;" when all recipients are hidden (BCC) -* Multiple bug fixes - -Version 1.65 (Fri, Aug 09 2002) -* Fixed non-visible attachment bug (#585097) for Outlook -* SMTP connections are now closed after each transaction -* Fixed SMTP::Expand return value -* Converted SMTP class documentation to phpDocumentor format - -Version 1.62 (Wed, Jun 26 2002) -* Fixed multi-attach bug -* Set proper word wrapping -* Reduced memory use with attachments -* Added more debugging -* Changed documentation to phpDocumentor format - -Version 1.60 (Sat, Mar 30 2002) -* Sendmail pipe and address patch (Christian Holtje) -* Added embedded image and read confirmation support (A. Ognio) -* Added unit tests -* Added SMTP timeout support (*nix only) -* Added possibly temporary PluginDir variable for SMTP class -* Added LE message line ending variable -* Refactored boundary and attachment code -* Eliminated SMTP class warnings -* Added SendToQueue method for future queuing support - -Version 1.54 (Wed, Dec 19 2001) -* Add some queuing support code -* Fixed a pesky multi/alt bug -* Messages are no longer forced to have "To" addresses - -Version 1.50 (Thu, Nov 08 2001) -* Fix extra lines when not using SMTP mailer -* Set WordWrap variable to int with a zero default - -Version 1.47 (Tue, Oct 16 2001) -* Fixed Received header code format -* Fixed AltBody order error -* Fixed alternate port warning - -Version 1.45 (Tue, Sep 25 2001) -* Added enhanced SMTP debug support -* Added support for multiple ports on SMTP -* Added Received header for tracing -* Fixed AddStringAttachment encoding -* Fixed possible header name quote bug -* Fixed wordwrap() trim bug -* Couple other small bug fixes - -Version 1.41 (Wed, Aug 22 2001) -* Fixed AltBody bug w/o attachments -* Fixed rfc_date() for certain mail servers - -Version 1.40 (Sun, Aug 12 2001) -* Added multipart/alternative support (AltBody) -* Documentation update -* Fixed bug in Mercury MTA - -Version 1.29 (Fri, Aug 03 2001) -* Added AddStringAttachment() method -* Added SMTP authentication support - -Version 1.28 (Mon, Jul 30 2001) -* Fixed a typo in SMTP class -* Fixed header issue with Imail (win32) SMTP server -* Made fopen() calls for attachments use "rb" to fix win32 error - -Version 1.25 (Mon, Jul 02 2001) -* Added RFC 822 date fix (Patrice) -* Added improved error handling by adding a $ErrorInfo variable -* Removed MailerDebug variable (obsolete with new error handler) - -Version 1.20 (Mon, Jun 25 2001) -* Added quoted-printable encoding (Patrice) -* Set Version as public and removed PrintVersion() -* Changed phpdoc to only display public variables and methods - -Version 1.19 (Thu, Jun 21 2001) -* Fixed MS Mail header bug -* Added fix for Bcc problem with mail(). *Does not work on Win32* - (See PHP bug report: http://www.php.net/bugs.php?id=11616) -* mail() no longer passes a fifth parameter when not needed - -Version 1.15 (Fri, Jun 15 2001) -[Note: these changes contributed by Patrice Fournier] -* Changed all remaining \n to \r\n -* Bcc: header no longer writen to message except -when sent directly to sendmail -* Added a small message to non-MIME compliant mail reader -* Added Sender variable to change the Sender email -used in -f for sendmail/mail and in 'MAIL FROM' for smtp mode -* Changed boundary setting to a place it will be set only once -* Removed transfer encoding for whole message when using multipart -* Message body now uses Encoding in multipart messages -* Can set encoding and type to attachments 7bit, 8bit -and binary attachment are sent as is, base64 are encoded -* Can set Encoding to base64 to send 8 bits body -through 7 bits servers - -Version 1.10 (Tue, Jun 12 2001) -* Fixed win32 mail header bug (printed out headers in message body) - -Version 1.09 (Fri, Jun 08 2001) -* Changed date header to work with Netscape mail programs -* Altered phpdoc documentation - -Version 1.08 (Tue, Jun 05 2001) -* Added enhanced error-checking -* Added phpdoc documentation to source - -Version 1.06 (Fri, Jun 01 2001) -* Added optional name for file attachments - -Version 1.05 (Tue, May 29 2001) -* Code cleanup -* Eliminated sendmail header warning message -* Fixed possible SMTP error - -Version 1.03 (Thu, May 24 2001) -* Fixed problem where qmail sends out duplicate messages - -Version 1.02 (Wed, May 23 2001) -* Added multiple recipient and attachment Clear* methods -* Added Sendmail public variable -* Fixed problem with loading SMTP library multiple times - -Version 0.98 (Tue, May 22 2001) -* Fixed problem with redundant mail hosts sending out multiple messages -* Added additional error handler code -* Added AddCustomHeader() function -* Added support for Microsoft mail client headers (affects priority) -* Fixed small bug with Mailer variable -* Added PrintVersion() function - -Version 0.92 (Tue, May 15 2001) -* Changed file names to class.phpmailer.php and class.smtp.php to match - current PHP class trend. -* Fixed problem where body not being printed when a message is attached -* Several small bug fixes - -Version 0.90 (Tue, April 17 2001) -* Intial public release +ChangeLog + +NOTE: THIS VERSION OF PHPMAILER IS DESIGNED FOR PHP5/PHP6. IT WILL NOT WORK WITH PHP4. + +Version 2.3 (November 06, 2008) + +* added Arabic language (many thanks to Bahjat Al Mostafa) +* removed English language from language files and made it a default within + class.phpmailer.php - if no language is found, it will default to use + the english language translation +* fixed public/private declarations +* corrected line 1728, $basedir to $directory +* added $sign_cert_file to avoid improper duplicate use of $sign_key_file +* corrected $this->Hello on line 612 to $this->Helo +* changed default of $LE to "\r\n" to comply with RFC 2822. Can be set by the user + if default is not acceptable +* removed trim() from return results in EncodeQP +* /test and three files it contained are removed from version 2.3 +* fixed phpunit.php for compliance with PHP5 +* changed $this->AltBody = $textMsg; to $this->AltBody = html_entity_decode($textMsg); +* We have removed the /phpdoc from the downloads. All documentation is now on + the http://phpmailer.codeworxtech.com website. + +Version 2.2.1 () July 19 2008 + +* fixed line 1092 in class.smtp.php (my apologies, error on my part) + +Version 2.2 () July 15 2008 + +* Fixed redirect issue (display of UTF-8 in thank you redirect) +* fixed error in getResponse function declaration (class.pop3.php) +* PHPMailer now PHP6 compliant +* fixed line 1092 in class.smtp.php (endless loop from missing = sign) + +Version 2.1 (Wed, June 04 2008) + +** NOTE: WE HAVE A NEW LANGUAGE VARIABLE FOR DIGITALLY SIGNED S/MIME EMAILS. + IF YOU CAN HELP WITH LANGUAGES OTHER THAN ENGLISH AND SPANISH, IT WOULD BE + APPRECIATED. + +* added S/MIME functionality (ability to digitally sign emails) + BIG THANKS TO "sergiocambra" for posting this patch back in November 2007. + The "Signed Emails" functionality adds the Sign method to pass the private key + filename and the password to read it, and then email will be sent with + content-type multipart/signed and with the digital signature attached. +* fully compatible with E_STRICT error level + - Please note: + In about half the test environments this development version was subjected + to, an error was thrown for the date() functions used (line 1565 and 1569). + This is NOT a PHPMailer error, it is the result of an incorrectly configured + PHP5 installation. The fix is to modify your 'php.ini' file and include the + date.timezone = America/New York + directive, to your own server timezone + - If you do get this error, and are unable to access your php.ini file: + In your PHP script, add + date_default_timezone_set('America/Toronto'); + - do not try to use + $myVar = date_default_timezone_get(); + as a test, it will throw an error. +* added ability to define path (mainly for embedded images) + function MsgHTML($message,$basedir='') ... where: + $basedir is the fully qualified path +* fixed MsgHTML() function: + - Embedded Images where images are specified by :// will not be altered or embedded +* fixed the return value of SMTP exit code ( pclose ) +* addressed issue of multibyte characters in subject line and truncating +* added ability to have user specified Message ID + (default is still that PHPMailer create a unique Message ID) +* corrected unidentified message type to 'application/octet-stream' +* fixed chunk_split() multibyte issue (thanks to Colin Brown, et al). +* added check for added attachments +* enhanced conversion of HTML to text in MsgHTML (thanks to "brunny") + +Version 2.1.0beta2 (Sun, Dec 02 2007) +* implemented updated EncodeQP (thanks to coolbru, aka Marcus Bointon) +* finished all testing, all known bugs corrected, enhancements tested +- note: will NOT work with PHP4. + +please note, this is BETA software +** DO NOT USE THIS IN PRODUCTION OR LIVE PROJECTS +INTENDED STRICTLY FOR TESTING + +Version 2.1.0beta1 +please note, this is BETA software +** DO NOT USE THIS IN PRODUCTION OR LIVE PROJECTS +INTENDED STRICTLY FOR TESTING + +Version 2.0.0 rc2 (Fri, Nov 16 2007), interim release +* implements new property to control VERP in class.smtp.php + example (requires instantiating class.smtp.php): + $mail->do_verp = true; +* POP-before-SMTP functionality included, thanks to Richard Davey + (see class.pop3.php & pop3_before_smtp_test.php for examples) +* included example showing how to use PHPMailer with GMAIL +* fixed the missing Cc in SendMail() and Mail() + +****************** +A note on sending bulk emails: + +If the email you are sending is not personalized, consider using the +"undisclosed-recipient:;" strategy. That is, put all of your recipients +in the Bcc field and set the To field to "undisclosed-recipients:;". +It's a lot faster (only one send) and saves quite a bit on resources. +Contrary to some opinions, this will not get you listed in spam engines - +it's a legitimate way for you to send emails. + +A partial example for use with PHPMailer: + +$mail->AddAddress("undisclosed-recipients:;"); +$mail->AddBCC("email1@anydomain.com,email2@anyotherdomain.com,email3@anyalternatedomain.com"); + +Many email service providers restrict the number of emails that can be sent +in any given time period. Often that is between 50 - 60 emails maximum +per hour or per send session. + +If that's the case, then break up your Bcc lists into chunks that are one +less than your limit, and put a pause in your script. +******************* + +Version 2.0.0 rc1 (Thu, Nov 08 2007), interim release +* dramatically simplified using inline graphics ... it's fully automated and requires no user input +* added automatic document type detection for attachments and pictures +* added MsgHTML() function to replace Body tag for HTML emails +* fixed the SendMail security issues (input validation vulnerability) +* enhanced the AddAddresses functionality so that the "Name" portion is used in the email address +* removed the need to use the AltBody method (set from the HTML, or default text used) +* set the PHP Mail() function as the default (still support SendMail, SMTP Mail) +* removed the need to set the IsHTML property (set automatically) +* added Estonian language file by Indrek Päri +* added header injection patch +* added "set" method to permit users to create their own pseudo-properties like 'X-Headers', etc. + example of use: + $mail->set('X-Priority', '3'); + $mail->set('X-MSMail-Priority', 'Normal'); +* fixed warning message in SMTP get_lines method +* added TLS/SSL SMTP support + example of use: + $mail = new PHPMailer(); + $mail->Mailer = "smtp"; + $mail->Host = "smtp.example.com"; + $mail->SMTPSecure = "tls"; // option + //$mail->SMTPSecure = "ssl"; // option + ... + $mail->Send(); +* PHPMailer has been tested with PHP4 (4.4.7) and PHP5 (5.2.7) +* Works with PHP installed as a module or as CGI-PHP +- NOTE: will NOT work with PHP5 in E_STRICT error mode + +Version 1.73 (Sun, Jun 10 2005) +* Fixed denial of service bug: http://www.cybsec.com/vuln/PHPMailer-DOS.pdf +* Now has a total of 20 translations +* Fixed alt attachments bug: http://tinyurl.com/98u9k + +Version 1.72 (Wed, May 25 2004) +* Added Dutch, Swedish, Czech, Norwegian, and Turkish translations. +* Received: Removed this method because spam filter programs like +SpamAssassin reject this header. +* Fixed error count bug. +* SetLanguage default is now "language/". +* Fixed magic_quotes_runtime bug. + +Version 1.71 (Tue, Jul 28 2003) +* Made several speed enhancements +* Added German and Italian translation files +* Fixed HELO/AUTH bugs on keep-alive connects +* Now provides an error message if language file does not load +* Fixed attachment EOL bug +* Updated some unclear documentation +* Added additional tests and improved others + +Version 1.70 (Mon, Jun 20 2003) +* Added SMTP keep-alive support +* Added IsError method for error detection +* Added error message translation support (SetLanguage) +* Refactored many methods to increase library performance +* Hello now sends the newer EHLO message before HELO as per RFC 2821 +* Removed the boundary class and replaced it with GetBoundary +* Removed queue support methods +* New $Hostname variable +* New Message-ID header +* Received header reformat +* Helo variable default changed to $Hostname +* Removed extra spaces in Content-Type definition (#667182) +* Return-Path should be set to Sender when set +* Adds Q or B encoding to headers when necessary +* quoted-encoding should now encode NULs \000 +* Fixed encoding of body/AltBody (#553370) +* Adds "To: undisclosed-recipients:;" when all recipients are hidden (BCC) +* Multiple bug fixes + +Version 1.65 (Fri, Aug 09 2002) +* Fixed non-visible attachment bug (#585097) for Outlook +* SMTP connections are now closed after each transaction +* Fixed SMTP::Expand return value +* Converted SMTP class documentation to phpDocumentor format + +Version 1.62 (Wed, Jun 26 2002) +* Fixed multi-attach bug +* Set proper word wrapping +* Reduced memory use with attachments +* Added more debugging +* Changed documentation to phpDocumentor format + +Version 1.60 (Sat, Mar 30 2002) +* Sendmail pipe and address patch (Christian Holtje) +* Added embedded image and read confirmation support (A. Ognio) +* Added unit tests +* Added SMTP timeout support (*nix only) +* Added possibly temporary PluginDir variable for SMTP class +* Added LE message line ending variable +* Refactored boundary and attachment code +* Eliminated SMTP class warnings +* Added SendToQueue method for future queuing support + +Version 1.54 (Wed, Dec 19 2001) +* Add some queuing support code +* Fixed a pesky multi/alt bug +* Messages are no longer forced to have "To" addresses + +Version 1.50 (Thu, Nov 08 2001) +* Fix extra lines when not using SMTP mailer +* Set WordWrap variable to int with a zero default + +Version 1.47 (Tue, Oct 16 2001) +* Fixed Received header code format +* Fixed AltBody order error +* Fixed alternate port warning + +Version 1.45 (Tue, Sep 25 2001) +* Added enhanced SMTP debug support +* Added support for multiple ports on SMTP +* Added Received header for tracing +* Fixed AddStringAttachment encoding +* Fixed possible header name quote bug +* Fixed wordwrap() trim bug +* Couple other small bug fixes + +Version 1.41 (Wed, Aug 22 2001) +* Fixed AltBody bug w/o attachments +* Fixed rfc_date() for certain mail servers + +Version 1.40 (Sun, Aug 12 2001) +* Added multipart/alternative support (AltBody) +* Documentation update +* Fixed bug in Mercury MTA + +Version 1.29 (Fri, Aug 03 2001) +* Added AddStringAttachment() method +* Added SMTP authentication support + +Version 1.28 (Mon, Jul 30 2001) +* Fixed a typo in SMTP class +* Fixed header issue with Imail (win32) SMTP server +* Made fopen() calls for attachments use "rb" to fix win32 error + +Version 1.25 (Mon, Jul 02 2001) +* Added RFC 822 date fix (Patrice) +* Added improved error handling by adding a $ErrorInfo variable +* Removed MailerDebug variable (obsolete with new error handler) + +Version 1.20 (Mon, Jun 25 2001) +* Added quoted-printable encoding (Patrice) +* Set Version as public and removed PrintVersion() +* Changed phpdoc to only display public variables and methods + +Version 1.19 (Thu, Jun 21 2001) +* Fixed MS Mail header bug +* Added fix for Bcc problem with mail(). *Does not work on Win32* + (See PHP bug report: http://www.php.net/bugs.php?id=11616) +* mail() no longer passes a fifth parameter when not needed + +Version 1.15 (Fri, Jun 15 2001) +[Note: these changes contributed by Patrice Fournier] +* Changed all remaining \n to \r\n +* Bcc: header no longer writen to message except +when sent directly to sendmail +* Added a small message to non-MIME compliant mail reader +* Added Sender variable to change the Sender email +used in -f for sendmail/mail and in 'MAIL FROM' for smtp mode +* Changed boundary setting to a place it will be set only once +* Removed transfer encoding for whole message when using multipart +* Message body now uses Encoding in multipart messages +* Can set encoding and type to attachments 7bit, 8bit +and binary attachment are sent as is, base64 are encoded +* Can set Encoding to base64 to send 8 bits body +through 7 bits servers + +Version 1.10 (Tue, Jun 12 2001) +* Fixed win32 mail header bug (printed out headers in message body) + +Version 1.09 (Fri, Jun 08 2001) +* Changed date header to work with Netscape mail programs +* Altered phpdoc documentation + +Version 1.08 (Tue, Jun 05 2001) +* Added enhanced error-checking +* Added phpdoc documentation to source + +Version 1.06 (Fri, Jun 01 2001) +* Added optional name for file attachments + +Version 1.05 (Tue, May 29 2001) +* Code cleanup +* Eliminated sendmail header warning message +* Fixed possible SMTP error + +Version 1.03 (Thu, May 24 2001) +* Fixed problem where qmail sends out duplicate messages + +Version 1.02 (Wed, May 23 2001) +* Added multiple recipient and attachment Clear* methods +* Added Sendmail public variable +* Fixed problem with loading SMTP library multiple times + +Version 0.98 (Tue, May 22 2001) +* Fixed problem with redundant mail hosts sending out multiple messages +* Added additional error handler code +* Added AddCustomHeader() function +* Added support for Microsoft mail client headers (affects priority) +* Fixed small bug with Mailer variable +* Added PrintVersion() function + +Version 0.92 (Tue, May 15 2001) +* Changed file names to class.phpmailer.php and class.smtp.php to match + current PHP class trend. +* Fixed problem where body not being printed when a message is attached +* Several small bug fixes + +Version 0.90 (Tue, April 17 2001) +* Intial public release diff --git a/inc/classes/third_party/php_mailer/LICENSE b/inc/classes/third_party/php_mailer/LICENSE index 03851a33..f3f1b3b6 100644 --- a/inc/classes/third_party/php_mailer/LICENSE +++ b/inc/classes/third_party/php_mailer/LICENSE @@ -1,504 +1,504 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/inc/classes/third_party/php_mailer/README b/inc/classes/third_party/php_mailer/README index f2e2b795..3f0ee3fa 100644 --- a/inc/classes/third_party/php_mailer/README +++ b/inc/classes/third_party/php_mailer/README @@ -1,193 +1,193 @@ -/******************************************************************* -* The http://phpmailer.codeworxtech.com/ website now carries a few * -* advertisements through the Google Adsense network. Please visit * -* the advertiser sites and help us offset some of our costs. * -* Thanks .... * -********************************************************************/ - -PHPMailer -Full Featured Email Transfer Class for PHP -========================================== - -Version 2.3 (November 08, 2008) - -We have removed the /phpdoc from the downloads. All documentation is now on -the http://phpmailer.codeworxtech.com website. - -The phpunit.php has been updated to support PHP5. - -For all other changes and notes, please see the changelog. - -Donations are accepted at PayPal with our id "paypal@worxteam.com". - -Version 2.2 (July 15 2008) - -- see the changelog. - -Version 2.1 (June 04 2008) - -With this release, we are announcing that the development of PHPMailer for PHP5 -will be our focus from this date on. We have implemented all the enhancements -and fixes from the latest release of PHPMailer for PHP4. - -Far more important, though, is that this release of PHPMailer (v2.1) is -fully tested with E_STRICT error checking enabled. - -** NOTE: WE HAVE A NEW LANGUAGE VARIABLE FOR DIGITALLY SIGNED S/MIME EMAILS. - IF YOU CAN HELP WITH LANGUAGES OTHER THAN ENGLISH AND SPANISH, IT WOULD BE - APPRECIATED. - -We have now added S/MIME functionality (ability to digitally sign emails). -BIG THANKS TO "sergiocambra" for posting this patch back in November 2007. -The "Signed Emails" functionality adds the Sign method to pass the private key -filename and the password to read it, and then email will be sent with -content-type multipart/signed and with the digital signature attached. - -A quick note on E_STRICT: - -- In about half the test environments the development version was subjected - to, an error was thrown for the date() functions (used at line 1565 and 1569). - This is NOT a PHPMailer error, it is the result of an incorrectly configured - PHP5 installation. The fix is to modify your 'php.ini' file and include the - date.timezone = America/New York - directive, (for your own server timezone) -- If you do get this error, and are unable to access your php.ini file, there is - a workaround. In your PHP script, add - date_default_timezone_set('America/Toronto'); - - * do NOT try to use - $myVar = date_default_timezone_get(); - as a test, it will throw an error. - -We have also included more example files to show the use of "sendmail", "mail()", -"smtp", and "gmail". - -We are also looking for more programmers to join the volunteer development team. -If you have an interest in this, please let us know. - -Enjoy! - - -Version 2.1.0beta1 & beta2 - -please note, this is BETA software -** DO NOT USE THIS IN PRODUCTION OR LIVE PROJECTS -INTENDED STRICTLY FOR TESTING - -** NOTE: - -As of November 2007, PHPMailer has a new project team headed by industry -veteran Andy Prevost (codeworxtech). The first release in more than two -years will focus on fixes, adding ease-of-use enhancements, provide -basic compatibility with PHP4 and PHP5 using PHP5 backwards compatibility -features. A new release is planned before year-end 2007 that will provide -full compatiblity with PHP4 and PHP5, as well as more bug fixes. - -We are looking for project developers to assist in restoring PHPMailer to -its leadership position. Our goals are to simplify use of PHPMailer, provide -good documentation and examples, and retain backward compatibility to level -1.7.3 standards. - -If you are interested in helping out, visit http://sourceforge.net/projects/phpmailer -and indicate your interest. - -** - -http://phpmailer.sourceforge.net/ - -This software is licenced under the LGPL. Please read LICENSE for information on the -software availability and distribution. - -Class Features: -- Send emails with multiple TOs, CCs, BCCs and REPLY-TOs -- Redundant SMTP servers -- Multipart/alternative emails for mail clients that do not read HTML email -- Support for 8bit, base64, binary, and quoted-printable encoding -- Uses the same methods as the very popular AspEmail active server (COM) component -- SMTP authentication -- Native language support -- Word wrap, and more! - -Why you might need it: - -Many PHP developers utilize email in their code. The only PHP function -that supports this is the mail() function. However, it does not expose -any of the popular features that many email clients use nowadays like -HTML-based emails and attachments. There are two proprietary -development tools out there that have all the functionality built into -easy to use classes: AspEmail(tm) and AspMail. Both of these -programs are COM components only available on Windows. They are also a -little pricey for smaller projects. - -Since I do Linux development I’ve missed these tools for my PHP coding. -So I built a version myself that implements the same methods (object -calls) that the Windows-based components do. It is open source and the -LGPL license allows you to place the class in your proprietary PHP -projects. - - -Installation: - -Copy class.phpmailer.php into your php.ini include_path. If you are -using the SMTP mailer then place class.smtp.php in your path as well. -In the language directory you will find several files like -phpmailer.lang-en.php. If you look right before the .php extension -that there are two letters. These represent the language type of the -translation file. For instance "en" is the English file and "br" is -the Portuguese file. Chose the file that best fits with your language -and place it in the PHP include path. If your language is English -then you have nothing more to do. If it is a different language then -you must point PHPMailer to the correct translation. To do this, call -the PHPMailer SetLanguage method like so: - -// To load the Portuguese version -$mail->SetLanguage("br", "/optional/path/to/language/directory/"); - -That's it. You should now be ready to use PHPMailer! - - -A Simple Example: - -IsSMTP(); // set mailer to use SMTP -$mail->Host = "smtp1.example.com;smtp2.example.com"; // specify main and backup server -$mail->SMTPAuth = true; // turn on SMTP authentication -$mail->Username = "jswan"; // SMTP username -$mail->Password = "secret"; // SMTP password - -$mail->From = "from@example.com"; -$mail->FromName = "Mailer"; -$mail->AddAddress("josh@example.net", "Josh Adams"); -$mail->AddAddress("ellen@example.com"); // name is optional -$mail->AddReplyTo("info@example.com", "Information"); - -$mail->WordWrap = 50; // set word wrap to 50 characters -$mail->AddAttachment("/var/tmp/file.tar.gz"); // add attachments -$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // optional name -$mail->IsHTML(true); // set email format to HTML - -$mail->Subject = "Here is the subject"; -$mail->Body = "This is the HTML message body in bold!"; -$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; - -if(!$mail->Send()) -{ - echo "Message could not be sent.

"; - echo "Mailer Error: " . $mail->ErrorInfo; - exit; -} - -echo "Message has been sent"; -?> - -CHANGELOG - -See ChangeLog.txt - -Download: http://sourceforge.net/project/showfiles.php?group_id=26031 - -Andy Prevost +/******************************************************************* +* The http://phpmailer.codeworxtech.com/ website now carries a few * +* advertisements through the Google Adsense network. Please visit * +* the advertiser sites and help us offset some of our costs. * +* Thanks .... * +********************************************************************/ + +PHPMailer +Full Featured Email Transfer Class for PHP +========================================== + +Version 2.3 (November 08, 2008) + +We have removed the /phpdoc from the downloads. All documentation is now on +the http://phpmailer.codeworxtech.com website. + +The phpunit.php has been updated to support PHP5. + +For all other changes and notes, please see the changelog. + +Donations are accepted at PayPal with our id "paypal@worxteam.com". + +Version 2.2 (July 15 2008) + +- see the changelog. + +Version 2.1 (June 04 2008) + +With this release, we are announcing that the development of PHPMailer for PHP5 +will be our focus from this date on. We have implemented all the enhancements +and fixes from the latest release of PHPMailer for PHP4. + +Far more important, though, is that this release of PHPMailer (v2.1) is +fully tested with E_STRICT error checking enabled. + +** NOTE: WE HAVE A NEW LANGUAGE VARIABLE FOR DIGITALLY SIGNED S/MIME EMAILS. + IF YOU CAN HELP WITH LANGUAGES OTHER THAN ENGLISH AND SPANISH, IT WOULD BE + APPRECIATED. + +We have now added S/MIME functionality (ability to digitally sign emails). +BIG THANKS TO "sergiocambra" for posting this patch back in November 2007. +The "Signed Emails" functionality adds the Sign method to pass the private key +filename and the password to read it, and then email will be sent with +content-type multipart/signed and with the digital signature attached. + +A quick note on E_STRICT: + +- In about half the test environments the development version was subjected + to, an error was thrown for the date() functions (used at line 1565 and 1569). + This is NOT a PHPMailer error, it is the result of an incorrectly configured + PHP5 installation. The fix is to modify your 'php.ini' file and include the + date.timezone = America/New York + directive, (for your own server timezone) +- If you do get this error, and are unable to access your php.ini file, there is + a workaround. In your PHP script, add + date_default_timezone_set('America/Toronto'); + + * do NOT try to use + $myVar = date_default_timezone_get(); + as a test, it will throw an error. + +We have also included more example files to show the use of "sendmail", "mail()", +"smtp", and "gmail". + +We are also looking for more programmers to join the volunteer development team. +If you have an interest in this, please let us know. + +Enjoy! + + +Version 2.1.0beta1 & beta2 + +please note, this is BETA software +** DO NOT USE THIS IN PRODUCTION OR LIVE PROJECTS +INTENDED STRICTLY FOR TESTING + +** NOTE: + +As of November 2007, PHPMailer has a new project team headed by industry +veteran Andy Prevost (codeworxtech). The first release in more than two +years will focus on fixes, adding ease-of-use enhancements, provide +basic compatibility with PHP4 and PHP5 using PHP5 backwards compatibility +features. A new release is planned before year-end 2007 that will provide +full compatiblity with PHP4 and PHP5, as well as more bug fixes. + +We are looking for project developers to assist in restoring PHPMailer to +its leadership position. Our goals are to simplify use of PHPMailer, provide +good documentation and examples, and retain backward compatibility to level +1.7.3 standards. + +If you are interested in helping out, visit http://sourceforge.net/projects/phpmailer +and indicate your interest. + +** + +http://phpmailer.sourceforge.net/ + +This software is licenced under the LGPL. Please read LICENSE for information on the +software availability and distribution. + +Class Features: +- Send emails with multiple TOs, CCs, BCCs and REPLY-TOs +- Redundant SMTP servers +- Multipart/alternative emails for mail clients that do not read HTML email +- Support for 8bit, base64, binary, and quoted-printable encoding +- Uses the same methods as the very popular AspEmail active server (COM) component +- SMTP authentication +- Native language support +- Word wrap, and more! + +Why you might need it: + +Many PHP developers utilize email in their code. The only PHP function +that supports this is the mail() function. However, it does not expose +any of the popular features that many email clients use nowadays like +HTML-based emails and attachments. There are two proprietary +development tools out there that have all the functionality built into +easy to use classes: AspEmail(tm) and AspMail. Both of these +programs are COM components only available on Windows. They are also a +little pricey for smaller projects. + +Since I do Linux development I’ve missed these tools for my PHP coding. +So I built a version myself that implements the same methods (object +calls) that the Windows-based components do. It is open source and the +LGPL license allows you to place the class in your proprietary PHP +projects. + + +Installation: + +Copy class.phpmailer.php into your php.ini include_path. If you are +using the SMTP mailer then place class.smtp.php in your path as well. +In the language directory you will find several files like +phpmailer.lang-en.php. If you look right before the .php extension +that there are two letters. These represent the language type of the +translation file. For instance "en" is the English file and "br" is +the Portuguese file. Chose the file that best fits with your language +and place it in the PHP include path. If your language is English +then you have nothing more to do. If it is a different language then +you must point PHPMailer to the correct translation. To do this, call +the PHPMailer SetLanguage method like so: + +// To load the Portuguese version +$mail->SetLanguage("br", "/optional/path/to/language/directory/"); + +That's it. You should now be ready to use PHPMailer! + + +A Simple Example: + +IsSMTP(); // set mailer to use SMTP +$mail->Host = "smtp1.example.com;smtp2.example.com"; // specify main and backup server +$mail->SMTPAuth = true; // turn on SMTP authentication +$mail->Username = "jswan"; // SMTP username +$mail->Password = "secret"; // SMTP password + +$mail->From = "from@example.com"; +$mail->FromName = "Mailer"; +$mail->AddAddress("josh@example.net", "Josh Adams"); +$mail->AddAddress("ellen@example.com"); // name is optional +$mail->AddReplyTo("info@example.com", "Information"); + +$mail->WordWrap = 50; // set word wrap to 50 characters +$mail->AddAttachment("/var/tmp/file.tar.gz"); // add attachments +$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // optional name +$mail->IsHTML(true); // set email format to HTML + +$mail->Subject = "Here is the subject"; +$mail->Body = "This is the HTML message body in bold!"; +$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; + +if(!$mail->Send()) +{ + echo "Message could not be sent.

"; + echo "Mailer Error: " . $mail->ErrorInfo; + exit; +} + +echo "Message has been sent"; +?> + +CHANGELOG + +See ChangeLog.txt + +Download: http://sourceforge.net/project/showfiles.php?group_id=26031 + +Andy Prevost diff --git a/inc/classes/third_party/php_mailer/docs/extending.html b/inc/classes/third_party/php_mailer/docs/extending.html index f7c3200a..310f97a3 100644 --- a/inc/classes/third_party/php_mailer/docs/extending.html +++ b/inc/classes/third_party/php_mailer/docs/extending.html @@ -1,148 +1,148 @@ - - -Examples using phpmailer - - - - -

Examples using phpmailer

- -

1. Advanced Example

-

- -This demonstrates sending out multiple email messages with binary attachments -from a MySQL database with multipart/alternative support.

- - - - -
-
-require("class.phpmailer.php");
-
-$mail = new phpmailer();
-
-$mail->From     = "list@example.com";
-$mail->FromName = "List manager";
-$mail->Host     = "smtp1.example.com;smtp2.example.com";
-$mail->Mailer   = "smtp";
-
-@MYSQL_CONNECT("localhost","root","password");
-@mysql_select_db("my_company");
-$query  = "SELECT full_name, email, photo FROM employee WHERE id=$id";
-$result = @MYSQL_QUERY($query);
-
-while ($row = mysql_fetch_array ($result))
-{
-    // HTML body
-    $body  = "Hello <font size=\"4\">" . $row["full_name"] . "</font>, <p>";
-    $body .= "<i>Your</i> personal photograph to this message.<p>";
-    $body .= "Sincerely, <br>";
-    $body .= "phpmailer List manager";
-
-    // Plain text body (for mail clients that cannot read HTML)
-    $text_body  = "Hello " . $row["full_name"] . ", \n\n";
-    $text_body .= "Your personal photograph to this message.\n\n";
-    $text_body .= "Sincerely, \n";
-    $text_body .= "phpmailer List manager";
-
-    $mail->Body    = $body;
-    $mail->AltBody = $text_body;
-    $mail->AddAddress($row["email"], $row["full_name"]);
-    $mail->AddStringAttachment($row["photo"], "YourPhoto.jpg");
-
-    if(!$mail->Send())
-        echo "There has been a mail error sending to " . $row["email"] . "<br>";
-
-    // Clear all addresses and attachments for next loop
-    $mail->ClearAddresses();
-    $mail->ClearAttachments();
-}
-
-
-

- -

2. Extending phpmailer

-

- -Extending classes with inheritance is one of the most -powerful features of object-oriented -programming. It allows you to make changes to the -original class for your -own personal use without hacking the original -classes. Plus, it is very -easy to do. I've provided an example: - -

-Here's a class that extends the phpmailer class and sets the defaults -for the particular site:
-PHP include file: mail.inc.php -

- - - - - -
-
-require("class.phpmailer.php");
-
-class my_phpmailer extends phpmailer {
-    // Set default variables for all new objects
-    var $From     = "from@example.com";
-    var $FromName = "Mailer";
-    var $Host     = "smtp1.example.com;smtp2.example.com";
-    var $Mailer   = "smtp";                         // Alternative to IsSMTP()
-    var $WordWrap = 75;
-
-    // Replace the default error_handler
-    function error_handler($msg) {
-        print("My Site Error");
-        print("Description:");
-        printf("%s", $msg);
-        exit;
-    }
-
-    // Create an additional function
-    function do_something($something) {
-        // Place your new code here
-    }
-}
-
-
- -Now here's a normal PHP page in the site, which will have all the defaults set -above:
-Normal PHP file: mail_test.php -

- - - - - -
-
-require("mail.inc.php");
-
-// Instantiate your new class
-$mail = new my_phpmailer;
-
-// Now you only need to add the necessary stuff
-$mail->AddAddress("josh@example.com", "Josh Adams");
-$mail->Subject = "Here is the subject";
-$mail->Body    = "This is the message body";
-$mail->AddAttachment("c:/temp/11-10-00.zip", "new_name.zip");  // optional name
-
-if(!$mail->Send())
-{
-   echo "There was an error sending the message";
-   exit;
-}
-
-echo "Message was sent successfully";
-
-
-

- - - + + +Examples using phpmailer + + + + +

Examples using phpmailer

+ +

1. Advanced Example

+

+ +This demonstrates sending out multiple email messages with binary attachments +from a MySQL database with multipart/alternative support.

+ + + + +
+
+require("class.phpmailer.php");
+
+$mail = new phpmailer();
+
+$mail->From     = "list@example.com";
+$mail->FromName = "List manager";
+$mail->Host     = "smtp1.example.com;smtp2.example.com";
+$mail->Mailer   = "smtp";
+
+@MYSQL_CONNECT("localhost","root","password");
+@mysql_select_db("my_company");
+$query  = "SELECT full_name, email, photo FROM employee WHERE id=$id";
+$result = @MYSQL_QUERY($query);
+
+while ($row = mysql_fetch_array ($result))
+{
+    // HTML body
+    $body  = "Hello <font size=\"4\">" . $row["full_name"] . "</font>, <p>";
+    $body .= "<i>Your</i> personal photograph to this message.<p>";
+    $body .= "Sincerely, <br>";
+    $body .= "phpmailer List manager";
+
+    // Plain text body (for mail clients that cannot read HTML)
+    $text_body  = "Hello " . $row["full_name"] . ", \n\n";
+    $text_body .= "Your personal photograph to this message.\n\n";
+    $text_body .= "Sincerely, \n";
+    $text_body .= "phpmailer List manager";
+
+    $mail->Body    = $body;
+    $mail->AltBody = $text_body;
+    $mail->AddAddress($row["email"], $row["full_name"]);
+    $mail->AddStringAttachment($row["photo"], "YourPhoto.jpg");
+
+    if(!$mail->Send())
+        echo "There has been a mail error sending to " . $row["email"] . "<br>";
+
+    // Clear all addresses and attachments for next loop
+    $mail->ClearAddresses();
+    $mail->ClearAttachments();
+}
+
+
+

+ +

2. Extending phpmailer

+

+ +Extending classes with inheritance is one of the most +powerful features of object-oriented +programming. It allows you to make changes to the +original class for your +own personal use without hacking the original +classes. Plus, it is very +easy to do. I've provided an example: + +

+Here's a class that extends the phpmailer class and sets the defaults +for the particular site:
+PHP include file: mail.inc.php +

+ + + + + +
+
+require("class.phpmailer.php");
+
+class my_phpmailer extends phpmailer {
+    // Set default variables for all new objects
+    var $From     = "from@example.com";
+    var $FromName = "Mailer";
+    var $Host     = "smtp1.example.com;smtp2.example.com";
+    var $Mailer   = "smtp";                         // Alternative to IsSMTP()
+    var $WordWrap = 75;
+
+    // Replace the default error_handler
+    function error_handler($msg) {
+        print("My Site Error");
+        print("Description:");
+        printf("%s", $msg);
+        exit;
+    }
+
+    // Create an additional function
+    function do_something($something) {
+        // Place your new code here
+    }
+}
+
+
+ +Now here's a normal PHP page in the site, which will have all the defaults set +above:
+Normal PHP file: mail_test.php +

+ + + + + +
+
+require("mail.inc.php");
+
+// Instantiate your new class
+$mail = new my_phpmailer;
+
+// Now you only need to add the necessary stuff
+$mail->AddAddress("josh@example.com", "Josh Adams");
+$mail->Subject = "Here is the subject";
+$mail->Body    = "This is the message body";
+$mail->AddAttachment("c:/temp/11-10-00.zip", "new_name.zip");  // optional name
+
+if(!$mail->Send())
+{
+   echo "There was an error sending the message";
+   exit;
+}
+
+echo "Message was sent successfully";
+
+
+

+ + + diff --git a/inc/classes/third_party/php_mailer/docs/faq.html b/inc/classes/third_party/php_mailer/docs/faq.html index 54ac1837..f71c6c89 100644 --- a/inc/classes/third_party/php_mailer/docs/faq.html +++ b/inc/classes/third_party/php_mailer/docs/faq.html @@ -1,67 +1,67 @@ - - -PHPMailer FAQ - - - -
-
-

PHPMailer FAQ

-
    - -
  • Q: I'm using the SMTP mailer and I keep on getting a timeout message - well before the X seconds I set it for. What gives?
    - A: PHP versions 4.0.4pl1 and earlier have a bug in which sockets timeout - early. You can fix this by re-compiling PHP 4.0.4pl1 with this fix: - timeoutfix.diff. Otherwise you can wait for the new PHP release.

  • - -
  • Q: I am concerned that using include files will take up too much - processing time on my computer. How can I make it run faster?
    - A: PHP by itself is very fast. Much faster than ASP or JSP running on - the same type of server. This is because it has very little overhead compared - to its competitors and it pre-compiles all of - its code before it runs each script (in PHP4). However, all of - this compiling and re-compiling can take up a lot of valuable - computer resources. However, there are programs out there that compile - PHP code and store it in memory (or on mmaped files) to reduce the - processing immensely. Two of these: APC - (Alternative PHP Cache) and Afterburner - (Win32 download) - are excellent free tools that do just this. If you have the money - you might also try Zend Cache, it is - even faster than the open source varieties. All of these tools make your - scripts run faster while also reducing the load on your server. I have tried - them myself and they are quite stable too.

  • - -
  • Q: What mailer gives me the best performance?
    - A: On a single machine the sendmail (or Qmail) is fastest overall. - Next fastest is mail() to give you the best performance. Both do not have the overhead of SMTP. - If you have you have your mail server on a another machine then - SMTP is your only option, but you do get the benefit of redundant mail servers.
    - If you are running a mailing list with thousands of names, the fastest mailers in order are: SMTP, sendmail (or Qmail), mail().

  • - -
  • Q: When I try to attach a file with on my server I get a - "Could not find {file} on filesystem error". Why is this?
    - A: If you are using a Unix machine this is probably because the user - running your web server does not have read access to the directory in question. If you are using Windows, - then the problem probably is that you have used single backslashes to denote directories (\). - A single backslash has a special meaning to PHP so these are not - valid. Instead use double backslashes ("\\") or a single forward - slash ("/").

  • - -
- -
-
- - - + + +PHPMailer FAQ + + + +
+
+

PHPMailer FAQ

+
    + +
  • Q: I'm using the SMTP mailer and I keep on getting a timeout message + well before the X seconds I set it for. What gives?
    + A: PHP versions 4.0.4pl1 and earlier have a bug in which sockets timeout + early. You can fix this by re-compiling PHP 4.0.4pl1 with this fix: + timeoutfix.diff. Otherwise you can wait for the new PHP release.

  • + +
  • Q: I am concerned that using include files will take up too much + processing time on my computer. How can I make it run faster?
    + A: PHP by itself is very fast. Much faster than ASP or JSP running on + the same type of server. This is because it has very little overhead compared + to its competitors and it pre-compiles all of + its code before it runs each script (in PHP4). However, all of + this compiling and re-compiling can take up a lot of valuable + computer resources. However, there are programs out there that compile + PHP code and store it in memory (or on mmaped files) to reduce the + processing immensely. Two of these: APC + (Alternative PHP Cache) and Afterburner + (Win32 download) + are excellent free tools that do just this. If you have the money + you might also try Zend Cache, it is + even faster than the open source varieties. All of these tools make your + scripts run faster while also reducing the load on your server. I have tried + them myself and they are quite stable too.

  • + +
  • Q: What mailer gives me the best performance?
    + A: On a single machine the sendmail (or Qmail) is fastest overall. + Next fastest is mail() to give you the best performance. Both do not have the overhead of SMTP. + If you have you have your mail server on a another machine then + SMTP is your only option, but you do get the benefit of redundant mail servers.
    + If you are running a mailing list with thousands of names, the fastest mailers in order are: SMTP, sendmail (or Qmail), mail().

  • + +
  • Q: When I try to attach a file with on my server I get a + "Could not find {file} on filesystem error". Why is this?
    + A: If you are using a Unix machine this is probably because the user + running your web server does not have read access to the directory in question. If you are using Windows, + then the problem probably is that you have used single backslashes to denote directories (\). + A single backslash has a special meaning to PHP so these are not + valid. Instead use double backslashes ("\\") or a single forward + slash ("/").

  • + +
+ +
+
+ + + diff --git a/inc/classes/third_party/php_mailer/examples/contents.html b/inc/classes/third_party/php_mailer/examples/contents.html index 70c7e307..3efbda27 100644 --- a/inc/classes/third_party/php_mailer/examples/contents.html +++ b/inc/classes/third_party/php_mailer/examples/contents.html @@ -1,12 +1,12 @@ - -
-

-
- This is a test of PHPMailer v2.0.0 rc1.
-
-This particular example uses HTML, with a <div> tag and inline
-styles.
-
-Also note the use of the PHPMailer at the top with no specific code to handle -including it in the body of the email.
- + +
+

+
+ This is a test of PHPMailer v2.0.0 rc1.
+
+This particular example uses HTML, with a <div> tag and inline
+styles.
+
+Also note the use of the PHPMailer at the top with no specific code to handle +including it in the body of the email.
+ diff --git a/inc/classes/third_party/php_mailer/examples/index.html b/inc/classes/third_party/php_mailer/examples/index.html index d0a8b9d9..3ac45d3b 100644 --- a/inc/classes/third_party/php_mailer/examples/index.html +++ b/inc/classes/third_party/php_mailer/examples/index.html @@ -1,73 +1,73 @@ -

The example file "test_mail.php" contents include:

-
- -<?php
-
-include_once('../class.phpmailer.php');
-
-$mail = new PHPMailer();
-
-$body = $mail->getFile('contents.html');
-
-$body = eregi_replace("[\]",'',$body);
-$subject = eregi_replace("[\]",'',$subject);
-
-$mail->From = "name@yourdomain.com";
-$mail->FromName = "First Last";
-
-$mail->Subject = "PHPMailer Test Subject";
-
-$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
-
-$mail->MsgHTML($body);
-
-$mail->AddAddress("whoto@otherdomain.com", "John Doe");
-
-if(!$mail->Send()) {
- echo 'Failed to send mail';
-} else {
- echo 'Mail sent';
-}
-
-?> -
-
-
-Although you could use full compabitility with PHPMailer 1.7.3, this example -shows how to use the new features. If you view 'contents.html', you will note -that there is a background image used in the <body tag as well as an image used -with a regular <img tag. Here's what the HTML file looks like:
-
-
- -<body background="images/bkgrnd.gif" style="margin: 0px;">
-<div style="width: 640px; font-family: Arial, Helvetica, sans-serif; font-size: 11px;">
-<div align="center"><img src="images/phpmailer.gif" style="height: 90px; width: 340px"></div><br>
-<br>
- This is a test of PHPMailer v2.0.0 rc1.<br>
-<br>
-This particular example uses <strong>HTML</strong>, with a <div> tag and inline<br>
-styles.<br>
-<br>
-Also note the use of the PHPMailer at the top with no specific code to handle
-including it in the body of the email.</div>
-</body>
-
-
-
-A few things to notice in the PHP script that generates the email: -
    -
  • the use of $mail->AltBody is completely optional. If not used, PHPMailer - will use the HTML text with htmlentities().
  • -
  • the background= and <img src= images were processed without any directives - or methods from the PHP script
  • -
  • there is no specific code to define the image type ... that is handled - automatically by PHPMailer when it parses the images
  • -
  • we are using a new class method '$mail->MsgHTML($body)' ... that is what will handle the parsing of the images and creating the AltBody text
  • -
-

Of course, you can still use PHPMailer the same way you have in the past. -That provides full compatibility with all existing scripts, while new scripts -can take advantage of the new features.

-

Modify test_mail.php now with your own email address and try it out.

-To see what the email SHOULD look like in your HTML compatible email viewer: click here
- +

The example file "test_mail.php" contents include:

+
+ +<?php
+
+include_once('../class.phpmailer.php');
+
+$mail = new PHPMailer();
+
+$body = $mail->getFile('contents.html');
+
+$body = eregi_replace("[\]",'',$body);
+$subject = eregi_replace("[\]",'',$subject);
+
+$mail->From = "name@yourdomain.com";
+$mail->FromName = "First Last";
+
+$mail->Subject = "PHPMailer Test Subject";
+
+$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
+
+$mail->MsgHTML($body);
+
+$mail->AddAddress("whoto@otherdomain.com", "John Doe");
+
+if(!$mail->Send()) {
+ echo 'Failed to send mail';
+} else {
+ echo 'Mail sent';
+}
+
+?> +
+
+
+Although you could use full compabitility with PHPMailer 1.7.3, this example +shows how to use the new features. If you view 'contents.html', you will note +that there is a background image used in the <body tag as well as an image used +with a regular <img tag. Here's what the HTML file looks like:
+
+
+ +<body background="images/bkgrnd.gif" style="margin: 0px;">
+<div style="width: 640px; font-family: Arial, Helvetica, sans-serif; font-size: 11px;">
+<div align="center"><img src="images/phpmailer.gif" style="height: 90px; width: 340px"></div><br>
+<br>
+ This is a test of PHPMailer v2.0.0 rc1.<br>
+<br>
+This particular example uses <strong>HTML</strong>, with a <div> tag and inline<br>
+styles.<br>
+<br>
+Also note the use of the PHPMailer at the top with no specific code to handle
+including it in the body of the email.</div>
+</body>
+
+
+
+A few things to notice in the PHP script that generates the email: +
    +
  • the use of $mail->AltBody is completely optional. If not used, PHPMailer + will use the HTML text with htmlentities().
  • +
  • the background= and <img src= images were processed without any directives + or methods from the PHP script
  • +
  • there is no specific code to define the image type ... that is handled + automatically by PHPMailer when it parses the images
  • +
  • we are using a new class method '$mail->MsgHTML($body)' ... that is what will handle the parsing of the images and creating the AltBody text
  • +
+

Of course, you can still use PHPMailer the same way you have in the past. +That provides full compatibility with all existing scripts, while new scripts +can take advantage of the new features.

+

Modify test_mail.php now with your own email address and try it out.

+To see what the email SHOULD look like in your HTML compatible email viewer: click here
+ diff --git a/inc/classes/third_party/php_mailer/test/phpmailer_test.php b/inc/classes/third_party/php_mailer/test/phpmailer_test.php index 22d6f42b..ffbe4bd4 100644 --- a/inc/classes/third_party/php_mailer/test/phpmailer_test.php +++ b/inc/classes/third_party/php_mailer/test/phpmailer_test.php @@ -1,572 +1,572 @@ -TestCase( $name ); - } - - /** - * Run before each test is started. - */ - function setUp() { - global $global_vars; - global $INCLUDE_DIR; - - $this->Mail = new PHPMailer(); - - $this->Mail->Priority = 3; - $this->Mail->Encoding = "8bit"; - $this->Mail->CharSet = "iso-8859-1"; - $this->Mail->From = "unit_test@phpmailer.sf.net"; - $this->Mail->FromName = "Unit Tester"; - $this->Mail->Sender = ""; - $this->Mail->Subject = "Unit Test"; - $this->Mail->Body = ""; - $this->Mail->AltBody = ""; - $this->Mail->WordWrap = 0; - $this->Mail->Host = $global_vars["mail_host"]; - $this->Mail->Port = 25; - $this->Mail->Helo = "localhost.localdomain"; - $this->Mail->SMTPAuth = false; - $this->Mail->Username = ""; - $this->Mail->Password = ""; - $this->Mail->PluginDir = $INCLUDE_DIR; - $this->Mail->AddReplyTo("no_reply@phpmailer.sf.net", "Reply Guy"); - $this->Mail->Sender = "unit_test@phpmailer.sf.net"; - - if(strlen($this->Mail->Host) > 0) - $this->Mail->Mailer = "smtp"; - else - { - $this->Mail->Mailer = "mail"; - $this->Sender = "unit_test@phpmailer.sf.net"; - } - - global $global_vars; - $this->SetAddress($global_vars["mail_to"], "Test User"); - if(strlen($global_vars["mail_cc"]) > 0) - $this->SetAddress($global_vars["mail_cc"], "Carbon User", "cc"); - } - - /** - * Run after each test is completed. - */ - function tearDown() { - // Clean global variables - $this->Mail = NULL; - $this->ChangeLog = array(); - $this->NoteLog = array(); - } - - - /** - * Build the body of the message in the appropriate format. - * @private - * @returns void - */ - function BuildBody() { - $this->CheckChanges(); - - // Determine line endings for message - if($this->Mail->ContentType == "text/html" || strlen($this->Mail->AltBody) > 0) - { - $eol = "
"; - $bullet = "
  • "; - $bullet_start = "
      "; - $bullet_end = "
    "; - } - else - { - $eol = "\n"; - $bullet = " - "; - $bullet_start = ""; - $bullet_end = ""; - } - - $ReportBody = ""; - - $ReportBody .= "---------------------" . $eol; - $ReportBody .= "Unit Test Information" . $eol; - $ReportBody .= "---------------------" . $eol; - $ReportBody .= "phpmailer version: " . $this->Mail->Version . $eol; - $ReportBody .= "Content Type: " . $this->Mail->ContentType . $eol; - - if(strlen($this->Mail->Host) > 0) - $ReportBody .= "Host: " . $this->Mail->Host . $eol; - - // If attachments then create an attachment list - if(count($this->Mail->attachment) > 0) - { - $ReportBody .= "Attachments:" . $eol; - $ReportBody .= $bullet_start; - for($i = 0; $i < count($this->Mail->attachment); $i++) - { - $ReportBody .= $bullet . "Name: " . $this->Mail->attachment[$i][1] . ", "; - $ReportBody .= "Encoding: " . $this->Mail->attachment[$i][3] . ", "; - $ReportBody .= "Type: " . $this->Mail->attachment[$i][4] . $eol; - } - $ReportBody .= $bullet_end . $eol; - } - - // If there are changes then list them - if(count($this->ChangeLog) > 0) - { - $ReportBody .= "Changes" . $eol; - $ReportBody .= "-------" . $eol; - - $ReportBody .= $bullet_start; - for($i = 0; $i < count($this->ChangeLog); $i++) - { - $ReportBody .= $bullet . $this->ChangeLog[$i][0] . " was changed to [" . - $this->ChangeLog[$i][1] . "]" . $eol; - } - $ReportBody .= $bullet_end . $eol . $eol; - } - - // If there are notes then list them - if(count($this->NoteLog) > 0) - { - $ReportBody .= "Notes" . $eol; - $ReportBody .= "-----" . $eol; - - $ReportBody .= $bullet_start; - for($i = 0; $i < count($this->NoteLog); $i++) - { - $ReportBody .= $bullet . $this->NoteLog[$i] . $eol; - } - $ReportBody .= $bullet_end; - } - - // Re-attach the original body - $this->Mail->Body .= $eol . $eol . $ReportBody; - } - - /** - * Check which default settings have been changed for the report. - * @private - * @returns void - */ - function CheckChanges() { - if($this->Mail->Priority != 3) - $this->AddChange("Priority", $this->Mail->Priority); - if($this->Mail->Encoding != "8bit") - $this->AddChange("Encoding", $this->Mail->Encoding); - if($this->Mail->CharSet != "iso-8859-1") - $this->AddChange("CharSet", $this->Mail->CharSet); - if($this->Mail->Sender != "") - $this->AddChange("Sender", $this->Mail->Sender); - if($this->Mail->WordWrap != 0) - $this->AddChange("WordWrap", $this->Mail->WordWrap); - if($this->Mail->Mailer != "mail") - $this->AddChange("Mailer", $this->Mail->Mailer); - if($this->Mail->Port != 25) - $this->AddChange("Port", $this->Mail->Port); - if($this->Mail->Helo != "localhost.localdomain") - $this->AddChange("Helo", $this->Mail->Helo); - if($this->Mail->SMTPAuth) - $this->AddChange("SMTPAuth", "true"); - } - - /** - * Adds a change entry. - * @private - * @returns void - */ - function AddChange($sName, $sNewValue) { - $cur = count($this->ChangeLog); - $this->ChangeLog[$cur][0] = $sName; - $this->ChangeLog[$cur][1] = $sNewValue; - } - - /** - * Adds a simple note to the message. - * @public - * @returns void - */ - function AddNote($sValue) { - $this->NoteLog[] = $sValue; - } - - /** - * Adds all of the addresses - * @public - * @returns void - */ - function SetAddress($sAddress, $sName = "", $sType = "to") { - switch($sType) - { - case "to": - $this->Mail->AddAddress($sAddress, $sName); - break; - case "cc": - $this->Mail->AddCC($sAddress, $sName); - break; - case "bcc": - $this->Mail->AddBCC($sAddress, $sName); - break; - } - } - - ///////////////////////////////////////////////// - // UNIT TESTS - ///////////////////////////////////////////////// - - /** - * Try a plain message. - */ - function test_WordWrap() { - - $this->Mail->WordWrap = 40; - $my_body = "Here is the main body of this message. It should " . - "be quite a few lines. It should be wrapped at the " . - "40 characters. Make sure that it is."; - $nBodyLen = strlen($my_body); - $my_body .= "\n\nThis is the above body length: " . $nBodyLen; - - $this->Mail->Body = $my_body; - $this->Mail->Subject .= ": Wordwrap"; - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Try a plain message. - */ - function test_Low_Priority() { - - $this->Mail->Priority = 5; - $this->Mail->Body = "Here is the main body. There should be " . - "a reply to address in this message."; - $this->Mail->Subject .= ": Low Priority"; - $this->Mail->AddReplyTo("nobody@nobody.com", "Nobody (Unit Test)"); - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Simple plain file attachment test. - */ - function test_Multiple_Plain_FileAttachment() { - - $this->Mail->Body = "Here is the text body"; - $this->Mail->Subject .= ": Plain + Multiple FileAttachments"; - - if(!$this->Mail->AddAttachment("test.png")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - if(!$this->Mail->AddAttachment("phpmailer_test.php", "test.txt")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Simple plain string attachment test. - */ - function test_Plain_StringAttachment() { - - $this->Mail->Body = "Here is the text body"; - $this->Mail->Subject .= ": Plain + StringAttachment"; - - $sAttachment = "These characters are the content of the " . - "string attachment.\nThis might be taken from a ". - "database or some other such thing. "; - - $this->Mail->AddStringAttachment($sAttachment, "string_attach.txt"); - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Plain quoted-printable message. - */ - function test_Quoted_Printable() { - - $this->Mail->Body = "Here is the main body"; - $this->Mail->Subject .= ": Plain + Quoted-printable"; - $this->Mail->Encoding = "quoted-printable"; - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Try a plain message. - */ - function test_Html() { - - $this->Mail->IsHTML(true); - $this->Mail->Subject .= ": HTML only"; - - $this->Mail->Body = "This is a test message written in HTML.
    " . - "Go to " . - "http://phpmailer.sourceforge.net/ for new versions of " . - "phpmailer.

    Thank you!"; - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Simple HTML and attachment test - */ - function test_HTML_Attachment() { - - $this->Mail->Body = "This is the HTML part of the email."; - $this->Mail->Subject .= ": HTML + Attachment"; - $this->Mail->IsHTML(true); - - if(!$this->Mail->AddAttachment("phpmailer_test.php", "test_attach.txt")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * An embedded attachment test. - */ - function test_Embedded_Image() { - - $this->Mail->Body = "Embedded Image: \"phpmailer\"" . - "Here is an image!"; - $this->Mail->Subject .= ": Embedded Image"; - $this->Mail->IsHTML(true); - - if(!$this->Mail->AddEmbeddedImage("test.png", "my-attach", "test.png", - "base64", "image/png")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * An embedded attachment test. - */ - function test_Multi_Embedded_Image() { - - $this->Mail->Body = "Embedded Image: \"phpmailer\"" . - "Here is an image!"; - $this->Mail->Subject .= ": Embedded Image + Attachment"; - $this->Mail->IsHTML(true); - - if(!$this->Mail->AddEmbeddedImage("test.png", "my-attach", "test.png", - "base64", "image/png")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - if(!$this->Mail->AddAttachment("phpmailer_test.php", "test.txt")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Simple multipart/alternative test. - */ - function test_AltBody() { - - $this->Mail->Body = "This is the HTML part of the email."; - $this->Mail->AltBody = "Here is the text body of this message. " . - "It should be quite a few lines. It should be wrapped at the " . - "40 characters. Make sure that it is."; - $this->Mail->WordWrap = 40; - $this->AddNote("This is a mulipart alternative email"); - $this->Mail->Subject .= ": AltBody + Word Wrap"; - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Simple HTML and attachment test - */ - function test_AltBody_Attachment() { - - $this->Mail->Body = "This is the HTML part of the email."; - $this->Mail->AltBody = "This is the text part of the email."; - $this->Mail->Subject .= ": AltBody + Attachment"; - $this->Mail->IsHTML(true); - - if(!$this->Mail->AddAttachment("phpmailer_test.php", "test_attach.txt")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - - $fp = fopen("message.txt", "w"); - fwrite($fp, $this->Mail->CreateHeader() . $this->Mail->CreateBody()); - fclose($fp); - } - - function test_MultipleSend() { - $this->Mail->Body = "Sending two messages without keepalive"; - $this->BuildBody(); - $subject = $this->Mail->Subject; - - $this->Mail->Subject = $subject . ": SMTP 1"; - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - - $this->Mail->Subject = $subject . ": SMTP 2"; - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - function test_SmtpKeepAlive() { - $this->Mail->Body = "This was done using the SMTP keep-alive."; - $this->BuildBody(); - $subject = $this->Mail->Subject; - - $this->Mail->SMTPKeepAlive = true; - $this->Mail->Subject = $subject . ": SMTP keep-alive 1"; - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - - $this->Mail->Subject = $subject . ": SMTP keep-alive 2"; - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - $this->Mail->SmtpClose(); - } - - /** - * Tests this denial of service attack: - * http://www.cybsec.com/vuln/PHPMailer-DOS.pdf - */ - function test_DenialOfServiceAttack() { - $this->Mail->Body = "This should no longer cause a denial of service."; - $this->BuildBody(); - - $this->Mail->Subject = str_repeat("A", 998); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - function test_Error() { - $this->Mail->Subject .= ": This should be sent"; - $this->BuildBody(); - $this->Mail->ClearAllRecipients(); // no addresses should cause an error - $this->assert($this->Mail->IsError() == false, "Error found"); - $this->assert($this->Mail->Send() == false, "Send succeeded"); - $this->assert($this->Mail->IsError(), "No error found"); - $this->assertEquals('You must provide at least one ' . - 'recipient email address.', $this->Mail->ErrorInfo); - $this->Mail->AddAddress(get("mail_to")); - $this->assert($this->Mail->Send(), "Send failed"); - } -} - -/** - * Create and run test instance. - */ - -if(isset($HTTP_GET_VARS)) - $global_vars = $HTTP_GET_VARS; -else - $global_vars = $_REQUEST; - -if(isset($global_vars["submitted"])) -{ - echo "Test results:
    "; - $suite = new TestSuite( "phpmailerTest" ); - - $testRunner = new TestRunner; - $testRunner->run($suite); - echo "


    "; -} - -function get($sName) { - global $global_vars; - if(isset($global_vars[$sName])) - return $global_vars[$sName]; - else - return ""; -} - -?> - - - -

    phpmailer Unit Test

    -By entering a SMTP hostname it will automatically perform tests with SMTP. - -
    - -To Address: "/> -
    -Cc Address: "/> -
    -SMTP Hostname: "/> -

    - - -

    - - +TestCase( $name ); + } + + /** + * Run before each test is started. + */ + function setUp() { + global $global_vars; + global $INCLUDE_DIR; + + $this->Mail = new PHPMailer(); + + $this->Mail->Priority = 3; + $this->Mail->Encoding = "8bit"; + $this->Mail->CharSet = "iso-8859-1"; + $this->Mail->From = "unit_test@phpmailer.sf.net"; + $this->Mail->FromName = "Unit Tester"; + $this->Mail->Sender = ""; + $this->Mail->Subject = "Unit Test"; + $this->Mail->Body = ""; + $this->Mail->AltBody = ""; + $this->Mail->WordWrap = 0; + $this->Mail->Host = $global_vars["mail_host"]; + $this->Mail->Port = 25; + $this->Mail->Helo = "localhost.localdomain"; + $this->Mail->SMTPAuth = false; + $this->Mail->Username = ""; + $this->Mail->Password = ""; + $this->Mail->PluginDir = $INCLUDE_DIR; + $this->Mail->AddReplyTo("no_reply@phpmailer.sf.net", "Reply Guy"); + $this->Mail->Sender = "unit_test@phpmailer.sf.net"; + + if(strlen($this->Mail->Host) > 0) + $this->Mail->Mailer = "smtp"; + else + { + $this->Mail->Mailer = "mail"; + $this->Sender = "unit_test@phpmailer.sf.net"; + } + + global $global_vars; + $this->SetAddress($global_vars["mail_to"], "Test User"); + if(strlen($global_vars["mail_cc"]) > 0) + $this->SetAddress($global_vars["mail_cc"], "Carbon User", "cc"); + } + + /** + * Run after each test is completed. + */ + function tearDown() { + // Clean global variables + $this->Mail = NULL; + $this->ChangeLog = array(); + $this->NoteLog = array(); + } + + + /** + * Build the body of the message in the appropriate format. + * @private + * @returns void + */ + function BuildBody() { + $this->CheckChanges(); + + // Determine line endings for message + if($this->Mail->ContentType == "text/html" || strlen($this->Mail->AltBody) > 0) + { + $eol = "
    "; + $bullet = "
  • "; + $bullet_start = "
      "; + $bullet_end = "
    "; + } + else + { + $eol = "\n"; + $bullet = " - "; + $bullet_start = ""; + $bullet_end = ""; + } + + $ReportBody = ""; + + $ReportBody .= "---------------------" . $eol; + $ReportBody .= "Unit Test Information" . $eol; + $ReportBody .= "---------------------" . $eol; + $ReportBody .= "phpmailer version: " . $this->Mail->Version . $eol; + $ReportBody .= "Content Type: " . $this->Mail->ContentType . $eol; + + if(strlen($this->Mail->Host) > 0) + $ReportBody .= "Host: " . $this->Mail->Host . $eol; + + // If attachments then create an attachment list + if(count($this->Mail->attachment) > 0) + { + $ReportBody .= "Attachments:" . $eol; + $ReportBody .= $bullet_start; + for($i = 0; $i < count($this->Mail->attachment); $i++) + { + $ReportBody .= $bullet . "Name: " . $this->Mail->attachment[$i][1] . ", "; + $ReportBody .= "Encoding: " . $this->Mail->attachment[$i][3] . ", "; + $ReportBody .= "Type: " . $this->Mail->attachment[$i][4] . $eol; + } + $ReportBody .= $bullet_end . $eol; + } + + // If there are changes then list them + if(count($this->ChangeLog) > 0) + { + $ReportBody .= "Changes" . $eol; + $ReportBody .= "-------" . $eol; + + $ReportBody .= $bullet_start; + for($i = 0; $i < count($this->ChangeLog); $i++) + { + $ReportBody .= $bullet . $this->ChangeLog[$i][0] . " was changed to [" . + $this->ChangeLog[$i][1] . "]" . $eol; + } + $ReportBody .= $bullet_end . $eol . $eol; + } + + // If there are notes then list them + if(count($this->NoteLog) > 0) + { + $ReportBody .= "Notes" . $eol; + $ReportBody .= "-----" . $eol; + + $ReportBody .= $bullet_start; + for($i = 0; $i < count($this->NoteLog); $i++) + { + $ReportBody .= $bullet . $this->NoteLog[$i] . $eol; + } + $ReportBody .= $bullet_end; + } + + // Re-attach the original body + $this->Mail->Body .= $eol . $eol . $ReportBody; + } + + /** + * Check which default settings have been changed for the report. + * @private + * @returns void + */ + function CheckChanges() { + if($this->Mail->Priority != 3) + $this->AddChange("Priority", $this->Mail->Priority); + if($this->Mail->Encoding != "8bit") + $this->AddChange("Encoding", $this->Mail->Encoding); + if($this->Mail->CharSet != "iso-8859-1") + $this->AddChange("CharSet", $this->Mail->CharSet); + if($this->Mail->Sender != "") + $this->AddChange("Sender", $this->Mail->Sender); + if($this->Mail->WordWrap != 0) + $this->AddChange("WordWrap", $this->Mail->WordWrap); + if($this->Mail->Mailer != "mail") + $this->AddChange("Mailer", $this->Mail->Mailer); + if($this->Mail->Port != 25) + $this->AddChange("Port", $this->Mail->Port); + if($this->Mail->Helo != "localhost.localdomain") + $this->AddChange("Helo", $this->Mail->Helo); + if($this->Mail->SMTPAuth) + $this->AddChange("SMTPAuth", "true"); + } + + /** + * Adds a change entry. + * @private + * @returns void + */ + function AddChange($sName, $sNewValue) { + $cur = count($this->ChangeLog); + $this->ChangeLog[$cur][0] = $sName; + $this->ChangeLog[$cur][1] = $sNewValue; + } + + /** + * Adds a simple note to the message. + * @public + * @returns void + */ + function AddNote($sValue) { + $this->NoteLog[] = $sValue; + } + + /** + * Adds all of the addresses + * @public + * @returns void + */ + function SetAddress($sAddress, $sName = "", $sType = "to") { + switch($sType) + { + case "to": + $this->Mail->AddAddress($sAddress, $sName); + break; + case "cc": + $this->Mail->AddCC($sAddress, $sName); + break; + case "bcc": + $this->Mail->AddBCC($sAddress, $sName); + break; + } + } + + ///////////////////////////////////////////////// + // UNIT TESTS + ///////////////////////////////////////////////// + + /** + * Try a plain message. + */ + function test_WordWrap() { + + $this->Mail->WordWrap = 40; + $my_body = "Here is the main body of this message. It should " . + "be quite a few lines. It should be wrapped at the " . + "40 characters. Make sure that it is."; + $nBodyLen = strlen($my_body); + $my_body .= "\n\nThis is the above body length: " . $nBodyLen; + + $this->Mail->Body = $my_body; + $this->Mail->Subject .= ": Wordwrap"; + + $this->BuildBody(); + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + } + + /** + * Try a plain message. + */ + function test_Low_Priority() { + + $this->Mail->Priority = 5; + $this->Mail->Body = "Here is the main body. There should be " . + "a reply to address in this message."; + $this->Mail->Subject .= ": Low Priority"; + $this->Mail->AddReplyTo("nobody@nobody.com", "Nobody (Unit Test)"); + + $this->BuildBody(); + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + } + + /** + * Simple plain file attachment test. + */ + function test_Multiple_Plain_FileAttachment() { + + $this->Mail->Body = "Here is the text body"; + $this->Mail->Subject .= ": Plain + Multiple FileAttachments"; + + if(!$this->Mail->AddAttachment("test.png")) + { + $this->assert(false, $this->Mail->ErrorInfo); + return; + } + + if(!$this->Mail->AddAttachment("phpmailer_test.php", "test.txt")) + { + $this->assert(false, $this->Mail->ErrorInfo); + return; + } + + $this->BuildBody(); + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + } + + /** + * Simple plain string attachment test. + */ + function test_Plain_StringAttachment() { + + $this->Mail->Body = "Here is the text body"; + $this->Mail->Subject .= ": Plain + StringAttachment"; + + $sAttachment = "These characters are the content of the " . + "string attachment.\nThis might be taken from a ". + "database or some other such thing. "; + + $this->Mail->AddStringAttachment($sAttachment, "string_attach.txt"); + + $this->BuildBody(); + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + } + + /** + * Plain quoted-printable message. + */ + function test_Quoted_Printable() { + + $this->Mail->Body = "Here is the main body"; + $this->Mail->Subject .= ": Plain + Quoted-printable"; + $this->Mail->Encoding = "quoted-printable"; + + $this->BuildBody(); + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + } + + /** + * Try a plain message. + */ + function test_Html() { + + $this->Mail->IsHTML(true); + $this->Mail->Subject .= ": HTML only"; + + $this->Mail->Body = "This is a test message written in HTML.
    " . + "Go to " . + "http://phpmailer.sourceforge.net/ for new versions of " . + "phpmailer.

    Thank you!"; + + $this->BuildBody(); + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + } + + /** + * Simple HTML and attachment test + */ + function test_HTML_Attachment() { + + $this->Mail->Body = "This is the HTML part of the email."; + $this->Mail->Subject .= ": HTML + Attachment"; + $this->Mail->IsHTML(true); + + if(!$this->Mail->AddAttachment("phpmailer_test.php", "test_attach.txt")) + { + $this->assert(false, $this->Mail->ErrorInfo); + return; + } + + $this->BuildBody(); + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + } + + /** + * An embedded attachment test. + */ + function test_Embedded_Image() { + + $this->Mail->Body = "Embedded Image: \"phpmailer\"" . + "Here is an image!"; + $this->Mail->Subject .= ": Embedded Image"; + $this->Mail->IsHTML(true); + + if(!$this->Mail->AddEmbeddedImage("test.png", "my-attach", "test.png", + "base64", "image/png")) + { + $this->assert(false, $this->Mail->ErrorInfo); + return; + } + + $this->BuildBody(); + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + } + + /** + * An embedded attachment test. + */ + function test_Multi_Embedded_Image() { + + $this->Mail->Body = "Embedded Image: \"phpmailer\"" . + "Here is an image!"; + $this->Mail->Subject .= ": Embedded Image + Attachment"; + $this->Mail->IsHTML(true); + + if(!$this->Mail->AddEmbeddedImage("test.png", "my-attach", "test.png", + "base64", "image/png")) + { + $this->assert(false, $this->Mail->ErrorInfo); + return; + } + + if(!$this->Mail->AddAttachment("phpmailer_test.php", "test.txt")) + { + $this->assert(false, $this->Mail->ErrorInfo); + return; + } + + $this->BuildBody(); + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + } + + /** + * Simple multipart/alternative test. + */ + function test_AltBody() { + + $this->Mail->Body = "This is the HTML part of the email."; + $this->Mail->AltBody = "Here is the text body of this message. " . + "It should be quite a few lines. It should be wrapped at the " . + "40 characters. Make sure that it is."; + $this->Mail->WordWrap = 40; + $this->AddNote("This is a mulipart alternative email"); + $this->Mail->Subject .= ": AltBody + Word Wrap"; + + $this->BuildBody(); + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + } + + /** + * Simple HTML and attachment test + */ + function test_AltBody_Attachment() { + + $this->Mail->Body = "This is the HTML part of the email."; + $this->Mail->AltBody = "This is the text part of the email."; + $this->Mail->Subject .= ": AltBody + Attachment"; + $this->Mail->IsHTML(true); + + if(!$this->Mail->AddAttachment("phpmailer_test.php", "test_attach.txt")) + { + $this->assert(false, $this->Mail->ErrorInfo); + return; + } + + $this->BuildBody(); + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + + $fp = fopen("message.txt", "w"); + fwrite($fp, $this->Mail->CreateHeader() . $this->Mail->CreateBody()); + fclose($fp); + } + + function test_MultipleSend() { + $this->Mail->Body = "Sending two messages without keepalive"; + $this->BuildBody(); + $subject = $this->Mail->Subject; + + $this->Mail->Subject = $subject . ": SMTP 1"; + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + + $this->Mail->Subject = $subject . ": SMTP 2"; + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + } + + function test_SmtpKeepAlive() { + $this->Mail->Body = "This was done using the SMTP keep-alive."; + $this->BuildBody(); + $subject = $this->Mail->Subject; + + $this->Mail->SMTPKeepAlive = true; + $this->Mail->Subject = $subject . ": SMTP keep-alive 1"; + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + + $this->Mail->Subject = $subject . ": SMTP keep-alive 2"; + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + $this->Mail->SmtpClose(); + } + + /** + * Tests this denial of service attack: + * http://www.cybsec.com/vuln/PHPMailer-DOS.pdf + */ + function test_DenialOfServiceAttack() { + $this->Mail->Body = "This should no longer cause a denial of service."; + $this->BuildBody(); + + $this->Mail->Subject = str_repeat("A", 998); + $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); + } + + function test_Error() { + $this->Mail->Subject .= ": This should be sent"; + $this->BuildBody(); + $this->Mail->ClearAllRecipients(); // no addresses should cause an error + $this->assert($this->Mail->IsError() == false, "Error found"); + $this->assert($this->Mail->Send() == false, "Send succeeded"); + $this->assert($this->Mail->IsError(), "No error found"); + $this->assertEquals('You must provide at least one ' . + 'recipient email address.', $this->Mail->ErrorInfo); + $this->Mail->AddAddress(get("mail_to")); + $this->assert($this->Mail->Send(), "Send failed"); + } +} + +/** + * Create and run test instance. + */ + +if(isset($HTTP_GET_VARS)) + $global_vars = $HTTP_GET_VARS; +else + $global_vars = $_REQUEST; + +if(isset($global_vars["submitted"])) +{ + echo "Test results:
    "; + $suite = new TestSuite( "phpmailerTest" ); + + $testRunner = new TestRunner; + $testRunner->run($suite); + echo "


    "; +} + +function get($sName) { + global $global_vars; + if(isset($global_vars[$sName])) + return $global_vars[$sName]; + else + return ""; +} + +?> + + + +

    phpmailer Unit Test

    +By entering a SMTP hostname it will automatically perform tests with SMTP. + +
    + +To Address: "/> +
    +Cc Address: "/> +
    +SMTP Hostname: "/> +

    + + +

    + + diff --git a/inc/classes/third_party/php_mailer/test/phpunit.php b/inc/classes/third_party/php_mailer/test/phpunit.php index e0af5e69..8c7256e3 100644 --- a/inc/classes/third_party/php_mailer/test/phpunit.php +++ b/inc/classes/third_party/php_mailer/test/phpunit.php @@ -1,378 +1,378 @@ - -// OntoSys, Inc -// -// $Id$ - -// Copyright (c) 2000 Fred Yankowski - -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, copy, -// modify, merge, publish, distribute, sublicense, and/or sell copies -// of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// -error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE | - E_CORE_ERROR | E_CORE_WARNING); - -/* -interface Test { - function run(&$aTestResult); - function countTestCases(); -} -*/ - -function trace($msg) { - return; - print($msg); - flush(); -} - - -class phpUnitException { - /* Emulate a Java exception, sort of... */ - var $message; - var $type; - function phpUnitException($message, $type = 'FAILURE') { - $this->message = $message; - $this->type = $type; - } - function getMessage() { - return $this->message; - } -} - -class Assert { - function assert($boolean, $message=0) { - if (! $boolean) - $this->fail($message); - } - - function assertEquals($expected, $actual, $message=0) { - if ($expected != $actual) { - $this->failNotEquals($expected, $actual, "expected", $message); - } - } - - function assertRegexp($regexp, $actual, $message=false) { - if (! preg_match($regexp, $actual)) { - $this->failNotEquals($regexp, $actual, "pattern", $message); - } - } - - function failNotEquals($expected, $actual, $expected_label, $message=0) { - // Private function for reporting failure to match. - $str = $message ? ($message . ' ') : ''; - $str .= "($expected_label/actual)
    "; - $htmlExpected = htmlspecialchars($expected); - $htmlActual = htmlspecialchars($actual); - $str .= sprintf("
    %s\n--------\n%s
    ", - $htmlExpected, $htmlActual); - $this->fail($str); - } -} - -class TestCase extends Assert /* implements Test */ { - /* Defines context for running tests. Specific context -- such as - instance variables, global variables, global state -- is defined - by creating a subclass that specializes the setUp() and - tearDown() methods. A specific test is defined by a subclass - that specializes the runTest() method. */ - var $fName; - var $fResult; - var $fExceptions = array(); - - function TestCase($name) { - $this->fName = $name; - } - - function run($testResult=0) { - /* Run this single test, by calling the run() method of the - TestResult object which will in turn call the runBare() method - of this object. That complication allows the TestResult object - to do various kinds of progress reporting as it invokes each - test. Create/obtain a TestResult object if none was passed in. - Note that if a TestResult object was passed in, it must be by - reference. */ - if (! $testResult) - $testResult = $this->_createResult(); - $this->fResult = $testResult; - $testResult->run(&$this); - $this->fResult = 0; - return $testResult; - } - - function countTestCases() { - return 1; - } - - function runTest() { - $name = $this->name(); - // Since isset($this->$name) is false, no way to run defensive checks - $this->$name(); - } - - function setUp() /* expect override */ { - //print("TestCase::setUp()
    \n"); - } - - function tearDown() /* possible override */ { - //print("TestCase::tearDown()
    \n"); - } - - //////////////////////////////////////////////////////////////// - - - function _createResult() /* protected */ { - /* override this to use specialized subclass of TestResult */ - return new TestResult; - } - - function fail($message=0) { - //printf("TestCase::fail(%s)
    \n", ($message) ? $message : ''); - /* JUnit throws AssertionFailedError here. We just record the - failure and carry on */ - $this->fExceptions[] = new Exception(&$message); - } - - function error($message) { - /* report error that requires correction in the test script - itself, or (heaven forbid) in this testing infrastructure */ - printf('ERROR: ' . $message . '
    '); - $this->fResult->stop(); - } - - function failed() { - return count($this->fExceptions); - } - - function getExceptions() { - return $this->fExceptions; - } - - function name() { - return $this->fName; - } - - function runBare() { - $this->setup(); - $this->runTest(); - $this->tearDown(); - } -} - - -class TestSuite /* implements Test */ { - /* Compose a set of Tests (instances of TestCase or TestSuite), and - run them all. */ - var $fTests = array(); - - function TestSuite($classname=false) { - if ($classname) { - // Find all methods of the given class whose name starts with - // "test" and add them to the test suite. We are just _barely_ - // able to do this with PHP's limited introspection... Note - // that PHP seems to store method names in lower case, and we - // have to avoid the constructor function for the TestCase class - // superclass. This will fail when $classname starts with - // "Test" since that will have a constructor method that will - // get matched below and then treated (incorrectly) as a test - // method. So don't name any TestCase subclasses as "Test..."! - if (floor(phpversion()) >= 4) { - // PHP4 introspection, submitted by Dylan Kuhn - $names = get_class_methods($classname); - while (list($key, $method) = each($names)) { - if (preg_match('/^test/', $method) && $method != "testcase") { - $this->addTest(new $classname($method)); - } - } - } - else { - $dummy = new $classname("dummy"); - $names = (array) $dummy; - while (list($key, $value) = each($names)) { - $type = gettype($value); - if ($type == "user function" && preg_match('/^test/', $key) - && $key != "testcase") { - $this->addTest(new $classname($key)); - } - } - } - } - } - - function addTest($test) { - /* Add TestCase or TestSuite to this TestSuite */ - $this->fTests[] = $test; - } - - function run(&$testResult) { - /* Run all TestCases and TestSuites comprising this TestSuite, - accumulating results in the given TestResult object. */ - reset($this->fTests); - while (list($na, $test) = each($this->fTests)) { - if ($testResult->shouldStop()) - break; - $test->run(&$testResult); - } - } - - function countTestCases() { - /* Number of TestCases comprising this TestSuite (including those - in any constituent TestSuites) */ - $count = 0; - reset($fTests); - while (list($na, $test_case) = each($this->fTests)) { - $count += $test_case->countTestCases(); - } - return $count; - } -} - - -class TestFailure { - /* Record failure of a single TestCase, associating it with the - exception(s) that occurred */ - var $fFailedTestName; - var $fExceptions; - - function TestFailure(&$test, &$exceptions) { - $this->fFailedTestName = $test->name(); - $this->fExceptions = $exceptions; - } - - function getExceptions() { - return $this->fExceptions; - } - function getTestName() { - return $this->fFailedTestName; - } -} - - -class TestResult { - /* Collect the results of running a set of TestCases. */ - var $fFailures = array(); - var $fRunTests = 0; - var $fStop = false; - - function TestResult() { } - - function _endTest($test) /* protected */ { - /* specialize this for end-of-test action, such as progress - reports */ - } - - function getFailures() { - return $this->fFailures; - } - - function run($test) { - /* Run a single TestCase in the context of this TestResult */ - $this->_startTest($test); - $this->fRunTests++; - - $test->runBare(); - - /* this is where JUnit would catch AssertionFailedError */ - $exceptions = $test->getExceptions(); - if ($exceptions) - $this->fFailures[] = new TestFailure(&$test, &$exceptions); - $this->_endTest($test); - } - - function countTests() { - return $this->fRunTests; - } - - function shouldStop() { - return $this->fStop; - } - - function _startTest($test) /* protected */ { - /* specialize this for start-of-test actions */ - } - - function stop() { - /* set indication that the test sequence should halt */ - $fStop = true; - } - - function countFailures() { - return count($this->fFailures); - } -} - - -class TextTestResult extends TestResult { - /* Specialize TestResult to produce text/html report */ - function TextTestResult() { - $this->TestResult(); // call superclass constructor - } - - function report() { - /* report result of test run */ - $nRun = $this->countTests(); - $nFailures = $this->countFailures(); - printf("

    %s test%s run
    ", $nRun, ($nRun == 1) ? '' : 's'); - printf("%s failure%s.
    \n", $nFailures, ($nFailures == 1) ? '' : 's'); - if ($nFailures == 0) - return; - - print("

      \n"); - $failures = $this->getFailures(); - while (list($i, $failure) = each($failures)) { - $failedTestName = $failure->getTestName(); - printf("
    1. %s\n", $failedTestName); - - $exceptions = $failure->getExceptions(); - print("
        "); - while (list($na, $exception) = each($exceptions)) - printf("
      • %s\n", $exception->getMessage()); - print("
      "); - } - print("
    \n"); - } - - function _startTest($test) { - printf("%s ", $test->name()); - flush(); - } - - function _endTest($test) { - $outcome = $test->failed() - ? "FAIL" - : "ok"; - printf("$outcome
    \n"); - flush(); - } -} - - -class TestRunner { - /* Run a suite of tests and report results. */ - function run($suite) { - $result = new TextTestResult; - $suite->run($result); - $result->report(); - } -} - -?> + +// OntoSys, Inc +// +// $Id$ + +// Copyright (c) 2000 Fred Yankowski + +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, copy, +// modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE | + E_CORE_ERROR | E_CORE_WARNING); + +/* +interface Test { + function run(&$aTestResult); + function countTestCases(); +} +*/ + +function trace($msg) { + return; + print($msg); + flush(); +} + + +class phpUnitException { + /* Emulate a Java exception, sort of... */ + var $message; + var $type; + function phpUnitException($message, $type = 'FAILURE') { + $this->message = $message; + $this->type = $type; + } + function getMessage() { + return $this->message; + } +} + +class Assert { + function assert($boolean, $message=0) { + if (! $boolean) + $this->fail($message); + } + + function assertEquals($expected, $actual, $message=0) { + if ($expected != $actual) { + $this->failNotEquals($expected, $actual, "expected", $message); + } + } + + function assertRegexp($regexp, $actual, $message=false) { + if (! preg_match($regexp, $actual)) { + $this->failNotEquals($regexp, $actual, "pattern", $message); + } + } + + function failNotEquals($expected, $actual, $expected_label, $message=0) { + // Private function for reporting failure to match. + $str = $message ? ($message . ' ') : ''; + $str .= "($expected_label/actual)
    "; + $htmlExpected = htmlspecialchars($expected); + $htmlActual = htmlspecialchars($actual); + $str .= sprintf("
    %s\n--------\n%s
    ", + $htmlExpected, $htmlActual); + $this->fail($str); + } +} + +class TestCase extends Assert /* implements Test */ { + /* Defines context for running tests. Specific context -- such as + instance variables, global variables, global state -- is defined + by creating a subclass that specializes the setUp() and + tearDown() methods. A specific test is defined by a subclass + that specializes the runTest() method. */ + var $fName; + var $fResult; + var $fExceptions = array(); + + function TestCase($name) { + $this->fName = $name; + } + + function run($testResult=0) { + /* Run this single test, by calling the run() method of the + TestResult object which will in turn call the runBare() method + of this object. That complication allows the TestResult object + to do various kinds of progress reporting as it invokes each + test. Create/obtain a TestResult object if none was passed in. + Note that if a TestResult object was passed in, it must be by + reference. */ + if (! $testResult) + $testResult = $this->_createResult(); + $this->fResult = $testResult; + $testResult->run(&$this); + $this->fResult = 0; + return $testResult; + } + + function countTestCases() { + return 1; + } + + function runTest() { + $name = $this->name(); + // Since isset($this->$name) is false, no way to run defensive checks + $this->$name(); + } + + function setUp() /* expect override */ { + //print("TestCase::setUp()
    \n"); + } + + function tearDown() /* possible override */ { + //print("TestCase::tearDown()
    \n"); + } + + //////////////////////////////////////////////////////////////// + + + function _createResult() /* protected */ { + /* override this to use specialized subclass of TestResult */ + return new TestResult; + } + + function fail($message=0) { + //printf("TestCase::fail(%s)
    \n", ($message) ? $message : ''); + /* JUnit throws AssertionFailedError here. We just record the + failure and carry on */ + $this->fExceptions[] = new Exception(&$message); + } + + function error($message) { + /* report error that requires correction in the test script + itself, or (heaven forbid) in this testing infrastructure */ + printf('ERROR: ' . $message . '
    '); + $this->fResult->stop(); + } + + function failed() { + return count($this->fExceptions); + } + + function getExceptions() { + return $this->fExceptions; + } + + function name() { + return $this->fName; + } + + function runBare() { + $this->setup(); + $this->runTest(); + $this->tearDown(); + } +} + + +class TestSuite /* implements Test */ { + /* Compose a set of Tests (instances of TestCase or TestSuite), and + run them all. */ + var $fTests = array(); + + function TestSuite($classname=false) { + if ($classname) { + // Find all methods of the given class whose name starts with + // "test" and add them to the test suite. We are just _barely_ + // able to do this with PHP's limited introspection... Note + // that PHP seems to store method names in lower case, and we + // have to avoid the constructor function for the TestCase class + // superclass. This will fail when $classname starts with + // "Test" since that will have a constructor method that will + // get matched below and then treated (incorrectly) as a test + // method. So don't name any TestCase subclasses as "Test..."! + if (floor(phpversion()) >= 4) { + // PHP4 introspection, submitted by Dylan Kuhn + $names = get_class_methods($classname); + while (list($key, $method) = each($names)) { + if (preg_match('/^test/', $method) && $method != "testcase") { + $this->addTest(new $classname($method)); + } + } + } + else { + $dummy = new $classname("dummy"); + $names = (array) $dummy; + while (list($key, $value) = each($names)) { + $type = gettype($value); + if ($type == "user function" && preg_match('/^test/', $key) + && $key != "testcase") { + $this->addTest(new $classname($key)); + } + } + } + } + } + + function addTest($test) { + /* Add TestCase or TestSuite to this TestSuite */ + $this->fTests[] = $test; + } + + function run(&$testResult) { + /* Run all TestCases and TestSuites comprising this TestSuite, + accumulating results in the given TestResult object. */ + reset($this->fTests); + while (list($na, $test) = each($this->fTests)) { + if ($testResult->shouldStop()) + break; + $test->run(&$testResult); + } + } + + function countTestCases() { + /* Number of TestCases comprising this TestSuite (including those + in any constituent TestSuites) */ + $count = 0; + reset($fTests); + while (list($na, $test_case) = each($this->fTests)) { + $count += $test_case->countTestCases(); + } + return $count; + } +} + + +class TestFailure { + /* Record failure of a single TestCase, associating it with the + exception(s) that occurred */ + var $fFailedTestName; + var $fExceptions; + + function TestFailure(&$test, &$exceptions) { + $this->fFailedTestName = $test->name(); + $this->fExceptions = $exceptions; + } + + function getExceptions() { + return $this->fExceptions; + } + function getTestName() { + return $this->fFailedTestName; + } +} + + +class TestResult { + /* Collect the results of running a set of TestCases. */ + var $fFailures = array(); + var $fRunTests = 0; + var $fStop = false; + + function TestResult() { } + + function _endTest($test) /* protected */ { + /* specialize this for end-of-test action, such as progress + reports */ + } + + function getFailures() { + return $this->fFailures; + } + + function run($test) { + /* Run a single TestCase in the context of this TestResult */ + $this->_startTest($test); + $this->fRunTests++; + + $test->runBare(); + + /* this is where JUnit would catch AssertionFailedError */ + $exceptions = $test->getExceptions(); + if ($exceptions) + $this->fFailures[] = new TestFailure(&$test, &$exceptions); + $this->_endTest($test); + } + + function countTests() { + return $this->fRunTests; + } + + function shouldStop() { + return $this->fStop; + } + + function _startTest($test) /* protected */ { + /* specialize this for start-of-test actions */ + } + + function stop() { + /* set indication that the test sequence should halt */ + $fStop = true; + } + + function countFailures() { + return count($this->fFailures); + } +} + + +class TextTestResult extends TestResult { + /* Specialize TestResult to produce text/html report */ + function TextTestResult() { + $this->TestResult(); // call superclass constructor + } + + function report() { + /* report result of test run */ + $nRun = $this->countTests(); + $nFailures = $this->countFailures(); + printf("

    %s test%s run
    ", $nRun, ($nRun == 1) ? '' : 's'); + printf("%s failure%s.
    \n", $nFailures, ($nFailures == 1) ? '' : 's'); + if ($nFailures == 0) + return; + + print("

      \n"); + $failures = $this->getFailures(); + while (list($i, $failure) = each($failures)) { + $failedTestName = $failure->getTestName(); + printf("
    1. %s\n", $failedTestName); + + $exceptions = $failure->getExceptions(); + print("
        "); + while (list($na, $exception) = each($exceptions)) + printf("
      • %s\n", $exception->getMessage()); + print("
      "); + } + print("
    \n"); + } + + function _startTest($test) { + printf("%s ", $test->name()); + flush(); + } + + function _endTest($test) { + $outcome = $test->failed() + ? "FAIL" + : "ok"; + printf("$outcome
    \n"); + flush(); + } +} + + +class TestRunner { + /* Run a suite of tests and report results. */ + function run($suite) { + $result = new TextTestResult; + $suite->run($result); + $result->report(); + } +} + +?> diff --git a/prop-set.sh b/prop-set.sh index f98e2de0..d37140bc 100755 --- a/prop-set.sh +++ b/prop-set.sh @@ -1,8 +1,11 @@ #!/bin/sh +# Keywords find -type f -name "*.php" -exec svn propset svn:keywords "Author Id Revision HeadURL Date Tag" {} \; find -type f -name "*.xml" -exec svn propset svn:keywords "Author Id Revision HeadURL Date Tag" {} \; find -type f -name "*.ctp" -exec svn propset svn:keywords "Author Id Revision HeadURL Date Tag" {} \; + +# MIME type find -type f -name "*.php" -exec svn propset svn:mime-type "text/plain" {} \; find -type f -name "*.ctp" -exec svn propset svn:mime-type "text/plain" {} \; find -type f -name "*.jpg" -exec svn propset svn:mime-type "image/jpeg" {} \; @@ -19,6 +22,14 @@ find -type f -name .htaccess -exec svn propdel svn:keywords {} \; find -type f -name .htaccess -exec svn propdel svn:executable {} \; find -type f -name .htaccess -exec svn propset svn:mime-type "text/plain" {} \; +# eol-style +find -type f -name "*.php" -exec svn propset svn:eol-style "native" {} \; +find -type f -name "*.ctp" -exec svn propset svn:eol-style "native" {} \; +find -type f -name "*.html" -exec svn propset svn:eol-style "native" {} \; +find -type f -name "*.xml" -exec svn propset svn:eol-style "native" {} \; +find -type f -name "*.txt" -exec svn propset svn:eol-style "native" {} \; +find -type f -name "*.lng" -exec svn propset svn:eol-style "native" {} \; + # Shell scripts can be executable echo "$0: propset svn:executable on *.sh" find -type f -name "*.sh" | xargs svn propset svn:executable 2>/dev/null