mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Upgrading rules for new inspect/warning capabilities
This commit is contained in:
parent
3824655df4
commit
297253170c
148
.upgrade.yml
148
.upgrade.yml
@ -953,3 +953,151 @@ excludedPaths:
|
|||||||
- '*vendor*'
|
- '*vendor*'
|
||||||
doctorTasks:
|
doctorTasks:
|
||||||
SilverStripe\Dev\Upgrade\UpgradeBootstrap: src/Dev/Upgrade/UpgradeBootstrap.php
|
SilverStripe\Dev\Upgrade\UpgradeBootstrap: src/Dev/Upgrade/UpgradeBootstrap.php
|
||||||
|
warnings:
|
||||||
|
classes:
|
||||||
|
'Object':
|
||||||
|
message: 'Replaced with traits'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#object-replace'
|
||||||
|
'SS_Log':
|
||||||
|
message: 'Replaced with a PSR-3 logger'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#psr3-logging'
|
||||||
|
'Session':
|
||||||
|
message: 'Session is no longer statically accessible'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#session'
|
||||||
|
'SQLQuery':
|
||||||
|
message: 'Use SQLSelect instead'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#sqlquery'
|
||||||
|
'SilverStripe\AssetAdmin\Forms\UploadField':
|
||||||
|
message: 'Class implementations should be wrapped with FileHandleField'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#uploadfield'
|
||||||
|
'CompositeDBField':
|
||||||
|
message: 'Class has been replaced with an abstract DBComposite'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#compositedbfield'
|
||||||
|
'BuildTask':
|
||||||
|
message: 'Now needs a $segment property to run it'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#buildtask-segment'
|
||||||
|
'RestfulService':
|
||||||
|
message: 'Removed from core, please use Guzzle'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#restfulservice'
|
||||||
|
'Oembed':
|
||||||
|
message: 'Removed from core, please use third party lib'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#oembed'
|
||||||
|
'SS_Cache':
|
||||||
|
message: 'Using symfony/cache now'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#cache'
|
||||||
|
'LeftAndMain_TreeNode':
|
||||||
|
message: 'Renamed to CMSMain_TreeNode'
|
||||||
|
'SilverStripe\ORM\Hierarchy->getChildrenAsUL()':
|
||||||
|
message: 'Replaced with renderChildren()'
|
||||||
|
'SilverStripe\Security\Permission::flush_permission_cache()':
|
||||||
|
message: 'Renamed to reset()'
|
||||||
|
methods:
|
||||||
|
'setFilename()':
|
||||||
|
message: 'Filenames should not be set directly any more'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#write-file-dataobject'
|
||||||
|
'File::handle_shortcode()':
|
||||||
|
message: 'Has been removed'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#file-shortcode'
|
||||||
|
'database_fields()':
|
||||||
|
message: 'Does not have a second parameter any more'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#dataobject-db-database-fields'
|
||||||
|
'Authenticator::register()':
|
||||||
|
message: 'Custom authenticators work differently now'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#custom-authenticators'
|
||||||
|
'Object::useCustomClass()':
|
||||||
|
message: 'Use injector instead'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#custom-authenticators'
|
||||||
|
'Director::setUrlParams()':
|
||||||
|
message: 'Method removed'
|
||||||
|
'manyManyComponent()':
|
||||||
|
message: 'DataObject->manyManyComponent() moved to DataObjectSchema, access through getSchema()'
|
||||||
|
'belongsToComponent()':
|
||||||
|
message: 'DataObject->belongsToComponent() moved to DataObjectSchema, access through getSchema()'
|
||||||
|
'hasOneComponent()':
|
||||||
|
message: 'DataObject->hasOneComponent() moved to DataObjectSchema, access through getSchema()'
|
||||||
|
'hasManyComponent()':
|
||||||
|
message: 'DataObject->hasManyComponent() moved to DataObjectSchema, access through getSchema()'
|
||||||
|
'getRemoteJoinField()':
|
||||||
|
message: 'DataObject->getRemoteJoinField() moved to DataObjectSchema, access through getSchema()'
|
||||||
|
'has_own_table()':
|
||||||
|
message: 'DataObject::has_own_table() moved to DataObjectSchema->classHasTable(), access through getSchema()'
|
||||||
|
'database_fields()':
|
||||||
|
message: 'DataObject::database_fields() moved to DataObjectSchema->databaseFields(), access through getSchema()'
|
||||||
|
'database_fields()':
|
||||||
|
message: 'DataObject::database_fields() moved to DataObjectSchema->databaseFields(), access through getSchema()'
|
||||||
|
'manyManyExtraFieldsForComponent()':
|
||||||
|
message: 'DataObject::manyManyExtraFieldsForComponent() moved to DataObjectSchema, access through getSchema()'
|
||||||
|
'validateModelDefinitions()':
|
||||||
|
message: 'Removed DataObject->validateModelDefinitions()'
|
||||||
|
'hasOwnTableDatabaseField()':
|
||||||
|
message: 'DataObject->hasOwnTableDatabaseField() has been replaced with DataObjectSchema::fieldSpec(), access through getSchema()'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#dataobject-has-own'
|
||||||
|
'has_own_table_database_field()':
|
||||||
|
message: 'DataObject::has_own_table_database_field() has been replaced with DataObjectSchema::fieldSpec(), access through getSchema()'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#dataobject-has-own'
|
||||||
|
'hasDatabaseFields()':
|
||||||
|
message: 'DataObject->hasDatabaseFields() has been replaced with DataObjectSchema::fieldSpec(), access through getSchema()'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#dataobject-has-own'
|
||||||
|
'is_composite_field()'
|
||||||
|
message: 'Removed DataObject::is_composite_field. Use DataObjectSchema::compositeField instead.'
|
||||||
|
'custom_database_fields()':
|
||||||
|
message: 'Removed DataObject::custom_database_fields. Use DataObjectSchema::databaseFields'
|
||||||
|
props:
|
||||||
|
'class':
|
||||||
|
message: '$this->class access has been removed'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#object-replace'
|
||||||
|
functions:
|
||||||
|
'file_get_contents()':
|
||||||
|
message: 'Use new asset abstraction'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#asset-storage'
|
||||||
|
'file_put_contents()':
|
||||||
|
message: 'Use new asset abstraction'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#asset-storage'
|
||||||
|
constants:
|
||||||
|
'SS_TRUSTED_PROXY_HOST_HEADER':
|
||||||
|
message: 'See TrustedProxyMiddleware'
|
||||||
|
'SS_TRUSTED_PROXY_PROTOCOL_HEADER':
|
||||||
|
message: 'See TrustedProxyMiddleware'
|
||||||
|
'SS_TRUSTED_PROXY_IP_HEADER':
|
||||||
|
message: 'See TrustedProxyMiddleware'
|
||||||
|
'SS_TRUSTED_PROXY_HOST_HEADER':
|
||||||
|
message: 'See TrustedProxyMiddleware'
|
||||||
|
'MODULES_PATH':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
||||||
|
'MODULES_DIR':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
||||||
|
'FRAMEWORK_PATH':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
||||||
|
'FRAMEWORK_DIR':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
||||||
|
'CMS_PATH':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
||||||
|
'CMS_DIR':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
||||||
|
'FRAMEWORK_ADMIN_PATH':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
||||||
|
'FRAMEWORK_ADMIN_DIR':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
||||||
|
'FRAMEWORK_ADMIN_THIRDPARTY_DIR':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
||||||
|
'THEMES_PATH':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
||||||
|
'THEMES_DIR':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
||||||
|
'THIRDPARTY_PATH':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
||||||
|
'THIRDPARTY_DIR':
|
||||||
|
message: 'Path constants have been deprecated, use the Requirements and ModuleResourceLoader APIs'
|
||||||
|
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
|
@ -129,6 +129,20 @@ For a full list of renamed classes, check the `.upgrade.yml` definitions in each
|
|||||||
|
|
||||||
The rename won't affect class-based permission codes or database table names.
|
The rename won't affect class-based permission codes or database table names.
|
||||||
|
|
||||||
|
##### Using the upgrader tool to get upgrade tips on your code
|
||||||
|
|
||||||
|
While there's some code we can automatically rewrite, other uses of changed SilverStripe APIs aren't that obvious.
|
||||||
|
You can use our heuristics to get some hints on where you need to review code manually.
|
||||||
|
Hints will generally point to more detail about a specific upgrade in this guide.
|
||||||
|
This task should be run *after* `upgrade-code upgrade`.
|
||||||
|
|
||||||
|
```
|
||||||
|
~/.composer/vendor/bin/upgrade-code inspect ./mysite
|
||||||
|
```
|
||||||
|
|
||||||
|
These hints only cover a part of the upgrade work,
|
||||||
|
but can serve as a good indicator for where to start.
|
||||||
|
|
||||||
##### Upgrade references to literal or class table names
|
##### Upgrade references to literal or class table names
|
||||||
|
|
||||||
In 3.x the class name of any DataObject matched the table name, but in 4.x all classes are namespaced, and it is
|
In 3.x the class name of any DataObject matched the table name, but in 4.x all classes are namespaced, and it is
|
||||||
@ -251,7 +265,7 @@ visibility) will make it 4.0 compatible.
|
|||||||
];
|
];
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Upgrade module paths in file references
|
#### <a name="module-paths"></a>Upgrade module paths in file references
|
||||||
|
|
||||||
You should no longer rely on modules being placed in a deterministic folder (e.g. `/framework`),
|
You should no longer rely on modules being placed in a deterministic folder (e.g. `/framework`),
|
||||||
and use getters on the [Module](api:SilverStripe\Core\Manifest\Module) object instead.
|
and use getters on the [Module](api:SilverStripe\Core\Manifest\Module) object instead.
|
||||||
@ -340,7 +354,7 @@ or explicitly switch to the "copy" mode to avoid symlinks.
|
|||||||
The below sections deal with upgrades to specific parts of various API. Projects which rely on certain
|
The below sections deal with upgrades to specific parts of various API. Projects which rely on certain
|
||||||
API should be upgraded as appropriate using any of the relevant processes documented below.
|
API should be upgraded as appropriate using any of the relevant processes documented below.
|
||||||
|
|
||||||
#### Upgrade references of SS_Log to use PSR-3 logging
|
#### <a name="psr3-logging"></a>Upgrade references of SS_Log to use PSR-3 logging
|
||||||
|
|
||||||
One of the great changes that comes with SilverStripe 4 is the introduction of
|
One of the great changes that comes with SilverStripe 4 is the introduction of
|
||||||
[PSR-3](http://www.php-fig.org/psr/psr-3/) compatible logger interfaces. This
|
[PSR-3](http://www.php-fig.org/psr/psr-3/) compatible logger interfaces. This
|
||||||
@ -398,7 +412,7 @@ implements the `Monolog\Formatter\FormatterInterface` interface.
|
|||||||
#### Upgrade `mysite/_config.php`
|
#### Upgrade `mysite/_config.php`
|
||||||
|
|
||||||
The globals `$database` and `$databaseConfig` are deprecated. You should upgrade your
|
The globals `$database` and `$databaseConfig` are deprecated. You should upgrade your
|
||||||
site _config.php files to use the `.env` configuration (below).
|
site `_config.php` files to use the `.env` configuration (below).
|
||||||
|
|
||||||
`conf/ConfigureFromEnv.php` is also no longer used, and references to this file should be deleted.
|
`conf/ConfigureFromEnv.php` is also no longer used, and references to this file should be deleted.
|
||||||
|
|
||||||
@ -488,7 +502,7 @@ which is no longer necessary.
|
|||||||
|
|
||||||
See [Environment Management docs](/getting-started/environment_management/) for full details.
|
See [Environment Management docs](/getting-started/environment_management/) for full details.
|
||||||
|
|
||||||
#### Replace usages of Object class
|
#### <a name="object-replace"></a>Replace usages of Object class
|
||||||
|
|
||||||
Object has been superseded by a trio of traits which replace components of this legacy class:
|
Object has been superseded by a trio of traits which replace components of this legacy class:
|
||||||
|
|
||||||
@ -562,7 +576,7 @@ Extensions
|
|||||||
+$extensions = DataObject::get_extensions(File::class); // alternate
|
+$extensions = DataObject::get_extensions(File::class); // alternate
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Upgrade references to Session object
|
#### <a name="session"></a>Upgrade references to Session object
|
||||||
|
|
||||||
Session object is no longer statically accessible via `Session::inst()`. Instead, Session
|
Session object is no longer statically accessible via `Session::inst()`. Instead, Session
|
||||||
is a member of the current request.
|
is a member of the current request.
|
||||||
@ -740,6 +754,8 @@ class MyObject extends ViewableData
|
|||||||
After:
|
After:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
|
use SilverStripe\Core\Convert;
|
||||||
|
|
||||||
class MyObject extends SilverStripe\View\ViewableData
|
class MyObject extends SilverStripe\View\ViewableData
|
||||||
{
|
{
|
||||||
private static $casting = [
|
private static $casting = [
|
||||||
@ -748,7 +764,7 @@ class MyObject extends SilverStripe\View\ViewableData
|
|||||||
|
|
||||||
public function getSomeHTML
|
public function getSomeHTML
|
||||||
{
|
{
|
||||||
$title = SilverStripe\Core\Convert::raw2xml($this->Title);
|
$title = Convert::raw2xml($this->Title);
|
||||||
return "<h1>{$title}</h1>";
|
return "<h1>{$title}</h1>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -757,11 +773,11 @@ class MyObject extends SilverStripe\View\ViewableData
|
|||||||
If you need to encode a field (such as HTMLText) for use in html attributes, use `.ATT`
|
If you need to encode a field (such as HTMLText) for use in html attributes, use `.ATT`
|
||||||
instead, or if used in an actual XML file use `.CDATA` (see [template casting](/developer_guides/templates/casting)).
|
instead, or if used in an actual XML file use `.CDATA` (see [template casting](/developer_guides/templates/casting)).
|
||||||
|
|
||||||
#### Upgrade code that uses SQLQuery
|
#### <a name="sqlquery"></a>Upgrade code that uses SQLQuery
|
||||||
|
|
||||||
Where your code once used SQLQuery you should now use SQLSelect in all cases, as this has been removed (check the [3.2.0](3.2.0) upgrading notes).
|
Where your code once used SQLQuery you should now use SQLSelect in all cases, as this has been removed (check the [3.2.0](3.2.0) upgrading notes).
|
||||||
|
|
||||||
#### Upgrade code that uses UploadField
|
#### <a name="uploadfield"></a>Upgrade code that uses UploadField
|
||||||
|
|
||||||
This field has been superceded by a new class provided by the
|
This field has been superceded by a new class provided by the
|
||||||
[asset-admin](https://github.com/silverstripe/silverstripe-asset-admin) module, which provides a more
|
[asset-admin](https://github.com/silverstripe/silverstripe-asset-admin) module, which provides a more
|
||||||
@ -914,7 +930,7 @@ Consequently, we've also removed `MemberDatetimeOptionsetField`.
|
|||||||
the [IntlDateFormatter defaults](http://php.net/manual/en/class.intldateformatter.php) for the selected locale.
|
the [IntlDateFormatter defaults](http://php.net/manual/en/class.intldateformatter.php) for the selected locale.
|
||||||
|
|
||||||
|
|
||||||
#### New asset storage mechanism
|
#### <a name="asset-storage"></a>New asset storage mechanism
|
||||||
|
|
||||||
File system has been abstracted into an abstract interface. By default, the out of the box filesystem
|
File system has been abstracted into an abstract interface. By default, the out of the box filesystem
|
||||||
uses [Flysystem](http://flysystem.thephpleague.com/) with a local storage mechanism (under the assets directory).
|
uses [Flysystem](http://flysystem.thephpleague.com/) with a local storage mechanism (under the assets directory).
|
||||||
@ -1003,7 +1019,7 @@ class MyObject extends SilverStripe\ORM\DataObject
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Upgrading code that writes to `File` dataobjects, or writes files to the 'assets' folder
|
#### <a name="write-file-dataobject"></a>Upgrading code that writes to `File` dataobjects, or writes files to the 'assets' folder
|
||||||
|
|
||||||
In the past all that was necessary to write a `File` DataObject to the database was to ensure a physical file
|
In the past all that was necessary to write a `File` DataObject to the database was to ensure a physical file
|
||||||
existed in the assets folder, and that the Filename of the DataObject was set to the same location.
|
existed in the assets folder, and that the Filename of the DataObject was set to the same location.
|
||||||
@ -1118,7 +1134,7 @@ There are a few differences in this new API:
|
|||||||
A generic `manipulate` method may be used, although the callback for this method both is given, and should return,
|
A generic `manipulate` method may be used, although the callback for this method both is given, and should return,
|
||||||
an `AssetStore` instance and file tuple (Filename, Hash, and Variant) rather than an Image_Backend.
|
an `AssetStore` instance and file tuple (Filename, Hash, and Variant) rather than an Image_Backend.
|
||||||
|
|
||||||
#### Upgrading code that uses File or Image shortcode handler
|
#### <a name="file-shortcode"></a>Upgrading code that uses File or Image shortcode handler
|
||||||
|
|
||||||
The `handle_shortcode` methods have been removed from the core File and Image classes and moved to separate classes in their own respective namespace. Image and File do not implement the ShortcodeHandler interface anymore.
|
The `handle_shortcode` methods have been removed from the core File and Image classes and moved to separate classes in their own respective namespace. Image and File do not implement the ShortcodeHandler interface anymore.
|
||||||
|
|
||||||
@ -1130,10 +1146,7 @@ Before this change, to use the handle_shortcode method, you would do something l
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
class MyShortcodeUser extends Object
|
class MyShortcodeUser extends Object
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
private $content;
|
private $content;
|
||||||
|
|
||||||
public function Content($arguments, $parser, $shortcode)
|
public function Content($arguments, $parser, $shortcode)
|
||||||
@ -1151,9 +1164,7 @@ In the new situation, this would look like this:
|
|||||||
use SilverStripe\Assets\Shortcodes\FileShortcodeProvider;
|
use SilverStripe\Assets\Shortcodes\FileShortcodeProvider;
|
||||||
|
|
||||||
class MyShortcodeUser extends Object
|
class MyShortcodeUser extends Object
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
private $content;
|
private $content;
|
||||||
|
|
||||||
public function Content($arguments, $parser, $shortcode)
|
public function Content($arguments, $parser, $shortcode)
|
||||||
@ -1163,7 +1174,7 @@ class MyShortcodeUser extends Object
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Upgrading code that uses composite db fields.
|
#### <a name="compositedbfield"></a>Upgrading code that uses composite db fields.
|
||||||
|
|
||||||
The `CompositeDBField` interface has been replaced with an abstract class, `DBComposite`. In many cases, custom code
|
The `CompositeDBField` interface has been replaced with an abstract class, `DBComposite`. In many cases, custom code
|
||||||
that handled saving of content into composite fields can be removed, as it is now handled by the base class.
|
that handled saving of content into composite fields can be removed, as it is now handled by the base class.
|
||||||
@ -1173,7 +1184,7 @@ The below describes the minimum amount of effort required to implement a composi
|
|||||||
```php
|
```php
|
||||||
use SilverStripe\ORM\FieldType\DBComposite;
|
use SilverStripe\ORM\FieldType\DBComposite;
|
||||||
|
|
||||||
class MyAddressField extends DBComposite
|
class MyAddressField extends
|
||||||
{
|
{
|
||||||
private static $composite_db = [
|
private static $composite_db = [
|
||||||
'Street' => 'Varchar(200)',
|
'Street' => 'Varchar(200)',
|
||||||
@ -1189,7 +1200,7 @@ class MyAddressField extends DBComposite
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Upgrading code that references `DataObject::database_fields` or `DataObject::db`
|
#### <a name="dataobject-db-database-fields"></a>Upgrading code that references `DataObject::database_fields` or `DataObject::db`
|
||||||
|
|
||||||
These methods have been updated to include base fields (such as ID, ClassName, Created, and LastEdited), as
|
These methods have been updated to include base fields (such as ID, ClassName, Created, and LastEdited), as
|
||||||
well as composite DB fields.
|
well as composite DB fields.
|
||||||
@ -1216,7 +1227,7 @@ these references should be replaced with `SQLSelect`. Legacy code which generate
|
|||||||
`SQLQuery` can still communicate with new code that expects `SQLSelect` as it is a
|
`SQLQuery` can still communicate with new code that expects `SQLSelect` as it is a
|
||||||
subclass of `SQLSelect`, but the inverse is not true.
|
subclass of `SQLSelect`, but the inverse is not true.
|
||||||
|
|
||||||
#### Upgrade BuildTask classes
|
#### <a name="buildtask-segment"></a>Upgrade BuildTask classes
|
||||||
|
|
||||||
Similarly to the `$table_name` configuration property for DataObjects, you should define a `private static $segment` for `BuildTask`
|
Similarly to the `$table_name` configuration property for DataObjects, you should define a `private static $segment` for `BuildTask`
|
||||||
instances to ensure that you can still run your task via `sake dev/tasks/MyTask`. Without defining it, the default
|
instances to ensure that you can still run your task via `sake dev/tasks/MyTask`. Without defining it, the default
|
||||||
@ -1523,7 +1534,7 @@ class MyObject extends DataObject
|
|||||||
|
|
||||||
Note that string references to `SS_Datetime` passed to injector, or used in config values, will still work, and will refer to the updated class names.
|
Note that string references to `SS_Datetime` passed to injector, or used in config values, will still work, and will refer to the updated class names.
|
||||||
|
|
||||||
#### Upgrading from deprecated RestfulService
|
#### <a name="restfulservice"></a>Upgrading from deprecated RestfulService
|
||||||
|
|
||||||
Install Guzzle to get an API consuming library.
|
Install Guzzle to get an API consuming library.
|
||||||
`composer require guzzlehttp/guzzle` or add `guzzlehttp/guzzle: "^6.0"` to your composer.json.
|
`composer require guzzlehttp/guzzle` or add `guzzlehttp/guzzle: "^6.0"` to your composer.json.
|
||||||
@ -1532,7 +1543,7 @@ For information on how to use Guzzle, please see the extensive [Guzzle documenta
|
|||||||
|
|
||||||
In case you want to keep using RestfulService, you can use `Firesphere/silverstripe-restfulservice`, but it is unmaintained and deprecated.
|
In case you want to keep using RestfulService, you can use `Firesphere/silverstripe-restfulservice`, but it is unmaintained and deprecated.
|
||||||
|
|
||||||
#### Upgrading from deprecated Oembed
|
#### <a name="oembed"></a>Upgrading from deprecated Oembed
|
||||||
|
|
||||||
Instead of Oembed, the framework now relies on [oscarotero/Embed](https://github.com/oscarotero/Embed) to handle getting the shortcode-data for embedding.
|
Instead of Oembed, the framework now relies on [oscarotero/Embed](https://github.com/oscarotero/Embed) to handle getting the shortcode-data for embedding.
|
||||||
If you have custom embedding-code relying on Oembed, please refer to the documentation provided by oscarotero.
|
If you have custom embedding-code relying on Oembed, please refer to the documentation provided by oscarotero.
|
||||||
@ -1545,7 +1556,7 @@ to update those with the appropriate function or config call. See
|
|||||||
[CMS architecture](/developer_guides/customising_the_admin_interface/cms-architecture#the-admin-url) for language
|
[CMS architecture](/developer_guides/customising_the_admin_interface/cms-architecture#the-admin-url) for language
|
||||||
specific functions.
|
specific functions.
|
||||||
|
|
||||||
#### Upgrading custom Authenticators
|
#### <a name="custom-authenticators"></a>Upgrading custom Authenticators
|
||||||
|
|
||||||
The methods `register` and `unregister` on `Authenticator` are deprecated in favor of the `Config` system. This means that any custom Authenticator needs to be registered through the yml config. For further information on how to create a custom authentication method, [see the Authentication documentation](/developer_guides/Security/Authentication).
|
The methods `register` and `unregister` on `Authenticator` are deprecated in favor of the `Config` system. This means that any custom Authenticator needs to be registered through the yml config. For further information on how to create a custom authentication method, [see the Authentication documentation](/developer_guides/Security/Authentication).
|
||||||
|
|
||||||
@ -1589,7 +1600,7 @@ One removed feature is the `Config::FIRST_SET` option. Either use uninherited co
|
|||||||
directly, or use the inherited config lookup. As falsey values now overwrite all parent class values, it is
|
directly, or use the inherited config lookup. As falsey values now overwrite all parent class values, it is
|
||||||
now generally safer to use the default inherited config, where in the past you would need to use `FIRST_SET`.
|
now generally safer to use the default inherited config, where in the past you would need to use `FIRST_SET`.
|
||||||
|
|
||||||
#### Upgrading Cache API
|
#### <a name="cache"></a>Upgrading Cache API
|
||||||
|
|
||||||
We have replaced the unsupported `Zend_Cache` library with [symfony/cache](https://github.com/symfony/cache).
|
We have replaced the unsupported `Zend_Cache` library with [symfony/cache](https://github.com/symfony/cache).
|
||||||
This also allowed us to remove SilverStripe's `Cache` API and use dependency injection with a standard
|
This also allowed us to remove SilverStripe's `Cache` API and use dependency injection with a standard
|
||||||
@ -1850,7 +1861,7 @@ that it belongs to, e.g. `themes/mytheme/templates/MyVendor/Foobar/Model/MyModel
|
|||||||
* Admin URL can now be configured via custom Director routing rule
|
* Admin URL can now be configured via custom Director routing rule
|
||||||
* `Controller::init` visibility changed to protected. Use `Controller::doInit()` instead.
|
* `Controller::init` visibility changed to protected. Use `Controller::doInit()` instead.
|
||||||
* `Controller::join_links` supports an array of link sections.
|
* `Controller::join_links` supports an array of link sections.
|
||||||
* `Object::useCustomClass` has been removed. You should use the config API with Injector instead.
|
* <a name="object-usecustomclass"></a>`Object::useCustomClass` has been removed. You should use the config API with Injector instead.
|
||||||
* `Object::invokeWithExtensions` now has the same method signature as `Object::extend` and behaves the same way.
|
* `Object::invokeWithExtensions` now has the same method signature as `Object::extend` and behaves the same way.
|
||||||
* `ServiceConfigurationLocator` is now an interface not a class.
|
* `ServiceConfigurationLocator` is now an interface not a class.
|
||||||
* `i18nTextCollectorTask` merge is now true by default.
|
* `i18nTextCollectorTask` merge is now true by default.
|
||||||
@ -2163,18 +2174,18 @@ The below methods have been added or had their functionality updated to `DBDate`
|
|||||||
* `DataModel` removed
|
* `DataModel` removed
|
||||||
* `DataObject::can*` methods no longer accept a member ID. These must now be passed a Member object or left null
|
* `DataObject::can*` methods no longer accept a member ID. These must now be passed a Member object or left null
|
||||||
* `DataObject::db` removed and replaced with `DataObjectSchema::fieldSpec` and `DataObjectSchema::fieldSpecs`
|
* `DataObject::db` removed and replaced with `DataObjectSchema::fieldSpec` and `DataObjectSchema::fieldSpecs`
|
||||||
* `DataObject::manyManyComponent` moved to `DataObjectSchema`
|
* `DataObject::manyManyComponent` moved to `DataObjectSchema` (access through `DataObject->getSchema()`)
|
||||||
* `DataObject::belongsToComponent` moved to `DataObjectSchema`
|
* `DataObject::belongsToComponent` moved to `DataObjectSchema` (access through `DataObject->getSchema()`)
|
||||||
* `DataObject::hasOneComponent` moved to `DataObjectSchema`
|
* `DataObject::hasOneComponent` moved to `DataObjectSchema` (access through `DataObject->getSchema()`)
|
||||||
* `DataObject::hasManyComponent` moved to `DataObjectSchema`
|
* `DataObject::hasManyComponent` moved to `DataObjectSchema` (access through `DataObject->getSchema()`)
|
||||||
* `DataObject::getRemoteJoinField` moved to `DataObjectSchema`
|
* `DataObject::getRemoteJoinField` moved to `DataObjectSchema` (access through `DataObject->getSchema()`)
|
||||||
* `DataObject::database_fields` renamed and moved to `DataObjectSchema::databaseFields`
|
* `DataObject::database_fields()` renamed and moved to `DataObjectSchema::databaseFields`
|
||||||
* `DataObject::has_own_table` renamed and moved to `DataObjectSchema::classHasTable`
|
* `DataObject::has_own_table()` renamed and moved to `DataObjectSchema::classHasTable`
|
||||||
* `DataObject::composite_fields` renamed and moved to `DataObjectSchema::compositeFields``
|
* `DataObject::composite_fields()` renamed and moved to `DataObjectSchema::compositeFields`
|
||||||
* `DataObject::manyManyExtraFieldsForComponent` moved to `DataObjectSchema`
|
* `DataObject::manyManyExtraFieldsForComponent()` moved to `DataObjectSchema`
|
||||||
* `DataObject::$destroyed` is now deprecated
|
* `DataObject::$destroyed` is now deprecated
|
||||||
* Removed `DataObject::validateModelDefinitions`. Relations are now validated within `DataObjectSchema`
|
* Removed `DataObject::validateModelDefinitions`. Relations are now validated within `DataObjectSchema`
|
||||||
* Removed `DataObject` methods `hasOwnTableDatabaseField`, `has_own_table_database_field` and
|
* <a name="dataobject-has-own"></a>Removed `DataObject` methods `hasOwnTableDatabaseField`, `has_own_table_database_field` and
|
||||||
`hasDatabaseFields` are superceded by `DataObjectSchema::fieldSpec`.
|
`hasDatabaseFields` are superceded by `DataObjectSchema::fieldSpec`.
|
||||||
Use `$schema->fieldSpec($class, $field, DataObjectSchema::DB_ONLY | DataObjectSchema::UNINHERITED )`.
|
Use `$schema->fieldSpec($class, $field, DataObjectSchema::DB_ONLY | DataObjectSchema::UNINHERITED )`.
|
||||||
Exclude `uninherited` option to search all tables in the class hierarchy.
|
Exclude `uninherited` option to search all tables in the class hierarchy.
|
||||||
|
Loading…
Reference in New Issue
Block a user