You are here

function workflow_access_node_access_records in Workflow 5

Same name and namespace in other branches
  1. 8 modules/workflow_access/workflow_access.module \workflow_access_node_access_records()
  2. 5.2 workflow_access.module \workflow_access_node_access_records()
  3. 6.2 workflow_access/workflow_access.module \workflow_access_node_access_records()
  4. 6 workflow_access/workflow_access.module \workflow_access_node_access_records()
  5. 7.2 workflow_access/workflow_access.module \workflow_access_node_access_records()
  6. 7 workflow_access/workflow_access.module \workflow_access_node_access_records()

Implementation of hook_node_access_records().

Returns a list of grant records for the passed in node object.

File

./workflow_access.module, line 57
Provides node access permissions based on workflow states.

Code

function workflow_access_node_access_records($node) {
  if (workflow_access_disabling()) {
    return;
  }
  $grants = array();
  $sid = db_result(db_query("SELECT sid FROM {workflow_node} WHERE nid = %d", $node->nid));

  // We have state information about this node, so get permissions for this state.
  if (is_numeric($sid)) {
    $result = db_query('SELECT * FROM {workflow_access} WHERE sid = %d', $sid);
    while ($grant = db_fetch_object($result)) {
      $grants[] = array(
        'realm' => $grant->rid == -1 ? 'workflow_access_owner' : 'workflow_access',
        'gid' => $grant->rid == -1 ? $node->uid : $grant->rid,
        'grant_view' => $grant->grant_view,
        'grant_update' => $grant->grant_update,
        'grant_delete' => $grant->grant_delete,
      );
    }
  }
  return $grants;
}