From 5dc5e8361a13654286bf4c270d4524009dbe2081 Mon Sep 17 00:00:00 2001 From: xfra35 Date: Mon, 8 Feb 2016 14:38:20 +0100 Subject: [PATCH] Added onget/onset hooks --- db/cursor.php | 18 ++++++++++++++++++ db/sql/mapper.php | 14 ++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/db/cursor.php b/db/cursor.php index baef9531..4d6be424 100644 --- a/db/cursor.php +++ b/db/cursor.php @@ -373,6 +373,24 @@ function onerase($func) { return $this->aftererase($func); } + /** + * Define onget trigger + * @return callback + * @param $func callback + **/ + function onget($func) { + return $this->trigger['onget']=$func; + } + + /** + * Define onset trigger + * @return callback + * @param $func callback + **/ + function onset($func) { + return $this->trigger['onset']=$func; + } + /** * Reset cursor * @return NULL diff --git a/db/sql/mapper.php b/db/sql/mapper.php index ca6f8493..919d5e82 100644 --- a/db/sql/mapper.php +++ b/db/sql/mapper.php @@ -93,6 +93,8 @@ function set($key,$val) { if ($this->fields[$key]['value']!==$val || $this->fields[$key]['default']!==$val && is_null($val)) $this->fields[$key]['changed']=TRUE; + if (isset($this->trigger['onset'])) + \Base::instance()->call($this->trigger['onset'],array($key,&$val,$this)); return $this->fields[$key]['value']=$val; } // adjust result on existing expressions @@ -112,11 +114,15 @@ function set($key,$val) { function &get($key) { if ($key=='_id') return $this->_id; - elseif (array_key_exists($key,$this->fields)) - return $this->fields[$key]['value']; + if (array_key_exists($key,$this->fields)) + $val=$this->fields[$key]['value']; elseif (array_key_exists($key,$this->adhoc)) - return $this->adhoc[$key]['value']; - user_error(sprintf(self::E_Field,$key),E_USER_ERROR); + $val=$this->adhoc[$key]['value']; + else + user_error(sprintf(self::E_Field,$key),E_USER_ERROR); + if (isset($this->trigger['onget'])) + \Base::instance()->call($this->trigger['onget'],array($key,&$val,$this)); + return $val; } /**