annotate modules/contrib/migrate_plus/src/Entity/MigrationGroup.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents a9cd425dd02b
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\migrate_plus\Entity;
Chris@0 4
Chris@0 5 use Drupal\Core\Config\Entity\ConfigEntityBase;
Chris@0 6
Chris@0 7 /**
Chris@0 8 * Defines the Migration Group entity.
Chris@0 9 *
Chris@0 10 * The migration group entity is used to group active migrations, as well as to
Chris@0 11 * store shared migration configuration.
Chris@0 12 *
Chris@0 13 * @ConfigEntityType(
Chris@0 14 * id = "migration_group",
Chris@0 15 * label = @Translation("Migration Group"),
Chris@0 16 * module = "migrate_plus",
Chris@0 17 * handlers = {
Chris@0 18 * },
Chris@0 19 * entity_keys = {
Chris@0 20 * "id" = "id",
Chris@0 21 * "label" = "label"
Chris@4 22 * },
Chris@4 23 * config_export = {
Chris@4 24 * "id",
Chris@4 25 * "label",
Chris@4 26 * "description",
Chris@4 27 * "source_type",
Chris@4 28 * "module",
Chris@4 29 * "shared_configuration",
Chris@4 30 * },
Chris@0 31 * )
Chris@0 32 */
Chris@0 33 class MigrationGroup extends ConfigEntityBase implements MigrationGroupInterface {
Chris@0 34
Chris@0 35 /**
Chris@0 36 * The migration group ID (machine name).
Chris@0 37 *
Chris@0 38 * @var string
Chris@0 39 */
Chris@0 40 protected $id;
Chris@0 41
Chris@0 42 /**
Chris@0 43 * The human-readable label for the migration group.
Chris@0 44 *
Chris@0 45 * @var string
Chris@0 46 */
Chris@0 47 protected $label;
Chris@0 48
Chris@0 49 /**
Chris@0 50 * {@inheritdoc}
Chris@0 51 */
Chris@0 52 public function delete() {
Chris@0 53 // Delete all migrations contained in this group.
Chris@0 54 $query = \Drupal::entityQuery('migration')
Chris@0 55 ->condition('migration_group', $this->id());
Chris@0 56 $names = $query->execute();
Chris@0 57
Chris@0 58 // Order the migrations according to their dependencies.
Chris@0 59 /** @var MigrationInterface[] $migrations */
Chris@0 60 $migrations = \Drupal::entityTypeManager()->getStorage('migration')->loadMultiple($names);
Chris@0 61
Chris@0 62 // Delete in reverse order, so dependencies are never violated.
Chris@0 63 $migrations = array_reverse($migrations);
Chris@0 64
Chris@0 65 foreach ($migrations as $migration) {
Chris@0 66 $migration->delete();
Chris@0 67 }
Chris@0 68
Chris@0 69 // Finally, delete the group itself.
Chris@0 70 parent::delete();
Chris@0 71 }
Chris@0 72
Chris@0 73 /**
Chris@0 74 * {@inheritdoc}
Chris@0 75 */
Chris@0 76 public function calculateDependencies() {
Chris@0 77 parent::calculateDependencies();
Chris@0 78 // Make sure we save any explicit module dependencies.
Chris@0 79 if ($provider = $this->get('module')) {
Chris@0 80 $this->addDependency('module', $provider);
Chris@0 81 }
Chris@0 82 return $this->dependencies;
Chris@0 83 }
Chris@0 84
Chris@0 85 }