public function RemoveUserRole::execute in Business Rules 8
Same name and namespace in other branches
- 2.x src/Plugin/BusinessRulesAction/RemoveUserRole.php \Drupal\business_rules\Plugin\BusinessRulesAction\RemoveUserRole::execute()
Execute the action.
Parameters
\Drupal\business_rules\ActionInterface $action: The configured action.
\Drupal\business_rules\Events\BusinessRulesEvent $event: The event that has triggered the action.
Return value
array The render array to be showed on debug block.
Overrides BusinessRulesActionPlugin::execute
File
- src/
Plugin/ BusinessRulesAction/ RemoveUserRole.php, line 126
Class
- RemoveUserRole
- Class RemoveUserRole.
Namespace
Drupal\business_rules\Plugin\BusinessRulesActionCode
public function execute(ActionInterface $action, BusinessRulesEvent $event) {
/** @var \Drupal\business_rules\VariablesSet $event_variables */
$event_variables = $event
->getArgument('variables');
$user_container = $action
->getSettings('user_container');
$uid = $action
->getSettings('uid');
$uid = $this
->processVariables($uid, $event_variables);
$variable = $action
->getSettings('variable');
$roles = $action
->getSettings('roles');
switch ($user_container) {
case 'current':
/** @var \Drupal\Core\Session\AccountProxyInterface $account */
/** @var \Drupal\user\Entity\User $user */
$account = $this->util->container
->get('current_user');
$user = User::load($account
->id());
break;
case 'by_id':
$user = User::load($uid);
break;
case 'variable':
$user = $event_variables
->getVariable($variable);
break;
}
foreach ($roles as $role) {
$user
->removeRole($role);
}
$user
->save();
$result = [
'#type' => 'markup',
'#markup' => t('User: %user<br>Roles removed: %roles', [
'%user' => $user
->getAccountName(),
'%roles' => implode(', ', $roles),
]),
];
return $result;
}