· CakePHP 1.2.12, 1.3.16, 2.2.8 and 2.3.4 have just been released to fix a critical issue with how pagination & PaginatorComponent handle sort criteria.
· Allowing behaviors' beforeSave callback to change the datasource to be used for the actual save.
· Fixing bug in FormHelper where the incorrect meridian would be selected for time fields.
· Solved issues with models not being added when $uses = true.
· Fixed condition parsing in mysql specific cases.
· Added support for key => value cookies in HttpSocket.
· Preventing "maxlength" attribute input element of type "number".
· Fixed incorrect timestamp values when using CakeTime::fromString()
· The ServerShell now correctly handles plugin and theme assets.
· FormHelper::inputs() now correctly handles plugin models.
· Backwards compatibility for HABTM checkboxes has been improved.
· Schema generation works better with SQLServer now.
· Baking models better detects has and belongs to many associations.
· Security::rijndael() now correctly generates random iv values. It will continue to decrypt values encrypted with a fixed iv. This improves security of encrypted values, by preventing dictionary attacks on the key/value.
· Altering tables with Postgres properly renames fields now.
· Regular expression operators are better supported in Postgres.
· Fatal errors now display when gzip encoding is enabled.
· Security fix: CakePHP 2.1.5 and 2.2.1 have just been released. If using CakePHP's `Xml` class, the user should upgrade as soon as possible.
· Dispatcher filters, a lightweight way of attaching callbacks as middleware to the dispatcher lifecycle for easier caching or faster action responses.
· New rich api for creating and removing validation rules on the fly for models
· Seamless pagination for custom find types
· Support for real nested database transactions
· Cache groups, a nice way for tagging and mass deleting cache entries using such tags
· Improved logging support, several new utility methods were added to CakeLog
· Configure class can now dump stored values into any persistent storage
· AuthComponent now accepts contain as a key for storing extra user information in session
· Several improvements to CakeEmail, such as custom header charset, custom themes, setting links domain and custom helpers defined at configuration time
· ControllerTestCase no longer overwrites GET/POST when simulating requests.
· Xml::fromArray() now properly handles out of sequence numeric keys.
· TranslateBehavior and Model::saveAll() now correctly save translations in hasMany associations.
· Router::queryString() now correctly handles appending to existing querystrings.
· Model::saveMany(), saveAssociated() correctly save data that was modified in a beforeValidate() callback.
· View now correctly re-uses the Controller event manager instance.
· 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 but
· Updated the .htaccess files, make sure you update them in you apps as well.
· Set::sort() now correctly sorts when using {s}.path
· Fixed Session.cookieTimeout default behavior
· Made Validation class more strict when checking values in list.
· Used urldecode trailing pass arguments in the URL
· Added missing 'recursive' option to DigestAuthenticate object.
· Updated minimum PHP version requirement to 5.2.8 due to PHP bugs #44251 and #45748
· Paginator helper now accepts an option to set the default class for the "current" page link
· Extending non-existing views will throw an exception
· Extending views using an absolute path (relative to the View folder) is now possible
· Most view files in the cake core such as home.ctp and the default layout were moved into the app folder.
· Query params are now shown in database log when using prepared statements
· Transaction commands (BEGIN, COMMIT, ROLLBACK) are now shown in database log
· Added Set::nest() and Set::get(). The former is used to created a nested array out of a plain one using an array key as reference. Set::get() is used to access any array value using dot notation.
· Added Router::defaultRouteClass() to get/set the default Route class. This makes it easy to set a global default, useful for slug routes or i18n.
· Fix reset() missing delivery property.
· Fix incorrect doc block.
· Added decoding of keys for named parameters
· Added test for check nested url
· Fix issue where session would always be regenerated.
· Fixing API docblock
· Fixed bug in CacheHelper where PluginAppController was not being loaded
· Fix correct node lookup when authorize object uses plugin userModel setting, fixes #2464
· Updating minimum PHP version requirement to 5.2.8 due to PHP bugs #44251 and #45748. Closes #2509
· Wrap aliases containing , in ""
· Add test for saveField() + foreign key.
· Fix indentation.
· Fix issues with sparse arrays in ThemeView.
· Remove incorrect parameter in HtmlHelper::script docblock example
· Set encoding in CSS file.
· Preventing datasource creationa and access on models having $useTable = false;
· Add note about PHP's include_path.
· Merge changes from hmic/CakeEmail-2.0
· Set correct default validate option, now matches saveAll/saveMany default value, fixes #2492
· Merge changes from 1.3 to 2.0
· Add test for Validation::url() + sftp.
· Adding test for #GH424
· Reformat long line.
· Update Model::saveAssociated() documentation
· Test case and Fix for: Number::currency() issue
· Removed constant available only in php 5.3 and changed exception type to fix errors on php 5.2. Fixes #2487
· Prevent blackhole auth error where are present multi fields
· Simplify how options are checked.
· Fix prefix = false in connect()
· Updating test to reflect last changes made by pull #413.
· Fixes the MethodNotAllowed when deleting a model from an scaffolding view.ctp page
· Reviewing the logic in the Shell::in($prompt, $options = null, $default = null)
· Fixed broken Controller::setAction() testcase
· Testcase for Controller::setAction()
· Properly set the current action on CakeRequest when invoking Controller::setAction()
· Update UpgradeShell for App classes.
· $action in AclShell::_getParams() defaults to '*', not NULL
· Fix boundaries used in multi-part messages.
· Fixed wrong boundary marker for inline-files, inline-files should start new rel-boundaries, not (outer-)mixed-boundaries.
· Return length 36 for uuid columns in Postgres.describe()
· Replace smart quotes with ASCII equivalents.
· Add additional empty() for tablePrefix.
· Add iPad to the list of mobile clients.
· Ensure the class has a constructor
· Fix errors generated when option['order'] is undefined.
· Fix error with more case-sensitive databases.
· Fix issue with find(count) and translated conditions.
· Update version number to 2.1.0-beta
· Added default prefix to cache configurations.
· Avoiding class name conflicts
· Merging ThemeView and View class
· Set encoding in CSS file.
· Logging transaction commands in DboSource, fixes #2457
· Preventing datasource creationa and access on models having $useTable = false;
· Added validation guess for not null + text types.
· Added note about PHP's include_path.
· Merged changes from hmic/CakeEmail-2.0
· Set correct default validate option, now matches saveAll/saveMany default value, fixes #2492
· Merged changes from 1.3 to 2.0
· Added sftp to url()
· Added test for Validation::url() + sftp.
· Readability changes
· Not sending the response in beforeRender, better let Dispatcher do its work
· Adding test for #GH424
· Reformat long line.
· Update Model::saveAssociated() documentation
· Test case and Fix for: Number::currency() issue
· Fixing TMP cleanup code in FolderTest
· Removing _Token from request data.
· Fix ambiguous content types in RequestHandler.
· Adding sort on testresults, to avoid incorrect order returned by MySQL
· Update to assertEquals on Folder tests
· Adding testcase for saving habtm associations with no primary model data set
· Added test cases to include $exceptions with Folder::chmod()
· Added @link to File and Folder utilities
· Added missing @link to docs if available to helpers
· Fixed more strict errors.
· Updated test for debug
· Updated tests for debug()
· Fixed inconsistent debug parameters and empty '(line )'
· Fixing issue where changing the case for an action in the url would allow the action in the AuthComponent making it accessible to not-logged in users
· Fix issue with dots in request URLs.
· Improved API documentation
· Escape special characters in XML.
· Moving AppShell inside Console/Command for consistency with file location of other App classes. Also making all core shells and tasks extends AppShell instead of Shell.
· Preventing memory leak in PDO when retrieving results from the driver
· Fix protocol relative urls for CSS and JS files.
· Removing _Token from request data.
· Fix ambiguous content types in RequestHandler.
· Exception messages are shown instead of overridden in debug mode
· Fixes encoding issues with debug().
· Fixed typos in default css
· MimeType audio/ogg added
· Fixes UUID issue in SQLite
· Fixes issue in RequestHandlerComponent.
· Updates generated cache files to include the response object
· Returns correct byte length instead of number of characters in Content-Length
· Params in router are now correctly urlencoded/urldecoded
· Added automatic Content-Length header to hint browser of the end of the response when using persistent connections
· AuthComponent deny() when called with now parameters will deny all actions
· Prevented unneeded afterFind callback triggering on associated models
· Added Opera Mobi to mobile detectors.
· RedirectRoute will now terminate the script execution after setting the headers
· Mime type notices have been removed from the EmailComponent. They were causing deliverability issues with SQS and other email services.
· The default Email Message-ID's have been modified to increase compatibilty with spam assassin rules.
· SecurityComponent now works correctly with Model.field.1 style inputs.
· Joins in TranslateBehavior have been updated and optimized.
· Application of configuration/model prefixes has been moved into DboSource. It was previously done inconsistently. If you are using 'joins' in your queries, you should omit calling $db->fullTableName().
· Errors can now have empty messages in FormHelper.
· Incorrect formatting of floats in MySQL introduced in 1.3.12 has been fixed. There were issues with lost precision that are now resolved.
· Permission issues with FileCache introduced in 1.3.12 have been fixed.
· Ensured the stability of test cases for the CakePHP core.
· Refactored how the joins key for Model::find() is treated, this means the ability to auto add the table prefix for join tables and cleaner code.
· Making locking file caching the default. Locking files prevents many issues with unserialize() warnings caused by partially written files.
· Now custom Authorization classes can implement their own password hashing. See this article for a clear example.
· Updating version numbers.
· Adding tests for absolute urls on script elements.
· Added Bake-Banner to home.ctp for baked projects.
· Updating path constant in CodeCoverageManager to better support custom installs.
· Reversing the order fixtures are truncated in order to remove data in a way that better supports foreign keys.
· Removing redundant/always true conditions in Controller::__mergeVars.
· Fixed typo
· Closing forgotten tag.
· Fixing singularization of "curves"
· Fixing issues with ApcEngine and duration = 0 (forever) values.
· Renamed chmod to mode in the comments for function copy.
· Adding early return when connection to MySQL or MySQLi fails.
· Unnecessary str_replace
· Synchronizing home.ctp file in skel directory with the one in default app.
· Hide DB credentials
· Fixing doubly encoded action attributes in FormHelper.
· Adding a test for double escaped form URLs.
· Unnecessary line
· Fixing issue with generic.css and overlapping in view scaffolds. Thanks to 'euromark' for the patch.
· Added App::import('Model', 'ConnectionManager') to cake/libs/sanitize.php to prevent missing class errors.
· Synchronizing default css file in skel directory.
· Updating docblock for Sanitize::stripScripts()
· Add doc block for CakeSchema::_noPrefixTable
· Consolidate table prefix removal.
· Added test for datasource prefixes. Fixed another instance of error in prefix replacement in CakeSchema.
· Fixed schema reading where table name contains the datasource prefix.
· Updating the copyright to 2011.
· Fixing notice errors caused by trying to operate on keys that don't exist.
· This release contains 10 commits, and 3 bug fixes.
· An addition has been made to check for URL Rewriting capabilities on your web server, providing a helpful message with links to the CakePHP book for assistance to configure URL rewriting.
· The XML class previously incorrectly processed elements with children for slugging, this has also been fixed.
· An issue introduced in 1.3.8 that caused the -app flag to not work correctly, has been fixed.
· The MySQL driver no longer does joins on delete queries unless a join is required.
· TextHelper::autoLinkEmail() no longer creates links for email addresses missing TLD's
· CakeSocket::write() works better with lazy/slow servers.
· Fixtures are a bit more robust, and field order/missing fields do not cause spurious errors.
· Cookies are recursively deleted when a top-level key is removed.
· Xml::toArray() was updated and support for various XML formats is improved.
· MemcacheEngine now supports persistent connections correctly.
· Boolean handling for Postgres has been improved.
· Installs using the top level index.php and no url re-writing should work better now.
· DboMysqli no longer incorrectly handles socket and port options.
· Blackholes caused by defining custom name attributes on fields has been fixed.
· The %e time specifier now works on windows.
· Cake console properly runs when started in C:\ on windows.
· Actions starting with their prefix, but lacking a '_' are correctly handled now.
· Can now create submit buttons with no text.
· Usage of serialize() was removed from SecurityComponent.
· View::element() now correctly uses '.ctp' as a fallback extension.
· View variables are now passed to CacheHelper, making view caches more powerful.
· EmailComponent now registers and un-registers its view class, this fixes issues where helpers needing a view would trigger errors.
· Memcache engine now correctly stores entries with expiry dates greater than 30 days.
· Empty session ids no longer cause errors with database session storage.
· TextHelper::autoLinkEmails works with emails containing '.
· Console test suite now exits with a non zero code on test failure.
· Applying updates to skel/core.php.
· Fixed the minutes into seconds for session timeout.
· Fixing issue where value in difference array was always the string value instead of the original value.
· Removing dead code in EmailComponent.
· Applying doc block changes to app/config/core.php as well.
· Applying doc block changes from 'teknoid'.
· Adding a test for saving blank fields on a model.
· Applying patch from 'Justas Butkus' to fix CakeSchema::compare()
· Applying patch from 'Utoxin' that removes hardcoded 'app' string from Dispatcher.
· Adding a test for containable modifying return.
· A warning to inform developers about broken PCRE libs was added to the default home page.
· RequestHandlerComponent now sends content-type and encoding headers for html pages automatically.
· Writing Cache entries with duration 0, would not create non-expiring entries for memcache and apc engines.
· Table names with spaces should now work correctly.
· Compatibility with Postgres 9.0 was improved.
· MemcacheEngine now correctly works with IPv6 addresses.
· Conditions for removing <cake:nocache> tags was relaxed so they are removed even when the CacheHelper is not loaded.
· SecurityComponent and digest auth work correctly with email address usernames.
· Router now correctly handles patterns for the :action parameter.
· Schema generation for connections with prefixes was updated to omit the prefix in the schema, to avoid issues where two prefixes would be appended.
· Schema files generated for plugins now have $PluginSchema for the classname instead of AppSchema
· Route parameters with - in them should now work as expected.
· Issues related to SessionComponent::destroy() not always removing data were fixed.
· Scaffold works better with Themes.
· String::insert() works better with keys that begin with sub-patterns containing other keys.
· DboMysql now correctly pulls out column + table parameters.
· Issues related to setlocale() and SQL errors caused by locales that use ',' for the decimal separator on floats were fixed.
· EmailComponent now more correctly handles email addresses with name aliase
· Welsh was added to the supported list of locales in l10n
· Controller::validateErrors now accepts arbitrary model objects. This better reflects the intention of the documentation.
· Calling bindModel/unbindModel multiple times now correctly resets associations.
· TextHelper::autoLink() no longer strtolower()'s the urls, as this created issues with URL shorteners.
· HttpSocket no longer loses auth credentials when multiple requests are made with same object.
· String::insert() will now correctly handle two keys starting with the same subpattern.