mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-07-05 19:09:27 +02:00
In 3.0 there was some confusion about whether DataLists and ArrayLists were mutable or not. If DataLists were immutable, they'd return the result, and your code would look like $list = $list->filter(....); If DataLists were mutable, they'd operate on themselves, returning nothing, and your code would look like $list->filter(....); This makes all DataLists and ArrayList immutable for all _searching_ operations. Operations on DataList that modify the underlying SQL data store remain mutating. - These functions no longer mutate the existing object, and if you do not capture the value returned by them will have no effect: ArrayList#reverse ArrayList#sort ArrayList#filter ArrayList#exclude DataList#dataQuery (use DataList#alterDataQuery to modify dataQuery in a safe manner) DataList#where DataList#limit DataList#sort DataList#addFilter DataList#applyFilterContext DataList#innerJoin DataList#leftJoin DataList#find DataList#byIDs DataList#reverse - DataList#setDataQueryParam has been added as syntactic sugar around the most common cause of accessing the dataQuery directly - setting query parameters - RelationList#setForeignID has been removed. Always use RelationList#forForeignID when querying, and overload RelationList#foreignIDList when subclassing. - Relatedly,the protected variable RelationList->foreignID has been removed, as the ID is now stored on a query parameter. Use RelationList#getForeignID to read it.
3.8 KiB
3.8 KiB
3.1.0 (unreleased)
Overview
Upgrading
TableListField
,ComplexTableField
,TableField
,HasOneComplexTableField
,HasManyComplexTableField
andManyManyComplexTableField
have been removed from the core and placed into a module called "legacytablefields" located at https://github.com/silverstripe-labs/legacytablefieldsprototype.js
andbehaviour.js
have been removed from the core, they are no longer used. If you have custom code relying on these two libraries, please update your code to include the files yourselfObject::has_extension()
andObject::add_extension()
deprecated in favour of using late static binding, please use{class}::has_extension()
and{class}::add_extension()
instead, where {class} is the class name of your DataObject class.- Removed
SiteTree.MetaTitle
andSiteTree.MetaKeywords
since they are irrelevant in terms of SEO (1, 2) and general page informancy - Deprecated
Profiler
class, use third-party solutions like xhprof - Removed defunct or unnecessary debug GET parameters:
debug_profile
,debug_memory
,profile_trace
,debug_javascript
,debug_behaviour
- Removed
Member_ProfileForm
, useCMSProfileController
instead SiteTree::$nested_urls
enabled by default. To disable, callSiteTree::disable_nested_urls()
.- Removed CMS permission checks from
File->canEdit()
andFile->canDelete()
. If you have unsecured controllers relying on these permissions, please override them through aDataExtension
. - Moved email bounce handling to new "emailbouncehandler" module,
including
Email_BounceHandler
andEmail_BounceRecord
classes, as well as theMember->Bounced
property. - Deprecated global email methods
htmlEmail()
andplaintextEmail
, as well as various email helper methods likeencodeMultipart()
. Use theEmail
API, or theMailer
class where applicable. - Removed non-functional
$inlineImages
option for sending emails - Removed support for keyed arrays in
SelectionGroup
, use newSelectionGroup_Item
object to populate the list instead (see API docs). - Removed
Form->Name()
: Use getName() - Removed
FormField->setContainerFieldSet()
: Use setContainerFieldList() - Removed
FormField->rootFieldSet()
: Use rootFieldList() - Removed
Group::map()
: Use DataList::("Group")->map() - Removed
Member->generateAutologinHash()
: Tokens are no longer saved directly into the database in plaintext. Use the return value of the Member::generateAutologinTokenAndHash to get the token - Removed
Member->sendInfo()
: use Member_ChangePasswordEmail or Member_ForgotPasswordEmail directly - Removed
SQLMap::map()
: Use DataList::("Member")->map() - Removed
SQLMap::mapInGroups()
: Use Member::map_in_groups() - Removed
PasswordEncryptor::register()/unregister()
: Use config system instead - Methods on DataList and ArrayList that used to both modify the existing list & return a new version now just return a new version. Make sure you change statements like
$list->filter(...)
to $list = $list->filter(...)
for these methods:ArrayList#reverse
ArrayList#sort
ArrayList#filter
ArrayList#exclude
DataList#where
DataList#limit
DataList#sort
DataList#addFilter
DataList#applyFilterContext
DataList#innerJoin
DataList#leftJoin
DataList#find
DataList#byIDs
DataList#reverse
DataList#dataQuery
has been changed to return a clone of the query, and so can't be used to modify the list's query directly. UseDataList#alterDataQuery
instead to modify dataQuery in a safe manner.