You are here

function _views_maintenance_panel_node_use_cases in Views Maintenance 6

Same name and namespace in other branches
  1. 7 includes/ctools.inc \_views_maintenance_panel_node_use_cases()

Returns displays use cases in all panel nodes.

Return value

array Nested array with use cases grouped by view name and display id.

1 call to _views_maintenance_panel_node_use_cases()
views_maintenance_views_maintenance_use_cases in ./views_maintenance.views_maintenance.inc
Implements hook_views_maintenance_use_cases().

File

includes/ctools.inc, line 556
Provides integration with Page Manager and Panels Mini.

Code

function _views_maintenance_panel_node_use_cases() {
  ctools_include('content');
  ctools_include('plugins');

  // Load only necessary info about panel nodes.
  $res = db_query('SELECT n.title, n.nid, n.status, pn.did FROM {panels_node} pn INNER JOIN {node} n ON n.nid = pn.nid');
  $nodes = array();
  while ($node = db_fetch_object($res)) {

    // Save nodes to array using display id as key.
    $nodes[$node->did] = $node;
  }
  $displays = panels_load_displays(array_keys($nodes));
  $result = array();
  foreach ($displays as $did => $display) {
    if (!empty($nodes[$did])) {
      foreach ($display->content as $pane) {

        // Analyze each pane and get view name and display id (if any).
        $id = _views_maintenance_display_id_from_pane($pane);
        if (!empty($id)) {
          list($view_id, $display_id) = $id;
          $node = $nodes[$did];
          $use_case = _views_maintenance_panel_node_pane_use_case($node, $pane);
          $result[$view_id][$display_id][] = $use_case;
        }
      }
    }
  }
  return $result;
}