<?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();
		if (method_exists($this, "init"))
		{
			$this->init();
		}
	}

	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, __FILE__ . ":" . __LINE__);
				if ($property2change[1] === false)
				{
					logger(DEBUG, _("Trying to store callback"), __FILE__ . ":" . __LINE__);
					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]), __FILE__ . ":" . __LINE__);
					}else
					{
						logger(WARNING, sprintf(_("Hook %s can not initialize Property '%s' of device %s"), $this->hookName, $property2change[0], $ieeeAddress), __FILE__ . ":" . __LINE__);
						$result = false;
					}
				}else
				{
					logger(DEBUG, _("Callback already installed"), __FILE__ . ":" . __LINE__);
				}
			}
			//echo "result => "; var_dump($result);
			if ($result === true)
			{
				$this->initialized = true;
				logger(DEBUG, $this->hookName . _(" initialized"), __FILE__ . ":" . __LINE__);
				//var_dump($this);
			}
		}
		return $result;
	}
}

?>