You are here

public function DbLogController::formatMessage in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/dblog/src/Controller/DbLogController.php \Drupal\dblog\Controller\DbLogController::formatMessage()

Formats a database log message.

Parameters

object $row: The record from the watchdog table. The object properties are: wid, uid, severity, type, timestamp, message, variables, link, name.

Return value

string|\Drupal\Core\StringTranslation\TranslatableMarkup|false The formatted log message or FALSE if the message or variables properties are not set.

3 calls to DbLogController::formatMessage()
DbLogController::eventDetails in core/modules/dblog/src/Controller/DbLogController.php
Displays details about a specific database log message.
DbLogController::overview in core/modules/dblog/src/Controller/DbLogController.php
Displays a listing of database log messages.
DbLogController::topLogMessages in core/modules/dblog/src/Controller/DbLogController.php
Shows the most frequent log messages of a given event type.

File

core/modules/dblog/src/Controller/DbLogController.php, line 371

Class

DbLogController
Returns responses for dblog routes.

Namespace

Drupal\dblog\Controller

Code

public function formatMessage($row) {

  // Check for required properties.
  if (isset($row->message, $row->variables)) {
    $variables = @unserialize($row->variables);

    // Messages without variables or user specified text.
    if ($variables === NULL) {
      $message = Xss::filterAdmin($row->message);
    }
    elseif (!is_array($variables)) {
      $message = $this
        ->t('Log data is corrupted and cannot be unserialized: @message', [
        '@message' => Xss::filterAdmin($row->message),
      ]);
    }
    else {

      // Ensure backtrace strings are properly formatted.
      if (isset($variables['@backtrace_string'])) {
        $variables['@backtrace_string'] = new FormattableMarkup('<pre class="backtrace">@backtrace_string</pre>', $variables);
      }
      $message = $this
        ->t(Xss::filterAdmin($row->message), $variables);
    }
  }
  else {
    $message = FALSE;
  }
  return $message;
}