1 node.entity.inc | public static Node::createAccess($bundle = NULL, $account = NULL) |
Overrides Entity::createAccess().
Overrides Entity::createAccess
File
- core/
modules/ node/ node.entity.inc, line 222 - Entity controller and class for nodes.
Class
- Node
- Defines the node entity class.
Code
public static function createAccess($bundle = NULL, $account = NULL) {
$rights = &backdrop_static('node_access', array());
// If no user object is supplied, the access check is for the current user.
if (empty($account)) {
$account = $GLOBALS['user'];
}
// If we've already checked access for this node, user and op, return from
// cache.
if (isset($rights[$account->uid][$bundle])) {
return $rights[$account->uid][$bundle];
}
if (user_access('bypass node access', $account)) {
$rights[$account->uid][$bundle] = TRUE;
return $rights[$account->uid][$bundle];
}
if (!user_access('access content', $account)) {
$rights[$account->uid][$bundle] = FALSE;
return $rights[$account->uid][$bundle];
}
// We grant access to the node if both of the following conditions are met:
// - No modules say to deny access.
// - At least one module says to grant access.
// If no module specified either allow or deny, we fall back to the
// node_access table.
$access = module_invoke_all('node_access', $bundle, 'create', $account);
if (in_array(NODE_ACCESS_DENY, $access, TRUE)) {
$rights[$account->uid][$bundle] = FALSE;
return $rights[$account->uid][$bundle];
}
elseif (in_array(NODE_ACCESS_ALLOW, $access, TRUE)) {
$rights[$account->uid][$bundle] = TRUE;
return $rights[$account->uid][$bundle];
}
$rights[$account->uid][$bundle] = FALSE;
return $rights[$account->uid][$bundle];
}