You are here

function _views_maintenance_process_page_tasks in Views Maintenance 6

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

Processes list of page manager page tasks and returns views use cases.

It runs _views_maintenance_process_page_handlers() for task without subtasks otherwise it goes down into recursion.

Parameters

array $tasks: List of page manager page definitions.

array $parent: For internal use only. Stores parent task definition.

Return value

array

1 call to _views_maintenance_process_page_tasks()
_views_maintenance_page_use_cases in includes/ctools.inc
Returns views use cases in all page manager pages.

File

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

Code

function _views_maintenance_process_page_tasks($tasks, $parent = NULL) {
  $use_cases = array();
  foreach ($tasks as $task_id => $task) {

    // If a type has subtasks, process its subtasks instead of task itself.
    $subtasks = page_manager_get_task_subtasks($task);
    if (empty($subtasks)) {

      // Construct full task name and retrieve its handlers.
      if (isset($parent)) {
        $task_name = page_manager_make_task_name($parent['name'], $task['name']);
        $handlers = page_manager_load_task_handlers($parent, $task_id);
      }
      else {
        $task_name = $task['name'];
        $handlers = page_manager_load_task_handlers($task);
      }

      // Fetch views use cases from handlers.
      $use_cases[] = _views_maintenance_process_page_handlers($handlers, $task, $task_name);
    }
    else {

      // Task containing subtasks, go deep into recursion.
      $use_cases[] = _views_maintenance_process_page_tasks($subtasks, $task);
    }
  }
  if (!empty($use_cases)) {

    // Merge together use cases from different pages and return them in
    // expected format.
    return call_user_func_array('array_merge_recursive', $use_cases);
  }
  else {
    return array();
  }
}