summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Maps/src/MediaWiki/ParserHooks/DisplayMapFunction.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Maps/src/MediaWiki/ParserHooks/DisplayMapFunction.php')
-rw-r--r--www/wiki/extensions/Maps/src/MediaWiki/ParserHooks/DisplayMapFunction.php117
1 files changed, 45 insertions, 72 deletions
diff --git a/www/wiki/extensions/Maps/src/MediaWiki/ParserHooks/DisplayMapFunction.php b/www/wiki/extensions/Maps/src/MediaWiki/ParserHooks/DisplayMapFunction.php
index bad0d842..5d64b52e 100644
--- a/www/wiki/extensions/Maps/src/MediaWiki/ParserHooks/DisplayMapFunction.php
+++ b/www/wiki/extensions/Maps/src/MediaWiki/ParserHooks/DisplayMapFunction.php
@@ -3,12 +3,12 @@
namespace Maps\MediaWiki\ParserHooks;
use Maps;
-use Maps\MapsFunctions;
+use Maps\MappingService;
use Maps\MappingServices;
+use Maps\MapsFactory;
use Maps\Presentation\ParameterExtractor;
use MWException;
-use ParamProcessor;
-use ParamProcessor\ProcessedParam;
+use ParamProcessor\Processor;
use Parser;
/**
@@ -38,7 +38,7 @@ class DisplayMapFunction {
* @throws MWException
*/
public function getMapHtmlForKeyValueStrings( Parser $parser, array $parameters ): string {
- $processor = new \ParamProcessor\Processor( new \ParamProcessor\Options() );
+ $processor = new Processor( new \ParamProcessor\Options() );
$service = $this->services->getServiceOrDefault(
$this->extractServiceName(
@@ -50,14 +50,20 @@ class DisplayMapFunction {
$processor->setFunctionParams(
$parameters,
- array_merge(
- self::getHookDefinition( ';' )->getParameters(),
- $service->getParameterInfo()
- ),
- self::getHookDefinition( ';' )->getDefaultParameters()
+ [],
+ self::getDefaultParameters()
+ );
+
+ $processor->setParameterDefinitions(
+ $this->getAllParameterDefinitions( $service, ';' )
);
- return $this->getMapHtmlFromProcessor( $parser, $processor );
+ $this->trackMap( $parser );
+
+ return $this->renderer->renderMap(
+ $service->processingResultToMapParams( $processor->processParameters() ),
+ $parser
+ );
}
/**
@@ -69,65 +75,35 @@ class DisplayMapFunction {
* @throws MWException
*/
public function getMapHtmlForParameterList( Parser $parser, array $parameters ) {
- $processor = new \ParamProcessor\Processor( new \ParamProcessor\Options() );
+ $processor = new Processor( new \ParamProcessor\Options() );
$service = $this->services->getServiceOrDefault( $this->extractServiceName( $parameters ) );
$this->renderer->service = $service;
- $processor->setParameters(
- $parameters,
- array_merge(
- self::getHookDefinition( "\n" )->getParameters(),
- $service->getParameterInfo()
- )
+ $processor->setParameters( $parameters );
+ $processor->setParameterDefinitions(
+ $this->getAllParameterDefinitions( $service, "\n" )
);
- return $this->getMapHtmlFromProcessor( $parser, $processor );
- }
-
- private function getMapHtmlFromProcessor( Parser $parser, ParamProcessor\Processor $processor ) {
- $params = $processor->processParameters()->getParameters();
-
- $this->defaultMapZoom( $params );
-
$this->trackMap( $parser );
return $this->renderer->renderMap(
- $this->processedParametersToKeyValueArray( $params ),
+ $service->processingResultToMapParams( $processor->processParameters() ),
$parser
);
}
- private function extractServiceName( array $parameters ): string {
- $service = ( new ParameterExtractor() )->extract(
- [ 'mappingservice', 'service' ],
- $parameters
- );
-
- return $service ?? '';
- }
-
- private function processedParametersToKeyValueArray( array $params ): array {
- $parameters = [];
-
- foreach ( $params as $parameter ) {
- $parameters[$parameter->getName()] = $parameter->getValue();
- }
+ private function getAllParameterDefinitions( MappingService $service, string $locationDelimiter ) {
+ $params = [];
- return $parameters;
- }
-
- public static function getHookDefinition( string $locationDelimiter ): \ParserHooks\HookDefinition {
- return new \ParserHooks\HookDefinition(
- [ 'display_map', 'display_point', 'display_points', 'display_line' ],
- self::getParameterDefinitions( $locationDelimiter ),
- [ 'coordinates' ]
- );
- }
-
- private static function getParameterDefinitions( $locationDelimiter ): array {
- $params = MapsFunctions::getCommonParameters();
+ $params['mappingservice'] = [
+ 'type' => 'string',
+ 'aliases' => 'service',
+ 'default' => $GLOBALS['egMapsDefaultService'],
+ 'values' => MapsFactory::globalInstance()->getMappingServices()->getAllNames(),
+ 'message' => 'maps-par-mappingservice'
+ ];
$params['coordinates'] = [
'type' => 'string',
@@ -138,28 +114,25 @@ class DisplayMapFunction {
'message' => 'maps-displaymap-par-coordinates',
];
- return $params;
+ return MapsFactory::globalInstance()->getParamDefinitionFactory()->newDefinitionsFromArrays(
+ array_merge(
+ $params,
+ $service->getParameterInfo()
+ )
+ );
}
- /**
- * @param ProcessedParam[] $parameters
- */
- private function defaultMapZoom( array &$parameters ) {
- if ( array_key_exists( 'zoom', $parameters ) && $parameters['zoom']->wasSetToDefault() && count(
- $parameters['coordinates']->getValue()
- ) > 1 ) {
- $parameters['zoom'] = $this->getParameterWithValue( $parameters['zoom'], false );
- }
+ private function extractServiceName( array $parameters ): string {
+ $service = ( new ParameterExtractor() )->extract(
+ [ 'mappingservice', 'service' ],
+ $parameters
+ );
+
+ return $service ?? '';
}
- private function getParameterWithValue( ProcessedParam $param, $value ) {
- return new ProcessedParam(
- $param->getName(),
- $value,
- $param->wasSetToDefault(),
- $param->getOriginalName(),
- $param->getOriginalValue()
- );
+ public static function getDefaultParameters(): array {
+ return [ 'coordinates' ];
}
private function trackMap( Parser $parser ) {