Issue #2971779 by timmillwood, amateescu, alexpott, Sam152: Disallow moderation of internal entity types
parent
00ed1ed469
commit
1e7cb6ac40
|
@ -130,7 +130,7 @@ class EntityTypeInfo implements ContainerInjectionInterface {
|
||||||
public function entityTypeAlter(array &$entity_types) {
|
public function entityTypeAlter(array &$entity_types) {
|
||||||
foreach ($entity_types as $entity_type_id => $entity_type) {
|
foreach ($entity_types as $entity_type_id => $entity_type) {
|
||||||
// The ContentModerationState entity type should never be moderated.
|
// The ContentModerationState entity type should never be moderated.
|
||||||
if ($entity_type->isRevisionable() && $entity_type_id != 'content_moderation_state') {
|
if ($entity_type->isRevisionable() && !$entity_type->isInternal()) {
|
||||||
$entity_types[$entity_type_id] = $this->addModerationToEntityType($entity_type);
|
$entity_types[$entity_type_id] = $this->addModerationToEntityType($entity_type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,4 +61,34 @@ class EntityTypeInfoTest extends KernelTestBase {
|
||||||
$this->assertTrue($base_fields['moderation_state']->isTranslatable());
|
$this->assertTrue($base_fields['moderation_state']->isTranslatable());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test the correct entity types have moderation added.
|
||||||
|
*
|
||||||
|
* @covers ::entityTypeAlter
|
||||||
|
*
|
||||||
|
* @dataProvider providerTestEntityTypeAlter
|
||||||
|
*/
|
||||||
|
public function testEntityTypeAlter($entity_type_id, $moderatable) {
|
||||||
|
$entity_types = $this->entityTypeManager->getDefinitions();
|
||||||
|
$this->assertSame($moderatable, $entity_types[$entity_type_id]->hasHandlerClass('moderation'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides test data for testEntityTypeAlter().
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
* An array of test cases, where each test case is an array with the
|
||||||
|
* following values:
|
||||||
|
* - An entity type ID.
|
||||||
|
* - Whether the entity type is moderatable or not.
|
||||||
|
*/
|
||||||
|
public function providerTestEntityTypeAlter() {
|
||||||
|
$tests = [];
|
||||||
|
$tests['non_internal_non_revisionable'] = ['entity_test', FALSE];
|
||||||
|
$tests['non_internal_revisionable'] = ['entity_test_rev', TRUE];
|
||||||
|
$tests['internal_non_revisionable'] = ['entity_test_no_label', FALSE];
|
||||||
|
$tests['internal_revisionable'] = ['content_moderation_state', FALSE];
|
||||||
|
return $tests;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue