2022-01-17 00:18:50 +01:00
|
|
|
<?php
|
|
|
|
class hook
|
|
|
|
{
|
|
|
|
public $hookName = "";
|
|
|
|
public $active = true;
|
|
|
|
public $initialized = false;
|
|
|
|
protected $devicelist;
|
|
|
|
|
|
|
|
// list of devices we are listening to
|
|
|
|
function __construct()
|
|
|
|
{
|
|
|
|
logger(DEBUG, _("Initializing hook: ") . $this->hookName);
|
|
|
|
$this->installHooks();
|
2022-01-23 09:46:06 +01:00
|
|
|
if (method_exists($this, "init"))
|
|
|
|
{
|
|
|
|
$this->init();
|
|
|
|
}
|
2022-01-17 00:18:50 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function installHooks()
|
|
|
|
{
|
|
|
|
global $indexDevices;
|
|
|
|
$result = true;
|
|
|
|
// assigne the function to the sensors devices
|
|
|
|
if ($this->active === true)
|
|
|
|
{
|
|
|
|
foreach ($this->devicelist as $ieeeAddress => $property2change)
|
|
|
|
{
|
|
|
|
logger(DEBUG, _("Device: ") . $ieeeAddress);
|
|
|
|
if ($property2change[1] === false)
|
|
|
|
{
|
|
|
|
logger(DEBUG, _("Trying to store callback"));
|
|
|
|
if (isset($indexDevices[$ieeeAddress]))
|
|
|
|
{
|
|
|
|
$property = $property2change[0];
|
|
|
|
$indexDevices[$ieeeAddress]->$property["functions"][] = array($this,"callback");
|
|
|
|
$property2change[1] = true;
|
|
|
|
logger(DEBUG, sprintf(_("Property '%s' is initialized with callback"), $property2change[0]));
|
|
|
|
}else
|
|
|
|
{
|
|
|
|
logger(WARNING, sprintf(_("Hook %s can not initialize Property '%s' of device %s"), $this->hookName, $property2change[0], $ieeeAddress));
|
|
|
|
$result = false;
|
|
|
|
}
|
|
|
|
}else
|
|
|
|
{
|
|
|
|
logger(DEBUG, _("Callback already installed"));
|
|
|
|
}
|
|
|
|
}
|
2022-01-17 21:01:11 +01:00
|
|
|
//echo "result => "; var_dump($result);
|
2022-01-17 00:18:50 +01:00
|
|
|
if ($result === true)
|
|
|
|
{
|
|
|
|
$this->initialized = true;
|
|
|
|
logger(DEBUG, $this->hookName . (" initialized"));
|
|
|
|
//var_dump($this);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
?>
|