Skip to content

Changelog v1.6

Harro Verton edited this page May 3, 2013 · 19 revisions

This keeps track of important changes to the 1.x branch. Important changes that need extra attention when releasing v1.6. Besides these changes there were lots of bug fixes and core and speed improvements.

When you decide to upgrade to a new version, pay attention to the changes documented in this changelog, and the upgrade procedures documented.

Important fixes, changes, notes. Read them carefully.

  • This release officially introduces Composer to FuelPHP. You will have to install it, and run a 'php composer.phar update' to pull in any required packages. Without this step, 1.6 WILL NOT WORK!!!
  • Class names in the Auth package have been modified to match FuelPHP coding standards. Check your configuration ('SimpleAuth' is now 'Simpleauth'!) and any class extensions you have made.
  • The Log functionality has been moved back in the core. If you are upgrading from 1.5, please remove the old 'Log' package from the always_load section in your config.php, and remove the package from the packages folder.
  • The environment 'stage' has been renamed to 'staging', the corresponding constant to Fuel::STAGING.
  • You now get a proper error message if your PHP timezone settings are not correctly configured.
  • You now get a proper error message if there is an issue with rights to the log file.
  • All code that creates files or directories has been rewritten to properly set the configured permission mask without using umask(), which is not thread-safe.

Backward compability notes

  • The names of the Auth classes have been changed to comply with FuelPHP coding standards (Auth_Login_Simpleauth instead of Auth_Login_SimpleAuth), this can cause a class-not-found error if you have extended an Auth class in your application.
  • The ORM validation_observer now has multiple events. Do not define it without specifying which events to call, as it would cause validation to be called twice!
  • The Orm behaviour with regards to relation assignments has been changed. Now, when you do an unset(), a set to NULL or array(), or you assign a new value, the previous relation will be unset. Regardless of whether you had fetched that relation or not. This might impact your application if you have used this 'bug' as a shortcut to adding additional objects to an existing relation!

Removed code (because it was deprecated in v1.5 or earlier)

  • Orm: find() and find(null) functionality is now removed. Use query() instead.

Code deprecated in v1.6 (to be removed in the next release)

  • ViewModel: when determining the name of the ViewModel class to load, it will search for classes with and without the 'View_' prefix. This behaviour is deprecated, as of the next release ViewModel classes MUST be in classes/view, and MUST be prefixed with 'View_'.

Security related

  • The default security filters have been removed from the core configuration, to allow you to define your own security filters. Note: if you're migration from previous versions and relied on this default config, make sure your app config file has the default security filters defined!

System changes

  • The Markdown library has been upgraded to 1.2.6.
  • The cache option in the global configuration now correctly caches finder paths to speedup file lookups.
  • Controller methods can now return 'false' or 'array()' as valid values, for use in HMVC requests.
  • Exceptions in shutdown event are now properly caught and handled.

Specific classes

  • Agent: will now re-use an expired download if a new browscap file could not be downloaded.
  • Arr: New search method allows you to search for values in array structures, and get the (dot-notated) key returned.
  • Arr: New unique method allows you to de-dup an array. Like array_unique(), but this one supports objects and closures, and doesn't sort the source array first.
  • Arr: New sum method allows you to sum up specific values in a multi-dimensional array structure.
  • Asset: now generates the correct Asset URL when using a CDN.
  • Controller_Rest: now allows auth checks using a controller method (avoids before() or router() hacks).
  • DB: new identifier method allows you to properly quote an identifier for use in custom queries.
  • DB: the Database_Transaction class that was already deprecated in v1.2 has been removed. All drivers support transactions natively.
  • DButil: now supports the keyword "PRIMARY KEY" on field updates.
  • Cache: index mechanism has been refactored. Dependency checking now works properly when using APC, Memcached or Redis backends.
  • Error: a new configuration option allows you to render already generated output to be shown in error messages via the 'prior output' link, instead of the HTML.
  • File: create_dir method now works properly on Windows.
  • Form: select now doesn't use inline css to generate optgroups unless needed.
  • Fieldset: fixed generation of invalid labels.
  • Html: anchor method now generates URL's without a trailing slash.
  • Input: uri method now works properly on Windows.
  • Lang: delete method now works properly when passing a $group value.
  • Pagination: now generates the last link correctly.
  • Profiler: DB query profiling now includes a stack trace for every query to make it easier to find it in your code.
  • Router: now supports protocol specific routes (http/https) in verb based route notation.
  • Upload: has been rewritten to use the FuelPHP v2 composer library.
  • Viewmodel: now calls before before rendering the view, instead of when constructing the object.
  • Viewmodel: ViewModel class name is now correctly determined from the passed view name.
  • Viewmodel: Will now look in the global namespace for the ViewModel class if called from a module and not found in the module namespace.

Packages

  • Auth: Class names have been modified to match FuelPHP coding standards.
  • Auth: update_user now verifies if the new email address is unique before updating it.
  • Auth: Number of PBKDF2 iterations can now be configured in the auth config file.
  • Auth: Multiple concurrent user logins can now be configured through the driver configuration file.
  • Auth: Auth login drivers now set 'updated_at' correctly.
  • Auth: new get method allows unified access to all user properties.
  • Auth: new groups method which returns the list of all defined groups.
  • Auth: new roles method which returns the list of all defined roles.
  • Auth: new 'Ormauth' driver set that uses the database through ORM as datastore.
  • Auth: Package now contains migrations for both Simpleauth and Ormauth.
  • Auth: New 'Simple2Orm' task can migrate your existing Simpleauth config to Ormauth.
  • Email: Attachments can now be named.
  • Log: The Log package, introduced in 1.5 as a temporary solution, has been removed again.
  • Oil: Fixed redirect loop in the generated admin backend code.
  • Oil: Improved exception handling and reporting.
  • Oil: Added support for ORM soft-delete models.
  • Oil: Modified the scaffolding templates to work better with bootstrap.
  • Oil: New commandline options for PHPunit allow for more granular testing and logging.
  • Orm: Validation observer now supports 'before_insert' and 'before_update'.
  • Orm: Now correctly resets foreign keys if cascade_delete is false.
  • Orm: Added view support to count(), min() and max() queries.
  • Orm: min() and max() now return integers instead of strings.
  • Orm: Added temporal support (data versioning).
  • Orm: You can now test for existence of EAV attributes using isset().
  • Orm: Validation observer can now validate on insert and update too.
  • Orm: It is now allowed for models to have a FK as part of the PK.
  • Orm: You can now order a many_many result on an attribute in the through table.
  • Orm: You can now pass custom (non-column) data when forging a new model object.
  • Orm: Current relations are now properly unset when using unset() or a new assignment.
  • Orm: from_array now returns $this so you can chain on it.
  • Orm: from_array now allows you to load custom data.
  • Orm: from_array now allows you to load related objects from a multidimensional array.
  • Orm: Several speed improvements in Observer_Typing.
  • Orm: Observer_Typing float conversions are now locale aware.
  • Orm: Observer_Typing now uses property defaults on null values if defined.
  • Orm: Observer_Typing can now handle MySQL '0000-00-00 00:00:00' datetime values.
  • Orm: new from_cache method allows you to enable/disable object caching on a query.
  • Orm: 'join on' now works correctly as documented.
  • Orm: 'order_by' now works correctly when a subquery is generated.
  • Orm: is_changed now does loose-typing, so 1 => '1' doesn't trigger an update query anymore.
  • Parser: Added support for mthaml (HamlTwig)
  • Parser: Switched to using Composer for smarty, mustache, mthaml and twig template engines.
  • Parser: Markdown has been upgraded to 1.2.6.