uid == 1) { detect_views(); print theme('page'); } else { print drupal_access_denied(); } function detect_views() { $broken_filters = array(); // To be safe, we require that CCK and Views both be enabled, and also // perform many checks of their APIs during the course of this update. if (module_exists('content') && module_exists('views') && function_exists('views_api_version') && views_api_version() == 2.0) { // Search through all filters for all Views. if (function_exists('views_get_all_views') && ($views = views_get_all_views()) && is_array($views)) { foreach ($views as $view) { if (method_exists($view, 'init_display')) { $view->init_display(); if (is_array($view->display)) { foreach ($view->display as $display_id => $display) { if (method_exists($display->handler, 'is_defaulted') && !$display->handler->is_defaulted('filter') && method_exists($display->handler, 'get_handlers')) { $handlers = $display->handler->get_handlers('filter'); if (is_array($handlers)) { foreach ($handlers as $handler_id => $handler) { // If the filter is on a CCK text or number field and // defines a list of allowed values, then it is broken. if (isset($handler->content_field)) { $field = $handler->content_field; if (isset($field['type']) && in_array($field['type'], array('text', 'number_integer', 'number_decimal', 'number_float'), TRUE)) { if (function_exists('content_allowed_values')) { $allowed_values = content_allowed_values($field); if (count($allowed_values) && isset($view->type)) { switch ($view->type) { case t('Normal'): // The human-readable name is friendlier // for Views accessible via the UI. $broken_filters['database'][$view->name][] = t('Content: @label', array('@label' => $field['widget']['label'])); break; case t('Overriden'): case t('Default'): // The machine-readable name is friendlier // for Views stored in code. $broken_filters['code'][$view->name][] = $field['field_name']; break; } } } } } } } } } } } } } } if (!empty($broken_filters)) { // Convert the list of broken filters to a user-friendly format. foreach ($broken_filters as $type => $views) { foreach ($views as $view => $fields) { $view_replacement = ($type == 'database') ? l($view, 'admin/build/views/edit/'. $view) : check_plain($view); // Make sure we don't print the same field name twice. $broken_filters[$type][$view] = t('!view (broken filters: %filters)', array('!view' => $view_replacement, '%filters' => implode(', ', array_unique($fields)))); } } $broken_database_filters = isset($broken_filters['database']) ? $broken_filters['database'] : array(); $broken_code_filters = isset($broken_filters['code']) ? $broken_filters['code'] : array(); $t_strings = array( '!database_views' => '