From 66594e9fbb2632aae5fc8adcd7d035b3e05fcce2 Mon Sep 17 00:00:00 2001
From: Mathieu Loiseau <mathieu.loiseau@liris.cnrs.fr>
Date: Mon, 9 May 2022 16:47:55 +0200
Subject: [PATCH] tentative module

---
 extension.json    |  3 +-
 src/Connected.php | 93 ++++++++++++++++++++++++++++++-----------------
 2 files changed, 61 insertions(+), 35 deletions(-)

diff --git a/extension.json b/extension.json
index 522a75b..555a7f0 100644
--- a/extension.json
+++ b/extension.json
@@ -13,7 +13,8 @@
 		"ExampleExtensionMagic": "Connected.i18n.magic.php"
 	},
 	"Hooks": {
-		"ParserGetVariableValueSwitch": "ConnectedHooks::onParserFirstCallInit"
+		"ParserGetVariableValueSwitch": "ConnectedHooks::onParserFirstCallInit",
+		"MagicWordwgVariableIDs": "ConnectedHooks::connectedDeclareVarIds"
 	},
 	"manifest_version": 1
 }
diff --git a/src/Connected.php b/src/Connected.php
index 5a6cdaf..31ee7b1 100644
--- a/src/Connected.php
+++ b/src/Connected.php
@@ -7,45 +7,70 @@
  * @link		https://gitlab.liris.cnrs.fr/mloiseau/mw_connected
  *
  **/
-$wgExtensionMessagesFiles['Connected'] = __DIR__ . '/Connected.i18n.magic.php';
+ $wgExtensionMessagesFiles['Connected'] = __DIR__ . '/Connected.i18n.magic.php';
 
-$wgHooks['ParserGetVariableValueSwitch'][] = 'wfConnectedAssignValue';
-function wfConnectedAssignValue( &$parser, &$cache, &$magicWordId, &$ret ) {
-	global $wgUser;
-	$result = false;
-	if($wgUser->isSafeToLoad()){
-		if ( !$wgUser->isLoggedIn() ) {
-			switch($magicWordId){
-				case 'connected' :
-					$ret = 0;
-					$result = true;
-					break;
-				case 'u_name':
-					$ret = $wgUser->getName();
-					$result = true;
-					break;
+ class ConnectedHooks {
+	// Register any render callbacks with the parser
+	public static function onParserFirstCallInit( Parser $parser ) {
+
+		// Create a function hook associating the "example" magic word with renderExample()
+		$parser->setFunctionHook( 'ifloggedin', [ self::class, 'ifConnectedRender' ] );
+	}
+
+	// Render the output of {{#example:}}.
+	public static function ifConnectedRender( Parser $parser, $ifLoggedIn = '', $ifNot = '') {
+		// The input parameters are wikitext with templates expanded.
+		// The output should be wikitext too.
+		global $wgUser;
+		if($wgUser->isSafeToLoad()){
+			if ( $wgUser->isLoggedIn() ) {
+				$output = $ifLoggedIn;
 			}
-		}
-		else{
-			switch($magicWordId){
-				case 'connected' :
-					$ret = 1;
-					$result = true;
-					break;
-				case 'u_name':
-					$ret = $wgUser->getName();
-					$result = true;
-					break;
+			else{
+				$output = $ifNot;
+			}
+
+		return $output;
+	}
+
+	public static function wfConnectedAssignValue( Parser $parser, &$cache, &$magicWordId, &$ret ) {
+		global $wgUser;
+		$result = false;
+		if($wgUser->isSafeToLoad()){
+			if ( !$wgUser->isLoggedIn() ) {
+				switch($magicWordId){
+					case 'connected' :
+						$ret = 0;
+						$result = true;
+						break;
+					case 'u_name':
+						$ret = $wgUser->getName();
+						$result = true;
+						break;
+				}
+			}
+			else{
+				switch($magicWordId){
+					case 'connected' :
+						$ret = 1;
+						$result = true;
+						break;
+					case 'u_name':
+						$ret = $wgUser->getName();
+						$result = true;
+						break;
+				}
 			}
 		}
+		return $result;
+	}
+
+	function connectedDeclareVarIds( &$customVariableIds ) {
+		// $customVariableIds is where MediaWiki wants to store its list of custom
+		// variable IDs. We oblige by adding ours:
+		$customVariableIds[] = 'connected';
+		$customVariableIds[] = 'u_name';
 	}
-	return $result;
 }
 
 $wgHooks['MagicWordwgVariableIDs'][] = 'connectedMyDeclareVarIds';
-function connectedMyDeclareVarIds( &$customVariableIds ) {
-	// $customVariableIds is where MediaWiki wants to store its list of custom
-	// variable IDs. We oblige by adding ours:
-	$customVariableIds[] = 'connected';
-	$customVariableIds[] = 'u_name';
-}
-- 
GitLab