From 75d9f6e58906c81fe44613a81d7e90bce65f03db Mon Sep 17 00:00:00 2001 From: Daniel Hensby Date: Mon, 29 Jun 2015 17:38:23 +0100 Subject: [PATCH] Upgrading docs --- docs/en/changelogs/4.0.0.md | 98 +++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 docs/en/changelogs/4.0.0.md diff --git a/docs/en/changelogs/4.0.0.md b/docs/en/changelogs/4.0.0.md new file mode 100644 index 000000000..488bfb7f3 --- /dev/null +++ b/docs/en/changelogs/4.0.0.md @@ -0,0 +1,98 @@ +# 4.0.0 (unreleased) + +## Overview + +### Framework + + * Deprecate `SQLQuery` in favour `SQLSelect` + * `DataList::filter` by null now internally generates "IS NULL" or "IS NOT NULL" conditions appropriately on queries + * `Controller::init` visibility changed to protected + * Initialising controllers now the responsibility of `Controller::doInit()` + * `handleRequest` + +## Upgrading + +### Update code that uses SQLQuery + +SQLQuery is still implemented, but now extends the new SQLSelect class and has some methods +deprecated. Previously this class was used for both selecting and deleting, but these +have been superceded by the specialised SQLSelect and SQLDelete classes. + +Take care for any code or functions which expect an object of type `SQLQuery`, as +these references should be replaced with `SQLSelect`. Legacy code which generates +`SQLQuery` can still communicate with new code that expects `SQLSelect` as it is a +subclass of `SQLSelect`, but the inverse is not true. + +### Update implementations of augmentSQL + +Since this method now takes a `SQLSelect` as a first parameter, existing code referencing the deprecated `SQLQuery` +type will raise a PHP error. + +E.g. + +Before: + + :::php + function augmentSQL(SQLQuery &$query, DataQuery &$dataQuery = null) { + $locale = Translatable::get_current_locale(); + if(!preg_match('/("|\'|`)Locale("|\'|`)/', implode(' ', $query->getWhere()))) { + $qry = sprintf('"Locale" = \'%s\'', Convert::raw2sql($locale)); + $query->addWhere($qry); + } + } + +After: + + :::php + function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null) { + $locale = Translatable::get_current_locale(); + if(!preg_match('/("|\'|`)Locale("|\'|`)/', implode(' ', $query->getWhereParameterised($parameters)))) { + $query->addWhere(array( + '"Locale"' => $locale + )); + } + } + + +### Update to Controller initialisation + +`Controller::init` is now protected, so any overloaded instances of this method need to have their visibility changed to +`protected` + +Before: + + :::php + public function init() { + parent::init(); + + if (!Member::currentMemberID()) { + Security::permissionFailure($this); + } + } + +After: + + :::php + protected function init() { + parent::init(); + + if (!Member::currentMemberID()) { + Security::permissionFailure($this); + } + } + +Initialising controllers now need to be done with the `doInit` method. + +Before: + + :::php + + $controller = ModelAsController::controller_for(Page::get()->first()); + $controller->init(); + +After: + + :::php + + $controller = ModelAsController::controller_for(Page::get()->first()); + $controller->doInit(); \ No newline at end of file