summaryrefslogtreecommitdiff
path: root/modules/gallery/libraries/MY_ORM.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gallery/libraries/MY_ORM.php')
-rw-r--r--modules/gallery/libraries/MY_ORM.php33
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;
}
}