public function allows($mode)
{
global $browser;
$pagePerms = $this->getPermissions();
switch ($mode) {
case Wicked::MODE_CREATE:
// Special mode for pages that don't exist yet - generic
// to all pages.
if ($browser->isRobot()) {
return false;
}
if ($GLOBALS['registry']->isAdmin()) {
return true;
}
$permName = 'wicked:pages';
$perms = $GLOBALS['injector']->getInstance('Horde_Perms');
if ($perms->exists($permName)) {
return $perms->hasPermission($permName, $GLOBALS['registry']->getAuth(), Horde_Perms::EDIT);
} else {
return $GLOBALS['registry']->getAuth();
}
break;
case Wicked::MODE_EDIT:
if ($browser->isRobot()) {
return false;
}
if ($GLOBALS['registry']->isAdmin()) {
return true;
}
if (($pagePerms & Horde_Perms::EDIT) == 0) {
return false;
}
break;
case Wicked::MODE_REMOVE:
if ($browser->isRobot()) {
return false;
}
if ($GLOBALS['registry']->isAdmin()) {
return true;
}
if (($pagePerms & Horde_Perms::DELETE) == 0) {
return false;
}
break;
// All other modes require READ permissions.
// All other modes require READ permissions.
default:
if ($GLOBALS['registry']->isAdmin()) {
return true;
}
if (($pagePerms & Horde_Perms::READ) == 0) {
return false;
}
break;
}
return $this->supports($mode);
}