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

MultiFinderEvents::handle()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3.0175

Importance

Changes 0
Metric Value
dl 0
loc 12
ccs 7
cts 8
cp 0.875
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 6
nc 3
nop 2
crap 3.0175
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