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

MultiFinderEvents   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 93.33%

Importance

Changes 0
Metric Value
wmc 7
lcom 0
cbo 3
dl 0
loc 35
ccs 14
cts 15
cp 0.9333
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A trigger() 0 8 2
A handle() 0 12 3
A handleOne() 0 8 2
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