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;
+  }
+
+}