You are here

function views_get_views_as_options in Views (for Drupal 7) 8.3

Same name and namespace in other branches
  1. 7.3 views.module \views_get_views_as_options()

Return an array of view as options array, that can be used by select, checkboxes and radios as #options.

Parameters

bool $views_only: If TRUE, only return views, not displays.

string $filter: Filters the views on status. Can either be 'all' (default), 'enabled' or 'disabled'

mixed $exclude_view: view or current display to exclude either a

  • views object (containing $exclude_view->storage->name and $exclude_view->current_display)
  • views name as string: e.g. my_view
  • views name and display id (separated by ':'): e.g. my_view:default

bool $optgroup: If TRUE, returns an array with optgroups for each view (will be ignored for $views_only = TRUE). Can be used by select

bool $sort: If TRUE, the list of views is sorted ascending.

Return value

array an associative array for use in select.

  • key: view name and display id separated by ':', or the view name only
2 calls to views_get_views_as_options()
ModuleTest::testLoadFunctions in lib/Drupal/views/Tests/ModuleTest.php
Tests the load wrapper/helper functions.
View::buildOptionsForm in lib/Drupal/views/Plugin/views/area/View.php
Default options form that provides the label widget that all fields should have.

File

./views.module, line 1577
Primarily Drupal hooks and global API functions to manipulate views.

Code

function views_get_views_as_options($views_only = FALSE, $filter = 'all', $exclude_view = NULL, $optgroup = FALSE, $sort = FALSE) {

  // Filter the big views array.
  switch ($filter) {
    case 'all':
    case 'disabled':
    case 'enabled':
      $func = "views_get_{$filter}_views";
      $views = $func();
      break;
    default:
      return array();
  }

  // Prepare exclude view strings for comparison.
  if (empty($exclude_view)) {
    $exclude_view_name = '';
    $exclude_view_display = '';
  }
  elseif (is_object($exclude_view)) {
    $exclude_view_name = $exclude_view->storage
      ->id();
    $exclude_view_display = $exclude_view->current_display;
  }
  else {

    // Append a ':' to the $exclude_view string so we always have more than one
    // item to explode.
    list($exclude_view_name, $exclude_view_display) = explode(':', "{$exclude_view}:");
  }
  $options = array();
  foreach ($views as $view) {
    $id = $view
      ->id();

    // Return only views.
    if ($views_only && $id != $exclude_view_name) {
      $options[$id] = $view
        ->getHumanName();
    }
    else {
      foreach ($view->display as $display_id => $display) {
        if (!($id == $exclude_view_name && $display_id == $exclude_view_display)) {
          if ($optgroup) {
            $options[$id][$id . ':' . $display['id']] = t('@view : @display', array(
              '@view' => $id,
              '@display' => $display['id'],
            ));
          }
          else {
            $options[$id . ':' . $display['id']] = t('View: @view - Display: @display', array(
              '@view' => $id,
              '@display' => $display['id'],
            ));
          }
        }
      }
    }
  }
  if ($sort) {
    ksort($options);
  }
  return $options;
}