etracker-8.x-3.x-dev/etracker.install
etracker.install
<?php
/**
* @file
* Requirements and update functions for the etracker module.
*/
use Drupal\Core\Config\FileStorage;
/**
* New addition.
*
* Set default config for new configuration keys 'event_tracking' and
* 'etracker_script_settings'.
*/
function etracker_update_8101(): void {
$source = new FileStorage(__DIR__ . '/config/install');
$newConfig = $source->read('etracker.settings');
$config_factory = \Drupal::configFactory();
$config = $config_factory->getEditable('etracker.settings');
// Init 'event_tracking' defaults.
$config->set('event_tracking', $newConfig['event_tracking']);
// init/update 'etracker_script_settings' defaults.
$etracker_script_settings = $config->get('etracker_script_settings');
$etracker_script_settings += $newConfig['etracker_script_settings'];
$config->set('etracker_script_settings', $etracker_script_settings);
$config->save(TRUE);
}
/**
* Prefix track paths with slash if missing.
*/
function etracker_update_8102(): void {
$config_factory = \Drupal::configFactory();
$config = $config_factory->getEditable('etracker.settings');
$track_paths = $config->get('etracker_track_paths');
// Verify that every path is prefixed with a slash,
// but don't check for slashes if no paths configured.
if (!empty($track_paths)) {
$pages = preg_split('/(\r\n?|\n)/', $track_paths);
foreach ($pages as $key => $page) {
if (strpos($page, '/') !== 0 && $page !== '<front>') {
$pages[$key] = '/' . $page;
}
}
$config->set('etracker_track_paths', implode("\n", $pages));
$config->save(TRUE);
}
}
