protected function updateItem($name, $item)
{
if ($name !== $item->name) {
if (isset($this->items[$item->name])) {
throw new InvalidParamException("Unable to change the item name. The name '{$item->name}' is already used by another item.");
} else {
// Remove old item in case of renaming
unset($this->items[$name]);
if (isset($this->children[$name])) {
$this->children[$item->name] = $this->children[$name];
unset($this->children[$name]);
}
foreach ($this->children as &$children) {
if (isset($children[$name])) {
$children[$item->name] = $children[$name];
unset($children[$name]);
}
}
foreach ($this->assignments as &$assignments) {
if (isset($assignments[$name])) {
$assignments[$item->name] = $assignments[$name];
$assignments[$item->name]->roleName = $item->name;
unset($assignments[$name]);
}
}
$this->saveAssignments();
}
}
$this->items[$item->name] = $item;
$this->saveItems();
return true;
}
/** * @inheritdoc */ protected function updateItem($name, $item) { if (parent::updateItem($name, $item)) { if ($item->name !== $name) { $this->trigger(self::EVENT_RENAME_ROLE, new RenameRoleEvent(['oldRoleName' => $name, 'newRoleName' => $item->name])); } return true; } return false; }