tarte_au_citron-1.0.0-beta1/tarte_au_citron.install

tarte_au_citron.install
<?php

/**
 * @file
 * Installation file for Tarte au citron module.
 */

use Drupal\Component\Utility\NestedArray;

/**
 * Implements hook_requirements().
 */
function tarte_au_citron_requirements($phase): array {
  $requirements = [];
  if ($phase === 'runtime') {
    if (!file_exists(DRUPAL_ROOT . '/libraries/tarteaucitron/tarteaucitron.js')) {
      $requirements['tarte_au_citron'] = [
        'title' => t('Tarte au citron library: Tarte au citron'),
        'value' => t('Missing'),
        'description' => t('Download the <a href=":url">Tarte au citron library</a> and copy it to :library', [
          ':url' => 'https://github.com/AmauriC/tarteaucitron.js',
          ':library' => DRUPAL_ROOT . '/libraries/tarteaucitron/',
        ]),
        'severity' => REQUIREMENT_WARNING,
      ];
    }
    else {
      /** @var \Drupal\tarte_au_citron\LibraryJsDiscoverInterface $libJsDiscoverService */
      $libJsDiscoverService = \Drupal::service('tarte_au_citron.library_js_discover');
      $requirements['tarte_au_citron'] = [
        'title' => t('Tarte au citron library: Tarte au citron'),
        'value' => t('Installed version : %version', ['%version' => $libJsDiscoverService->getLibraryVersion()]),
        'severity' => REQUIREMENT_OK,
      ];
    }
  }

  return $requirements;
}

/**
 * Update config to new schema.
 */
function tarte_au_citron_update_10001(&$sandbox): void {
  $config = \Drupal::configFactory()->getEditable('tarte_au_citron.settings');
  $old_config = [];
  foreach ($config->getRawData() as $cKey => $cVal) {
    if (in_array($cKey, ['_core', 'langcode', 'services', 'services_settings', 'tacConfig'])) {
      continue;
    }
    $old_config[$cKey] = $config->get($cKey);
    $config->clear($cKey);
  }

  $old_config = array_filter($old_config, function ($val) {
    return !is_null($val);
  });

  if (!empty($old_config)) {
    $config->set('tacConfig', $old_config);
    $config->save();
  }

  $texts = \Drupal::service('tarte_au_citron.library_js_discover')->getTextsConfig();
  $config = \Drupal::configFactory()->getEditable('tarte_au_citron.texts.settings');
  $old_config = [];
  foreach ($config->getRawData() as $keyText => $valueText) {
    if (in_array($keyText, ['_core', 'langcode', 'strategy', 'forced_language', 'texts'])) {
      continue;
    }
    $config->clear($keyText);
    if (empty($valueText)) {
      continue;
    }

    $parents = $txtParents = [$keyText];
    if ($keyText !== 'adblock_call' && strpos($keyText, 'engage-') === FALSE && strpos($keyText, '_') !== FALSE) {
      [$keyMain, $keySecond] = explode('_', $keyText);
      $parents = [$keyMain, $keySecond];
      $txtParents = [$keyMain, 'children', $keySecond];
      if (empty($keyMain)) {
        $old_config[$keyMain] = [];
      }
    }

    $defaultValue = NestedArray::getValue($texts, $txtParents);
    $tText = (string) t($valueText);
    // @codingStandardsIgnoreStart
    if (!is_array($defaultValue) || $tText !== $defaultValue['default_value'] ?? '') {
      NestedArray::setValue($old_config, $parents, $tText);
    }
    // @codingStandardsIgnoreEnd
  }

  if (!empty($old_config)) {
    _tarte_au_citron_filter_text($old_config);
    $config->set('strategy', 'custom');
    $config->set('texts', $old_config);
  }
  else {
    $config->set('strategy', '');
  }
  $config->save();
}

/**
 * Fix updated configuration from v1.
 */
function tarte_au_citron_update_10002(&$sandbox): void {
  $config = \Drupal::configFactory()->getEditable('tarte_au_citron.settings');
  $tacConfig = $config->get('tacConfig');
  foreach ($config->getRawData() as $cKey => $cVal) {
    if (in_array($cKey, ['_core', 'langcode', 'services', 'services_settings', 'tacConfig'])) {
      continue;
    }
    $tacConfig[$cKey] = $config->get($cVal);
    $config->clear($cKey);
  }
  $tacConfig = array_filter($tacConfig, function ($val) {
    return !is_null($val);
  });
  $config->set('tacConfig', $tacConfig);
  $config->save();
}

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

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