Slim   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 11
dl 0
loc 36
rs 10
c 2
b 0
f 0
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 2
A getIPAddress() 0 12 3
1
<?php
2
3
/**
4
 * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
5
 * @copyright Aimeos (aimeos.org), 2016-2020
6
 * @package MW
7
 * @subpackage View
8
 */
9
10
11
namespace Aimeos\MW\View\Helper\Request;
12
13
14
/**
15
 * View helper class for accessing request data from Slim
16
 *
17
 * @package MW
18
 * @subpackage View
19
 */
20
class Slim
21
	extends \Aimeos\MW\View\Helper\Request\Standard
22
	implements \Aimeos\MW\View\Helper\Request\Iface
23
{
24
	/**
25
	 * Initializes the request view helper.
26
	 *
27
	 * @param \Aimeos\MW\View\Iface $view View instance with registered view helpers
28
	 * @param \Psr\Http\Message\ServerRequestInterface $request PSR-7 request object
29
	 */
30
	public function __construct( \Aimeos\MW\View\Iface $view, \Psr\Http\Message\ServerRequestInterface $request )
31
	{
32
		$route = $request->getAttribute( 'route' );
33
34
		parent::__construct( $view, $request, $this->getIPAddress( $request ), ( $route ? $route->getName() : null ) );
35
	}
36
37
38
	/**
39
	 * Returns the client IP address
40
	 *
41
	 * @param \Psr\Http\Message\ServerRequestInterface $request
42
	 * @return string|null IPv4 or IPv6 address or null if invalid
43
	 */
44
	protected function getIPAddress( \Psr\Http\Message\ServerRequestInterface $request ) : ?string
45
	{
46
		$server = $request->getServerParams();
47
		$flags = FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6;
48
49
		if( isset( $server['REMOTE_ADDR'] )
50
			&& ( $ip = filter_var( $server['REMOTE_ADDR'], FILTER_VALIDATE_IP, $flags ) ) !== false
51
		) {
52
			return $ip;
53
		}
54
55
		return null;
56
	}
57
}
58