From 5326cc0c2edab855271aafb44133e4843903cfe0 Mon Sep 17 00:00:00 2001
From: Hypolite Petovan <hypolite@mrpetovan.com>
Date: Sat, 20 Oct 2018 22:34:26 -0400
Subject: [PATCH] Add Friendica\LegacyModule class

---
 src/LegacyModule.php | 73 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 73 insertions(+)
 create mode 100644 src/LegacyModule.php

diff --git a/src/LegacyModule.php b/src/LegacyModule.php
new file mode 100644
index 0000000000..4b0371edb5
--- /dev/null
+++ b/src/LegacyModule.php
@@ -0,0 +1,73 @@
+<?php
+
+namespace Friendica;
+
+/**
+ * This mock module enable class encapsulation of legacy global function modules.
+ * After having provided the module file name, all the methods will behave like a normal Module class.
+ *
+ * @author Hypolite Petovan <mrpetovan@gmail.com>
+ */
+class LegacyModule extends BaseModule
+{
+	/**
+	 * The module name, which is the name of the file (without the .php suffix)
+	 * It's used to check for existence of the module functions.
+	 *
+	 * @var string
+	 */
+	private static $moduleName = '';
+
+	/**
+	 * The only method that needs to be called, with the module/addon file name.
+	 *
+	 * @param string $file_path
+	 */
+	public static function setModuleFile($file_path)
+	{
+		if (!file_exists($file_path)) {
+			throw new Exception(Core\L10n::t('Legacy module file not found: %s', $file_path));
+		}
+
+		self::$moduleName = basename($file_path, '.php');
+
+		require_once $file_path;
+	}
+
+	public static function init()
+	{
+		self::runModuleFunction('init');
+	}
+
+	public static function content()
+	{
+		return self::runModuleFunction('content');
+	}
+
+	public static function post()
+	{
+		self::runModuleFunction('post');
+	}
+
+	public static function afterpost()
+	{
+		self::runModuleFunction('afterpost');
+	}
+
+	/**
+	 * Runs the module function designated by the provided suffix if it exists, the BaseModule method otherwise
+	 *
+	 * @param string $function_suffix
+	 * @return string
+	 */
+	private static function runModuleFunction($function_suffix)
+	{
+		$function_name = static::$moduleName . '_' . $function_suffix;
+
+		if (\function_exists($function_name)) {
+			return $function_name(self::getApp());
+		} else {
+			return parent::{$function_suffix}();
+		}
+	}
+}
-- 
2.39.5