forked from a64f7bb4-7358-4778-9fbe-3b882c34cc1d/v1
148 lines
3.9 KiB
PHP
148 lines
3.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Post update hooks for Blazy.
|
|
*/
|
|
|
|
use Drupal\Core\Config\Entity\ConfigEntityUpdater;
|
|
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
|
|
use Drupal\views\ViewEntityInterface;
|
|
use Drupal\blazy\BlazyDefault;
|
|
|
|
/**
|
|
* Clear cache to enable CSP module support.
|
|
*/
|
|
function blazy_post_update_csp_support() {
|
|
// Empty hook to clear caches.
|
|
}
|
|
|
|
/**
|
|
* Changed grid type to string to support Native Grid for field formatters.
|
|
*/
|
|
function blazy_post_update_schema_formatter_grid_int_to_string(array &$sandbox = []) {
|
|
$config_entity_updater = \Drupal::classResolver(ConfigEntityUpdater::class);
|
|
|
|
$callback = function (EntityViewDisplayInterface $display) {
|
|
$needs_save = FALSE;
|
|
foreach ($display->getComponents() as $field_name => &$component) {
|
|
$config = $component['settings'] ?? [];
|
|
if (!isset($config['style'], $config['grid'], $config['grid_small'])) {
|
|
continue;
|
|
}
|
|
|
|
foreach (BlazyDefault::gridBaseSettings() as $key => $value) {
|
|
if (isset($config[$key])) {
|
|
$saved_value = $config[$key];
|
|
$component['settings'][$key] = empty($saved_value) ? '' : (string) $saved_value;
|
|
$needs_save = TRUE;
|
|
}
|
|
}
|
|
|
|
// Removed old deprecated/ unused formatter settings.
|
|
// @todo Postponed till 3.x.
|
|
// foreach (['breakpoints', 'sizes', 'grid_header'] as $key) {
|
|
// if (isset($config[$key]) && empty($config[$key])) {
|
|
// unset($component['settings'][$key]);
|
|
// $needs_save = TRUE;
|
|
// }
|
|
// }
|
|
if ($needs_save) {
|
|
$display->setComponent($field_name, $component);
|
|
}
|
|
}
|
|
|
|
return $needs_save;
|
|
};
|
|
|
|
$config_entity_updater->update($sandbox, 'entity_view_display', $callback);
|
|
}
|
|
|
|
/**
|
|
* Changed grid type to string to support Native Grid for Views styles.
|
|
*/
|
|
function blazy_post_update_schema_view_grid_int_to_string(array &$sandbox = []) {
|
|
if (!\Drupal::moduleHandler()->moduleExists('views')) {
|
|
return;
|
|
}
|
|
|
|
$config_entity_updater = \Drupal::classResolver(ConfigEntityUpdater::class);
|
|
|
|
$callback = function (ViewEntityInterface $view) {
|
|
$needs_save = FALSE;
|
|
$deps = $view->getDependencies() ?: [];
|
|
|
|
if (!in_array('blazy', $deps['module'])) {
|
|
return $needs_save;
|
|
}
|
|
|
|
foreach ($view->get('display') as &$display) {
|
|
$style = $display['display_options']['style'] ?? [];
|
|
|
|
if (!isset($style['options'])) {
|
|
continue;
|
|
}
|
|
|
|
$config = $style['options'];
|
|
if (!isset($config['style'], $config['grid'], $config['grid_small'])) {
|
|
continue;
|
|
}
|
|
|
|
foreach (BlazyDefault::gridBaseSettings() as $key => $value) {
|
|
if (isset($config[$key])) {
|
|
$saved_value = $config[$key];
|
|
$display['display_options']['style']['options'][$key] = empty($saved_value) ? '' : (string) $saved_value;
|
|
$needs_save = TRUE;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Looks like ConfigEntityUpdater::update failed with View, manuallly save.
|
|
if ($needs_save) {
|
|
$view->save();
|
|
}
|
|
|
|
return $needs_save;
|
|
};
|
|
|
|
$config_entity_updater->update($sandbox, 'view', $callback);
|
|
}
|
|
|
|
/**
|
|
* Clear cache to re-generate assets.
|
|
*/
|
|
function blazy_post_update_vanilla_once() {
|
|
// Empty hook to clear caches.
|
|
}
|
|
|
|
/**
|
|
* Removed io.enabled settings as per #3258851.
|
|
*/
|
|
function blazy_post_update_remove_io_enabled_key() {
|
|
$config = \Drupal::configFactory()->getEditable('blazy.settings');
|
|
$config->clear('decode');
|
|
$config->clear('io.enabled');
|
|
$config->save(TRUE);
|
|
}
|
|
|
|
/**
|
|
* Fixed for D8 to D10+ cross-compat `app.root`.
|
|
*/
|
|
function blazy_post_update_app_root() {
|
|
// Empty hook to clear caches.
|
|
}
|
|
|
|
/**
|
|
* Moved media-related classes and services into \Drupal\blazy\Media namespace.
|
|
*/
|
|
function blazy_post_update_move_media_services_classes() {
|
|
// Empty hook to clear caches.
|
|
}
|
|
|
|
/**
|
|
* Added \Drupal\blazy\BlazyBase service for non-media methods.
|
|
*/
|
|
function blazy_post_update_added_blazy_base_service() {
|
|
// Empty hook to clear caches.
|
|
}
|