From 6049f1a450dcd84c55683f3527b303f85e85a8bf Mon Sep 17 00:00:00 2001 From: Michael Mwebaze <michael.mwebaze@gmail.com> Date: Mon, 24 Oct 2022 13:34:33 -0400 Subject: [PATCH] Fixed bug related to issue 3300443 --- integer_to_decimal.info.yml | 7 ++++++- integer_to_decimal.module | 11 +++++++++-- src/Service/FieldUpdaterService.php | 17 +++++++++++------ 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/integer_to_decimal.info.yml b/integer_to_decimal.info.yml index ba3c79d..c00a754 100644 --- a/integer_to_decimal.info.yml +++ b/integer_to_decimal.info.yml @@ -4,4 +4,9 @@ description: 'Changes field type numeric with data to field type decimal.' package: Other core_version_requirement: ^8 || ^9 || ^10 dependencies: - - drupal:node + - node + +# Information added by Drupal.org packaging script on 2022-06-27 +version: '2.0.1' +project: 'integer_to_decimal' +datestamp: 1656349293 diff --git a/integer_to_decimal.module b/integer_to_decimal.module index deb0031..1dc7298 100644 --- a/integer_to_decimal.module +++ b/integer_to_decimal.module @@ -1,5 +1,7 @@ <?php +use Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException; +use Drupal\Core\Entity\EntityStorageException; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Entity\EntityForm; use Drupal\integer_to_decimal\Util\EntityFromUri; @@ -96,7 +98,12 @@ function integer_to_decimal_field_storage_config_edit_form(array $form, FormStat $scale = $form_state->getValue('scale'); $bundles = unserialize($form_state->getValue('bundles')); - $fieldUpdaterService = Drupal::service('field_updater'); - $fieldUpdaterService->fieldUpdater($field_name, 'decimal',$entity_type, $bundles, $precision, $scale); + /** @var Drupal\integer_to_decimal\Service\FieldUpdaterService $field_updater_service */ + $field_updater_service = Drupal::service('field_updater'); + try { + $field_updater_service->fieldUpdater($field_name, 'decimal', $entity_type, $bundles, $precision, $scale); + } catch (InvalidPluginDefinitionException|EntityStorageException $e) { + \Drupal::logger('integer_to_decimal')->notice($e->getMessage()); + } } } diff --git a/src/Service/FieldUpdaterService.php b/src/Service/FieldUpdaterService.php index f283b45..a1d6fb0 100644 --- a/src/Service/FieldUpdaterService.php +++ b/src/Service/FieldUpdaterService.php @@ -3,6 +3,7 @@ namespace Drupal\integer_to_decimal\Service; use Drupal\Core\Entity\EntityFieldManagerInterface; +use Drupal\Core\Entity\EntityStorageException; use Drupal\Core\Messenger\MessengerInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\field\Entity\FieldConfig; @@ -46,23 +47,27 @@ class FieldUpdaterService implements FieldUpdaterServiceInterface { /** * {@inheritdoc} * + * @throws EntityStorageException */ public function fieldUpdater($field, $type, $entity_type, $bundles, $precision, $scale) { $database = $this->connection; $existingData = []; $tables = []; - //$entity_type_manager = \Drupal::getContainer()->get('entity_type.manager'); - //$entity_field_manager = \Drupal::getContainer()->get('entity_field.manager'); + $storage = $this->entityTypeManager->getStorage($entity_type); + // Get an instance of Drupal\Core\Entity\Sql\DefaultTableMapping class - $table_mapping = $this->entityTypeManager->getStorage($entity_type)->getTableMapping(); + $table_mapping = $storage->getTableMapping(); $storage_definitions = $this->entityFieldManager->getFieldStorageDefinitions($entity_type); $data_table = $table_mapping->getDedicatedDataTableName($storage_definitions[$field]); if ($data_table) { $tables[] = $data_table; } - $revision_table = $table_mapping->getDedicatedRevisionTableName($storage_definitions[$field]); - if ($revision_table) { - $tables[] = $revision_table; + + if ($storage->getEntityType()->isRevisionable()){ + $revision_table = $table_mapping->getDedicatedRevisionTableName($storage_definitions[$field]); + if ($revision_table) { + $tables[] = $revision_table; + } } if (empty($tables)) { -- GitLab