Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 25 |
Hooks | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
30 | |
0.00% |
0 / 25 |
getSurveyConfig | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
onBeforePageDisplay | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
onResourceLoaderRegisterModules | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 13 |
<?php | |
/** | |
* Hooks for QuickSurveys extension | |
* | |
* @file | |
* @ingroup Extensions | |
*/ | |
namespace QuickSurveys; | |
use Action; | |
use Config; | |
use MediaWiki\MediaWikiServices; | |
use OutputPage; | |
use ResourceLoader; | |
use ResourceLoaderContext; | |
class Hooks { | |
/** | |
* Get data about the enabled surveys to be exported to the ext.quicksurveys.lib module | |
* via a virtual file. | |
* | |
* @param ResourceLoaderContext $context | |
* @param Config $conf | |
* @return array | |
*/ | |
public static function getSurveyConfig( ResourceLoaderContext $context, Config $conf ) { | |
$surveys = MediaWikiServices::getInstance()->getService( 'QuickSurveys.EnabledSurveys' ); | |
return array_map( static function ( Survey $survey ) { | |
return $survey->toArray(); | |
}, $surveys ); | |
} | |
/** | |
* Init QuickSurveys in BeforePageDisplay hook on existing pages in the main namespace | |
* | |
* @see https://www.mediawiki.org/wiki/Manual:Hooks/BeforePageDisplay | |
* | |
* @param OutputPage $out | |
*/ | |
public static function onBeforePageDisplay( OutputPage $out ) { | |
$context = $out->getContext(); | |
$title = $context->getTitle(); | |
$action = Action::getActionName( $context ); | |
$surveys = MediaWikiServices::getInstance()->getService( 'QuickSurveys.EnabledSurveys' ); | |
if ( ( new SurveyContextFilter( $surveys ) )->isAnySurveyAvailable( $title, $action ) ) { | |
// TODO: It's annoying that we parse survey config a second time, inside this indirected | |
// call. Ideally we could construct the ResourceLoader data module right here. | |
$out->addModules( 'ext.quicksurveys.init' ); | |
} | |
} | |
/** | |
* ResourceLoaderRegisterModules hook handler | |
* | |
* Registers needed modules for enabled surveys | |
* | |
* @see https://www.mediawiki.org/wiki/Manual:Hooks/ResourceLoaderRegisterModules | |
* | |
* @param ResourceLoader $resourceLoader | |
*/ | |
public static function onResourceLoaderRegisterModules( ResourceLoader $resourceLoader ) { | |
$surveys = MediaWikiServices::getInstance()->getService( 'QuickSurveys.EnabledSurveys' ); | |
foreach ( $surveys as $survey ) { | |
$moduleName = $survey->getResourceLoaderModuleName(); | |
$module = [ | |
$moduleName => [ | |
'dependencies' => [ 'ext.quicksurveys.lib.vue' ], | |
'messages' => $survey->getMessages(), | |
'targets' => [ 'desktop', 'mobile' ], | |
], | |
]; | |
$resourceLoader->register( $module ); | |
} | |
} | |
} |