summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/gallery/libraries/MY_ORM.php20
-rw-r--r--modules/gallery/tests/Item_Model_Test.php1
2 files changed, 19 insertions, 2 deletions
diff --git a/modules/gallery/libraries/MY_ORM.php b/modules/gallery/libraries/MY_ORM.php
index 56c776aa..95fa9006 100644
--- a/modules/gallery/libraries/MY_ORM.php
+++ b/modules/gallery/libraries/MY_ORM.php
@@ -19,12 +19,11 @@
*/
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;
+ protected $original;
public function save() {
model_cache::clear();
$result = parent::save();
- $this->original = clone $this;
return $result;
}
@@ -48,7 +47,24 @@ class ORM extends ORM_Core {
return parent::__unset($column);
}
+ public function reload($original_only=false) {
+ if (!$original_only) {
+ parent::reload();
+ }
+ $this->original = clone $this;
+ return $this;
+ }
+
+ public function clear() {
+ parent::clear();
+ $this->original = clone $this;
+ return $this;
+ }
+
public function original() {
+ if (!isset($this->original)) {
+ $this->original = clone $this;
+ }
return $this->original;
}
}
diff --git a/modules/gallery/tests/Item_Model_Test.php b/modules/gallery/tests/Item_Model_Test.php
index bf5fca1a..c0ac4436 100644
--- a/modules/gallery/tests/Item_Model_Test.php
+++ b/modules/gallery/tests/Item_Model_Test.php
@@ -166,6 +166,7 @@ class Item_Model_Test extends Unit_Test_Case {
$item = self::_create_random_item();
$item->title = "ORIGINAL_VALUE";
$item->save();
+ $item->reload(false);
$item->title = "NEW_VALUE";
$this->assert_same("ORIGINAL_VALUE", $item->original()->title);