You are here

function workflow_access_node_access_records in Workflow 7

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. 5 workflow_access.module \workflow_access_node_access_records()
  4. 6.2 workflow_access/workflow_access.module \workflow_access_node_access_records()
  5. 6 workflow_access/workflow_access.module \workflow_access_node_access_records()
  6. 7.2 workflow_access/workflow_access.module \workflow_access_node_access_records()

Implements hook_node_access_records().

Returns a list of grant records for the passed in node object. @todo: support Workflow Field.

File

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

Code

function workflow_access_node_access_records($node) {
  $grants = array();

  //@todo: read history or field instead of workflow_node, to read current status.
  if ($workflow_node = workflow_get_workflow_node_by_nid($node->nid)) {
    $sid = $workflow_node->sid;

    // @todo: since we only use sid, the next line is superfluous.
    $state = WorkflowState::load($workflow_node->sid);
    foreach (workflow_access_get_workflow_access_by_sid($sid) as $grant) {
      $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,
        'priority' => variable_get('workflow_access_priority', 0),
      );
    }
  }
  return $grants;
}