Issue #3043797 by tim.plunkett, johndevman, phenaproxima: Create an interface for InlineBlockUsage
parent
d28a92f7bb
commit
f4f6026156
|
@ -8,7 +8,7 @@ use Drupal\block_content\Event\BlockContentGetDependencyEvent;
|
|||
use Drupal\Core\Database\Connection;
|
||||
use Drupal\Core\Entity\EntityInterface;
|
||||
use Drupal\Core\Entity\EntityTypeManagerInterface;
|
||||
use Drupal\layout_builder\InlineBlockUsage;
|
||||
use Drupal\layout_builder\InlineBlockUsageInterface;
|
||||
use Drupal\layout_builder\LayoutEntityHelperTrait;
|
||||
use Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
|
@ -52,7 +52,7 @@ class SetInlineBlockDependency implements EventSubscriberInterface {
|
|||
/**
|
||||
* The inline block usage service.
|
||||
*
|
||||
* @var \Drupal\layout_builder\InlineBlockUsage
|
||||
* @var \Drupal\layout_builder\InlineBlockUsageInterface
|
||||
*/
|
||||
protected $usage;
|
||||
|
||||
|
@ -63,12 +63,12 @@ class SetInlineBlockDependency implements EventSubscriberInterface {
|
|||
* The entity type manager.
|
||||
* @param \Drupal\Core\Database\Connection $database
|
||||
* The database connection.
|
||||
* @param \Drupal\layout_builder\InlineBlockUsage $usage
|
||||
* @param \Drupal\layout_builder\InlineBlockUsageInterface $usage
|
||||
* The inline block usage service.
|
||||
* @param \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface $section_storage_manager
|
||||
* The section storage manager.
|
||||
*/
|
||||
public function __construct(EntityTypeManagerInterface $entity_type_manager, Connection $database, InlineBlockUsage $usage, SectionStorageManagerInterface $section_storage_manager) {
|
||||
public function __construct(EntityTypeManagerInterface $entity_type_manager, Connection $database, InlineBlockUsageInterface $usage, SectionStorageManagerInterface $section_storage_manager) {
|
||||
$this->entityTypeManager = $entity_type_manager;
|
||||
$this->database = $database;
|
||||
$this->usage = $usage;
|
||||
|
@ -128,7 +128,6 @@ class SetInlineBlockDependency implements EventSubscriberInterface {
|
|||
// dependency. It may be used by another module besides layout builder.
|
||||
return NULL;
|
||||
}
|
||||
/** @var \Drupal\layout_builder\InlineBlockUsage $usage */
|
||||
$layout_entity_storage = $this->entityTypeManager->getStorage($layout_entity_info->layout_entity_type);
|
||||
$layout_entity = $layout_entity_storage->load($layout_entity_info->layout_entity_id);
|
||||
if ($this->isLayoutCompatibleEntity($layout_entity)) {
|
||||
|
|
|
@ -23,7 +23,7 @@ class InlineBlockEntityOperations implements ContainerInjectionInterface {
|
|||
/**
|
||||
* Inline block usage tracking service.
|
||||
*
|
||||
* @var \Drupal\layout_builder\InlineBlockUsage
|
||||
* @var \Drupal\layout_builder\InlineBlockUsageInterface
|
||||
*/
|
||||
protected $usage;
|
||||
|
||||
|
@ -52,7 +52,7 @@ class InlineBlockEntityOperations implements ContainerInjectionInterface {
|
|||
*
|
||||
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
|
||||
* The entity type manager service.
|
||||
* @param \Drupal\layout_builder\InlineBlockUsage $usage
|
||||
* @param \Drupal\layout_builder\InlineBlockUsageInterface $usage
|
||||
* Inline block usage tracking service.
|
||||
* @param \Drupal\Core\Database\Connection $database
|
||||
* The database connection.
|
||||
|
@ -65,7 +65,7 @@ class InlineBlockEntityOperations implements ContainerInjectionInterface {
|
|||
* - The $database parameter is unused and should be removed.
|
||||
* Deprecate in https://www.drupal.org/node/3031492.
|
||||
*/
|
||||
public function __construct(EntityTypeManagerInterface $entityTypeManager, InlineBlockUsage $usage, Connection $database, SectionStorageManagerInterface $section_storage_manager = NULL) {
|
||||
public function __construct(EntityTypeManagerInterface $entityTypeManager, InlineBlockUsageInterface $usage, Connection $database, SectionStorageManagerInterface $section_storage_manager = NULL) {
|
||||
$this->entityTypeManager = $entityTypeManager;
|
||||
$this->blockContentStorage = $entityTypeManager->getStorage('block_content');
|
||||
$this->usage = $usage;
|
||||
|
|
|
@ -7,10 +7,8 @@ use Drupal\Core\Entity\EntityInterface;
|
|||
|
||||
/**
|
||||
* Service class to track inline block usage.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class InlineBlockUsage {
|
||||
class InlineBlockUsage implements InlineBlockUsageInterface {
|
||||
|
||||
/**
|
||||
* The database connection.
|
||||
|
@ -30,12 +28,7 @@ class InlineBlockUsage {
|
|||
}
|
||||
|
||||
/**
|
||||
* Adds a usage record.
|
||||
*
|
||||
* @param int $block_content_id
|
||||
* The block content id.
|
||||
* @param \Drupal\Core\Entity\EntityInterface $entity
|
||||
* The layout entity.
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function addUsage($block_content_id, EntityInterface $entity) {
|
||||
$this->database->merge('inline_block_usage')
|
||||
|
@ -47,13 +40,7 @@ class InlineBlockUsage {
|
|||
}
|
||||
|
||||
/**
|
||||
* Gets unused inline block IDs.
|
||||
*
|
||||
* @param int $limit
|
||||
* The maximum number of block content entity IDs to return.
|
||||
*
|
||||
* @return int[]
|
||||
* The entity IDs.
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getUnused($limit = 100) {
|
||||
$query = $this->database->select('inline_block_usage', 't');
|
||||
|
@ -64,10 +51,7 @@ class InlineBlockUsage {
|
|||
}
|
||||
|
||||
/**
|
||||
* Remove usage record by layout entity.
|
||||
*
|
||||
* @param \Drupal\Core\Entity\EntityInterface $entity
|
||||
* The layout entity.
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function removeByLayoutEntity(EntityInterface $entity) {
|
||||
$query = $this->database->update('inline_block_usage')
|
||||
|
@ -81,10 +65,7 @@ class InlineBlockUsage {
|
|||
}
|
||||
|
||||
/**
|
||||
* Delete the inline blocks' the usage records.
|
||||
*
|
||||
* @param int[] $block_content_ids
|
||||
* The block content entity IDs.
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function deleteUsage(array $block_content_ids) {
|
||||
if (!empty($block_content_ids)) {
|
||||
|
@ -94,13 +75,7 @@ class InlineBlockUsage {
|
|||
}
|
||||
|
||||
/**
|
||||
* Gets usage record for inline block by ID.
|
||||
*
|
||||
* @param int $block_content_id
|
||||
* The block content entity ID.
|
||||
*
|
||||
* @return object
|
||||
* The usage record with properties layout_entity_id and layout_entity_type.
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getUsage($block_content_id) {
|
||||
$query = $this->database->select('inline_block_usage');
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\layout_builder;
|
||||
|
||||
use Drupal\Core\Entity\EntityInterface;
|
||||
|
||||
/**
|
||||
* Defines an interface for tracking inline block usage.
|
||||
*/
|
||||
interface InlineBlockUsageInterface {
|
||||
|
||||
/**
|
||||
* Adds a usage record.
|
||||
*
|
||||
* @param int $block_content_id
|
||||
* The block content ID.
|
||||
* @param \Drupal\Core\Entity\EntityInterface $entity
|
||||
* The layout entity.
|
||||
*/
|
||||
public function addUsage($block_content_id, EntityInterface $entity);
|
||||
|
||||
/**
|
||||
* Gets unused inline block IDs.
|
||||
*
|
||||
* @param int $limit
|
||||
* The maximum number of block content entity IDs to return.
|
||||
*
|
||||
* @return int[]
|
||||
* The entity IDs.
|
||||
*/
|
||||
public function getUnused($limit = 100);
|
||||
|
||||
/**
|
||||
* Remove usage record by layout entity.
|
||||
*
|
||||
* @param \Drupal\Core\Entity\EntityInterface $entity
|
||||
* The layout entity.
|
||||
*/
|
||||
public function removeByLayoutEntity(EntityInterface $entity);
|
||||
|
||||
/**
|
||||
* Delete the inline blocks' the usage records.
|
||||
*
|
||||
* @param int[] $block_content_ids
|
||||
* The block content entity IDs.
|
||||
*/
|
||||
public function deleteUsage(array $block_content_ids);
|
||||
|
||||
/**
|
||||
* Gets usage record for inline block by ID.
|
||||
*
|
||||
* @param int $block_content_id
|
||||
* The block content entity ID.
|
||||
*
|
||||
* @return object
|
||||
* The usage record with properties layout_entity_id and layout_entity_type.
|
||||
*/
|
||||
public function getUsage($block_content_id);
|
||||
|
||||
}
|
|
@ -264,7 +264,7 @@ class InlineBlockTest extends InlineBlockTestBase {
|
|||
public function testDeletion() {
|
||||
/** @var \Drupal\Core\Cron $cron */
|
||||
$cron = \Drupal::service('cron');
|
||||
/** @var \Drupal\layout_builder\InlineBlockUsage $usage */
|
||||
/** @var \Drupal\layout_builder\InlineBlockUsageInterface $usage */
|
||||
$usage = \Drupal::service('inline_block.usage');
|
||||
$this->drupalLogin($this->drupalCreateUser([
|
||||
'administer content types',
|
||||
|
|
Loading…
Reference in New Issue