You are here

function views_attach_nodeapi in Views attach 7.2

Same name and namespace in other branches
  1. 6.2 views_attach.module \views_attach_nodeapi()
  2. 6 views_attach.module \views_attach_nodeapi()

Implementation of hook_nodeapi().

File

./views_attach.module, line 85

Code

function views_attach_nodeapi(&$node, $op, $teaser, $page) {
  switch ($op) {
    case 'view':

      // A side effect of defining it this way is that if we're called for an
      // embedded node, with no teaser or page, we use the full version's settings.
      // That is by design.
      if (isset($node->build_mode)) {
        $mode = $node->build_mode;
        if ($mode === NODE_BUILD_NORMAL) {
          $mode = $teaser ? 'teaser' : 'full';
        }
      }
      else {
        $mode = 'full';
      }
      $views = views_attach_get_node_views($node->type, $mode);
      foreach ($views as $info) {
        $view = views_get_view($info['name']);
        $view
          ->set_display($info['display']);
        if ($view
          ->access($info['display'])) {
          $view->current_node = $node;
          $result = $view
            ->execute_display($info['display']);
          if (!empty($result)) {
            $node->content[$view->name . '_' . $info['display']] = array(
              '#weight' => module_exists('content') ? content_extra_field_weight($node->type, $view->name . '_' . $info['display']) : 10,
              '#value' => $result,
            );
          }
        }
      }
      break;
  }
}