You are here

function viewreference_get_view in View reference 7.3

Same name and namespace in other branches
  1. 6.3 viewreference.module \viewreference_get_view()

Get an array of data and rendered HTML items that are useful in theming the formatter output.

Parameters

$element: An array of parameters used in viewing the element.

$params: An array of special features needed to be built: 'embed' - The $view->preview() of the view display 'title' - The display title of the view display 'link' - A link to the view display, or the title if link not available. 'path' - The path to the view display, or the title if path not available. 'contextual' - The contextual links.

Return value

The array of useful data about the view.

6 calls to viewreference_get_view()
theme_viewreference_formatter_default in ./viewreference.module
Theme function for 'default' viewreference field formatter.
theme_viewreference_formatter_full in ./viewreference.module
Theme function for 'full' viewreference field formatter.
theme_viewreference_formatter_link in ./viewreference.module
Theme function for 'link' viewreference field formatter.
theme_viewreference_formatter_path in ./viewreference.module
Theme function for 'path' viewreference field formatter.
theme_viewreference_formatter_plain in ./viewreference.module
Theme function for 'plain' viewreference field formatter.

... See full list

File

./viewreference.module, line 475
Defines a field type for referencing a view from a node.

Code

function viewreference_get_view($element, $params = array()) {
  if (!empty($element['item']['view_id'])) {
    if (!empty($element['view'])) {
      $view = $element['view'];
    }
    if (empty($view['view']) || empty($view['display']) || empty($view['name'])) {
      $view_id_parts = explode(':', $element['item']['view_id']);
      $view['name'] = $view_id_parts[0];
      $view['display'] = $view_id_parts[1];
      $view['view'] = views_get_view($view['name']);
    }
    if ($view['view'] && $view['view']
      ->access($view['display'])) {

      // Save $_GET['q'] so it can be restored before returning from this function.

      //$q = $_GET['q'];
      if (empty($view['embed']) && (in_array('embed', $params) || !empty($element['field']['settings']['skip_empty']))) {
        $view['args'] = viewreference_get_element_args($element);

        //if (!empty($view['args'])) {

        //  $_GET['q'] .= '/' . implode('/', $view['args']);

        //}
        $view['embed'] = $view['view']
          ->preview($view['display'], $view['args']);

        // If the view is empty and the viewreference field is configured with
        // "skip empty views" enabled, skip outputting the view.
        if (!empty($element['field']['settings']['skip_empty']) && empty($view['view']->result)) {

          // Restore $_GET['q'] before skipping the view.

          //$_GET['q'] = $q;
          return FALSE;
        }
      }
      if (in_array('title', $params) && empty($view['title']) || in_array('link', $params) && empty($view['link'])) {
        $view['display_key'] = $view['display'];
        $view['title'] = theme('viewreference_display_title', $view);
        if (in_array('link', $params) && empty($view['link'])) {
          $disabled = isset($view['view']->disabled) ? $view['view']->disabled : FALSE;
          if (isset($view['view']->display[$view['display']]->display_options['path']) && !$disabled) {
            $view['args'] = isset($view['args']) ? $view['args'] : viewreference_get_element_args($element);
            $view['url_args'] = implode('/', $view['args']);
            $view['path'] = $view['view']->display[$view['display']]->display_options['path'];
            if ($view['url_args']) {
              $view['path'] .= '/' . $view['url_args'];
            }
            $view['link'] = l($view['title'], $view['view']
              ->get_url($view['args'], $view['path']));
          }
          else {
            $view['link'] = $view['title'];
          }
        }
      }
      if (in_array('contextual', $params) && empty($view['contextual'])) {
        $view['contextual'] = '';
        if (module_exists('contextual')) {
          $contextual = contextual_element_info();
          views_add_contextual_links($contextual['contextual_links'], 'special_block_-exp', $view['view'], $view['display']);
          if (!empty($contextual['contextual_links']['#contextual_links'])) {
            $view['contextual'] = drupal_render($contextual['contextual_links']);
          }
        }
      }

      //$_GET['q'] = $q;
      return $view;
    }
  }
}