smart_date_recur.install in Smart Date 3.1.x
File
modules/smart_date_recur/smart_date_recur.install
View source
<?php
declare (strict_types=1);
function smart_date_recur_requirements($phase) {
$requirements = [];
if (!class_exists('\\Recurr\\Rule')) {
$requirements['smart_date_recur_dependencies'] = [
'title' => t('Smart date recur'),
'description' => \t('Smart Date Recur has unmet Composer dependencies. Read the <a href="@url">documentation</a> on how to install them.', [
'@url' => 'https://www.drupal.org/node/2627292',
]),
'severity' => \REQUIREMENT_ERROR,
];
}
return $requirements;
}
function smart_date_recur_update_8301() {
db_change_varchar_field('smart_date_rule', 'freq', 8);
}
if (!function_exists('db_change_varchar_field')) {
function db_change_varchar_field($entity_type_id, $field_name, $field_length) {
$schema_repository = \Drupal::service('entity.last_installed_schema.repository');
$entity_field_manager = \Drupal::service('entity_field.manager');
$base_field_definitions = $entity_field_manager
->getBaseFieldDefinitions($entity_type_id);
$schema_repository
->setLastInstalledFieldStorageDefinition($base_field_definitions[$field_name]);
$field_storage_definitions = $schema_repository
->getLastInstalledFieldStorageDefinitions($entity_type_id);
$field_storage_definitions[$field_name]
->setSetting('max_length', $field_length);
$schema_repository
->setLastInstalledFieldStorageDefinitions($entity_type_id, $field_storage_definitions);
$key_value = \Drupal::keyValue('entity.storage_schema.sql');
$key_name = $entity_type_id . '.field_schema_data.' . $field_name;
$storage_schema = $key_value
->get($key_name);
foreach ($storage_schema as &$table_schema) {
$table_schema['fields'][$field_name]['length'] = $field_length;
}
$key_value
->set($key_name, $storage_schema);
$db = Drupal::database();
foreach ($storage_schema as $table_name => $table_schema) {
$db
->schema()
->changeField($table_name, $field_name, $field_name, $table_schema['fields'][$field_name]);
}
}
}