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