summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Maps/src/Presentation/ParameterExtractor.php
blob: 33a93658e54a7673557b853515ff4acd83ab4b81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php

declare( strict_types = 1 );

namespace Maps\Presentation;

/**
 * @licence GNU GPL v2+
 * @author Jeroen De Dauw < jeroendedauw@gmail.com >
 */
class ParameterExtractor {

	/**
	 * Extracts the value of a parameter from a parameter list.
	 *
	 * @param string[] $parameterNames Name and aliases of the parameter. First match gets used
	 * @param string[] $rawParameters Parameters that did not get processed further than being put in a key-value map
	 *
	 * @return string|null
	 */
	public function extract( array $parameterNames, array $rawParameters ) {
		foreach( $parameterNames as $parameterName ) {
			foreach ( $rawParameters as $rawName => $rawValue ) {
				if ( trim( strtolower( $rawName ) ) === $parameterName ) {
					return trim( $rawValue );
				}
			}
		}

		return null;
	}

	public static function extractFromKeyValueStrings( array $keyValueStrings ) {
		$rawParameters = [];

		foreach ( $keyValueStrings as $keyValueString ) {
			$parts = explode( '=', $keyValueString, 2 );

			if ( count( $parts ) === 2 ) {
				$rawParameters[$parts[0]] = $parts[1];
			}
		}

		return $rawParameters;
	}

}