Passed
Push — 2020.04 ( 054a6e...097e5e )
by Aimeos
02:55 queued 11s
created

T3Router   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 11
c 1
b 0
f 0
dl 0
loc 43
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A transform() 0 8 2
1
<?php
2
3
/**
4
 * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
5
 * @copyright Aimeos (aimeos.org), 2020
6
 * @package MW
7
 * @subpackage View
8
 */
9
10
11
namespace Aimeos\MW\View\Helper\Url;
12
13
14
/**
15
 * View helper class for building URLs using the page router.
16
 *
17
 * @package MW
18
 * @subpackage View
19
 */
20
class T3Router
21
	extends \Aimeos\MW\View\Helper\Url\Base
22
	implements \Aimeos\MW\View\Helper\Url\Iface
23
{
24
	private $router;
25
	private $fixed;
26
27
28
	/**
29
	 * Initializes the URL view helper.
30
	 *
31
	 * @param \Aimeos\MW\View\Iface $view View instance with registered view helpers
32
	 * @param \TYPO3\CMS\Core\Routing\RouterInterface $router TYPO3 page router
33
	 * @param array $fixed Fixed parameters that should be added to each URL
34
	 */
35
	public function __construct( \Aimeos\MW\View\Iface $view, \TYPO3\CMS\Core\Routing\RouterInterface $router, array $fixed )
36
	{
37
		parent::__construct( $view );
38
39
		$this->router = clone $router;
40
		$this->fixed = $fixed;
41
	}
42
43
44
	/**
45
	 * Returns the URL assembled from the given arguments.
46
	 *
47
	 * @param string|null $target Route or page which should be the target of the link (if any)
48
	 * @param string|null $controller Name of the controller which should be part of the link (if any)
49
	 * @param string|null $action Name of the action which should be part of the link (if any)
50
	 * @param array $params Associative list of parameters that should be part of the URL
51
	 * @param array $trailing Trailing URL parts that are not relevant to identify the resource (for pretty URLs)
52
	 * @param array $config Additional configuration parameter per URL
53
	 * @return string Complete URL that can be used in the template
54
	 */
55
	public function transform( string $target = null, string $controller = null, string $action = null,
56
		array $params = [], array $trailing = [], array $config = [] ) : string
57
	{
58
		if( $params['locale'] ?? null ) {
59
			$params['L'] = $params['locale'];
60
		}
61
62
		return (string) $this->router->generateUri( $target, ['ai' => $params + $this->fixed], join( '/', $trailing ) );
63
	}
64
}
65