The CakePHP core team is proud to announce the immediate availability of
both CakePHP 2.1.2 [1], and 2.2.0-beta [2]. 2.1.2 is a bugfix release for
the 2.1.x branch, while 2.2.0-beta is the first release for 2.2.x.
## CakePHP 2.1.2 ##
There are a number of bugfixes in 2.1.2, the most notable of those changes
is:
* `Set::insert()` now overwrites values that were previously string values.
* AuthComponent now uses `loginRedirect` as the default redirect location,
should the session be empty.
* `CakeNumber::format()` now supports multiple bytes for thousands/decimals
when using PHP lower than PHP 5.4
* A change to CakeSession was reverted to help solve issues with IE8 and
sessions being lost.
* Fixed an issue with SQLServer + boolean columns.
* `DboSource::buildJoinStatement()` does not add the schema when the table
is a subquery.
* SessionComponent::id() always returns the sessionid. It will auto-start
the session if necessary.
* Method checking in Model for `expression()` and `calculate()` is only
done when required now.
* The testsuite now always uses the `test` datasource. Previously, if you
did not include any fixtures and ran tests that required the database, the
default connection was used.
* URL fragments are no longer urlencoded. This caused issues with client
side frameworks like backbone.
* The return of L10n::get() consistently returns the language.
* HTML escaping for string urls on `css()` and `script()` was fixed.
* Warnings from saveAll() with an empty hasMany data set are fixed.
* Validation::decimal() accepts values like `10` and `10.0`.
* FormHelper::postButton() no longer makes invisible buttons.
* The `$_FILES` array is now recursively reformatted. This fixes issues
when file inputs are deeply nested.
* EmailComponent no longer double encodes addresses containing UTF-8
characters.
* `File::create()` no longer juggles umask. This was a workaround for file
caching which is no longer needed.
## CakePHP 2.2.0-beta ##
Following hot on the heels of 2.1.0, the CakePHP team is proud to announce
the beta release for 2.2.0. 2.2.x will be an API compatible release with
2.0.x, and 2.1.x. All of the changes mentioned in the 2.1.2 release, are
also be present in 2.2.0-beta. We've decided to skip the standard `-dev`
and `-alpha` releases, as we think the new features are relatively stable,
and should be generally transparent when upgrading. A quick list of new
features added in 2.2.0-beta:
### Timezone support for CakeTime utility
* Added "Config.timezone" param to configure global timezone for the
application.
* CakeTime functions can now use timezone string or DateTimeZone object for
user offsets
* The $userOffset parameter has been replaced with $timezone parameter in
all relevant functions.
* Passing numeric offsets for $timezone parameter is still possible for
backwards compatibility.
* New methods added: `CakeTime::toServer()` and CakeTime::timezone()`
### Support pagination for complex custom finders
Model `findCount()` will now pass `$query['operation'] = 'count'` for more
flexibility.
In many cases custom finds already return correct counts for pagination,
but 'operation' key allows more flexibility to build other queries, or drop
joins which are required for the custom finder itself. As the pagination of
custom find methods never worked quite well it required workarounds for
this in the model level, which are now no longer needed
### ACL methods now part of Permission model
Now the Permission model has available all methods exposed in the
AclComponent for easier permissions check
in the model layer.
### New Hash class
A new utility library `Hash` was added. It is intended as a replacement for
the Set class featuring improved performance, and a more consistent API.
All internal
calls to Set were replaced and Set has been deprecated and will be removed
in the next major version.
Also added were Set::expand() and Hash::expand() to convert a plain list of
dot separated keys into a nested array.
### Helper Lazy Loading
Helpers located in the app folder can now be lazy loaded, there is no need
to declare helpers anymore in the `$helpers` controller
property if they are located in the app folder and you do not rely on them
triggering any callback.
### Redis cache engine
A new cache engine was added to interface with a Redis server, which is
similar to Memcache
### Cache groups
It is now possible to tag or label cache keys under groups. This makes it
simpler to mass-delete cache entries associated to the same label. Groups
are declared at configuration time when creating the cache engine
### Fatal error & console error handlers
You can now configure separate error handlers for console and fatal errors.
If you leave these configurations undefined the defaults will be used.
If you are using a custom error handler, it will now receive fatal error
codes, in addition to the other types.
### Nested transaction support
Dbo datasources now supports real nested transactions. If you need to use
this feature in your application, enable it using
ConnectionManager::getDataSource('default')->useNestedTransactions = true;
### Dispatcher filters
Event listeners can now be attached to the dispatcher calls, those will
have the ability to change the request information or the response before
it is sent to the client.
`app/Config/bootstrap.php` should be changed to add configuration related
to Dispatcher filters. If your application relies on assets in themes or
plugins being dispatched, or if your are using the full page caching
feature you *must* copy the relevant configuration to your bootstrap file.
You need to add the following:
<?php
Configure::write('Dispatcher.filters', array(
'AssetDispatcher',
'CacheDispatcher'
));
Additionally, the new AssetDispatcher filter will return a 304 code if it
can detect the browser has the asset cached already
### Other Changes
* Add charset() / headerCharset() methods to CakeEmail class
* Travis CI support
* Added support for 'on' validation key in FormHelper. This will set the
required class accordingly depending on the type of operation (create or
update)
Following the beta of 2.2.0, the core team will be focusing on solidifying
2.2.x towards a final release, and beginning inital work on the next
release of CakePHP.
As always, thanks to the friendly CakePHP community for the patches,
documentation changes and new tickets. Without you there would be no
CakePHP!
--
Our newest site for the community: CakePHP Video Tutorials
http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others
with their CakePHP related questions.
To unsubscribe from this group, send email to
[email protected] For more options, visit this group at
http://groups.google.com/group/cake-php