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();
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc