root/tags/1.0.0beta1/CHANGELOG

Revision 2657, 47.3 KB (checked in by david, 5 months ago)

changelog entry forgotten in [2284], refs #683

  • Property svn:keywords set to Id
Line 
1AGAVI CHANGELOG
2===============
3
41.0.0 beta 1 (August 10, 2008)
5------------------------------
6
7ADD: XSL Transformations done by XML Config Parser should have some information available in template parameters (#710) (David, Noah)
8ADD: Add extension points to XML schema definitions where feasible (#515) (David, Noah)
9ADD: Update SOAP support to make use of functionality introduced in #710 (#795) (David)
10ADD: Allow additional types for second argument of AgaviLoggerManager::log() (#634) (David)
11
12CHG: Move XML validation to RelaxNG and Schematron (#462) (Noah, David)
13CHG: Change configuration system to support only XML (#519) (David, Noah)
14CHG: Change default for assigning of "inner" content to $slots template array to disabled (#794) (David)
15CHG: Rewrite the project build system and throw out the old one (#689) (Noah)
16CHG: Refactor internal "system action" handling and fowarding (#769) (David)
17CHG: Bump minimum required PHP version to 5.2.0 (#738) (David)
18CHG: Remove direct association of validator instances and request methods (#767) (David)
19CHG: Make request method per-container (#667) (David)
20CHG: Deprecate core.use_routing in favor of a routing config parameter (#683) (David)
21CHG: Moved AgaviWebRequest::getSourceValue() to AgaviRequest (#686) (David)
22CHG: Deprecated AgaviSecureWebRequest (#676) (David)
23CHG: Deprecated AgaviAdodbDatabase (#662) (David)
24
25FIX: Security filters cannot perform checks in addition to isSecure() (#671) (David)
26
27
280.11.3 RC1 (August ??, 2008)
29----------------------------
30
31ADD: Set current Context instance on Doctrine connections (#800) (David)
32ADD: Support for doctrine connection settings and options (#788) (David)
33
34CHG: Update timezone database to 2008e (#806) (David)
35CHG: Dump "xhtml" output type from sample app and introduce a replacement (#802) (David)
36CHG: Assigning of "inner" content to $slots template array should be configurable (#793) (David)
37
38FIX: AgaviExecutionTimeFilter runs only once (#801) (David)
39FIX: PEAR installations place src/routing/soap files in the data directory rather than the source directory (#799) (Noah)
40
41
420.11.2 (July 8, 2008)
43---------------------
44
45FIX: Several config handlers are missing checks for existance of element(s) inside <configuration> (#796) (David)
46FIX: Namespace for disabled module forwarding information is wrong (#792) (David)
47
48
490.11.2 RC2 (July 2, 2008)
50-------------------------
51
52FIX: Exception templates incorrectly fix information about exception origin (#790) (David)
53FIX: Markup is escaped by accident in shiny exception template (#791) (David)
54FIX: Using '#' in a routing pattern triggers a warning (#789) (Dominik)
55
56
570.11.2 RC1 (June 27, 2008)
58--------------------------
59
60ADD: Support trimming of input string in AgaviStringValidator (#745) (David)
61ADD: Add support for native doctrine model autoloading (#759) (David)
62ADD: Add support for doctrine manager attributes (#783) (David)
63ADD: Add SecurityUser::hasCredential and SecurityUser::getCredentials for convenience (Noah) (#772)
64ADD: Add convenience methods to AgaviUploadedFile (#607) (David)
65ADD: Allow arrays as values for web request sources. (#675) (David)
66ADD: Allow arrays as setting values in settings.xml (#670) (David)
67ADD: Ability to return data from view as inner content for first layer in a rendering batch (#655) (David)
68ADD: Allow nested routing structures with concatenated name or action attributes in ancestors other than immediate parents (Dominik) (#764)
69
70CHG: AgaviController::dispatch() should accept module and action names in the request data argument with routing disabled (#776) (David)
71CHG: Routing should not just bail out of execute() if routing is enabled, but no routes are defined (#779) (David)
72CHG: Refactor AgaviContext::initialize() and the passing of "profile" (#778) (David)
73CHG: Arguments passed to AgaviController::dispatch() should have precedence over routing results (#777) (David)
74CHG: Introduce generic AgaviStreamLoggerAppender (#773) (David)
75CHG: Make AgaviLoggerAppender an AgaviParameterHolder (#774) (David)
76CHG: Change error class handling in FPF to set classes on elements returned by the respective XPath expressions, not the original elements (#768) (David)
77CHG: Use file locking everywhere files are written (Dominik) (#766)
78
79FIX: AgaviValidationManager::hasError() is inconsistent with AgaviValidationManager::getError() regarding severity (#784) (David)
80FIX: Routing tests do not reset core.use_routing in tearDown() (#781) (David)
81FIX: stdout/stderror log appenders are broken (#751) (David)
82FIX: Caching configuration blocks might be merged incorrectly (#755) (David)
83FIX: Caching and validation configurations cannot be per-context (#754) (David)
84FIX: Form Population Filter incorrectly inserts XML prolog into HTML documents (#771) (David)
85FIX: Calling move() twice on the same uploaded file will cause a bogus exception (#770) (David)
86FIX: shiny.php exception template does not use htmlspecialchars() when outputting file paths (#765) (David)
87FIX: Static method AgaviBaseConfigHandler::replacePath() is used in object context in two config handlers (David) (#762)
88
89
900.11.1 (May 9, 2008)
91--------------------
92
93FIX: UTF-8 Special characters in exception messages get garbled in exception output (Tanaka Koichi, David) (#758)
94
95
960.11.1 RC3 (May 2, 2008)
97------------------------
98
99ADD: Add ability to cache complete request attribute namespaces in Execution Filter (#740) (David)
100
101CHG: Non-Agavi exceptions should be clearly marked as such (#749) (David)
102CHG: Change execution filter to run action again if action is cached, but output type of the view isn't (#742) (David)
103CHG: Update timezone database to 2008b (#728) (David)
104
105FIX: Arrays exported by a validator do not survive validation cleanup (#756) (Dominik)
106FIX: AgaviArrayPathDefinition::getFlatKeyNames() returns nonsense if the prefix is "0" or an empty string (#757) (Dominik)
107FIX: Request is not properly unlocked if an exception occurs (#753) (David)
108FIX: logging.xml in code templates does not work out of the box (#750) (David)
109FIX: Actions that return no View are never cached (#746) (David)
110FIX: AgaviDateFormatter::translate() might kill DateTime's DateTimeZone object (#743) (David)
111FIX: Reusable renderers do not work (#741) (David)
112FIX: AgaviInflector::singularize returns the wrong singular form of "caches" (#739) (Dominik)
113
114
1150.11.1 RC2 (March 22, 2008)
116---------------------------
117
118CHG: Make AgaviView::createForwardContainer() forward arguments from the current container if no arguments given (#707) (David)
119CHG: AgaviView::create*Container() should use null as default for arguments (#735) (David)
120CHG: Routing, GettextTranslator etc should use AgaviToolkit::expandVariables (#708) (David)
121CHG: Speed up unique ID generation (#731) (David)
122CHG: Bring sample app and code templates up to date (#719) (David)
123CHG: Update timezone database to 2008a (#727) (David)
124CHG: List of matches for a route should be populated by the time onMatched() is called on a callback (#730) (David)
125CHG: Check for existing X-Powered-By header before setting it in WebResponse (#716) (David)
126CHG: Execution Filter should read action attributes for caching from Action, not Container (#706) (David)
127CHG: Cache write order in execution filter should be reversed (#703) (David)
128CHG: AgaviExecutionFilter::writeCache() could use third argument with lifetime (#702) (David)
129CHG: AgaviExecutionContainer::createExecutionContainer() should copy over container parameters (#699) (David)
130CHG: Improve the speed of array key lookups (#693) (Noah)
131CHG: Change *val() functions to proper typecasts (#697) (Noah)
132CHG: dist.htaccess in code templates should have RewriteEngine On (#678) (David)
133CHG: Bumped and fixed copyright years (#664) (David)
134CHG: Update timezone database to 2007k (#660) (David)
135
136FIX: Given arguments object is not cloned for Container execution if Action is "simple" (#736) (David)
137FIX: Form Population Filter handles boolean false values incorrectly (#737) (David)
138FIX: Percent signs are incorrectly escaped in AgaviRouting::parseDynamicSet() (#733) (David)
139FIX: routing.xsd does not allow dynamic expressions in output_type attribute (#734) (David)
140FIX: AgaviToolkit::expandVariables replacing is too greedy (#732) (David)
141FIX: AgaviPhpRenderer::$moreAssigns is not declared or initialized (#729) (David)
142FIX: AgaviWebRequest cannot map arbitrary HTTP verbs (#725) (David)
143FIX: AgaviWebRequest does not write all changed factory parameters back (#724) (David)
144FIX: Charset in Content-Type http-equiv meta tag might be parsed incorrectly (#722) (David)
145FIX: Generating the current route without additional arguments results in unescaped single quotes and square brackets, potentially incorrectly replaced argument separator (#718) (David)
146FIX: Generating the current route with additional or changed arguments allows code injections (#717) (David)
147FIX: Unsetting a user parameter that in a routing callback's onGenerate() was passed to gen() produces strange behavior (#714) (David)
148FIX: Setting a user parameter that was undefined in a routing callback's onGenerate() has no effect if a default is defined (#713) (David)
149FIX: Form Population trips over entities in error messages when inserting them into the document (#715) (David)
150FIX: Routing config handler cannot handle parameter arrays (#712) (David)
151FIX: XML config parser only applies the xsl stylesheet defined in the first processing instruction (#711) (David)
152FIX: Execution Filter does not restore cached action attributes on cache hit (#705) (David)
153FIX: caching.xsd has incorrect rules for <action_attribute> elements (#704) (David)
154FIX: View cache validity check does not use lifetime, might cause usage of stale data (#701) (David)
155FIX: Container info is not retained on internal forward due to disabled module (#700) (David)
156FIX: Incoming routing parameters can possibly overwrite routing parameters set in a callback (#698) (Dominik)
157FIX: AgaviReturnArrayConfigHandler creates an numerical indexed array of elements if child and parent have the same names (#694) (Dominik)
158FIX: AgaviConfig does not handle empty strings properly (#692) (Noah, David)
159FIX: onGenerate() method in callback is not run for routes with a source (#695) (David)
160FIX: Values in long request arrays are not decoded with magic_quotes_gpc on (#684) (David)
161FIX: WebRouting does not clean up in long request arrays (#685) (David)
162FIX: WebRouting does not clean up in $_REQUEST (#681) (David)
163FIX: $HTTP_RAW_POST_DATA is not removed on request startup (#679) (David)
164FIX: Copies of $_SERVER values in $_ENV are not cleaned (#674) (David)
165FIX: Request data is not cleaned for variables affected by register_argc_argv or register_long_arrays (#673) (David)
166FIX: AgaviWebRequest::startup() does not call parent startup() (#677) (David)
167FIX: AgaviCreoleDatabase does not support various Creole driver settings (#672) (David)
168
169
1700.11.1 RC1 (December 26, 2007)
171------------------------------
172
173ADD: Creole session storage supports configurable date formatting (#639) (David)
174
175CHG: Session storages should reveal server error message in exceptions (#645) (David)
176CHG: Update timezone database to 2007j (#642) (David)
177CHG: Always send HTTP/1.0 responses in shiny exception template (#620) (David)
178CHG: Perform special multislash cleanup for all Apache 2.x versions (#619) (David)
179
180FIX: Content-Length header is sent regardless of "send_content_length" setting when a redirect is performed in a WebResponse (#659) (David)
181FIX: Validator names cause parse errors if they don't meet PHP label requirements (#658) (David)
182FIX: Agavi:boostrap() without arguments ignores writeable core.environment setting (#657) (David)
183FIX: PDOSessionStorage is unlikely to work properly in case of exceptions (#644) (David)
184FIX: PHP 5.2.5's completely ruined glob() can lead to unhappy foreach loops (#649) (David)
185FIX: RotatingLoggerAppender should complain about a rotation cycle smaller than 1 (#654) (David)
186FIX: validators.xsd is missing the "source" attribute in validators (#653) (Dominik)
187FIX: FPF's CDATA fix for <style> and <script> tags corrupts one-liners in HTML parsing mode (#652) (David)
188FIX: Code to remove potential duplicate xmlns attributes in FPF's HTML parsing mode does not work with certain libxml versions (#650) (David)
189FIX: libxml bug may lead to "attribute redefined" errors in FPF in HTML parsing mode (#651) (David)
190FIX: Undefined variable notice in AgaviValidationManager::hasIncidents() (#640) (David)
191FIX: Creole and PDO session storage incorrectly force garbage collection on session open (#638) (David)
192FIX: AgaviMysqlSessionStorage uses mysql_escape_string() instead of mysql_real_escape_string() (#637) (David)
193FIX: Database session storage implementations have incorrect read/write behavior (#636) (David)
194FIX: Some database session storages do not work with non-integer date() results. (#635) (David)
195FIX: Global request data is serialized in execution containers (#633) (David)
196FIX: Forwarding does not honor output types properly (#629) (David)
197FIX: Global request data is not locked during rendering of templates (#628) (David)
198FIX: Nested XIncludes cause segfault due to PHP bug (#621) (David)
199FIX: AgaviToolkit::mkdir might throw errors on concurrent directory creation (#615) (Dominik)
200FIX: WebRouting::gen() encodes additional parameters twice (#622) (David)
201FIX: Trailing ampersands and other special cases might still confuse the routing under some circumstances (#618) (David)
202
203
2040.11.0 (November 3, 2007)
205-------------------------
206
207ADD: Allow simpler format definitions in DateTime validator (#596) (David)
208
209CHG: Update timezone database to 2007i (#610) (Dominik)
210
211FIX: Adapt olson timezone generation task to agavi changes (#611) (Dominik)
212FIX: Optional route params are generated incorrectly under certain circumstances (#609) (Dominik)
213FIX: Incorrect handling of HTTP/1.0 requests (#604) (David)
214FIX: Caching leaves room for potential race condition (#608) (David)
215FIX: AgaviFormPopulationFilter calls fromUtf8 without $this-> (#606) (Veikko)
216FIX: Template layers do not expand empty parameters in formatting strings (#603) (David)
217FIX: Routing callbacks cannot set additional arguments that are not in the pattern (e.g. extra query args) (#602) (David)
218FIX: Strict standards violation in AgaviPdoSessionStorage (#600) (Veikko)
219FIX: Routing gets confused by a trailing ampersand in the query string under some circumstances (#599) (David)
220
221
2220.11.0 RC7 (October 23, 2007)
223-----------------------------
224
225ADD: Default extension of renderers can now be configured directly via "default_extension" parameter (#594) (David)
226ADD: Exception templates show current date and time (#595) (David)
227ADD: Pass on "is_slot" flag in View::createForwardContainer() (#591) (David)
228
229CHG: Use gmdate() in config handlers to prevent strict notices about timezone settings (#590) (David)
230
231FIX: View::appendLayer() and View::prependLayer() break when given a second argument (#593) (David)
232FIX: core.skip_config_validation logic is inverted (#592) (David)
233
234
2350.11.0 RC6 (October 12, 2007)
236-----------------------------
237
238ADD: Allow setting of the affected arguments in a validator via throwError() (#568) (Dominik)
239ADD: __sleep() and __wakeup() magic methods for AgaviModel to prevent Context serialization (#581) (David)
240ADD: Ability to insert error messages into forms automatically using FormPopulationFilter (#303) (David, Ross Lawley)
241ADD: AgaviWebResponse::unsetCookie() (#577) (David, Ross Lawley)
242ADD: AgaviDoctrineDatabase (#381) (David, Ross Lawley)
243ADD: Support for error class name maps in FormPopulationFilter (#575) (David)
244ADD: AgaviDatabase::startup() (#573) (David)
245ADD: AgaviDatabase::getName() (#572) (David)
246ADD: Cache group sources "request_data" and "global_request_data" (#571) (David)
247ADD: Make format used to insert dates and times configurable in database session storage adapters (#569) (David)
248ADD: Allow overriding of specific Propel runtime config directives via databases.xml (#567) (David)
249ADD: Added force_request_uri and force_request_url config options to FPF ([2066]) (David)
250ADD: Allow true as value for "org.agavi.filter.FormPopulationFilter"/"populate" to force use of global request data (#556) (David)
251ADD: Accept date/time strings as message for date formatter (#555) (David)
252ADD: AgaviEzctemplateRenderer (#326) (Felix Weis, David)
253ADD: Allow disabling of XML config validation (#552) (David)
254ADD: Allow logging of FormPopulationFilter parse errors (#543) (David)
255ADD: Add Agavi information to X-Powered-By header (#542) (David)
256ADD: Add LoggerManager::getDefaultMessageClass() (#539) (David)
257ADD: Support for SOAP faults (#532) (David, Noah Fontes)
258ADD: Support for SOAP response headers (#531) (David)
259ADD: Allow relative paths to xsd files in XML Schema Instance *schemaLocation attributes (#530) (David)
260
261CHG: Introduce new severity "info" and map now deprecated "none" to "silent" (#585) (Dominik)
262CHG: Validators with same names, but for different request methods, overwrite each other properly now (#582) (Dominik)
263CHG: Drastically improved performance and memory consumption of AgaviToolkit::expandDirectives() and AgaviToolkit::expandVariables() ([2092], [2093], [2127]) (David)
264CHG: Make Agavi ready for PHP6 (#563) (Noah Fontes, David)
265CHG: Make viewInstance available in the execution container (#557) (David, Ross Lawley)
266CHG: Made AgaviRenderer an AgaviParameterHolder (#553) (David)
267CHG: Removed bash dependency from agavi build script (#546) (David, simoncpu)
268CHG: Change agavi.release directive to use a slash instead of a space as the name/version delimiter (#541) (David)
269CHG: Bumped minimum required PHP version to 5.1.3 (#456) (David)
270
271FIX: Unvalidated arguments are left behind by non-required validators if those have multiple arguments and did not run (#578) (Dominik)
272FIX: AgaviToolkit::clearCache() throws errors if path doesn't exist (#584) (Dominik)
273FIX: Routing callbacks cannot set optional parameters (#579) (David, Dominik)
274FIX: Request should be locked in View's constructor and initialize() methods (#544) (David)
275FIX: Error control operator in AgaviToolkit::mkdir() might be problematic (#576) (Dominik)
276FIX: Default database exists twice in the databases array, thus is shutdown twice (#574) (David)
277FIX: Agavi validation manager is missing the declaration of $incidents (#566) (Dominik)
278FIX: FilterChain resets run count for each registered filter; thus executeOnce() does not work as intended (#565) (David)
279FIX: User-agent check in shiny exception template can throw errors (#564) (Noah Fontes)
280FIX: WebRouting::gen() ignores 'separator' option when generating existing routes (#545) (David)
281FIX: <route action=".Something" /> confuses template location code (#540) (David)
282FIX: AgaviPropelDatabase returns null in getConnection when used with Propel 1.2 (#538) (Dominik)
283FIX: "shiny" exception template may generate invalid markup if HTML is at first line of code snippet (#537) (David)
284FIX: AgaviToolkit::expandVariables() skips null arguments (#536) (David)
285FIX: AgaviParameterHolder::hasParameter() etc return false for keys that have a null value (#535) (David)
286FIX: AgaviExecutionFilter::clearCache doesn't clear the content cache properly (#534) (Veikko)
287FIX: Output messages with multiple parts break SOAP completely (#533) (David)
288FIX: Missing param declaration in wsdl.xsl might lead to corrupt response message blocks in generated WSDL (#529) (David)
289
290
2910.11.0 RC5 (June 18, 2007)
292--------------------------
293
294ADD: Add extension points to XML Schema definitions where feasible (#515) (David)
295ADD: Support for XML Schema instance schema location declarations (#517) (David)
296ADD: AgaviNullStorage (#523) (David)
297ADD: Experimental(!) support for native XML config handlers, base work for XML-only configuration system (#519) (David)
298ADD: Support for XSL stylesheets in configuration files (#509) (David)
299ADD: Support for XML namespaces in configuration files (#508) (David)
300ADD: SOAP Support (#301) with automatic WSDL generation (#514) (David)
301ADD: Interface for AgaviLogger (#507) (David)
302ADD: Allow routing callbacks to unset parameters by setting them to null (#505) (Dominik)
303ADD: Set "exception" in "org.agavi.controller.forwards.error_404" (#496) (David)
304ADD: Allow setting response content by returning data from View::execute*() (#503) (David)
305ADD: Support for configuration directives in href attributes of XInclude <include> elements (#488) (David)
306ADD: DateTime cast support for AgaviDateValidator (#475) (Dominik)
307ADD: Support for magic_quotes_gpc, including proper handling of indices in and outside of arrays as well as $_FILES
308ADD: Method to convert AgaviCalendar objects into native PHP DateTime objects ([1836]) (Dominik)
309ADD: Support for UTF-8 in StringValidator via parameter 'utf8', default on ([1820]) (David)
310ADD: Ability to prevent sending of the response in Controller::dispatch(), which now always returns the final (not global!) response (#469) (David)
311ADD: Made default layer class configurable via 'default_layer_class' config parameter for AgaviOutputTypeConfigHandler ([1800]) (David)
312
313CHG: Deprecate AgaviConfigHandler::literalize() and AgaviConfigHandler::replaceConstants() (#526) (David)
314CHG: Improvements for FPF's charset detection, now uses output type's http_headers Content-Type value if possible ([1982]) (David)
315CHG: Updated zoneinfo database to 2007f (#524) (David)
316CHG: Ability to get empty data instead of exceptions when accessing locked request data (#512) (David)
317CHG: Display full list of complete paths of templates tried when displaying "template not found" exception (#497) (David)
318CHG: Support for empty language blocks in SimpleTranslator (#483) (Dominik)
319CHG: Support for empty translation domain in SimpleTranslator (#482) (Dominik)
320CHG: Update timezone database to 2007c release ([1873]) (Dominik)
321CHG: More features and improved consistency for AgaviReturnArrayConfigHandler (#463) (David)
322CHG: Deprecate request attribute "matchedRoutes" in "org.agavi.routing" in favor of "matched_routes" (#465) (David)
323
324FIX: Resolved most double-slash issues under Apache 2.2 (#502) (David)
325FIX: XMLRPC Request and Response cause strict warnings, fatals, notices (#528) (David)
326FIX: Agavi's autoloader fails if Agavi has not been bootstrapped yet (#521) (David)
327FIX: Fixes for AgaviEmailValidator (#486) (Dominik)
328FIX: Correct standalone declarations for all XML configs (#518) (David)
329FIX: "agavi project" does not create stub translation.xml (#516) (David)
330FIX: Character escape sequences in CLDR data are not evaluated (#478) (Dominik)
331FIX: AgaviInarrayValidator throws missing argument error (#506) (Dominik)
332FIX: Quoted parts in date patterns might result in incorrect output (#513) (Dominik)
333FIX: Form Population Filter does not recognize action URLs with fragment identifier (#510) (David)
334FIX: AgaviUploadedFile notice in destructor due to ArrayObject bug (#511) (David, Ross Lawley)
335FIX: PUT file uploads might leave stale temporary file behind (#479) (David)
336FIX: Incorrect Content-Length header might delay HTTP "Locaation:" redirects (#504) (David)
337FIX: Prevent parse_url issues in request URIs that contain "://" (#494) (David)
338FIX: Corrected caching behavior in case neither <layer> nor <layers> elements are present in the config (#501) (David)
339FIX: Enabled attribute in caching configuration has no effect (#500) (David)
340FIX: Check for existance of default database connection to prevent potential error (#485) (David)
341FIX: User credentials routing source broken (#493) (Dominik)
342FIX: Broken AgaviInarrayValidator (#490) (Felix Gilcher, Dominik)
343FIX: Workaround for missing "file" stream proto in default Suhosin configurations (#484) (David)
344FIX: <parameter> nodes with numeric names (#481) (Dominik)
345FIX: AgaviCalendar::getNativeDateTime() has one month offset (#474) (Dominik)
346FIX: Fix date parsing for 1-12 hour formats (#472) (Dominik)
347FIX: Typos and too greedy exception catching in some validators ([1829], [1831]) (David, Dominik)
348FIX: Workaround for broken stream_get_wrappers() in Debian and Gentoo (and probably others) in latest PHP packages for versions < 5.2.1 thanks to, did I mention it yet, clueless Linux package maintainers who constantly manage to ruin their very uncool, very wrongly patched PHP versions ([1824]) (David)
349FIX: Suppress warning in AgaviImageFileValidator when a valid file, but no image is uploaded (#471) (David)
350FIX: Don't use unicode character properties in regular expressions, thanks to all the clueless Linux package maintainers who disable those even though they're on as default (just like they do it with DOM and other default stuff) ([1809], [1810]) (David)
351FIX: Make the pear package task create .keep files in empty dirs ([1807]) (David)
352FIX: When using 0 as default value for an optional parameter gen() could skip the parameter (#464) (Dominik)
353
354
3550.11.0 RC4 (February 25, 2007)
356------------------------------
357
358ADD: Throw exceptions in case PCRE operations fail (like with corrupt UTF-8 input) in FormPopulationFilter (#461) (David, Veikko)
359
360FIX: XML-RPC support broken completely (#459) (David)
361FIX: Handling of multiple <configuration> blocks is broken in FactoryConfigHandler (#458) (David)
362FIX: ExecutionFilter throws notice/warning while trying to determine slot cacheability status (#457) (David)
363FIX: Using date translator with a custom format doesn't work (#455, #460) (Dominik, David)
364
365
3660.11.0 RC3 (February 22, 2007)
367------------------------------
368
369ADD: Allow specifying per-locale formats for formatters as children to the parameter node (#453) (David)
370ADD: Allow non-absolute URLs for WebResponse redirects (#449) (David)
371ADD: AgaviRequest::isLocked() ([1728]) (David)
372ADD: Make AgaviRequestDataHolder classes configurable (#438) (David)
373ADD: Allow retrieval of the translators/formatters for a defined domain (#417) (Dominik)
374ADD: Routing generation options presets (#432) (David)
375ADD: Support for X-Sendfile family of headers in AgaviWebResponse (#431) (David)
376ADD: AgaviRbacUser::grantRoles (#430) (David)
377ADD: Translation for error messages in sample app (#416) (David)
378ADD: Use base path from routing if null path given to AgaviWebResponse::setCookie, assume same base path for session cookies (#425) (David)
379ADD: strtotime strings support for AgaviWebResponse::setCookie and session cookie lifetime (#423) (David)
380ADD: AgaviOutputType::getDefaultLayoutName() ([1689]) (David)
381ADD: Allow PHP 5.2 DateTime objects to be used with _d() (#420) (Dominik)
382ADD: AgaviDateFormatter::getFormat ([1683]) (Dominik)
383ADD: Add isContentMutable method to response and check where applicable (#414) (David)
384
385CHG: Made "class" attribute for <layer> elements optional in output_types.xml (#454) (David)
386CHG: Routing: use matched incoming parameters for same route generation on a hierarchial basis (#444) (Dominik)
387CHG: Update timezone database to 2007b release (#443) (Dominik)
388CHG: Translation Manager should call localeChanged on message translators (#447) (Dominik)
389CHG: Cleaned up config handlers ([1737]) (David)
390CHG: Fix $_FILES array only if no AgaviUploadedFile is in the request data ([1736]) (David)
391CHG: Don't hardcode AgaviUploadedFile class name and make that non-final ([1735]) (David)
392CHG: Update Unicode CLDR Data to release 1.4.1 (#442) (Dominik)
393CHG: Deprecated Request::getModuleAccessor() and Request::getActionAccessor() ([1720]) (David)
394CHG: Move pre- and postfix modification from defaultParams to userParams argument in RoutingCallback::onGenerate (#436) (Dominik)
395CHG: Allow returning of true or false from RoutingCallback::onGenerate() (#435) (Dominik)
396CHG: startup() methods for all core classes, shuffled initialization order (#433) (David)
397CHG: Store salted hash for autologon password in sample app, clean up sample app user implementation to serve as a better example (#429) (David)
398CHG: Make AgaviLocale a ParameterHolder, clean up Translation Manager method names, add caching of locale instances, add default locale getters (#426) (David)
399CHG: Removed 'Index' action auto-resolving from AgaviController::resolveAction (#424) (David)
400CHG: Allow nested <translator> tags (#422) (Dominik)
401CHG: auto assign 'validation_manager' in templates ([1691]) (David)
402CHG: Allow extra domain info to be passed to formatters (#419) (Dominik)
403
404FIX: Operator validators don't work with required=false (#451) (Dominik)
405FIX: Better handling of i18n off in NumberValidator and DateValidator [1753] (Dominik)
406FIX: Small bug in SimpleTranslator (#446) (Dominik)
407FIX: Some OperatorValidators are broken (#445) (Ross Lawley, David)
408FIX: Issue where request data "garbage" from a rewrite wouldn't be removed in routing initialize ([1732]) (David)
409FIX: Storage must check if the routing it is grabbing a "better" base path from for the session cookie is a WebRouting instance ([1730]) (David)
410FIX: AgaviWebserviceRouting method signature ([1729]) (Dominik)
411FIX: Possible exception in shiny.php exception template while request is locked ([1728]) (David)
412FIX: The currency formatter doesn't use the fraction information from the CLDR data (#439) (Dominik)
413FIX: When you manually set the currency symbol not the literal symbol should be used but the iso currency code (#440) (Dominik)
414FIX: Using currency formatters with a custom format doesn't work (#441) (Dominik)
415FIX: 0 as default value for routes skipped in route generation (#437) (David)
416FIX: Do not override default values using matched incoming parameters when generating the same route unless the route is implied (#434) (Dominik)
417FIX: Routing->gen() could possibly not remove unused parameters from the url when an url depends on multiple routes (#428) (Dominik)
418FIX: addIncident not using the validator of the incident for submitting field results ([1685]) (Dominik)
419FIX: In Sample App: Call to undefined method setError() (#415) (Veikko, codecop)
420
421
4220.11.0 RC2 (February 7, 2007)
423-----------------------------
424
425ADD: Add convenience container creation methods to view (#410) (David)
426ADD: Allow streams as response content (#408) (David)
427ADD: Add support for lightweight actions (#407) (David)
428ADD: Allow <sandbox> element inside <configurations> to make xincludes easier (#404) (David, Dominik)
429ADD: Allow AgaviLoggerManager::log() to accept strings for convenience (#401) (David)
430ADD: added isnotempty validator which provides what the issetvalidator has been in earlier versions (#359) (Dominik)
431ADD: Allow modification of options in callbacks for gen() (#395) (David)
432ADD: Support for HTTP PUT file Uploading (#393) (David, Ross Lawley)
433ADD: Allow the validation to validate different kinds of sources (request parameters, cookies, http headers, files) (#367) (Dominik)
434ADD: Allow multiple <settings> blocks with alternative prefix in settings.xml (#375) (Dominik)
435ADD: Add wildcard support to "environment" and "context" attributes (#374) (David)
436ADD: Add a TimestampLoggerLayout (#372) (David)
437ADD: Improve some aspects of file handling (#369) (David)
438ADD: Allow square bracket syntax when retrieving cookies. (#368) (David)
439ADD: Re-Introduce per-Output-Type exception templates (#357) (David)
440ADD: Allow only setting the locale options in the translation methods (#62) (Dominik)
441ADD: Add ability to include proto, host, port and hash in WebRouting::gen() (#358) (David)
442ADD: Add option to GettextTranslator that writes all translation calls to a PHP file (#356) (David)
443ADD: The translation formatters can have their format strings translated now (#62) (Dominik)
444ADD: Allow validation error messages to be translated (#62) (Dominik)
445ADD: Added an simple translator which stores translations directly in the translation configuration file. (#62) (Dominik)
446ADD: Filter possibilities for translators and formatters (#62) (David)
447ADD: Ability to parsing string numbers into php native numbers (int/float) (#62) (Dominik)
448ADD: Ability to parse a date from a string with a custom defined format (#62) (Dominik)
449ADD: Methods to retrieve locale timezone information (#62) (Dominik)
450ADD: Allow setting of connection options or attributes in the pdo database handler (David, Dominik)
451ADD: Add a CachingExecutionFilter (#78) (david)
452
453CHG: Ignore "Content-Type" parameter in output types and use values in generic "http_headers" parameter instead (#413) (David)
454CHG: Move error information into containers (#406) (David)
455CHG: Make validators use the same initialition strategy as the rest of the framework (#403) (Dominik)
456CHG: Dropped XslRenderer (#400) (Noah Fontes)
457CHG: Move AgaviUser initialization location and add a startup() method (#398) (David)
458CHG: Use libxml error handling for XML parsing and FPF (#396) (David)
459CHG: Remove 0.9.0 backwards compatibility in PropelDatabase (#392) (David)
460CHG: Make uploaded file handling really painless (#391) (David)
461CHG: Introduce RequestDataHolder (#389) (David, Dominik)
462CHG: Make sources for server name etc configurable in WebRequest (#388) (David)
463CHG: Renamed date validator to datetime validator (#385) (Dominik)
464CHG: Renamed AgaviValidatorManager in AgaviValidationManager (#384) (Dominik)
465CHG: Get rid of rendering filters (#377) (David)
466CHG: Remodel execution flow (#373) (David)
467CHG: Allow setting max forwards of the controller to '0' (#373) (David)
468CHG: Fix some of the borderline inoperable ugliness of the validation system (#367) (Dominik)
469CHG: Remove validatormanager argument from Action::registerValidators() (#360) (Dominik)
470CHG: Improve validators (#359) (Dominik)
471CHG: Renamed 'type' attribute for translators and formatters to 'class' (#62) (David)
472CHG: Allow pluralized parent tags to be omitted in most places in the configuration files. (Dominik)
473
474FIX: Orphan trailing & in URLs messes up routing base href detection when rewritten (#409) (David)
475FIX: Error information is lost as soon as slots are run (#405) (David)
476FIX: AgaviUploadedFile::move() creates world writeable files and directories by default (#402) (David)
477FIX: AgaviDecimalFormatter strips sign of number to format (#399) (Dominik)
478FIX: AgaviPdoSessionStorage corrupts session's data if it includes special characters (#397) (Veikko)
479FIX: Add compile.xml contents to autoload.xml (#390) (Veikko)
480FIX: AgaviCompileConfigHandler::formatFile doesn't handle files with special characters (#394) (Veikko)
481FIX: URLs relative to the base href are not matched by the form population filter (#387) (David)
482FIX: Base Href and Base Url not available from WebRouting with routing disabled (#386) (David)
483FIX: Exception is raised when no logger called "default" is configured (#371) (David)
484FIX: Fix validators not inheriting the severity of their parent (#269) (Dominik)
485FIX: Same logging appenders are shut down multiple times if used by multiple loggers (#366) (David)
486FIX: WebRouting::gen() does not accept arrays as query string arguments (#365) (David)
487FIX: Argument skipping by supplying null yields a question mark at the end of the URL (#364) (David)
488FIX: The h and k hour pattern are wrongly implemented in date formatting (#363) (Dominik)
489FIX: A validator using the argument base fails for multiple arguments the last error will overwrite all previous ones (#362) (Dominik)
490FIX: Setting the base for arguments in file validators doesn't work (#361) (Dominik)
491FIX: Routing w/o rewrite borked when path contains a space character (#355) (David)
492FIX: Fixes to the date formatter (#62) (Dominik)
493FIX: Fixed Form Population Filter for radiobuttons, fields containing [] (#327) (David)
494
495
4960.11.0 RC1 (November 13, 2006)
497------------------------------
498
499ADD: Add a PdoSessionStorage (#354) (Dominik)
500ADD: Allow the default logger to have a different name then default (#351) (Dominik)
501ADD: Make app dir name and template extension configurable for agavi cmdline script (#348) (Veikko)
502ADD: Add Controller, Request, Response and Routing for handling RESTful requests (#332) (David)
503ADD: Add RBAC User implementation (#320) (David)
504ADD: Allow passing of additional request params to slots (#318) (David)
505ADD: Add methods to retrieve View name and View's module name from ActionStackEntry (#317) (David)
506ADD: Add support for PHP 5.2 httpOnly cookie flag (#314) (David)
507ADD: Make creation of "run once" action and rendering filters easier (#307) (David)
508ADD: Add Controller, Request, Response and Routing for handling XMLRPC requests (#302) (David)
509ADD: Add a RotatingFileAppender (#294) (Veikko)
510ADD: Add an option that stores slots in a separate variable (#282) (David)
511ADD: Add support for IndexAction auto-discovery in sub-actions (#279) (David)
512ADD: WebRequest is missing hasCookie() method (#257) (David)
513ADD: Add a Response class (#187) (David)
514ADD: Make as many configuration files optional as possible (#165) (David)
515ADD: CompileConfigHandler needs optional "debug" mode (#147) (David)
516ADD: Add support for Output Types (#141) (David)
517ADD: Implement support for system configuration files (#130) (Dominik, David)
518ADD: Add getAttributes() method to User (#114) (David)
519ADD: Add namespaces support to Request attributes (#104) (David)
520ADD: Add Storage::startup() (#101) (Veikko, David)
521ADD: Add a PHPTALView (#98) (David)
522ADD: agavi project should create default error actions and set the correct modules in settings.xml (#89) (Veikko)
523ADD: Add option for persistent connections in PDODatabase class (#87) (David)
524ADD: Form validation and re-population filter (#79, #284, #327) (David)
525ADD: Introduce build.properties (#77) (David)
526ADD: Pluggable LoggerManager and ValidatorManager (#76) (David)
527ADD: Allow per-context/per-environment configurations (#72) (David, Dominik)
528ADD: Implement support for per-module autoload.xml (#71) (David)
529ADD: Write tests for new features, more tests for everything, PHPUnit2(+3?) (#65) (Dominik, David)
530ADD: i18n & l10n (#62, #335) (Dominik, David)
531ADD: Routes / Paths / Trails / Yipee more elegant/flexible URL handling (#52, #247, #280) (David, Dominik, Veikko)
532ADD: Module Based Custom Build Templates (#42) (Benjamin Muskalla, David)
533
534CHG: Bump minimum required PHP version to 5.1 (#329) (David)
535CHG: Consider renaming logging classes (#323) (Veikko)
536CHG: Ditch View::executeContextname() support and add executeOutputtypename() support instead (#321) (David)
537CHG: Add "literal" argument to View::set(Decorator)Template() (#315) (David)
538CHG: Throw out Request::extractParameters() (#309) (David)
539CHG: Change the way forwards are done by users (#306) (David)
540CHG: Change ActionStackEntry to use a float for the microtime (#300) (David)
541CHG: Move autoloading to a separate method and use either __autoload() or spl_autoload_register() (#299) (David)
542CHG: Rename "webapp" and "www" folders to something more generic (#298) (David)
543CHG: Loggin priority constants should be powers of two and logging priority should be defined as a bitmask (#296) (Veikko)
544CHG: Pass cleaned and validated request parameters to Action::execute() (#281) (David)
545CHG: Rewrite Validators (#75, #91, #102, #269, #276) (Uwe Mesecke, Dominik)
546CHG: Move global models dir to webapp/models (#267) (David)
547CHG: Rename BasicSecurityUser and BasicSecurityFilter (#256) (David)
548CHG: Make SecurityFilter an interface (#255) (David)
549CHG: SecurityUser should be an interface (#253) (David)
550CHG: Move shutdown procedure to Context (#182) (David)
551CHG: Harmonize template variable names, add name and extracting support to all Renderers (#180) (David)
552CHG: Rename AgaviHTTPSRequest to AgaviSecureWebRequest (#166) (David)
553CHG: Cleanup redundant files (#162) (David)
554CHG: Repeatedly used classes lack parameter support (#160) (David)
555CHG: Database Connections must be unique per Context (#159) (David)
556CHG: Standardize initialize() methods (#157) (David)
557CHG: clean up new Foo() vs Foo::newInstance($blah) mess (#156) (David)
558CHG: Clean up Context and Controller (#155) (David)
559CHG: Settle on an approach for handling Filter instances (#154) (David)
560CHG: Rewrite Model support (#153) (David)
561CHG: Rename (Action|User)::(get|has)Credential to (Action|User)::(get|has)Credentials (#152) (David)
562CHG: Remove Controller::inCLI() (#151) (David)
563CHG: Throw out ShutdownListeners (#149) (David)
564CHG: Abstract Request Methods and make their handling in Actions more intuitive (#148) (David)
565CHG: Improve exception output (#95, #146) (David)
566CHG: Standardize Controller::dispatch() signature and drop Front/Page Web Controllers (#143) (David)
567CHG: Rework Filter support (#142, #254) (David)
568CHG: Make all classes properly CamelCased (#140) (David)
569CHG: Decouple rendering from Views (#139, #179) (David)
570CHG: PHPDoc comments are here and there poorly formated (#137) (Veikko)
571CHG: Introduce a "registry" class to get rid of all those constants (#129) (David)
572CHG: Add support for environments and change the job of contexts (#128) (David)
573CHG: restructure config handling (#70, #124, #125, #271, #292, #322) (David, Dominik)
574CHG: Change bookstrapping method (#122) (David)
575CHG: Switch to PHPUnit2 (#121) (Dominik)
576CHG: Change default attribute namespaces so they use dots instead of slashes (#115) (David)
577CHG: Change Request::getAttribute() argument order to be consistent with User's (#113) (David)
578CHG: Consider moving attributes/namespaces functionality into a separate class (#111) (David)
579CHG: Add "agavi" package phpdoc comments to all files in src/buildtools/ (#108) (David)
580CHG: Make private class members protected where feasible (#107) (Veikko)
581CHG: webapp/cache folder should use subdirs (#106) (David)
582CHG: Move setCookie from WebRequest to WebController and add setContentType() and setHeader() methods (#103) (David)
583CHG: Support Creole's (and thus Propel's) trimming / case sensitivity change (#88) (David)
584CHG: Remove AgaviObject (#85) (David)
585CHG: Remove FormPHPView (#84) (David)
586CHG: Remove ConversionPattern (#83) (David)
587CHG: Remove MailAppender (#82) (David)
588CHG: Check if we can allow switching contexts at runtime (#74) (David)
589CHG: Rename all classes to have an "Agavi" prefix (#41) (Dominik)
590CHG: Make the framework E_STRICT compliant and remove all those "&"s (#34) (David)
591
592FIX: use of unititalized variable in AgaviWebRequest::getFileError() (#305) (David)
593FIX: Logging layouts need context and they need to be initialized even if there are no parameters (#297) (Veikko)
594FIX: Appender needs context and needs to be initialized even if there are no parameters (#295) (Veikko)
595FIX: Controller::getView() should throw an Exception if View is ultimately not found  closed (#268) (David)
596FIX: User must be available even with security disabled (#261) (David)
597FIX: Controller::getAction() should throw an Exception if Action is ultimately not found (#252) (David)
598FIX: Return subaction view with array syntax (#176) (David)
599FIX: Database instances need to know their DatabaseManager (#158) (David)
600FIX: What the hell is session_write_close() doing in Controller::shutdown() (#150) (David)
601FIX: CompileConfigHandler is too greedy (#127) (Blake Matheny)
602FIX: SmartyView::setAttributesByRef is broken (#126) (Veikko)
603FIX: creole session storage is missing a throw in sessionwrite (#120) (Dominik)
604FIX: Request::removeError shouldn't return by reference (#110) (David)
605FIX: Some @since comments say "2.0.0" (#109) (David)
606FIX: DatabaseManager doesn't know the context (#100) (David)
607FIX: Template collisions with SmartyView (#97) (David)
608FIX: The SmartyView should include Smarty.class.php in a more "correct" way. (#92) (Veikko)
609FIX: agavi script doens't work on Solaris (#90) (David)
610FIX: Some tests will not work on windows (#64) (David)
611FIX: Building many modules/actions etc. will make agavi run out of memory (#35) (David)
612
613
6140.10.2 (February 27, 2006)
615--------------------------
616
617CHG: Changed to new PEAR package task, package.xml v2 format, using PEAR channel pear.agavi.org (David)
618CHG: Declared API stability alpha (David)
619FIX: Fixed PHP 5.0.5 / 5.1 return by reference problem in logging/PassthruLayout (Markus Lervik, David)
620FIX: Fixed incorrect Phing dependendy (David)
621
622
6230.10.1 (January 6, 2006)
624------------------------
625
626FIX: Fixed critical bug that prevented parameters to be passed in config_handlers.ini
627
628
6290.10.0 (December 20, 2005)
630--------------------------
631
632CHG: Updated TODO
633CHG: Bumped Version Numbers
634FIX: ReturnArrayConfigHandler did not convert foo.bar.baz keys into multi-dimensional arrays
635FIX: RELEASE_NOTES and INSTALL were missing in AgaviPackageTask
636
637
6380.10.0 RC1 (December 16, 2005)
639------------------------------
640
641ADD: ShutdownListener support (Veikko)
642ADD: Cookie support for WebRequest (Veikko)
643ADD: Session Cookie parameter support (Veikko)
644ADD: CreoleSessionStorage (Veikko)
645ADD: HTTPSRequest (Markus Lervik, David)
646ADD: XSLView (Wes Hays)
647ADD: AdoDBDatabase (Steven Weiss, David)
648ADD: Sub-actions support for "agavi" helper script (David)
649ADD: code_templates have Template templates (David)
650ADD: Multiple credentials support (David)
651ADD: Support for setting session ID in SessionStorage (Mike)
652ADD: Constants support for config files (Bob, Johan)
653ADD: Logging functionality (Bob)
654ADD: WEBAPP_NAME setting in settings.ini (Mike)
655ADD: Request::getAttributes() (Bob)
656ADD: Auto-detection of modules for "agavi" helper script when executed inside or below a module's dir.
657ADD: ReturnArrayConfigHandler (David, Mike)
658ADD: Support for custom ExecutionFilters (David)
659ADD: Support for Singleton Models (David)
660ADD: FormPHPView (xardion)
661ADD: ValidatorManager, DateValidator (Graeme Foster, Mike)
662ADD: Test directory structure and stubs are auto-created when using the "agavi" helper script to add stuff.
663ADD: Advanced Propel integration via PropelAutoload, PropelDatabase still backwards compatible to old method (David)
664ADD: appendAttribute() methods for Request, User and View (Bob)
665CHG: Unified parameter names for database users to "username" everywhere (Veikko, David)
666CHG: Beefed up NumberValidator with min/max and integer support (Veikko)
667CHG: All AG_* configuration directives except AG_WEBAPP_DIR are optional (David)
668CHG: AG_WEBAPP_DIR and AG_APP_DIR will be auto-determined if possible (David)
669CHG: Action and View class names can now also be like Module_Some_Sub_MarineAction (and also Some_Sub_MarineAction)
670CHG: Config Handlers will throw UnreadableExceptions when appropriate (David)
671CHG: Added some helper methods and changed visibility of some methods in Views to allow for more control in ExecutionFilters (David)
672CHG: SmartyView uses the SMARTY_CACHE_DIR setting if set, AG_CACHE_DIR otherwise.
673CHG: Realigns configuration away from configuring controllers to configuring contexts (Mike)
674CHG: autoload.ini handling changed to support include_path (Bob)
675CHG: Autoload support for Controller::getGlobalModel() (Mike)
676CHG: Refactored helper script (Mike)
677CHG: Reworked Test infrastructure (Mike)
678CHG: Improved, changed and refactored many, many tests and the intrastructure for tests; "agavi test" runs tests (Mike)
679FIX: PHP 5.1 compatibility for ConfigCache::getCacheName() (Markus Lervik, David)
680FIX: Re-wrote broken directory and module recognition routines in AgaviFixPathsTask, fixed "agavi model" to work correctly (David, Miroslaw Wrobel)
681FIX: __autoload() won't throw exceptions anymore (Veikko)
682FIX: Plain text formating for AgaviException::printStackTrace (Veikko)
683FIX: Autostart sessions only after all initializations have finished (Veikko)
684FIX: Action::validate() to be called even when a ini validation criteria failed (David, Steven Weiss)
685FIX: Support for username and password in PDODatabase (David, Benjamin Muskalla)
686FIX: PHP 5.1.0 Compatibility for PDODatabase (David)
687FIX: Strict comparison for credentials (David)
688FIX: Avoid notices in ValidatorManager (Bob)
689FIX: Request::extractParameters() returns null for non-existent parameters (Mike)
690FIX: Set a default if calling agavi action from inside a module's dir or subdirs (Mike)
691FIX: Windows support for helper script (David)
692FIX: Use proper type "::" or "->" in stack trace (David)
693
694
6950.9.0 (June 8, 2005)
696--------------------
697
698- Initial Release
Note: See TracBrowser for help on using the browser.