Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Logger/LogMessageParser.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Logger/LogMessageParser.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,41 @@ +<?php + +namespace Drupal\Core\Logger; + +/** + * Parses log messages and their placeholders. + */ +class LogMessageParser implements LogMessageParserInterface { + + /** + * {@inheritdoc} + */ + public function parseMessagePlaceholders(&$message, array &$context) { + $variables = []; + $has_psr3 = FALSE; + if (($start = strpos($message, '{')) !== FALSE && strpos($message, '}') > $start) { + $has_psr3 = TRUE; + // Transform PSR3 style messages containing placeholders to + // \Drupal\Component\Utility\SafeMarkup::format() style. + $message = preg_replace('/\{(.*)\}/U', '@$1', $message); + } + foreach ($context as $key => $variable) { + // PSR3 style placeholders. + if ($has_psr3) { + // Keys are not prefixed with anything according to PSR3 specs. + // If the message is "User {username} created" the variable key will be + // just "username". + if (strpos($message, '@' . $key) !== FALSE) { + $key = '@' . $key; + } + } + if (!empty($key) && ($key[0] === '@' || $key[0] === '%' || $key[0] === '!')) { + // The key is now in \Drupal\Component\Utility\SafeMarkup::format() style. + $variables[$key] = $variable; + } + } + + return $variables; + } + +}