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