annotate modules/contrib/migrate_plus/src/Entity/MigrationGroup.php @ 7:848c88cfe644

More layout
author Chris Cannam
date Fri, 05 Jan 2018 13:59:44 +0000
parents 4c8ae668cc8c
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@0 22 * }
Chris@0 23 * )
Chris@0 24 */
Chris@0 25 class MigrationGroup extends ConfigEntityBase implements MigrationGroupInterface {
Chris@0 26
Chris@0 27 /**
Chris@0 28 * The migration group ID (machine name).
Chris@0 29 *
Chris@0 30 * @var string
Chris@0 31 */
Chris@0 32 protected $id;
Chris@0 33
Chris@0 34 /**
Chris@0 35 * The human-readable label for the migration group.
Chris@0 36 *
Chris@0 37 * @var string
Chris@0 38 */
Chris@0 39 protected $label;
Chris@0 40
Chris@0 41 /**
Chris@0 42 * {@inheritdoc}
Chris@0 43 */
Chris@0 44 public function delete() {
Chris@0 45 // Delete all migrations contained in this group.
Chris@0 46 $query = \Drupal::entityQuery('migration')
Chris@0 47 ->condition('migration_group', $this->id());
Chris@0 48 $names = $query->execute();
Chris@0 49
Chris@0 50 // Order the migrations according to their dependencies.
Chris@0 51 /** @var MigrationInterface[] $migrations */
Chris@0 52 $migrations = \Drupal::entityTypeManager()->getStorage('migration')->loadMultiple($names);
Chris@0 53
Chris@0 54 // Delete in reverse order, so dependencies are never violated.
Chris@0 55 $migrations = array_reverse($migrations);
Chris@0 56
Chris@0 57 foreach ($migrations as $migration) {
Chris@0 58 $migration->delete();
Chris@0 59 }
Chris@0 60
Chris@0 61 // Finally, delete the group itself.
Chris@0 62 parent::delete();
Chris@0 63 }
Chris@0 64
Chris@0 65 /**
Chris@0 66 * {@inheritdoc}
Chris@0 67 */
Chris@0 68 public function calculateDependencies() {
Chris@0 69 parent::calculateDependencies();
Chris@0 70 // Make sure we save any explicit module dependencies.
Chris@0 71 if ($provider = $this->get('module')) {
Chris@0 72 $this->addDependency('module', $provider);
Chris@0 73 }
Chris@0 74 return $this->dependencies;
Chris@0 75 }
Chris@0 76
Chris@0 77 }