function nodequeue_node_access in Nodequeue 5
Same name and namespace in other branches
- 5.2 nodequeue.module \nodequeue_node_access()
- 6.2 nodequeue.module \nodequeue_node_access()
Return TRUE if $user can control the queue for this node.
2 calls to nodequeue_node_access()
- nodequeue_menu in ./
nodequeue.module - Implementation of hook_menu
- nodequeue_page in ./
nodequeue.module - Display the queue page for a node, allowing the user to control how the node exists in various queues. This controls a couple of different paths.
File
- ./
nodequeue.module, line 661
Code
function nodequeue_node_access($type) {
global $user;
$roles_join = $roles_where = '';
$roles = array();
// superuser always has access.
if (!user_access('manipulate all queues')) {
$roles_join = "INNER JOIN {nodequeue_roles} nr ON nr.qid = nq.qid ";
$roles = array_keys((array) $user->roles) + array(
DRUPAL_AUTHENTICATED_RID,
);
$role_args = array_fill(0, count($roles), '%d');
$roles_where .= "AND nr.rid IN (" . implode(',', $role_args) . ")";
}
$sql = 'SELECT nq.qid FROM {nodequeue_queue} nq ' . 'INNER JOIN {nodequeue_types} nt ON nt.qid = nq.qid ' . $roles_join . "WHERE nt.type = '%s' " . $roles_where;
$result = db_query($sql, array_merge(array(
$type,
), $roles));
return db_num_rows($result);
}