diff --git a/src/Entity/Migration.php b/src/Entity/Migration.php index 6359825cbecfa3977035b768a887a437003de912..e128e8a22228c337c9ef49b085556f4508255b61 100644 --- a/src/Entity/Migration.php +++ b/src/Entity/Migration.php @@ -18,7 +18,8 @@ use Drupal\Core\Entity\EntityTypeInterface; * entity_keys = { * "id" = "id", * "label" = "label", - * "weight" = "weight" + * "weight" = "weight", + * "status" = "status" * } * ) */ diff --git a/src/Plugin/MigrationConfigDeriver.php b/src/Plugin/MigrationConfigDeriver.php index 0135444974f3da4f93e587d787563b8977e2c0e6..d66892128881e6b5db6124e22f2192938ce12185 100644 --- a/src/Plugin/MigrationConfigDeriver.php +++ b/src/Plugin/MigrationConfigDeriver.php @@ -20,6 +20,10 @@ class MigrationConfigDeriver extends DeriverBase { $migrations = Migration::loadMultiple(); /** @var \Drupal\migrate_plus\Entity\MigrationInterface $migration */ foreach ($migrations as $id => $migration) { + if (!$migration->status()) { + continue; + } + $this->derivatives[$id] = $migration->toArray(); } return $this->derivatives; diff --git a/tests/src/Kernel/MigrationConfigEntityTest.php b/tests/src/Kernel/MigrationConfigEntityTest.php index 354da7628af33b165db8bce8239e59661d942b14..2570e18407950e1e2cf239f7081d6f856f1338e7 100644 --- a/tests/src/Kernel/MigrationConfigEntityTest.php +++ b/tests/src/Kernel/MigrationConfigEntityTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\migrate_plus\Kernel; +use Drupal\Component\Plugin\Exception\PluginNotFoundException; use Drupal\KernelTests\KernelTestBase; use Drupal\migrate_plus\Entity\Migration; @@ -35,6 +36,7 @@ class MigrationConfigEntityTest extends KernelTestBase { public function testCacheInvalidation() { $config = Migration::create([ 'id' => 'test', + 'status' => TRUE, 'label' => 'Label A', 'migration_tags' => [], 'source' => [], @@ -57,4 +59,41 @@ class MigrationConfigEntityTest extends KernelTestBase { $this->assertSame('Label B', $this->pluginManager->getDefinition('test')['label']); } + /** + * Tests migration status. + */ + public function testMigrationStatus() { + $configs = [ + [ + 'id' => 'test_active', + 'status' => TRUE, + 'label' => 'Label Active', + 'migration_tags' => [], + 'source' => [], + 'destination' => [], + 'migration_dependencies' => [], + ], + [ + 'id' => 'test_inactive', + 'status' => FALSE, + 'label' => 'Label Inactive', + 'migration_tags' => [], + 'source' => [], + 'destination' => [], + 'migration_dependencies' => [], + ], + ]; + + foreach ($configs as $config) { + Migration::create($config)->save(); + } + + $definitions = $this->pluginManager->getDefinitions(); + $this->assertCount(1, $definitions); + $this->assertArrayHasKey('test_active', $definitions); + + $this->setExpectedException(PluginNotFoundException::class, 'The "test_inactive" plugin does not exist.'); + $this->pluginManager->getDefinition('test_inactive'); + } + }