annotate core/modules/content_translation/src/ContentTranslationUpdatesManager.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
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 }