protected function removeAllItems($type)
{
$names = [];
foreach ($this->items as $name => $item) {
if ($item->type == $type) {
unset($this->items[$name]);
$names[$name] = true;
}
}
if (empty($names)) {
return;
}
foreach ($this->assignments as $i => $assignments) {
foreach ($assignments as $n => $assignment) {
if (isset($names[$assignment->roleName])) {
unset($this->assignments[$i][$n]);
}
}
}
foreach ($this->children as $name => $children) {
if (isset($names[$name])) {
unset($this->children[$name]);
} else {
foreach ($children as $childName => $item) {
if (isset($names[$childName])) {
unset($children[$childName]);
}
}
$this->children[$name] = $children;
}
}
$this->saveItems();
}