You are here

function _viewfield_potential_references in Viewfield 7.3

Same name and namespace in other branches
  1. 5 viewfield.module \_viewfield_potential_references()
  2. 6.2 viewfield.module \_viewfield_potential_references()
  3. 6 viewfield.module \_viewfield_potential_references()
  4. 7.2 viewfield.module \_viewfield_potential_references()

Returns a select options list of views displays of enabled and allowed views.

1 call to _viewfield_potential_references()
viewfield_field_widget_form in ./viewfield.module
Implements hook_field_widget_form().

File

./viewfield.module, line 437
Defines a field type to display a view.

Code

function _viewfield_potential_references($field, $instance) {

  // Retrieve all currently available views.
  $views = views_get_enabled_views();
  $options = array();

  // Get configured values for field view label and display label.
  $view_label = isset($instance['settings']['view_label']) ? $instance['settings']['view_label'] : 'human';
  $display_label = isset($instance['settings']['display_label']) ? $instance['settings']['display_label'] : 'human';

  // Limit to allowed values, if any.
  if (isset($instance['settings']['allowed_views']) && is_array($instance['settings']['allowed_views'])) {
    if ($allowed = array_filter($instance['settings']['allowed_views'])) {
      foreach ($allowed as $allowed_view) {
        $enabled_view = explode('|', $allowed_view);
        list($machine_name, $display) = $enabled_view;

        // Since we cannot detect when a view's machine name changes or when a
        // view is removed, we have to make sure that the view and its display
        // still exist.
        if (isset($views[$machine_name]) && isset($views[$machine_name]->display[$display])) {
          $options[$allowed_view] = _viewfield_get_option_label($views[$machine_name], $view_label, $views[$machine_name]->display[$display], $display_label);
        }
      }
    }
  }

  // None selected, show all.
  if (empty($options)) {
    foreach ($views as $view_name => $view) {
      foreach ($view->display as $display) {
        $options[$view->name . '|' . $display->id] = _viewfield_get_option_label($view, $view_label, $display, $display_label);
      }
    }
  }
  asort($options);
  return $options;
}