Completed
Push — master ( aa2861...321c29 )
by Peter
06:19
created

MultiFinderEvents::handleOne()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2.032

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 4
cts 5
cp 0.8
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 2
crap 2.032
1
<?php
2
3
namespace Maslosoft\Manganel\Helpers;
4
5
use Maslosoft\Mangan\Events\Event;
6
use Maslosoft\Mangan\Helpers\FinderEvents;
7
use Maslosoft\Manganel\Interfaces\ModelsAwareInterface;
8
9
/**
10
 * Finder events helper supporting multiple models.
11
 * Requires finder to implement `ModelsAwareInterface`
12
 *
13
 * @see ModelsAwareInterface
14
 * @author Piotr Maselkowski <pmaselkowski at gmail.com>
15
 */
16
class MultiFinderEvents extends FinderEvents
17
{
18
19 10
	protected function trigger($finder, $event)
20
	{
21 10
		assert($finder instanceof ModelsAwareInterface);
22 10
		foreach ($finder->getModels() as $model)
23
		{
24 10
			Event::trigger($model, $event);
25 10
		}
26 10
	}
27
28 30
	protected function handle($finder, $event)
29
	{
30 30
		assert($finder instanceof ModelsAwareInterface);
31 30
		foreach ($finder->getModels() as $model)
32
		{
33 30
			if (!$this->handleOne($model, $event))
34 30
			{
35
				return false;
36
			}
37 30
		}
38 30
		return true;
39
	}
40
41 30
	protected function handleOne($model, $event)
42
	{
43 30
		if (!Event::hasHandler($model, $event))
44 30
		{
45 30
			return true;
46
		}
47
		return Event::handled($model, $event);
48
	}
49
50
}
51