public function unsetPerm($permId, $permission, $update = true)
{
if (is_array($permId)) {
if (empty($permId['name'])) {
return;
}
if ($this->get('type') == 'matrix') {
if (isset($this->data[$permId['class']][$permId['name']])) {
$this->data[$permId['class']][$permId['name']] &= ~$permission;
if (empty($this->data[$permId['class']][$permId['name']])) {
unset($this->data[$permId['class']][$permId['name']]);
}
} else {
$update = false;
}
} else {
unset($this->data[$permId['class']][$permId['name']]);
}
} else {
if ($this->get('type') == 'matrix') {
if (isset($this->data[$permId])) {
$this->data[$permId] &= ~$permission;
} else {
$update = false;
}
} else {
unset($this->data[$permId]);
}
}
if ($update) {
$this->save();
}
}