AGAVI RELEASE NOTES =================== Version 0.11.8 - July 25, 2009 ============================== This maintenance release fixes two bugs over Agavi 0.11.7: - AgaviArraylengthValidator didn't work with files - Arrays that failed validation were not purged from request data - Memory leak in AgaviTranslationManager::getLocaleIdentifier() It also contains minor optimizations in AgaviInarrayValidator and AgaviArraylengthValidator. The bundled timezone database was also upgraded to version 2009k. As always, the CHANGELOG has a complete list of changes in this release. This release marks the end of maintenance for Agavi 0.11.x. Version 0.11.7 - March 26, 2009 =============================== This maintenance release fixes a number of issues over Agavi 0.11.6. The following are worth mentioning: - Most notable, a race condition in configuration file compilation was fixed that could lead to corrupt compiled files on disk. - Exporting values from validators with argument bases is now possible, and it's possible to control the exact use of keys in the process. - The bundled Timezone database was updated to version 2009d. - Last but not least, it's now possible to set session_cache_expire(), session_cache_limiter() and session_module_name() through configuration. - Several other minor fixes. As usual, please check the CHANGELOG for a complete list of changes. Version 0.11.6 - February 4, 2009 ================================= This maintenance release fixes a number of issues and provides several minor enhancements and additions. Most importantly, this release fixes an attack vector affecting AgaviWebRouting::gen(null) in combination with some web browsers that (in violation of RFC 3986 and earlier versions) do not urlencode certain characters in the URL when making requests to a web server, allowing attackers to craft potentially malicious URLs that lead to a possible cross-site scripting vulnerability. Current and previous versions of Microsoft Internet Explorer are known to exhibit this behavior. We'd like to thank Daniel Kubitza for advising us of this issue. Please see the associated ticket for details, temporary workarounds and standalone patches against previous releases: http://trac.agavi.org/ticket/1019 The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2009-0417 to this issue. This is a candidate for inclusion in the CVE list (http://cve.mitre.org), which standardizes names for security problems. You can view details on the vulnerability at the following URL: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0417 As it also fixes a couple of bugs related to handling of request data and validation, upgrading is highly recommended for all users. A couple of changes are worth mentioning: - AgaviArraylengthValidator was added. - PHP 5.2.8 or later is now required in combination with magic_quotes_gpc. This is due to security reasons unrelated to the issue in the PHP 5.2.7 release. Ticket #953 explains things in detail. - Slot responses are now merged into the parent even if the response content is empty. - Several best practices have been added and improved in the sample app and the code templates, and warnings are now thrown for outdated libxml versions, all intended to make it easier for new users to dive into Agavi. - The timezone database was updated to version 2008i. - Access to global request data is now locked during AgaviAction::getDefaultViewName() execution. - Handling of array keys has been unified across AgaviWebRequestDataHolder sources. - Unvalidated request data is not available anymore in the View if the Action didn't serve the current request method. - New projects now generate separate exception templates for production environments, and the built-in exception templates now simply re-throw the exception instead of displaying any information if the display_errors php.ini setting is disabled. - 'secure' flags can optionally be set automatically on session and response cookies, and the session save path can be defined for AgaviSessionStorage through factories.xml. These measures are useful for mitigating potential attack vectors on applications. As always, CHANGELOG knows it best. Version 0.11.5 - October 25, 2008 ================================= This maintenance release fixes a small number of issues and does not add any new features. Please refer to the CHANGELOG for details. The timezone database was updated to version 2008h. Version 0.11.4 - October 14, 2008 ================================= This is a maintenance release that fixes a couple of minor issues, such as problems in the sample app introduced in 0.11.3 and a missing class in autoload.xml. Also, it is now possible to specify template implementation mappings in AgaviDoctrineDatabase. As always, the CHANGELOG has all the details. Version 0.11.3 - September 19, 2008 =================================== This maintenance release fixes a couple of minor problems like PEAR package generation, gettext plural form expression handling etc, and introduces some new features: - Accessing array values in attribute holders via foo[bar] is now possible, as it is already with parameter holders - Database handlers now can send arbitrary SQL statements after connecting; useful for "SET NAMES utf8" in MySQL etc. - AgaviDoctrineDatabase improvements - AgaviMysqliDatabase adapter added - New timezone database version - Sample app cleanup - FPF has the option to ignore errors during document parsing and skip population (good for production environments) - Assigning of "inner" content to $slots template array can be disabled The sample app's SearchEngineSpamAction and the associated elements (PriceFinderModel etc) have been updated to work as the routing pattern always suggested - identify the product by ID, and allow an optional part including the name of the product. This also shows off some more Agavi features now. A full list of changes can be found in the CHANGELOG file. Version 0.11.2 - July 8, 2008 ============================= This maintenance release fixes a number of bugs, comes with several changes to improve consistency, and also features a couple of new features. Some of these include: - AgaviStringValidator can now trim an input string. - AgaviDoctrineDatabase has been improved. - elements in settings.xml can now be arrays by using s. - Data returned from a View is now available through $inner in the first template. - File locking is now used anywhere files are being written (config compilation, caching). - AgaviValidationManager::hasError() behavior was fixed to be consistent with getError(). - Incorrect namespace for disabled module forwarding information got fixed (was: org.agavi.controller.forwards.disabled, now: org.agavi.controller.forwards.module_disabled). As always, the CHANGELOG has a comprehensive list of changes. Version 0.11.1 - May 9, 2008 ============================ This is a bugfix release. The most important changes are: - Form Population Filter now correctly casts boolean values to '0', not to an empty string. This change is only relevant during programmatical population and was done to be able to distinguish from null values (consider a