Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify update hook to create logout blocks #1700

Merged
merged 1 commit into from
Dec 18, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 58 additions & 50 deletions docroot/profiles/humsci/su_humsci_profile/su_humsci_profile.install
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ use Drupal\user\RoleInterface;
function su_humsci_profile_requirements($phase) {
$requirements = [];
if ($phase == 'runtime') {

$site_path = DrupalKernel::findSitePath(\Drupal::request());
$site_path = explode('/', $site_path);
$site_name = $site_path[1];
Expand Down Expand Up @@ -74,7 +73,11 @@ function su_humsci_profile_update_9606() {
$entity_type_manager = \Drupal::entityTypeManager();
$config_factory = \Drupal::configFactory();

\Drupal::service('module_installer')->install(['menu_link', 'cshs', 'token_or']);
\Drupal::service('module_installer')->install([
'menu_link',
'cshs',
'token_or',
]);
$config_factory->getEditable('menu_link_weight.settings')
->set('menu_parent_form_selector', 'cshs')
->save();
Expand Down Expand Up @@ -109,7 +112,8 @@ function su_humsci_profile_update_9607() {
$field_config_storage = $entity_type_manager->getStorage('field_config');
$bundles = [];
/** @var \Drupal\node\Entity\NodeType $node_type */
foreach ($entity_type_manager->getStorage('node_type')->loadMultiple() as $node_type) {
foreach ($entity_type_manager->getStorage('node_type')
->loadMultiple() as $node_type) {
if ($node_type->getThirdPartySetting('menu_ui', 'available_menus')) {
$bundles[] = $node_type->id();
$node_type->setThirdPartySetting('menu_ui', 'available_menus', []);
Expand Down Expand Up @@ -478,7 +482,8 @@ function su_humsci_profile_update_9701(&$sandbox) {

// Clear entity caches.
$entity_type_manager->getStorage($eck_type)->resetCache([$id]);
$entity_type_manager->getStorage('hs_entity')->resetCache([$new_entity->id()]);
$entity_type_manager->getStorage('hs_entity')
->resetCache([$new_entity->id()]);
}
$sandbox['#finished'] = empty($sandbox['items']) ? 1 : ($sandbox['count'] - count($sandbox['items'])) / $sandbox['count'];

Expand Down Expand Up @@ -851,7 +856,8 @@ function _su_humsci_profile_get_uuid(string $config_name): string|null {
* Uninstall legacy themes.
*/
function su_humsci_profile_update_9705() {
$installed_themes = \Drupal::service('extension.list.theme')->getAllInstalledInfo();
$installed_themes = \Drupal::service('extension.list.theme')
->getAllInstalledInfo();
$legacy_themes = [
'archaeology',
'francestanford',
Expand Down Expand Up @@ -1095,7 +1101,7 @@ function su_humsci_profile_update_9718() {
// Remove webform existing config - needs to be done before uninstall.
$config_factory = \Drupal::configFactory();

$config_names = array_filter($config_factory->listAll(), function ($item) {
$config_names = array_filter($config_factory->listAll(), function($item) {
return str_contains($item, 'webform');
});

Expand All @@ -1113,57 +1119,59 @@ function su_humsci_profile_update_9718() {
*/
function su_humsci_profile_update_9719() {
// Uninstalls modules after removing configs to prevent updb errors.
\Drupal::service('module_installer')->uninstall(['hs_webform', 'webform_ui', 'webform']);
\Drupal::service('module_installer')->uninstall([
'hs_webform',
'webform_ui',
'webform',
]);
}

/**
* Add new logout block to existing sites.
*/
function su_humsci_profile_update_9720() {
$config_storage = \Drupal::service('config.storage.sync');
$entity_type_manager = \Drupal::service('entity_type.manager');

$config_names = [
'block.block.humsci_colorful_samlsunetidlogoutblock',
'block.block.humsci_traditional_samlsunetidlogoutblock',
];

foreach ($config_names as $config_name) {

// Load the configuration data from the sync directory.
$config_data = $config_storage->read($config_name);

if (!$config_data) {
throw new \Exception(t('The configuration %config_name was not found in the sync directory.', ['%config_name' => $config_name]));
}

// Get the block storage and possible existing config.
$block_storage = $entity_type_manager->getStorage('block');
$existing_config = $block_storage->load($config_data['id']);

if (!$existing_config) {
// Change the logout link text to match what the existing login text is.
$login_blocks = $entity_type_manager->getStorage('block')->loadByProperties([
'plugin' => 'stanford_samlauth_login_block',
]);

if ($login_blocks) {
foreach ($login_blocks as $login_block) {
/** @var Drupal\block\Entity\BlockDrupal\block\Entity\Block $login_block */
$settings = $login_block->get('settings');

$log_in = $settings['link_text'];
$log_out = preg_replace('/in\b/', 'out', $log_in);
$log_out = preg_replace('/In\b/', 'Out', $log_out);
$log_out = str_replace(' to ', ' from ', $log_out);
$log_out = str_replace(' To ', ' From ', $log_out);
}
}
$block_storage = \Drupal::entityTypeManager()->getStorage('block');
/** @var Drupal\block\Entity\Block[] $login_blocks */
$login_blocks = $block_storage->loadByProperties([
'plugin' => 'stanford_samlauth_login_block',
]);
$log_out = 'SUNetID Logout';

$config_data['settings']['link_text'] = $log_out;
$block_storage->create($config_data)->save();
if ($login_blocks) {
$login_block = reset($login_blocks);
$settings = $login_block->get('settings');

\Drupal::logger('su_humsci_profile')->info('Block configuration %config_name has been imported.', ['%config_name' => $config_name]);
}
$log_in = $settings['link_text'];
$log_out = preg_replace('/in\b/', 'out', $log_in);
$log_out = preg_replace('/In\b/', 'Out', $log_out);
$log_out = str_replace(' to ', ' from ', $log_out);
$log_out = str_replace(' To ', ' From ', $log_out);
}

$block_info = [
'status' => TRUE,
'region' => 'footer',
'plugin' => 'stanford_samlauth_logout_block',
'weight' => 0,
'settings' => [
'id' => 'stanford_samlauth_logout_block',
'label' => 'SAML SUNetID Logout Block',
'label_display' => 0,
'provider' => 'stanford_samlauth',
'link_text' => $log_out,
],
'visibility' => [],
];
$block_storage->create([
'uuid' => '7e424b1f-3692-41a3-a48a-dd1a450e0203',
'id' => 'humsci_colorful_samlsunetidlogoutblock',
'theme' => 'humsci_colorful',
...$block_info,
])->save();
$block_storage->create([
'uuid' => '2f7f0d52-c463-411d-a2e2-656d185acd4d',
'id' => 'humsci_traditional_samlsunetidlogoutblock',
'theme' => 'humsci_traditional',
...$block_info,
])->save();
}
Loading