Passed
Push — master ( bee4ae...fc5262 )
by Andreas
16:28
created

watcher::handle_event()   A

Complexity

Conditions 5
Paths 9

Size

Total Lines 24
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 5.1647

Importance

Changes 0
Metric Value
cc 5
eloc 16
nc 9
nop 2
dl 0
loc 24
ccs 13
cts 16
cp 0.8125
crap 5.1647
rs 9.4222
c 0
b 0
f 0
1
<?php
2
/**
3
 * @package midcom.events
4
 * @author CONTENT CONTROL http://www.contentcontrol-berlin.de/
5
 * @copyright CONTENT CONTROL http://www.contentcontrol-berlin.de/
6
 * @license http://www.gnu.org/licenses/gpl.html GNU General Public License
7
 */
8
9
namespace midcom\events;
10
11
/**
12
 * midcom DBA listener
13
 *
14
 * @package midcom.events
15
 */
16
class watcher
17
{
18
    private $classes = [];
19
20
    private $component;
21
22
    private $operations = [
23
        dbaevent::CREATE => \MIDCOM_OPERATION_DBA_CREATE,
24
        dbaevent::UPDATE => \MIDCOM_OPERATION_DBA_UPDATE,
25
        dbaevent::DELETE => \MIDCOM_OPERATION_DBA_DELETE,
26
        dbaevent::IMPORT => \MIDCOM_OPERATION_DBA_IMPORT,
27
    ];
28
29
    public function __construct($component, array $classes = [])
30
    {
31
        $this->component = $component;
32
        $this->classes = $classes;
33
    }
34
35 288
    public function handle_event(dbaevent $event, $name)
36
    {
37 288
        $object = $event->get_object();
38 288
        $found = empty($this->classes);
39 288
        foreach ($this->classes as $classname) {
40 288
            if (is_a($object, $classname)) {
41 67
                $found = true;
42 67
                break;
43
            }
44
        }
45 288
        if (!$found) {
46 288
            return;
47
        }
48
49
        try {
50 184
            $interface = \midcom::get()->componentloader->get_interface_class($this->component);
51
        } catch (\midcom_error $e) {
52
            debug_add("Failed to load the component {$this->component}: " . $e->getMessage(), MIDCOM_LOG_INFO);
53
            return;
54
        }
55 184
        $operation = $this->operations[$name];
56 184
        debug_add("Calling [{$this->component}]_interface->trigger_watch({$operation}, \$object)");
57
58 184
        $interface->trigger_watch($operation, $object);
59 184
    }
60
}
61