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