Mercurial > hg > isophonics-drupal-site
diff core/modules/block_content/src/Entity/BlockContent.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | 1fec387a4317 |
children |
line wrap: on
line diff
--- a/core/modules/block_content/src/Entity/BlockContent.php Tue Jul 10 15:07:59 2018 +0100 +++ b/core/modules/block_content/src/Entity/BlockContent.php Thu Feb 28 13:21:36 2019 +0000 @@ -2,6 +2,7 @@ namespace Drupal\block_content\Entity; +use Drupal\block_content\Access\RefinableDependentAccessTrait; use Drupal\Core\Entity\EditorialContentEntityBase; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Entity\EntityTypeInterface; @@ -15,6 +16,13 @@ * @ContentEntityType( * id = "block_content", * label = @Translation("Custom block"), + * label_collection = @Translation("Custom blocks"), + * label_singular = @Translation("custom block"), + * label_plural = @Translation("custom blocks"), + * label_count = @PluralTranslation( + * singular = "@count custom block", + * plural = "@count custom blocks", + * ), * bundle_label = @Translation("Custom block type"), * handlers = { * "storage" = "Drupal\Core\Entity\Sql\SqlContentEntityStorage", @@ -70,6 +78,8 @@ */ class BlockContent extends EditorialContentEntityBase implements BlockContentInterface { + use RefinableDependentAccessTrait; + /** * The theme the block is being created in. * @@ -111,7 +121,9 @@ */ public function postSave(EntityStorageInterface $storage, $update = TRUE) { parent::postSave($storage, $update); - static::invalidateBlockPluginCache(); + if ($this->isReusable() || (isset($this->original) && $this->original->isReusable())) { + static::invalidateBlockPluginCache(); + } } /** @@ -119,7 +131,14 @@ */ public static function postDelete(EntityStorageInterface $storage, array $entities) { parent::postDelete($storage, $entities); - static::invalidateBlockPluginCache(); + /** @var \Drupal\block_content\BlockContentInterface $block */ + foreach ($entities as $block) { + if ($block->isReusable()) { + // If any deleted blocks are reusable clear the block cache. + static::invalidateBlockPluginCache(); + return; + } + } } /** @@ -193,6 +212,13 @@ ->setTranslatable(TRUE) ->setRevisionable(TRUE); + $fields['reusable'] = BaseFieldDefinition::create('boolean') + ->setLabel(t('Reusable')) + ->setDescription(t('A boolean indicating whether this block is reusable.')) + ->setTranslatable(FALSE) + ->setRevisionable(FALSE) + ->setDefaultValue(TRUE); + return $fields; } @@ -276,6 +302,27 @@ } /** + * {@inheritdoc} + */ + public function isReusable() { + return (bool) $this->get('reusable')->value; + } + + /** + * {@inheritdoc} + */ + public function setReusable() { + return $this->set('reusable', TRUE); + } + + /** + * {@inheritdoc} + */ + public function setNonReusable() { + return $this->set('reusable', FALSE); + } + + /** * Invalidates the block plugin cache after changes and deletions. */ protected static function invalidateBlockPluginCache() {