You are here

function nodequeue_node_access in Nodequeue 5

Same name and namespace in other branches
  1. 5.2 nodequeue.module \nodequeue_node_access()
  2. 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);
}