ultimate_table_field-1.0.0-alpha5/ultimate_table_field.install
ultimate_table_field.install
<?php
/**
* @file
* Module install hooks.
*/
use Drupal\field\Entity\FieldConfig;
/**
* Update existing table field values structure.
*/
function ultimate_table_field_update_10101(&$sandbox) {
/** @var \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager */
$entity_type_manager = \Drupal::service('entity_type.manager');
$entity_type_bundle_info = \Drupal::service('entity_type.bundle.info');
/** @var \Drupal\Core\Entity\EntityFieldManagerInterface $entity_field_manager */
$entity_field_manager = \Drupal::service('entity_field.manager');
$entity_types = $entity_type_manager->getDefinitions();
foreach ($entity_types as $entity_type_id => $entity_type) {
$bundles = $entity_type_bundle_info->getBundleInfo($entity_type_id);
foreach ($bundles as $bundle => $bundle_info) {
try {
$field_definitions = $entity_field_manager->getFieldDefinitions($entity_type_id, $bundle);
foreach ($field_definitions as $fieldDefinition) {
if ($fieldDefinition->getType() === 'ultimate_table') {
$field_name = $fieldDefinition->getName();
$ids = $entity_type_manager->getStorage($entity_type_id)
->getQuery()
->accessCheck(FALSE)
->exists($field_name)
->execute();
if (empty($ids)) {
continue;
}
$entities = $entity_type_manager->getStorage($entity_type_id)->loadMultiple($ids);
foreach ($entities as $entity) {
$values = $entity->get($field_name)->getValue();
if (empty($values)) {
continue;
}
$values = array_map(fn($val) => $val['value'][0], $values);
$values = [
'value' => reset($values),
];
$entity->set($field_name, $values);
$entity->save();
}
}
}
}
catch (Exception $e) {
}
}
}
}
/**
* Update existing table field values structure.
*/
function ultimate_table_field_update_10102(&$sandbox) {
$fields = FieldConfig::loadMultiple();
$fields = array_filter($fields, fn($field) => $field->getType() === 'ultimate_table');
$entity_type_manager = Drupal::entityTypeManager();
Drupal::logger('ultimate_table_field')->notice('Start updating...');
foreach ($fields as $field_config) {
$entity_type_id = $field_config->getTargetEntityTypeId();
$entity_type = $entity_type_manager->getDefinition($entity_type_id);
if (!$entity_type) {
continue;
}
$bundle_key = $entity_type->getKey('bundle');
$query = $entity_type_manager->getStorage($entity_type->id())
->getQuery()
->accessCheck(FALSE)
->exists($field_config->getName());
if (!empty($bundle_key)) {
$query->condition($bundle_key, $field_config->getTargetBundle());
}
$ids = $query->execute();
if (!empty($ids)) {
$entities = $entity_type_manager->getStorage($entity_type_id)->loadMultiple($ids);
foreach ($entities as $entity) {
$tables_values = $entity->get($field_config->getName())->getValue();
if (empty($tables_values)) {
continue;
}
foreach ($tables_values as &$table_values) {
$columns = $table_values['value']['columns'] ?? [];
$rows = $table_values['value']['rows'] ?? [];
if (!empty($columns)) {
foreach ($columns as &$column) {
if (!empty($column) && is_string($column)) {
$column = [
[
'type' => 'text',
'text' => $column,
],
];
}
}
$table_values['value']['columns'] = $columns;
}
if (!empty($rows)) {
foreach ($rows as &$row) {
foreach ($row as $j => $data) {
if ($j !== 0) {
continue;
}
if (!empty($data) && is_string($data)) {
$row[$j] = [
[
'type' => 'text',
'text' => $data,
],
];
}
}
}
$table_values['value']['rows'] = $rows;
}
}
$entity->set($field_config->getName(), $tables_values);
$entity->save();
}
}
}
}
