<?php /** * Connected * * @license GPL * @package Connected * @link https://gitlab.liris.cnrs.fr/mloiseau/mw_connected * **/ 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( 'iflogged', [ self::class, 'ifConnectedRender' ] ); // TODO: Le getuser ne marche pas car $parser est null ne marche pas ici à voir comment on fait //cf. https://github.com/wikimedia/mediawiki-extensions-WikiTextLoggedInOut/blob/d764bd3972ed6b84a4af3ed423a3a5fd9b82c493/includes/WikiTextLoggedInOut.php#L39 if ( method_exists( $parser, 'getUserIdentity' ) ) { // MW 1.36+ $res = $parser->getUserIdentity()->isRegistered(); } else { if (method_exists( $parser, 'getUser' )){ $res = $parser->getUser()->isRegistered(); } else{ $res = ''; } } $parser->getOptions()->setOption( 'connected', string($res) ); } public static function onParserOptionsRegister( &$defaults, &$inCacheKey, &$lazyOptions ) { $inCacheKey['connected'] = true; $defaults['connected'] = ''; return true; } // Render the output of {{#ifloggedin:}} i.e. iflogged function. public static function ifConnectedRender( Parser $parser, $ifLoggedIn = '', $ifNot = '') { // The input parameters are wikitext with templates expanded. // The output should be wikitext too. if ( $parser->getOptions()->getOption('connected') == string(true)) { $output = $ifLoggedIn; } else{ $output = $ifNot; } return [ $output, 'noparse' => false ]; } //calcul des variables public static function wfConnectedAssignValue( Parser $parser, &$cache, $magicWordId, &$ret, $frame) { $result = false; switch($magicWordId){ case 'connected' : if ( $parser->getOptions()->getOption('connected') == string(false)) { $ret = 0; $result = true; } else{ $ret = 1; $result = true; } break; case 'u_name': if ( $parser->getOptions()->getOption('connected') == string(false)) { $ret = $wgUser->getName(); $result = true; } else{ $ret = $wgUser->getName(); $result = true; } break; } return $result; } //mettre à jour la liste de variables public static 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'; } #Cacher la barre de menu quand on n'est pas logué et charger une css supplémentaire //https://www.mediawiki.org/wiki/Manual:Interface/Sidebar#Change_sidebar_content_when_logged_in_(PHP) //https://www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL public static function lfHideSidebar( $skin, &$bar ) { // Hide sidebar for anonymous users if ( $parser->getOptions()->getOption('connected') == string(false)) { $bar = array( 'navigation' => array( array( 'text' => wfMessage( 'login' ) -> text(), 'href' => SpecialPage::getTitleFor( 'Login' )->getLocalURL(), 'id' => 'n-login', 'active' => '' ) ) ); } return true; } #Ajouter une feuille de style quand pas connecté public static function add_NotLoggedIncss( OutputPage $out, Skin $skin ) { if ( $parser->getOptions()->getOption('connected') == string(false)) { $out->addStyle('/w/index.php?title=MediaWiki:NotLoggedIn.css&action=raw&ctype=text/css'); $out->addMeta( "logged", "no" ); } else{ $out->addStyle('/w/index.php?title=MediaWiki:LoggedIn.css&action=raw&ctype=text/css'); $out->addMeta( "logged", "yes" ); } } }