Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\content_translation;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\Entity\EntityDefinitionUpdateManagerInterface;
|
Chris@18
|
6 use Drupal\Core\Entity\EntityFieldManagerInterface;
|
Chris@18
|
7 use Drupal\Core\Entity\EntityLastInstalledSchemaRepositoryInterface;
|
Chris@18
|
8 use Drupal\Core\Entity\EntityTypeManagerInterface;
|
Chris@18
|
9
|
Chris@18
|
10 @trigger_error('\Drupal\content_translation\ContentTranslationUpdatesManager is scheduled for removal in Drupal 9.0.0. Definitions are updated automatically now so no replacement is needed. See https://www.drupal.org/node/2973222.', E_USER_DEPRECATED);
|
Chris@0
|
11
|
Chris@0
|
12 /**
|
Chris@0
|
13 * Provides the logic needed to update field storage definitions when needed.
|
Chris@18
|
14 *
|
Chris@18
|
15 * @deprecated in Drupal 8.7.x, to be removed before Drupal 9.0.0.
|
Chris@18
|
16 * Definitions are updated automatically now so no replacement is needed.
|
Chris@18
|
17 *
|
Chris@18
|
18 * @see https://www.drupal.org/node/2973222
|
Chris@0
|
19 */
|
Chris@18
|
20 class ContentTranslationUpdatesManager {
|
Chris@0
|
21
|
Chris@0
|
22 /**
|
Chris@18
|
23 * The entity field manager.
|
Chris@0
|
24 *
|
Chris@18
|
25 * @var \Drupal\Core\Entity\EntityFieldManagerInterface
|
Chris@0
|
26 */
|
Chris@18
|
27 protected $entityFieldManager;
|
Chris@18
|
28
|
Chris@18
|
29 /**
|
Chris@18
|
30 * The installed entity definition repository.
|
Chris@18
|
31 *
|
Chris@18
|
32 * @var \Drupal\Core\Entity\EntityLastInstalledSchemaRepositoryInterface;
|
Chris@18
|
33 */
|
Chris@18
|
34 protected $entityLastInstalledSchemaRepository;
|
Chris@18
|
35
|
Chris@18
|
36 /**
|
Chris@18
|
37 * The entity type manager.
|
Chris@18
|
38 *
|
Chris@18
|
39 * @var \Drupal\Core\Entity\EntityTypeManagerInterface
|
Chris@18
|
40 */
|
Chris@18
|
41 protected $entityTypeManager;
|
Chris@0
|
42
|
Chris@0
|
43 /**
|
Chris@0
|
44 * The entity definition update manager.
|
Chris@0
|
45 *
|
Chris@0
|
46 * @var \Drupal\Core\Entity\EntityDefinitionUpdateManagerInterface
|
Chris@0
|
47 */
|
Chris@0
|
48 protected $updateManager;
|
Chris@0
|
49
|
Chris@0
|
50 /**
|
Chris@0
|
51 * Constructs an updates manager instance.
|
Chris@0
|
52 *
|
Chris@18
|
53 * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
|
Chris@18
|
54 * The entity type manager.
|
Chris@0
|
55 * @param \Drupal\Core\Entity\EntityDefinitionUpdateManagerInterface $update_manager
|
Chris@0
|
56 * The entity definition update manager.
|
Chris@18
|
57 * @param \Drupal\Core\Entity\EntityFieldManagerInterface $entity_field_manager
|
Chris@18
|
58 * The entity field manager.
|
Chris@18
|
59 * @param \Drupal\Core\Entity\EntityLastInstalledSchemaRepositoryInterface $entity_last_installed_schema_repository
|
Chris@18
|
60 * The installed entity definition repository.
|
Chris@0
|
61 */
|
Chris@18
|
62 public function __construct(EntityTypeManagerInterface $entity_type_manager, EntityDefinitionUpdateManagerInterface $update_manager, EntityFieldManagerInterface $entity_field_manager = NULL, EntityLastInstalledSchemaRepositoryInterface $entity_last_installed_schema_repository = NULL) {
|
Chris@18
|
63 $this->entityTypeManager = $entity_type_manager;
|
Chris@0
|
64 $this->updateManager = $update_manager;
|
Chris@18
|
65 if (!$entity_field_manager) {
|
Chris@18
|
66 $entity_field_manager = \Drupal::service('entity_field.manager');
|
Chris@18
|
67 }
|
Chris@18
|
68 $this->entityFieldManager = $entity_field_manager;
|
Chris@18
|
69 if (!$entity_last_installed_schema_repository) {
|
Chris@18
|
70 $entity_last_installed_schema_repository = \Drupal::service('entity.last_installed_schema.repository');
|
Chris@18
|
71 }
|
Chris@18
|
72 $this->entityLastInstalledSchemaRepository = $entity_last_installed_schema_repository;
|
Chris@0
|
73 }
|
Chris@0
|
74
|
Chris@0
|
75 /**
|
Chris@0
|
76 * Executes field storage definition updates if needed.
|
Chris@0
|
77 *
|
Chris@0
|
78 * @param array $entity_types
|
Chris@0
|
79 * A list of entity type definitions to be processed.
|
Chris@0
|
80 */
|
Chris@0
|
81 public function updateDefinitions(array $entity_types) {
|
Chris@0
|
82 // Handle field storage definition creation, if needed.
|
Chris@0
|
83 if ($this->updateManager->needsUpdates()) {
|
Chris@0
|
84 foreach ($entity_types as $entity_type_id => $entity_type) {
|
Chris@18
|
85 $storage_definitions = $this->entityFieldManager->getFieldStorageDefinitions($entity_type_id);
|
Chris@18
|
86 $installed_storage_definitions = $this->entityLastInstalledSchemaRepository->getLastInstalledFieldStorageDefinitions($entity_type_id);
|
Chris@0
|
87 foreach (array_diff_key($storage_definitions, $installed_storage_definitions) as $storage_definition) {
|
Chris@0
|
88 /** @var $storage_definition \Drupal\Core\Field\FieldStorageDefinitionInterface */
|
Chris@0
|
89 if ($storage_definition->getProvider() == 'content_translation') {
|
Chris@0
|
90 $this->updateManager->installFieldStorageDefinition($storage_definition->getName(), $entity_type_id, 'content_translation', $storage_definition);
|
Chris@0
|
91 }
|
Chris@0
|
92 }
|
Chris@0
|
93 }
|
Chris@0
|
94 }
|
Chris@0
|
95 }
|
Chris@0
|
96
|
Chris@0
|
97 }
|