From: Hypolite Petovan <hypolite@mrpetovan.com>
Date: Sun, 16 Feb 2020 09:32:56 +0000 (-0500)
Subject: Add System::htmlUpdateExit() method to refactor update modules
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=5d169a4098633b8e1a5212472700243d790f5bc4;p=friendica.git

Add System::htmlUpdateExit() method to refactor update modules
---

diff --git a/mod/update_community.php b/mod/update_community.php
index 8a12142ebd..4ad07d606c 100644
--- a/mod/update_community.php
+++ b/mod/update_community.php
@@ -21,35 +21,18 @@
  */
 
 use Friendica\App;
+use Friendica\Core\System;
 use Friendica\DI;
 
 require_once 'mod/community.php';
 
-function update_community_content(App $a) {
-	header("Content-type: text/html");
-	echo "<!DOCTYPE html><html><body>\r\n";
-	echo "<section>";
-
+function update_community_content(App $a)
+{
 	if ($_GET["force"] == 1) {
 		$text = community_content($a, true);
 	} else {
 		$text = '';
 	}
 
-	if (DI::pConfig()->get(local_user(), "system", "bandwidth_saver")) {
-		$replace = "<br />" . DI::l10n()->t("[Embedded content - reload page to view]") . "<br />";
-		$pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
-		$text = preg_replace($pattern, $replace, $text);
-	}
-
-	echo str_replace("\t", "       ", $text);
-	echo "</section>";
-	echo "</body></html>\r\n";
-	exit();
+	System::htmlUpdateExit($text);
 }
diff --git a/mod/update_contact.php b/mod/update_contact.php
index 768ff0c74f..5fb62e6a07 100644
--- a/mod/update_contact.php
+++ b/mod/update_contact.php
@@ -22,35 +22,17 @@
  */
 
 use Friendica\App;
+use Friendica\Core\System;
 use Friendica\DI;
 use Friendica\Module\Contact;
 
 function update_contact_content(App $a)
 {
-	header("Content-type: text/html");
-	echo "<!DOCTYPE html><html><body>\r\n";
-	echo "<section>";
-
 	if ($_GET["force"] == 1) {
 		$text = Contact::content([], true);
 	} else {
 		$text = '';
 	}
 
-	if (DI::pConfig()->get(local_user(), "system", "bandwidth_saver")) {
-		$replace = "<br />" . DI::l10n()->t("[Embedded content - reload page to view]") . "<br />";
-		$pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
-		$text = preg_replace($pattern, $replace, $text);
-	}
-
-	echo str_replace("\t", "       ", $text);
-	echo "</section>";
-	echo "</body></html>\r\n";
-	exit();
+	System::htmlUpdateExit($text);
 }
diff --git a/mod/update_display.php b/mod/update_display.php
index 73fd915e49..601808ff5e 100644
--- a/mod/update_display.php
+++ b/mod/update_display.php
@@ -21,6 +21,7 @@
  */
 
 use Friendica\App;
+use Friendica\Core\System;
 use Friendica\DI;
 
 require_once "mod/display.php";
@@ -29,26 +30,7 @@ function update_display_content(App $a)
 {
 	$profile_uid = intval($_GET["p"]);
 
-	header("Content-type: text/html");
-	echo "<!DOCTYPE html><html><body>\r\n";
-	echo "<section>";
-
 	$text = display_content($a, true, $profile_uid);
 
-	if (DI::pConfig()->get(local_user(), "system", "bandwidth_saver")) {
-		$replace = "<br />" . DI::l10n()->t("[Embedded content - reload page to view]") . "<br />";
-		$pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
-		$text = preg_replace($pattern, $replace, $text);
-	}
-
-	echo str_replace("\t", "       ", $text);
-	echo "</section>";
-	echo "</body></html>\r\n";
-	exit();
+	System::htmlUpdateExit($text);
 }
diff --git a/mod/update_network.php b/mod/update_network.php
index d6b77aedbb..aafc0e22f4 100644
--- a/mod/update_network.php
+++ b/mod/update_network.php
@@ -21,6 +21,7 @@
  */
 
 use Friendica\App;
+use Friendica\Core\System;
 use Friendica\DI;
 
 require_once "mod/network.php";
@@ -34,30 +35,10 @@ function update_network_content(App $a)
 	$profile_uid = intval($_GET['p']);
 	$parent = intval($_GET['item']);
 
-	header("Content-type: text/html");
-	echo "<!DOCTYPE html><html><body>\r\n";
-	echo "<section>";
-
 	if (!DI::pConfig()->get($profile_uid, "system", "no_auto_update") || ($_GET["force"] == 1)) {
 		$text = network_content($a, $profile_uid, $parent);
 	} else {
 		$text = "";
 	}
-
-	if (DI::pConfig()->get(local_user(), "system", "bandwidth_saver")) {
-		$replace = "<br />" . DI::l10n()->t("[Embedded content - reload page to view]") . "<br />";
-		$pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
-		$text = preg_replace($pattern, $replace, $text);
-	}
-
-	echo str_replace("\t", "       ", $text);
-	echo "</section>";
-	echo "</body></html>\r\n";
-	exit();
+	System::htmlUpdateExit($text);
 }
diff --git a/mod/update_notes.php b/mod/update_notes.php
index 87822f513e..75958a41bc 100644
--- a/mod/update_notes.php
+++ b/mod/update_notes.php
@@ -21,6 +21,7 @@
  */
 
 use Friendica\App;
+use Friendica\Core\System;
 use Friendica\DI;
 
 require_once("mod/notes.php");
@@ -29,11 +30,6 @@ function update_notes_content(App $a) {
 
 	$profile_uid = intval($_GET["p"]);
 
-	header("Content-type: text/html");
-	echo "<!DOCTYPE html><html><body>\r\n";
-
-	echo "<section>";
-
 	/**
 	 *
 	 * Grab the page inner contents by calling the content function from the profile module directly,
@@ -46,21 +42,5 @@ function update_notes_content(App $a) {
 
 	$text = notes_content($a, $profile_uid);
 
-	if (DI::pConfig()->get(local_user(), "system", "bandwidth_saver")) {
-		$replace = "<br />" . DI::l10n()->t("[Embedded content - reload page to view]") . "<br />";
-		$pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
-		$text = preg_replace($pattern, $replace, $text);
-		$pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
-		$text = preg_replace($pattern, $replace, $text);
-	}
-
-	// reportedly some versions of MSIE don't handle tabs in XMLHttpRequest documents very well
-	echo str_replace("\t", "       ", $text);
-	echo "</section>";
-	echo "</body></html>\r\n";
-	exit();
+	System::htmlUpdateExit($text);
 }
\ No newline at end of file
diff --git a/src/Core/System.php b/src/Core/System.php
index f092427e58..87abfdf8ed 100644
--- a/src/Core/System.php
+++ b/src/Core/System.php
@@ -292,6 +292,36 @@ class System
 		return true;
 	}
 
+	/**
+	 * Exit method used by asynchronous update modules
+	 *
+	 * @param string $o
+	 */
+	public static function htmlUpdateExit($o)
+	{
+		if (DI::pConfig()->get(local_user(), "system", "bandwidth_saver")) {
+			$replace = "<br />".DI::l10n()->t("[Embedded content - reload page to view]")."<br />";
+			$pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
+			$o = preg_replace($pattern, $replace, $o);
+			$pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
+			$o = preg_replace($pattern, $replace, $o);
+			$pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
+			$o = preg_replace($pattern, $replace, $o);
+			$pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
+			$o = preg_replace($pattern, $replace, $o);
+		}
+
+		header("Content-type: text/html");
+		echo "<!DOCTYPE html><html><body>\r\n";
+		// We can remove this hack once Internet Explorer recognises HTML5 natively
+		echo "<section>";
+		// reportedly some versions of MSIE don't handle tabs in XMLHttpRequest documents very well
+		echo str_replace("\t", "       ", $o);
+		echo "</section>";
+		echo "</body></html>\r\n";
+		exit();
+	}
+
 	/// @todo Move the following functions from boot.php
 	/*
 	function local_user()
diff --git a/src/Module/Update/Profile.php b/src/Module/Update/Profile.php
index 79e53168b3..662042eb11 100644
--- a/src/Module/Update/Profile.php
+++ b/src/Module/Update/Profile.php
@@ -24,6 +24,7 @@ namespace Friendica\Module\Update;
 use Friendica\BaseModule;
 use Friendica\Content\Pager;
 use Friendica\Core\Session;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Item;
@@ -116,27 +117,6 @@ class Profile extends BaseModule
 
 		$o .= conversation($a, $items, 'profile', $profile_uid, false, 'received', $a->profile['uid']);
 
-		header("Content-type: text/html");
-		echo "<!DOCTYPE html><html><body>\r\n";
-		// We can remove this hack once Internet Explorer recognises HTML5 natively
-		echo "<section>";
-		echo $o;
-		if (DI::pConfig()->get(local_user(), "system", "bandwidth_saver")) {
-			$replace = "<br />".DI::l10n()->t("[Embedded content - reload page to view]")."<br />";
-			$pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
-			$o = preg_replace($pattern, $replace, $o);
-			$pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
-			$o = preg_replace($pattern, $replace, $o);
-			$pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
-			$o = preg_replace($pattern, $replace, $o);
-			$pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
-			$o = preg_replace($pattern, $replace, $o);
-		}
-
-		// reportedly some versions of MSIE don't handle tabs in XMLHttpRequest documents very well
-		echo str_replace("\t", "       ", $o);
-		echo "</section>";
-		echo "</body></html>\r\n";
-		exit();
+		System::htmlUpdateExit($o);
 	}
 }