diff options
Diffstat (limited to 'modules/gallery/libraries/MY_ORM.php')
-rw-r--r-- | modules/gallery/libraries/MY_ORM.php | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/modules/gallery/libraries/MY_ORM.php b/modules/gallery/libraries/MY_ORM.php index 2bd9b4eb..2c9ad1d7 100644 --- a/modules/gallery/libraries/MY_ORM.php +++ b/modules/gallery/libraries/MY_ORM.php @@ -18,6 +18,9 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class ORM extends ORM_Core { + // Track the original value of this ORM so that we can look it up in ORM::original() + protected $original = null; + public function open_paren() { $this->db->open_paren(); return $this; @@ -29,8 +32,34 @@ class ORM extends ORM_Core { } public function save() { - model_cache::clear($this->object_name, $this->{$this->primary_key}, $this->primary_key); - return parent::save(); + model_cache::clear(); + $result = parent::save(); + $this->original = clone $this; + return $result; + } + + public function __set($column, $value) { + if (!isset($this->original)) { + $this->original = clone $this; + } + + if ($value instanceof SafeString) { + $value = $value->unescaped(); + } + + return parent::__set($column, $value); + } + + public function __unset($column) { + if (!isset($this->original)) { + $this->original = clone $this; + } + + return parent::__unset($column); + } + + public function original() { + return $this->original; } } |