Completed
Push — multimodel-dp ( 745c1d...bcd65b )
by Peter
03:53
created

MultiFinderEvents::handleOne()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2.0625

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 3
cts 4
cp 0.75
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 2
crap 2.0625
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 3
	protected function trigger($finder, $event)
20
	{
21 3
		assert($finder instanceof ModelsAwareInterface);
22 3
		foreach ($finder->getModels() as $model)
23
		{
24 3
			Event::trigger($model, $event);
25
		}
26 3
	}
27
28 3
	protected function handle($finder, $event)
29
	{
30 3
		assert($finder instanceof ModelsAwareInterface);
31 3
		foreach ($finder->getModels() as $model)
32
		{
33 3
			if (!$this->handleOne($model, $event))
34
			{
35 3
				return false;
36
			}
37
		}
38 3
		return true;
39
	}
40
41 3
	protected function handleOne($model, $event)
42
	{
43 3
		if (!Event::hasHandler($model, $event))
44
		{
45 3
			return true;
46
		}
47
		return Event::handled($model, $event);
48
	}
49
50
}
51