Part of meta-issue #2016679: Expand Entity Type interfaces to provide methods, protect the properties.

See the detailed explanations there and look at the issues that already have patches or were commited.

Add get*, set* and additional methods as it makes sense to replace the public properties (e.g. isSomething() and something())

Methods to be added to the class FieldConfigBase

getBundle()
setDescription($description)
setRequired($required)
setSetting($setting_name, $value)
setSetting(array $settings)

TODO
Set the variable FieldConfigBase::default_value to protected.

Comments

chertzog’s picture

Status: Active » Needs review
StatusFileSize
new8.27 KB

Here is a first attempt.

Status: Needs review » Needs work
Issue tags: -Novice, -Entity Field API

The last submitted patch, Expand_field_instance.patch, failed testing.

thomas.fleming’s picture

Status: Needs work » Needs review

#1: Expand_field_instance.patch queued for re-testing.

Status: Needs review » Needs work
Issue tags: +Novice, +Entity Field API

The last submitted patch, Expand_field_instance.patch, failed testing.

thomas.fleming’s picture

Status: Needs work » Needs review
StatusFileSize
new0 bytes
thomas.fleming’s picture

Status: Needs review » Needs work
swentel’s picture

Status: Needs work » Postponed
Alumei’s picture

Attempted re-roll of #1 with some modifications to respect the current codebase.
Hope I did not miss anything.

Alumei’s picture

Status: Postponed » Needs review

Status: Needs review » Needs work

The last submitted patch, 10: expand-field-instance-2030637-10.patch, failed testing.

Alumei’s picture

Status: Needs work » Needs review

Status: Needs review » Needs work

The last submitted patch, 10: expand-field-instance-2030637-10.patch, failed testing.

Alumei’s picture

StatusFileSize
new19.37 KB

I get the following error on a running drupal install:
Error image

ofry’s picture

Will try to do backtrace.

ofry’s picture

Additional uncaught exception thrown while handling exception.
Original

Drupal\Core\Config\StorageException: Missing configuration file: system.site in Drupal\Core\Config\InstallStorage->getFilePath() (line 62 of W:\domains\localhost\core\lib\Drupal\Core\Config\InstallStorage.php).

Drupal\Core\Config\InstallStorage->getFilePath('system.site')
Drupal\Core\Config\FileStorage->exists('system.site')
Drupal\Core\Config\FileStorage->read('system.site')
Drupal\Core\Config\FileStorage->readMultiple(Array)
Drupal\Core\Config\ConfigFactory->loadMultiple(Array)
Drupal\Core\Config\ConfigFactory->get('system.site')
Drupal::config('system.site')
drupal_match_path('', 'admin
admin/*
batch')
path_is_admin('')
_drupal_add_js(Array, Array)
call_user_func('_drupal_add_js', Array, Array)
drupal_process_attached(Array, 1)
_drupal_add_library('core/drupalSettings')
drupal_process_attached(Array, 1)
_drupal_add_library('core/drupal.states')
drupal_process_attached(Array)
drupal_render(Array, 1)
drupal_render(Array)
install_display_output(Array, Array)
install_drupal()

Additional

Drupal\Core\Config\StorageException: Missing configuration file: system.theme.global in Drupal\Core\Config\InstallStorage->getFilePath() (line 62 of W:\domains\localhost\core\lib\Drupal\Core\Config\InstallStorage.php).

Drupal\Core\Config\InstallStorage->getFilePath('system.theme.global')
Drupal\Core\Config\FileStorage->exists('system.theme.global')
Drupal\Core\Config\FileStorage->read('system.theme.global')
Drupal\Core\Config\FileStorage->readMultiple(Array)
Drupal\Core\Config\ConfigFactory->loadMultiple(Array)
Drupal\Core\Config\ConfigFactory->get('system.theme.global')
Drupal::config('system.theme.global')
theme_get_setting('features.favicon')
template_preprocess_maintenance_page(Array)
template_preprocess_install_page(Array, 'install_page', Array)
_theme('install_page', Array)
drupal_render(Array)
install_display_output(Array, Array)
_drupal_log_error(Array, 1)
_drupal_exception_handler(Object)

swentel’s picture

That backtrace is not very useful.

This is the actual error:

Fatal error: Cannot access protected property Drupal\field\Entity\FieldInstanceConfig::$id in /Users/drupal/drupal/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php on line 324
Drush command terminated abnormally due to an unrecoverable error.                                                                                                        [error]
Error: Cannot access protected property Drupal\field\Entity\FieldInstanceConfig::$id in
/Users/drupal/drupal/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php, line 324

Which is very normal as the config storage controller now tries to access a protected property. This won't work at all. Furthermore, if you start 'fixing' this, you'll encounter more direct property access in many other files. So we also need setters too, for instance for 'settings' and such. This won't be an easy one to get right.

Also not sure how useful the getId() method is, this should rather live on configEntityBase I think.

ofry’s picture

Sorry for my last post, this bug I have with fresh git version, no patches applied :(

Alumei’s picture

Hm. Apparently the ConfigStorageController.php does:

  // Build an ID if none is set.
  if (!isset($entity->{$this->idKey})) {
    $entity->{$this->idKey} = $entity->id();
  }

From #2054699: Ensure config entity id is set for computed composite ids.
I also just searched for some ConfigTyps that extend ConfigEntityBase: CustomBlock, Block, Breakpoint, BreakpointGroup, Contact
All those seem to implement a custom $id property.

But ConfigEntityBase also has an $originalId property which holds exactly the same info, though it seems to be for a different use-case:

  /**
   * The original ID of the configuration entity.
   *
   * The ID of a configuration entity is a unique string (machine name). When a
   * configuration entity is updated and its machine name is renamed, the
   * original ID needs to be known.
   *
   * @var string
   */
  protected $originalId;  
  {...}
  // Backup the original ID, if any.
  // Configuration entity IDs are strings, and '0' is a valid ID.
  $original_id = $this->id();
  if ($original_id !== NULL && $original_id !== '') {
    $this->setOriginalId($original_id);
  }

Actually all config-entitys have an $id property, which could be could be, but must not is reems reasonable to move that property to ConfigEntityBase. This it must not be that way judging form the code above as the id key is generated like this:
$this->idKey = $this->entityType->getKey('id');

Alumei’s picture

We should propably leave the properties public as suggested in #2016679-29: Expand Entity Type interfaces to provide methods, protect the properties and also done in nearly all other issues working on ConfigEntities.

In that case it's only getters for:

  • FieldInstanceConfig::$field_name
  • FieldInstanceConfig::$field_uuid
  • FieldInstanceConfig::$entity_type
  • FieldInstanceConfig::$label
  • FieldInstanceConfig::$description
  • FieldInstanceConfig::$settings
  • FieldInstanceConfig::$required
  • FieldInstanceConfig::$default_value
  • FieldInstanceConfig::$default_value_function
  • FieldInstanceConfig::$deleted

And setters where applicable:

Check if it makes sense

Only add setters if it makes sense conceptually: setId() is not necessary for database/content entities, as the ID is automatically generated for them when they are saved. Another example: setUUID(), this is set automatically initially and must not be changed afterwards.

right?

Alumei’s picture

Status: Needs work » Active

These getter exist already:

  • FieldInstanceConfig::$entity_type => getTargetEntityTypeId()
  • FieldInstanceConfig::$label => getLabel()
  • FieldInstanceConfig::$description => getDescription()
  • FieldInstanceConfig::$settings => getSettings() AND getSettings($settings_name)
  • FieldInstanceConfig::$required => isRequired()
  • FieldInstanceConfig::$default_value => getDefaultValue()
  • FieldInstanceConfig::$default_value_function => getDefaultValue()

With this I'm unsure:

  • FieldInstanceConfig::$field_name => getName() : though it accesses $this->field->name

For these there is still a getter missing:

  • FieldInstanceConfig::$field_uuid => is this the same one as uuid() ?
  • FieldInstanceConfig::$deleted => isDeleted() ?

This setter could be resonable:

  • setLabel() => Dont have a proper Idea for this as the getter returns $this->label();
  • setDescription()
  • setSettings() => Dont have a proper Idea for this as the getter returns $this->settings + $this->field->getSettings();
  • setSettings($settings_name)
  • setDeleted() => absolutely unsure about this

Does this make any sense or did I miss something?

Alumei’s picture

Status: Active » Needs review
StatusFileSize
new4.25 KB

This patch starts from scratch and changes FieldInstanceConfig and FieldInstanceConfigInterface by

adding getters for:

  • FieldInstanceConfig::$field_uuid => though it calls $this->field->uuid(); to ensure that the correct uuid is used
  • FieldInstanceConfig::$deleted

adding setters for:

  • FieldInstanceConfig::$settings => though only setSettings($settings_name, ..) to change instance level settings
  • FieldInstanceConfig::$label
  • FieldInstanceConfig::$description
  • FieldInstanceConfig::$required => though the getter for this is on FieldDefinitionInterface

changes getter for:

  • FieldInstanceConfig::$label => Based on constructor code, the field instance should be allowed to change the field label for the current instance. The getter now returns the label propery to reflect that.

Status: Needs review » Needs work

The last submitted patch, 24: expand-field-instance-2030637-24.patch, failed testing.

a.milkovsky’s picture

I think the folders structure is changed.
Patch needs to be changed.
Currencly file core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php doesnt exist as well as the core/modules/field/lib/Drupal/field/Entity folder.

mile23’s picture

Status: Needs work » Needs review
StatusFileSize
new15.79 KB

Re-roll of #24.

Status: Needs review » Needs work

The last submitted patch, 28: 2030637_28.patch, failed testing.

jibran’s picture

+++ /dev/null
@@ -1,53 +0,0 @@
-parameters:

--- a/sites/default/default.settings.php
+++ b/sites/default/default.settings.php

unrelated to patch

mile23’s picture

Status: Needs work » Needs review
StatusFileSize
new3.24 KB

Based on testbot: Merge failed on default.settings.php and default.services.yml. Pulled those files from HEAD and here's the new patch.

mile23’s picture

Testbot passes because we patch classes which are deleted by the rebase.

The patch only introduces an interface and then doesn't add tests.

This might be a won't fix issue....

yched’s picture

Title: Expand FieldInstance with methods » Expand FieldConfig/BaseFieldOverride with methods

Updating title for the new name of the config entity.
+ meanwhile, BaseFieldOverride got added (both entity types have the same content and mostly inherit from the same FieldConfigBase base class, so they are best handled together)

daffie’s picture

Status: Needs review » Needs work

The class BaseFieldOverride needs an interface. The following function are new in the class: createFromBaseFieldDefinition() and loadByName().

The current patch introduces an interface for a class that already has an interface. So the patch no longer applies.

The class FieldStorageConfig has a lot of public variables that need to be changed to protected.

daffie’s picture

mile23’s picture

BaseFieldOverride extends FieldConfigBase, which implements FieldConfigInterface, and through inheritance, ConfigEntityInterface. I doubt BaseFieldOverride needs its own interface.

mile23’s picture

Assigned: Unassigned » mile23
mile23’s picture

yesct’s picture

Assigned: mile23 » Unassigned
Issue tags: -Novice

Thank you @Mile23 I really hope we can get these issues done before release, and this found something very tricky.

--

Removing Novice tag.
The novice parts of this have already been done, now the work is trickier.
https://drupal.org/core-mentoring/novice-tasks

--

in
#2398901-16: Image module makes fatal assumptions about EntityInterface
@yched suggests 3 ways forward.

I'm in favor of:

b) Keep separate patches, and each patch temporarily adds setSettings() to the other interface.
Minor overlap, perfectly acceptable, will just mean a reroll when the first one gets in.

--

Unassigning so it is clear anyone can try to do that.

daffie’s picture

Status: Needs work » Closed (won't fix)
Related issues: +#2030633: Expand FieldStorageConfig with methods

Merged this issue with #2030633: Expand FieldStorageConfig with methods. The reason why is explained in this comment. I gave it the status of "Closed (won't fix)". I that is wrong please correct me.

berdir’s picture

Are you sure about this? I already posted a patch in #2030633: Expand FieldStorageConfig with methods that makes it not necessary to merge it, this will simply have to clean up 3 lines of code then. The patch there is already pretty large, not sure if we should make it bigger.

daffie’s picture

Status: Closed (won't fix) » Postponed
yesct’s picture

Status: Postponed » Needs work

I'm not sure it is postponed either. I think we can work on this, and reroll if necessary if the other issue gets committed first.

mile23’s picture

Status: Needs work » Needs review

Patch in #31 still applies. Setting it to re-test.

None of the others are committed, or really even reviewed.

Mile23 queued 31: 2030637_30.patch for re-testing.

mile23’s picture

StatusFileSize
new6.18 KB

Oh yeah, that was the patch that just added an interface. Doh. Let's start over. :-)

This patch basically ignores all previous patches, which have been refactored away in other issues.

So at this point BaseFieldOverride is already encapsulated (in that it doesn't have any public properties).

FieldConfig has only one public property, $deleted, which is already encapsulated as isDeleted(). So I'll just change that to be protected and whatever other incompatibilities arise from that.

daffie’s picture

Status: Needs review » Reviewed & tested by the community

It all looks good to me.
All the variables are set to protected.
All documentation is in order.
It get a RTBC from me.

alexpott’s picture

Status: Reviewed & tested by the community » Needs work

So what about fieldConfigBase? I think this issue should be expanded in scope to cover that to because it is the shared base class of FieldConfig & BaseFieldOverride

mile23’s picture

Status: Needs work » Needs review
StatusFileSize
new6.18 KB

Needed a reroll.

berdir’s picture

Status: Needs review » Needs work

What alexpott said in #48.

I expect that this adds a setSetting() method, among other things. so that we can simplify image_entity_presave() from


  // @todo Simplify this in https://www.drupal.org/node/2030637, when both
  //   interfaces have a setSetting() method.
  if ($entity instanceof FieldStorageConfigInterface) {
    $entity->setSetting('default_image', $default_image);
  }
  elseif ($entity instanceof FieldConfig) {
    $entity->settings['default_image'] = $default_image;
  }

To

$entity->setSetting('default_image', $default_image);

Because we know that both interfaces/entity types that we are working with have that method.

mile23’s picture

Assigned: Unassigned » mile23
mile23’s picture

Assigned: mile23 » Unassigned
Status: Needs work » Needs review

The concerns in #50 will be met by any work on FieldConfigBase, because that's where we'd implement setSetting().

However, work on FieldConfigBase for #48 will be major, and will conflict with this critical: #2416409: Delete dependent config entities that don't implement onDependencyRemoval() when a config entity is deleted

Filed a follow-up here: #2426647: Expand FieldConfigBase with methods which is postponed on the critical.

alexpott’s picture

Status: Needs review » Needs work

Rather than creating a new postponed issue I suggest that we continue here - just as long as we don't do anything with the noFieldDelete property. And I don't mind rerolling the critical - which is postponed as well.

daffie’s picture

Title: Expand FieldConfig/BaseFieldOverride with methods » Expand FieldConfig/BaseFieldOverride/fieldConfigBase with methods

alexpott wants to expand this issue to also cover fieldConfigBase class (see comment #48).

daffie’s picture

Status: Needs work » Needs review
StatusFileSize
new64.84 KB

Added the fieldConfigBase class to the patch.
All class variables are set to protected, accept for $default_value.

daffie’s picture

Title: Expand FieldConfig/BaseFieldOverride/fieldConfigBase with methods » Expand FieldConfig/BaseFieldOverride/FieldConfigBase with methods
Issue summary: View changes
StatusFileSize
new65.46 KB

Fixed some mistakes in the patch and updated the issue summary.

daffie queued 56: 2030637-56.patch for re-testing.

Status: Needs review » Needs work

The last submitted patch, 56: 2030637-56.patch, failed testing.

daffie’s picture

Status: Needs work » Needs review
StatusFileSize
new65.41 KB

Reroll

yched’s picture

StatusFileSize
new59.66 KB

Reroll for now.

yched’s picture

StatusFileSize
new64.02 KB
new4.37 KB

Then, fixing FieldConfigEditForm, that got added meanwhile.

Status: Needs review » Needs work

The last submitted patch, 61: 2030637_FieldConfig_methods-61.patch, failed testing.

The last submitted patch, 60: 2030637_FieldConfig_methods-60.patch, failed testing.

yched’s picture

Status: Needs work » Needs review
StatusFileSize
new64.25 KB
new1.63 KB

- Removed the getBundle() method, it duplicates the existing getTargetBundle() we already have from FieldDefinitionInterface.
- Fixed a couple tests (i.e chasing HEAD since the last green patch)

Status: Needs review » Needs work

The last submitted patch, 64: 2030637_FieldConfig_methods-63.patch, failed testing.

yched’s picture

Status: Needs work » Needs review
StatusFileSize
new65.64 KB
new1.39 KB

Should be green.

yched’s picture

Just reordered the methods a bit (getters before setters), and made the ordering consistent between FieldConfigInterface and FieldConfigBase.

Then I actually reviewed the changes (at last...)

I'm wondering :
- why setRequired() is not added to FieldConfigInterface like the other setters added there, but to FieldDefinitionInterface above ?
It's a fact that FDI and FSDI lack setters, but IIRC we have an issue for it, meanwhile I'd rather be consistent in our inconsistency :-/
- why FieldConfigBase::$default_value is the only property that remains public ?

Will post a patch that fixes the above, and see what fails

yched’s picture

StatusFileSize
new68.02 KB
new5.35 KB

Sorry, first I forgot to upload the patch for my "Just reordered the methods a bit" comment above :-)

yched’s picture

Then, as per #67, checking what happens if
- setRequired() is added to FieldConfigInterface rather than FieldDefinitionInterface
- FieldConfigBase::$default_value goes protected

yched’s picture

StatusFileSize
new68.98 KB
new3.37 KB

Er, d.o, you must be kidding me.

Status: Needs review » Needs work

The last submitted patch, 70: 2030637_FieldConfig_methods-69.patch, failed testing.

The last submitted patch, 70: 2030637_FieldConfig_methods-69.patch, failed testing.

yched’s picture

Status: Needs work » Needs review
StatusFileSize
new68.78 KB
new446 bytes

OK, FieldConfigBase::$default_value is tricky because we don't have a getter for "the raw array stored in the property", only for "assemble the default value to use at runtime on newly created entities, can come from FieldConfigBase::$default_value or FieldConfigBase::$default_value_callback".
And there is some code that needs to do housekeeping on the former (EntityReferenceItem::calculateDependencies() for example)

I think we have an issue for that somewhere :-/

Reverting that then.

yched’s picture

Priority: Normal » Major

OK, this is ready for me then - I guess this will need someone else to push the RTBC button though :-/

Also, bumping to major, since the sister patch in #2030633: Expand FieldStorageConfig with methods got in, it would be pretty inconsistent to ship that way.

yched’s picture

Rest assured that the irony is not lost on me, but - my turn to bump and beg for an RTBC :-)

berdir’s picture

  1. +++ b/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php
    @@ -160,25 +160,6 @@ public function isDisplayConfigurable($display_context);
    -  public function isRequired();
    

    I don't see anywhere in this issue why we remove this? The method does exist on the parent, but it seems we're removing possibly relevant documentation here?

  2. +++ b/core/modules/field_ui/src/Form/FieldConfigEditForm.php
    @@ -35,18 +35,20 @@ class FieldConfigEditForm extends EntityForm {
    -    $field_storage = $this->entity->getFieldStorageDefinition();
    +    /** @var \Drupal\field\Entity\FieldConfig $field */
    +    $field = $this->entity;
    +    $field_storage = $field->getFieldStorageDefinition();
    
    @@ -55,7 +57,7 @@ public function form(array $form, FormStateInterface $form_state) {
           '#title' => $this->t('Label'),
    -      '#default_value' => $this->entity->getLabel() ?: $field_storage->getName(),
    +      '#default_value' => $field->getLabel() ?: $field_storage->getName(),
    

    This seems to result in quite a few changes that aren't really related to this issue?

    What we sometime do instead is document the type by overriding protected $ntity at the top of the class.

Other than that, looks ready to me.

yched’s picture

StatusFileSize
new65.25 KB
new4.64 KB

Thanks @Berdir !
And damn, busted on unrelated changes :-p

1. Well, this does add information about empty items being filtered out before checking validation :

   * If a field is required, an entity needs to have at least a valid,
   * non-empty item in that field's FieldItemList in order to pass validation.
   *
   * An item is considered empty if its isEmpty() method returns TRUE.
   * Typically, that is if at least one of its required properties is empty.

- Never been a fan of an interface overriding another interface just to add a different phpdoc :-)
- Those two paragraphs are already present and exactly duplicated in the phpdoc for FieldConfigInterface::setRequired(), where they arguably belong best (to inform the decision of setting to required or not). We usually avoid duplicate docs...
- But right, not really related :-). We can clean that up (or not) in the issue where we move setters in the FieldDefinitionInterface / FieldStorageDefinitionInterface, if we ever get there ...

2. Right, not really related either, it's just that all those $this->entity->something() get a bit old. But well apparently I didn't even consistently replaced all of them :-). Reverted to the current $this->entity.

berdir’s picture

Status: Needs review » Reviewed & tested by the community

Sorry :)

1. Would have been OK with that explanation (which makes sense), just wasn't sure if that was accidental or not.

alexpott’s picture

Status: Reviewed & tested by the community » Fixed

Committed f8f024e and pushed to 8.0.x. Thanks!

Committing under the maintainer discretion for fragility as per the consistency argument made in #75.

  • alexpott committed f8f024e on 8.0.x
    Issue #2030637 by yched, Mile23, daffie, Alumei, tidrif, chertzog,...
yched’s picture

Awesome. Thanks a lot @all that kept pushing this, and sorry that it took me so long to get to it

mpdonadio’s picture

Issue tags: +Needs change record

The issue summary for this is not accurate. The patch that was committed adds new methods, but it also changed the scope for some class properties from public to protected, which is an API change. At the very least, this needs a change record.

andypost’s picture

Status: Fixed » Needs work

probably update of CRs is better

daffie’s picture

There is still the variable FieldConfigBase::default_value that needs to be set to protected. I know that is a difficult one and in the ycheds words (#74):

OK, FieldConfigBase::$default_value is tricky because we don't have a getter for "the raw array stored in the property", only for "assemble the default value to use at runtime on newly created entities, can come from FieldConfigBase::$default_value or FieldConfigBase::$default_value_callback".

daffie’s picture

Created a followup issue: #2529034: Replace direct access to FieldConfigBase::default_value with methods.

Only a change record is still needed.

arla’s picture

  • alexpott committed f8f024e on 8.1.x
    Issue #2030637 by yched, Mile23, daffie, Alumei, tidrif, chertzog,...

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

  • alexpott committed f8f024e on 8.3.x
    Issue #2030637 by yched, Mile23, daffie, Alumei, tidrif, chertzog,...

  • alexpott committed f8f024e on 8.3.x
    Issue #2030637 by yched, Mile23, daffie, Alumei, tidrif, chertzog,...

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

  • alexpott committed f8f024e on 8.4.x
    Issue #2030637 by yched, Mile23, daffie, Alumei, tidrif, chertzog,...

  • alexpott committed f8f024e on 8.4.x
    Issue #2030637 by yched, Mile23, daffie, Alumei, tidrif, chertzog,...

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.6 was released on February 1, 2017 and is the final full bugfix release for the Drupal 8.2.x series. Drupal 8.2.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.3.0 on April 5, 2017. (Drupal 8.3.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.3.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.6 was released on August 2, 2017 and is the final full bugfix release for the Drupal 8.3.x series. Drupal 8.3.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.4.0 on October 4, 2017. (Drupal 8.4.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.4.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.4 was released on January 3, 2018 and is the final full bugfix release for the Drupal 8.4.x series. Drupal 8.4.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.5.0 on March 7, 2018. (Drupal 8.5.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.5.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.6 was released on August 1, 2018 and is the final bugfix release for the Drupal 8.5.x series. Drupal 8.5.x will not receive any further development aside from security fixes. Sites should prepare to update to 8.6.0 on September 5, 2018. (Drupal 8.6.0-rc1 is available for testing.)

Bug reports should be targeted against the 8.6.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.8.x-dev

Drupal 8.6.x will not receive any further development aside from security fixes. Bug reports should be targeted against the 8.8.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.9.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.7 was released on June 3, 2020 and is the final full bugfix release for the Drupal 8.8.x series. Drupal 8.8.x will not receive any further development aside from security fixes. Sites should prepare to update to Drupal 8.9.0 or Drupal 9.0.0 for ongoing support.

Bug reports should be targeted against the 8.9.x-dev branch from now on, and new development or disruptive changes should be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.2.x-dev

Drupal 8 is end-of-life as of November 17, 2021. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

quietone’s picture

Status: Needs work » Closed (outdated)

This issue was committed to 8.0.x and re-opened to add a change record. Since that was for Drupal 8.0, which is now End of Life, this is now outdated.

If this is incorrect reopen the issue, by setting the status to 'Active', and add a comment explaining what still needs to be done.

Thanks!

quietone’s picture

Version: 9.2.x-dev » 8.0.x-dev
Status: Closed (outdated) » Fixed
Issue tags: +Bug Smash Initiative

I have come to this issue during a bugsmash group triage on #2396713: Figure out how to encapsulate writable settings supplied by DataDefinitionInterface.

I incorrectly set the status to outdated. It should be Fixed and moved to 8.0.x, per the commit on 8.0.x. Adding credit for the work done after the commit.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.