ip_login-4.x-dev/ip_login.install

ip_login.install
<?php

/**
 * @file
 * Database update routines for the IP login module.
 */

use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\Core\Field\FieldStorageDefinitionInterface;

/**
 * Adds the 'ip_login_data' field for storing multiple login addresses per-user.
 */
function ip_login_update_9001(): void {
  $schema = Drupal::database()->schema();
  $ent_def_manager = \Drupal::entityDefinitionUpdateManager();

  if (!$schema->tableExists('user__ip_login_data') && !$ent_def_manager->getFieldStorageDefinition('user', 'ip_login_data')) {
    $field_def = BaseFieldDefinition::create('ipaddress')
      ->setLabel(t('Login IP Address'))
      ->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED)
      ->setSettings([
        'allow_family' => 10,
        'allow_range' => TRUE,
      ]);

    $ent_def_manager->installFieldStorageDefinition('ip_login_data', 'user', 'ip_login', $field_def);
  }
}

/**
 * Migrate IP login address values to the new field.
 */
function ip_login_update_9002(): void {
  $db = Drupal::database();
  $schema = $db->schema();

  // Proceed only if the required columns exist.
  $ip_login_start_exists = $schema->fieldExists('users_field_data', 'ip_login__ip_start');
  $ip_login_end_exists = $schema->fieldExists('users_field_data', 'ip_login__ip_end');
  if ($ip_login_start_exists && $ip_login_end_exists) {
    $data = $db->select('users_field_data', 'ufd')
      ->fields('ufd', ['uid', 'ip_login__ip_start', 'ip_login__ip_end'])
      ->isNotNull('ip_login__ip_start')
      ->execute()
      ->fetchAllAssoc('uid', \PDO::FETCH_ASSOC);

    if (!empty($data)) {
      $language = \Drupal::service('language.default')->get();

      $insert = $db->insert('user__ip_login_data')
        ->fields([
          'bundle',
          'entity_id',
          'revision_id',
          'langcode',
          'delta',
          'ip_login_data_ip_start',
          'ip_login_data_ip_end',
        ]);

      foreach ($data as $row) {
        $insert->values([
          'user',
          $row['uid'],
          $row['uid'],
          $language->getId(),
          0,
          $row['ip_login__ip_start'],
          $row['ip_login__ip_end'],
        ]);
      }

      $insert->execute();
    }
  }
}

/**
 * Remove the old single-valued 'ip_login' field.
 */
function ip_login_update_9003(): void {
  $field_def = Drupal::entityDefinitionUpdateManager()->getFieldStorageDefinition('ip_login', 'user');
  if (!empty($field_def)) {
    Drupal::entityDefinitionUpdateManager()->uninstallFieldStorageDefinition($field_def);
  }
}

/**
 * Add default values for new path-based configuration settings.
 */
function ip_login_update_9004(): void {
  $config = \Drupal::configFactory()->getEditable('ip_login.settings');

  // Set default value for check_mode if not already set.
  if ($config->get('check_mode') === NULL) {
    $config->set('check_mode', 0);
  }

  // Set default value for paths if not already set.
  if ($config->get('paths') === NULL) {
    $config->set('paths', '');
  }

  $config->save(TRUE);
}

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

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