comparison modules/contrib/migrate_plus/src/Entity/MigrationGroup.php @ 0:4c8ae668cc8c

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