Completed
Push — master ( ab8abe...0360f2 )
by Peter
05:43
created

MultiFinderEvents::handleOne()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3.0416

Importance

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