function views_maintenance_page in Views Maintenance 6
Same name and namespace in other branches
- 7 views_maintenance.admin.inc \views_maintenance_page()
Page callback for views maintenance page.
Return value
string
1 string reference to 'views_maintenance_page'
- views_maintenance_menu in ./
views_maintenance.module - Implements hook_menu().
File
- ./
views_maintenance.admin.inc, line 133 - Provides administrative UI for Views Maintenance.
Code
function views_maintenance_page() {
$views = views_get_all_views();
// Filter-out disabled views from list.
foreach ($views as $view_id => $view) {
if (!empty($view->disabled)) {
// Exclude disabled views
$view
->destroy();
unset($views[$view_id]);
continue;
}
}
$views_info = array();
if (!empty($views)) {
// Include necessary files. But first of all include views/includes/handlers.inc,
// because hook_views_api() implementations for core modules are there and
// after we call module_implements('views_api') implementations static cache
// will miss those implementations and all core handlers will be broken.
views_include('base');
views_include('handlers');
views_module_include('views_maintenance.inc');
// Run hooks to get status from all modules
$views_use_cases = module_invoke_all('views_maintenance_use_cases', $views);
// Init order for sorting use cases by level of importance.
_views_maintenance_compare_by_order(NULL, NULL, array(
'broken',
'ok',
'maybe',
'unused',
));
// Build views info.
views_include('admin');
$base_tables = views_fetch_base_tables();
foreach ($views as $view_id => $view) {
$displays_info = array();
$displays_statuses = array();
foreach ($view->display as $display_id => $display) {
if (!empty($views_use_cases[$view_id][$display_id])) {
// At least one use case was returned, sort use cases by status. This
// brings use case with most important status to the first position.
// Order was initialized earlier.
$display_use_cases = $views_use_cases[$view_id][$display_id];
usort($display_use_cases, '_views_maintenance_use_cases_sort_by_status');
}
else {
// No use cases were returned for this display, use default use case
// with "unused" status and without description.
$display_use_cases = array(
array(
'status' => 'unused',
),
);
}
// Save first use case status, it is used for determining view status.
$first = reset(array_keys($display_use_cases));
$displays_statuses[$display_id] = $display_use_cases[$first]['status'];
// Build display info.
$displays_info[$display_id] = array(
'name' => $display->display_title,
'type' => $display->handler->definition['title'],
'use_cases' => $display_use_cases,
);
}
// Determine view status based on most important status of each display.
$view_status = _views_maintenance_view_status($displays_statuses);
$views_info[$view_id] = array(
'name' => $view->name,
'type' => !empty($base_tables[$view->base_table]['title']) ? $base_tables[$view->base_table]['title'] : t('Broken'),
'storage' => $view->type,
'status' => $view_status,
'links' => _views_maintenance_view_admin_links($view),
'description' => $view->description,
'displays' => $displays_info,
);
}
}
return theme('views_maintenance_views_table', $views_info);
}