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 }
|