You are here

function permissions_by_term_views_post_execute in Permissions by Term 7

Implements hook_views_post_execute().

Hides nodes in every view on the site.

File

./permissions_by_term.module, line 278
Allows access to terms in a vocabulary to be limited by user or role.

Code

function permissions_by_term_views_post_execute(&$view) {
  global $user;
  $view_contains_nodes = FALSE;
  foreach ($view->result as $view_result) {
    if (array_key_exists('nid', $view_result) === TRUE) {
      $view_contains_nodes = TRUE;
    }
  }
  if ($view_contains_nodes === TRUE) {
    $arr__nodes_to_hide_in_view = array();
    foreach ($view->result as $v) {
      $node = node_load($v->nid);
      $secured_areas = field_get_items('node', $node, 'field_secured_areas');
      if (!empty($secured_areas)) {
        foreach ($secured_areas as $term) {
          if (isset($term['tid']) && !permissions_by_term_allowed($term['tid'], $user)) {
            $arr__nodes_to_hide_in_view[] = $node->nid;
          }
        }
      }
    }
    $arr__new_results = array();

    // Hide the nodes.
    foreach ($view->result as $v) {
      if (!in_array($v->nid, $arr__nodes_to_hide_in_view)) {
        $arr__new_results[] = $v;
      }
    }
    $view->result = $arr__new_results;
  }
}