Skip to content
Snippets Groups Projects

ISTWCMS-7275: Refactor block classes to rename and streamline logic.

Open Igor Biki requested to merge feature/ISTWCMS-7275-ibiki-publications_rename into 1.0.x
1 file
+ 65
0
Compare changes
  • Side-by-side
  • Inline
+ 65
0
<?php
/**
* @file
* Post update hooks for uw_dashboard module.
*/
/**
* Renaming publications blocks titles to reference block titles.
*/
function uw_dashboard_post_update_blocks_rename(&$sandbox) {
$rename = [
'uw_publication_authors_block' => ['Publication reference authors' => 'Reference authors'],
'uw_publication_reference_block' => ['Publication references' => 'References'],
'uw_publication_keywords_block' => ['Publication reference keywords' => 'Reference keywords'],
'uw_cbl_publication_search' => ['Publication reference search' => 'Reference search'],
];
$database = \Drupal::database();
$query = $database->select('users_data', 'ud')
->fields('ud', ['uid', 'value'])
->condition('module', 'dashboards')
->condition('name', 'my_dashboard');
$result = $query->execute()->fetchAllAssoc('uid');
\Drupal::logger('uw_dashboard')
->info('Updating @num dashboards', ['@num' => count($result)]);
/** @var \Drupal\user\UserDataInterface $dataService */
$dataService = \Drupal::service('user.data');
foreach ($result as $uid => $row) {
try {
$data = unserialize($row->value, ['allowed_classes' => FALSE]);
$save_required = FALSE;
foreach ($data as &$section) {
foreach ($section['components'] as &$block) {
if (array_key_exists($block['configuration']['id'], $rename)) {
$titles = $rename[$block['configuration']['id']];
foreach ($titles as $old => $new) {
if (trim($block['configuration']['label']) === $old) {
$block['configuration']['label'] = $new;
$save_required = TRUE;
}
}
}
}
}
if ($save_required) {
$dataService->set('dashboards', $uid, 'my_dashboard', serialize($data));
}
}
catch (\Exception $ex) {
\Drupal::logger('uw_dashboard')
->error('Block rename failed for user: @uid, with message: @message', [
'@uid' => $uid,
'@message' => $ex->getMessage(),
]);
}
}
}
Loading