broken_link-8.x-3.1/broken_link.install
broken_link.install
<?php
/**
* @file
* Contains broken_link.install.
*/
use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
/**
* Adds request query string, http referers.
*
* Also created and updated time broken link properties.
*/
function broken_link_update_8100() {
$storage_definition = BaseFieldDefinition::create('string')
->setLabel(t('Request parameters'))
->setDescription(t('Request query string.'))
->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED)
->setConstraints([
'type' => 'varchar',
'length' => 2000,
]);
\Drupal::entityDefinitionUpdateManager()
->installFieldStorageDefinition('query_string', 'broken_link', 'broken_link', $storage_definition);
$storage_definition = BaseFieldDefinition::create('timestamp')
->setLabel(t('First access time'))
->setDescription(t('First time this entity was created.'));
\Drupal::entityDefinitionUpdateManager()
->installFieldStorageDefinition('created', 'broken_link', 'broken_link', $storage_definition);
$storage_definition = BaseFieldDefinition::create('timestamp')
->setLabel(t('Last access time'))
->setDescription(t('Last time this entity was updated.'));
\Drupal::entityDefinitionUpdateManager()
->installFieldStorageDefinition('updated', 'broken_link', 'broken_link', $storage_definition);
$storage_definition = BaseFieldDefinition::create('string')
->setLabel(t('Referers'))
->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED)
->setConstraints([
'type' => 'varchar',
'length' => 2000,
])
->setDescription(t('All http referers for one broken link.'));
\Drupal::entityDefinitionUpdateManager()
->installFieldStorageDefinition('referers', 'broken_link', 'broken_link', $storage_definition);
}
/**
* Install broken link's admin Action plugin and Views page.
*/
function broken_link_update_8101() {
// Install default configuration of the module.
\Drupal::service('config.installer')->installDefaultConfig('module', 'broken_link');
}
/**
* Update to fix the broken missing handler in the views.
*/
function broken_link_update_8102() {
$config_factory = \Drupal::configFactory();
$view = $config_factory->getEditable('views.view.broken_link');
$save_view = FALSE;
if ($view->get('display.default.display_options.fields.query_string.field') != 'query_string_value') {
$view->set('display.default.display_options.fields.query_string.field', 'query_string_value');
$save_view = TRUE;
}
if ($view->get('display.default.display_options.fields.referers.field') != 'referers_value') {
$view->set('display.default.display_options.fields.referers.field', 'referers_value');
$save_view = TRUE;
}
if ($save_view) {
$view->save();
}
}
/**
* Update the existing field definitions query_string and referers
*/
function broken_link_update_8103() {
$entity_type_id = 'broken_link';
$field_names = ['query_string', 'referers'];
// Remove existing entities
$existingEntities = \Drupal::entityTypeManager()->getStorage('broken_link')->loadMultiple();
foreach($existingEntities as $entity) {
$entity->delete();
}
/** @var \Drupal\Core\Entity\EntityLastInstalledSchemaRepositoryInterface $schema_repository */
$schema_repository = \Drupal::service('entity.last_installed_schema.repository');
/** @var \Drupal\Core\Entity\EntityFieldManager $entity_field_manager */
$entity_field_manager = \Drupal::service('entity_field.manager');
$base_field_definitions = $entity_field_manager->getBaseFieldDefinitions($entity_type_id);
$update_manager = \Drupal::entityDefinitionUpdateManager();
foreach($field_names as $field_name) {
$schema_repository->setLastInstalledFieldStorageDefinition($base_field_definitions[$field_name]);
$field_storage_definitions = $schema_repository->getLastInstalledFieldStorageDefinitions($entity_type_id);
// Update the serialized schema property.
$field_definition = $field_storage_definitions[$field_name];
$field_definition->setSetting('max_length', 2000);
$update_manager->updateFieldStorageDefinition($field_definition);
$schema_repository->setLastInstalledFieldStorageDefinitions($entity_type_id, $field_storage_definitions);
}
// Creating again pre-existing entities
foreach($existingEntities as $entity) {
$entity->enforceIsNew();
$entity->save();
}
}
