moduleHandler = $module_handler; } /** * Analyzes a review and return the results. * * @param \Drupal\views\ViewExecutable $view * The view to analyze. * * @return array * An array of analyze results organized into arrays keyed by 'ok', * 'warning' and 'error'. */ public function getMessages(ViewExecutable $view) { $view->initDisplay(); $messages = $this->moduleHandler->invokeAll('views_analyze', [$view]); return $messages; } /** * Formats the analyze result into a message string. * * This is based upon the format of drupal_set_message which uses separate * boxes for "ok", "warning" and "error". */ public function formatMessages(array $messages) { if (empty($messages)) { $messages = [static::formatMessage(t('View analysis can find nothing to report.'), 'ok')]; } $types = ['ok' => [], 'warning' => [], 'error' => []]; foreach ($messages as $message) { if (empty($types[$message['type']])) { $types[$message['type']] = []; } $types[$message['type']][] = $message['message']; } $output = ''; foreach ($types as $type => $messages) { $type .= ' messages'; $message = ''; if (count($messages) > 1) { $item_list = [ '#theme' => 'item_list', '#items' => $messages, ]; $message = drupal_render($item_list); } elseif ($messages) { $message = array_shift($messages); } if ($message) { $output .= "