/
WebhookHelper.php
78 lines (73 loc) · 2.28 KB
/
WebhookHelper.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
/**
* @addtogroup generic
* @{
*
* @package generic
* @file WebhookHelper.php
* @author Michael Tröger <micha@nall-chan.net>
* @copyright 2018 Michael Tröger
* @license https://creativecommons.org/licenses/by-nc-sa/4.0/ CC BY-NC-SA 4.0
* @version 5.0
*/
/**
* Ein Trait um Webhooks zu erzeugen und zu löschen.
*/
trait WebhookHelper
{
/**
* Erstellt einen WebHook, wenn nicht schon vorhanden.
*
* @access protected
* @param string $WebHook URI des WebHook.
*/
protected function RegisterHook($WebHook)
{
$ids = IPS_GetInstanceListByModuleID('{015A6EB8-D6E5-4B93-B496-0D3F77AE9FE1}');
if (count($ids) > 0) {
$hooks = json_decode(IPS_GetProperty($ids[0], 'Hooks'), true);
$found = false;
foreach ($hooks as $index => $hook) {
if ($hook['Hook'] == $WebHook) {
if ($hook['TargetID'] == $this->InstanceID) {
return;
}
$hooks[$index]['TargetID'] = $this->InstanceID;
$found = true;
}
}
if (!$found) {
$hooks[] = ['Hook' => $WebHook, 'TargetID' => $this->InstanceID];
}
$this->SendDebug('hook', $hooks, 0);
IPS_SetProperty($ids[0], 'Hooks', json_encode($hooks));
IPS_ApplyChanges($ids[0]);
}
}
/**
* Löscht einen WebHook, wenn vorhanden.
*
* @access protected
* @param string $WebHook URI des WebHook.
*/
protected function UnregisterHook($WebHook)
{
$ids = IPS_GetInstanceListByModuleID('{015A6EB8-D6E5-4B93-B496-0D3F77AE9FE1}');
if (sizeof($ids) > 0) {
$hooks = json_decode(IPS_GetProperty($ids[0], 'Hooks'), true);
$found = false;
foreach ($hooks as $index => $hook) {
if ($hook['Hook'] == $WebHook) {
$found = $index;
break;
}
}
if ($found !== false) {
array_splice($hooks, $index, 1);
IPS_SetProperty($ids[0], 'Hooks', json_encode($hooks));
IPS_ApplyChanges($ids[0]);
}
}
}
}
/* @} */