Revision history for 1.11

Release 1.11 (stable) contains libraries for the use under PHP 4 and PHP 5. Please note, that two different architecture releases are delivered for PHP4 and PHP5. The version was tested with versions greater than PHP 5.2.6 and <= PHP 4.4.8. This version is approved to be installed on production environment!

All enhancements described below are only contained in the PHP5 version of this release (*-php5 files). The PHP 4 version is only a limited compatibility version that does not include the new form taglibs and the enhancement of the GenericORMapper. As of release 1.12 the PHP 4 version is no longer supporter! Thus, it is recommended to switch all PHP 4 projects to PHP 5 soon.

This release contains API changes. Hence, the article Migration from 1.10 to 1.11 concludes all necessary changes to existing applications that have to bee applied switching to this version.

Major changes to version 1.11 (stable) are:

  • Refactoring: Class MySQLHandler was removed from the release, because it was marked deprecated in 1.10. In doing so, the database abstraction components were reworked.
  • Enhancement: The database abstraction components contained in this release were enhanced with the statement logging feature. In case the optional parameter $logStatement is set to true invoking executeStatement() and executeTextStatement(), the currently executed statement is appended to a log file.
  • Bugfix 224: After refactoring of the database components, Collation and Charset were not correctly initiylized with the MySQLxHandler.
  • Bugfix 223: Due to the fact, that sub sections in configurations are not correctly analyzed by the native PHP functions, the ConfigurationManager now implements it's own array_merge() funktion.
  • Enhancement: The report generated by the BenchmarkTimer was completely reworked. Now, the HTML source code is W3C compatible and the performance of the report generation is much better. Along with these changes, an option was introduced to deactivate the benchmarker. Details can be taken from the Benchmark chapter or from the wiki page Deaktivieren BenchmarkTimer (german).
  • Enhancement: Up to now, the onParseTime() of taglibs (see taglib lifecycle) managed by the page controller was not measured. Within 1.11, this timing event was added to complete the benchmark report.
  • Refactoring: Within the refactorint tasks of the present release, xmlParser was renamed to XmlParser. This change is merely transparent to you, because only framework internal components are affected. In case you are using the class within your applications, please rename the class.
  • Enhancement: With this release, so called ”Extensions“ were added to the release of the adventure php framework. These are extensions from APF users, that want to share their work with you! More information can be taken from the wiki page Extensions (german).
  • Refactoring: The captcha module was refactored together with the adaptions necessary due to the form taglib changes. Please note, that the configuration of the module has changed. The updated documentation can be found under CAPTCHA taglib (for forms).
  • Improvement; The generic domain object of the Generic OR mapper (GenericDomainObject) was improved to be stored in sessions or other pools (e.g. memcached) as a serialized object.
  • Refactoring: The existing modules of the APF (comment, kontakt4, guestbook, ...) were adapted to the new form taglib implementation.
  • Enhancement: While publication of two articles for the PHP Journal the new guestbook module (guestbook2009) was added to the release. A detailed description can be found within the articles Objektorientiertes Design eines Gästebuchs (german) and Objektorientierte Implementierung eines Gästebuchs (german).
  • Bugfix 202: Changes to the umgtManager caused the component to only hash passwords for newly created user. This issue discussed under Speichern von userobject -> passwort falsch is now solved.
  • Enhancement: As described within the roadmap (german), an update tool for the Generic OR mapper was introduced. It allows you to update a database created with the setup tool of the generic or mapper in cases, your configuration has changed for some purpose. For this reason, the documentation was added the chapter Generic O/R mapper - database update.
  • Improvement: While enhancon the database components as desribed above, the generic or mapper was added a debug option. Now, the optional parameter $logStatements can be set to true invoking getGenericORMapper(). This causes all statements to be written into a debug log. Details can be taken from the chapter Generic OR mapper.
  • Enhancement: As of release 1.11, each object stored by the generic or mapper can directly be reused as fully qualified domain object. This is because the mapper now injects the current mapper instance as well as the database of the object. Details on the feature request can be read about in the forum post Erweiterung GORM (Release 1.11) (german).
  • Refactoring: The HTML markup and the CSS formatting of the contact form module were completely reworked. This means, that the file contact.css located under /modules/kontakt4/pres/css/ must be added to the head of your webpage, using the module. The markup now contains a variety of classes, that can be used to address layout adaptions. Please have a look at the notes on Contact form for details on the markup.
  • Enhancement: Added text_id and image_id to be able to define a custom HTML ID for both the captcha image and the text field of the CAPTCHA taglib (for forms). This is necessary for labeling the text field. Originally needed by the contact form module!
  • Enhancement: Added disable_inline attribute to the CAPTCHA taglib (for forms) to be able to disable the inline styles reponsible for positioning. If disables, custom styles must be defined to display the captcha image and the text field within one line.
  • PHP 5.3-Bugfix: The deprecated function split() was replaced by explode() within the <form:date /> taglib. Details can be taken from the forum thread Form-date taglib -> split() (german).
  • Bugfix/Improvement: The generic or mapper now escapes all object properties before saving them to database. This was introduced to avoid statement errors with reserved characters and to have stronger security. Details can be taken from the forum thread Sicherheit des GORM (german).
  • Enhancement: As discussed under Fehler mit BIT-Feldern (german), the generic or mapper (GORM) did not support BIT fields up to release 1.11. Due to the fact, that BIT field values must be prefixed by "b", the GORM was now added support for BIT field values. A field is now reconized as BIT field, if the data type definition contains the keyword "BIT".
  • Refactoring: In the course of the 1.11 core optimization the linkHandler was renamed to LinkHandler and frontcontrollerLinkHandler to FrontcontrollerLinkHandler. Migrating to release 1.11, occurrences within existing code must renamed.
  • Refactoring: One of the big parts of the release was the refactoring of the form taglib implementation. What is new can be read about in chapter Forms (as of release 1.11). Notes on the migration to the new form tags can be taken from Migration from 1.10 to 1.11.
  • Bugfix 185: Concerning the report, the transformation bug of the iterator tag was not solved correctly. This was done away with in release 1.11.
  • Refactoring: myValidator was renamed to Validator and is not relevant for form validation as of the form taglib refactoring.
  • Improvement: The CacheManagerFabric was changed to support object creation using the DIServiceManager.
  • Improvement: The call to trigger_error() was removed from the LinkHandler::generateLink() method to avoid program interruptions due to empty base url. In case of empty urls default initialization is done now.
  • Enhancement: The iterator tag was added new sub taglibs to ease development. Details on the discussion can be taken from the documentation of the forum thread item:addtaglib & item:getstring (Release 1.11) (german).
Files with names like apf-codepack-* only contain the framework libraries, files with names like apf-demopack-* the framework libraries plus a demo application and the documentation site. For beginners it is recommended to download the demo packages. Release files with a name like apf-configpack-* contain a set of example configuration files. There, you can read some more hints on the configuration of the tools and applications. As of release 1.8-RC1 the apf-perfcodepack-* release is included. This package contains php files, that are free of comments and whitspaces and help you to gain performance on hosting environments having no byte-code-caching configured. Since version 1.10 the offline documentation is delivered in three different archive types. CHM files are no longer included.