You are here

function views_maintenance_views_maintenance_use_cases in Views Maintenance 6

Same name and namespace in other branches
  1. 7 views_maintenance.views_maintenance.inc \views_maintenance_views_maintenance_use_cases()

Implements hook_views_maintenance_use_cases().

File

./views_maintenance.views_maintenance.inc, line 352
Provides displays use cases info to Views Maintenance.

Code

function views_maintenance_views_maintenance_use_cases($views) {

  // Init blocks cache before any views init, because _block_rehash()
  // resets views.
  _views_maintenance_display_blocks_settings(NULL);

  // Paths provided by displays. It is filled by multiple calls to
  // _views_maintenance_display_paths_use_cases().
  $paths = array();

  // Collect displays use cases in blocks, attachments, as a menu item and
  // broken displays.
  $result = array();
  foreach ($views as $view_id => $view) {
    $view
      ->init_display();
    foreach ($view->display as $display_id => $display) {
      $use_cases = array();

      // Fetch different types of use cases.
      $use_cases[] = _views_maintenance_display_paths_use_cases($display, $view, $paths);
      $use_cases[] = _views_maintenance_display_blocks_use_cases($display);
      $use_cases[] = _views_maintenance_display_broken_use_cases($display);
      $use_cases[] = _views_maintenance_display_attachment_use_cases($display, $view);

      // Merge use cases together and add them to result.
      $use_cases = call_user_func_array('array_merge', $use_cases);
      if (!empty($use_cases)) {
        $result[$view_id][$display_id] = $use_cases;
      }
    }
  }

  // Retrieve all use cases as menu items at once for paths provided by all
  // displays.
  $menu_use_cases = _views_maintenance_menu_items_use_cases($paths);
  $result = array_merge_recursive($result, $menu_use_cases);
  if (module_exists('views_content') && !function_exists('views_content_views_maintenance_use_cases')) {
    module_load_include('inc', 'views_maintenance', 'includes/ctools');

    // Fetch views use cases in page manager pages.
    if (module_exists('page_manager')) {
      $page_use_cases = _views_maintenance_page_use_cases();
      $result = array_merge_recursive($result, $page_use_cases);
    }

    // Get views use cases in mini panels.
    if (module_exists('panels_mini')) {
      $mini_panel_use_cases = _views_maintenance_mini_panel_use_cases();
      $result = array_merge_recursive($result, $mini_panel_use_cases);
    }

    // Collect use cases from panel nodes.
    if (module_exists('panels_node')) {
      $panel_node_use_cases = _views_maintenance_panel_node_use_cases();
      $result = array_merge_recursive($result, $panel_node_use_cases);
    }
  }
  return $result;
}