From 27b2d91713dfbad1e87ae83336559d22ac9ec399 Mon Sep 17 00:00:00 2001
From: Jakub Senko <senky@users.noreply.github.com>
Date: Thu, 4 May 2017 17:27:41 +0200
Subject: [PATCH] [ticket/15217] Add core.user_format_date_override event

PHPBB3-15217
---
 phpBB/phpbb/user.php | 31 ++++++++++++++++++++++++++++---
 1 file changed, 28 insertions(+), 3 deletions(-)

diff --git a/phpBB/phpbb/user.php b/phpBB/phpbb/user.php
index 305510851c..d4097f53ee 100644
--- a/phpBB/phpbb/user.php
+++ b/phpBB/phpbb/user.php
@@ -588,6 +588,7 @@ class user extends \phpbb\session
 	*/
 	function format_date($gmepoch, $format = false, $forcedate = false)
 	{
+		global $phpbb_dispatcher;
 		static $utc;
 
 		if (!isset($utc))
@@ -595,10 +596,34 @@ class user extends \phpbb\session
 			$utc = new \DateTimeZone('UTC');
 		}
 
-		$time = new $this->datetime($this, '@' . (int) $gmepoch, $utc);
-		$time->setTimezone($this->timezone);
+		$format_date_override = false;
+		$function_arguments = func_get_args();
+		/**
+		* Execute code and/or override format_date()
+		*
+		* To override the format_date() function generated value
+		* set $format_date_override to new return value
+		*
+		* @event core.user_format_date_override
+		* @var DateTimeZone	utc Is DateTimeZone in UTC
+		* @var array function_arguments is array comprising a function's argument list
+		* @var string format_date_override Shall we return custom format (string) or not (false)
+		* @since 3.2.1-RC1
+		*/
+		$vars = array('utc', 'function_arguments', 'format_date_override');
+		extract($phpbb_dispatcher->trigger_event('core.user_format_date_override', compact($vars)));
 
-		return $time->format($format, $forcedate);
+		if (!$format_date_override)
+		{
+			$time = new $this->datetime($this, '@' . (int) $gmepoch, $utc);
+			$time->setTimezone($this->timezone);
+
+			return $time->format($format, $forcedate);
+		}
+		else
+		{
+			return $format_date_override;
+		}
 	}
 
 	/**