function workbench_access_post_update_section_user_association in Workbench Access 8
Transform existing user data to new storage.
File
- ./
workbench_access.post_update.php, line 146 - Contains post update hooks.
Code
function workbench_access_post_update_section_user_association(&$sandbox) {
$schemes = \Drupal::entityTypeManager()
->getStorage('access_scheme')
->loadMultiple();
$storage = \Drupal::service('workbench_access.user_section_storage');
$user_storage = \Drupal::entityTypeManager()
->getStorage('user');
if (!isset($sandbox['ids'])) {
$sandbox['ids'] = $user_storage
->getQuery()
->exists(WorkbenchAccessManagerInterface::FIELD_NAME)
->execute();
$sandbox['count'] = count($sandbox['ids']);
}
foreach (array_splice($sandbox['ids'], 0, 50) as $id) {
$user = $user_storage
->load($id);
$existing = array_column($user
->get(WorkbenchAccessManagerInterface::FIELD_NAME)
->getValue(), 'value');
foreach ($schemes as $scheme_id => $scheme) {
$add_sections = [];
foreach ($existing as $item) {
$split = explode(':', $item);
if ($split[0] == $scheme_id) {
$add_sections[] = $split[1];
}
}
}
$storage
->addUser($scheme, $user, $add_sections);
}
$sandbox['#finished'] = empty($sandbox['ids']) ? 1 : ($sandbox['count'] - count($sandbox['ids'])) / $sandbox['count'];
return t('Updated user assigments');
}