NetteRequestDetector::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SixtyEightPublishers\i18n\Detector;
6
7
use Nette\SmartObject;
8
use Nette\Http\IRequest;
9
use SixtyEightPublishers\i18n\Profile\ProfileInterface;
10
use SixtyEightPublishers\i18n\ProfileContainer\ProfileContainerInterface;
11
12
final class NetteRequestDetector implements DetectorInterface
13
{
14
	use SmartObject;
15
16
	/** @var \Nette\Http\IRequest  */
17
	private $request;
18
19
	/**
20
	 * @param \Nette\Http\IRequest $request
21
	 */
22
	public function __construct(IRequest $request)
23
	{
24
		$this->request = $request;
25
	}
26
27
	/**
28
	 * {@inheritdoc}
29
	 */
30
	public function detect(ProfileContainerInterface $profileContainer): ?ProfileInterface
31
	{
32
		$url = $this->request->getUrl()->getAbsoluteUrl();
33
34
		foreach ($profileContainer->toArray() as $profile) {
35
			if (FALSE === $profile->isEnabled()) {
36
				continue;
37
			}
38
39
			foreach ($profile->getDomains() as $domain) {
40
				$matches = NULL;
41
				if ($domain === $url || (FALSE !== preg_match('#' . $domain . '#', $url, $matches) && !empty($matches))) {
42
					return $profile;
43
				}
44
			}
45
		}
46
47
		return NULL;
48
	}
49
}
50