function permissions_by_term_user_form_submit in Permissions by Term 8.2
Form submission handler for permissions_by_term_form_user_form_alter.
Parameters
array $form: The complete form array.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
1 string reference to 'permissions_by_term_user_form_submit'
- permissions_by_term_form_user_form_alter in ./
permissions_by_term.module - Implements hook_form_FORM_ID_alter() for 'user_form'.
File
- ./
permissions_by_term.module, line 288 - Allows access to terms in a vocabulary to be limited by user or role.
Code
function permissions_by_term_user_form_submit(array &$form, FormStateInterface $form_state) {
/** @var \Drupal\permissions_by_term\Service\AccessStorage $access_storage */
$access_storage = \Drupal::service('permissions_by_term.access_storage');
/** @var \Drupal\user\UserInterface $user */
$user = $form_state
->getFormObject()
->getEntity();
$uid = $user
->id();
$origPerms = $access_storage
->getAllTermPermissionsByUserId($uid);
// First, we delete existing values from the db.
$access_storage
->deleteAllTermPermissionsByUserId($uid);
if ($tids = $form_state
->getValue('terms')) {
// For term permissions use user preferred language.
$langcode = $user
->getPreferredLangcode();
// Second, we insert updated values.
foreach ($tids as $tid) {
$access_storage
->addTermPermissionsByUserIds([
$uid,
], $tid, $langcode);
}
}
$newPerms = $access_storage
->getAllTermPermissionsByUserId($uid);
// Rebuild permissions for nodes if needed.
if (!\Drupal::config('permissions_by_term.settings')
->get('disable_node_access_records') && !empty(array_diff($origPerms, $newPerms))) {
\Drupal::service('permissions_by_term.node_access')
->rebuildAccess($uid);
}
}