diff --git a/integer_to_decimal.info.yml b/integer_to_decimal.info.yml index ba3c79d7b382e4903ec6b344605f9da9bd557962..c00a754d4d9cd61a5aa9490f9fc2bffb4c6a5c85 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 deb00319b5b5480649190668e1035aad19e5b69c..1dc729863df86fe3ce4a2de20b41bb2e972d1e9f 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 f283b457a7939b3ada7481a33f74879abf898485..a1d6fb0a1d56d5bc75e93b4e03dc4a8f8dbf5087 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)) {