diff --git a/uw_dashboard.post_update.php b/uw_dashboard.post_update.php new file mode 100644 index 0000000000000000000000000000000000000000..ebb8b2708b18a83145169a465523808a1f4cd845 --- /dev/null +++ b/uw_dashboard.post_update.php @@ -0,0 +1,65 @@ +<?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(), + ]); + } + } +}