Skip to content

Commit

Permalink
Change the API for getting to the original state of an ORM.
Browse files Browse the repository at this point in the history
  Old API:  $obj->original("field_name")
  New API:  $obj->original()->field_name

This allows us to revert the varous xxx_updated events back to passing
an original ORM as well as the the updated one.  This makes for a
cleaner event API.

  Old API:  comment_updated($comment) { $comment->original("field_name") }
  Old API:  comment_updated($old, $new) { $old->field_name }
  • Loading branch information
bharat committed Aug 2, 2009
1 parent f034c6c commit 7ad0808
Show file tree
Hide file tree
Showing 9 changed files with 23 additions and 23 deletions.
6 changes: 3 additions & 3 deletions modules/akismet/helpers/akismet_event.php
Expand Up @@ -40,14 +40,14 @@ static function comment_created($comment) {
$comment->save();
}

static function comment_updated($comment) {
static function comment_updated($original, $new) {
if (!module::get_var("akismet", "api_key")) {
return;
}

if ($comment->original("state") != "spam" && $comment->state == "spam") {
if ($original->state != "spam" && $new->state == "spam") {
akismet::submit_spam($new);
} else if ($comment->original("state") == "spam" && $comment->state != "spam") {
} else if ($original->state == "spam" && $new->state != "spam") {
akismet::submit_ham($new);
}
}
Expand Down
8 changes: 4 additions & 4 deletions modules/comment/models/comment.php
Expand Up @@ -64,17 +64,17 @@ public function save() {
$created = true;
}
}
$visible_change = $this->original()->state == "published" || $this->state == "published";
parent::save();

if (isset($created)) {
module::event("comment_created", $this);
} else {
module::event("comment_updated", $this);
module::event("comment_updated", $this->original(), $this);
}

// We only notify on the related items if we're making a visible change, which means moving in
// or out of a published state
if ($this->original("state") == "published" || $this->state == "published") {
// We only notify on the related items if we're making a visible change.
if ($visible_change) {
module::event("item_related_update", $this->item());
}

Expand Down
12 changes: 6 additions & 6 deletions modules/gallery/libraries/MY_ORM.php
Expand Up @@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class ORM extends ORM_Core {
// Track the original value of this ORM instance so that we can look it up in ORM::original()
// Track the original value of this ORM so that we can look it up in ORM::original()
protected $original = null;

public function open_paren() {
Expand All @@ -34,28 +34,28 @@ public function close_paren() {
public function save() {
model_cache::clear();
$result = parent::save();
$this->original = $this->object;
$this->original = clone $this;
return $result;
}

public function __set($column, $value) {
if (!isset($this->original)) {
$this->original = $this->object;
$this->original = clone $this;
}

return parent::__set($column, $value);
}

public function __unset($column) {
if (!isset($this->original)) {
$this->original = $this->object;
$this->original = clone $this;
}

return parent::__unset($column);
}

public function original($column) {
return $this->original[$column];
public function original() {
return $this->original;
}
}

Expand Down
2 changes: 1 addition & 1 deletion modules/gallery/models/item.php
Expand Up @@ -365,7 +365,7 @@ public function save() {
}
parent::save();
if (isset($send_event)) {
module::event("item_updated", $this);
module::event("item_updated", $this->original(), $this);
}
return $this;
}
Expand Down
2 changes: 1 addition & 1 deletion modules/gallery/tests/Item_Model_Test.php
Expand Up @@ -147,7 +147,7 @@ public function save_original_values_test() {
$item->save();
$item->title = "NEW_VALUE";

$this->assert_same("ORIGINAL_VALUE", $item->original("title"));
$this->assert_same("ORIGINAL_VALUE", $item->original()->title);
$this->assert_same("NEW_VALUE", $item->title);
}
}
8 changes: 4 additions & 4 deletions modules/notification/helpers/notification_event.php
Expand Up @@ -18,8 +18,8 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class notification_event_Core {
static function item_updated($item) {
notification::send_item_updated($item);
static function item_updated($original, $new) {
notification::send_item_updated($new);
}

static function item_created($item) {
Expand All @@ -40,8 +40,8 @@ static function comment_created($comment) {
}
}

static function comment_updated($item) {
if ($item->state == "published" && $item->original("state") != "published") {
static function comment_updated($original, $new) {
if ($new->state == "published" && $original->state != "published") {
notification::send_comment_published($new);
}
}
Expand Down
4 changes: 2 additions & 2 deletions modules/search/helpers/search_event.php
Expand Up @@ -22,8 +22,8 @@ static function item_created($item) {
search::update($item);
}

static function item_updated($item) {
search::update($item);
static function item_updated($original, $new) {
search::update($new);
}

static function item_deleted($item) {
Expand Down
2 changes: 1 addition & 1 deletion modules/user/models/group.php
Expand Up @@ -41,7 +41,7 @@ public function save() {
if (isset($created)) {
module::event("group_created", $this);
} else {
module::event("group_updated", $this);
module::event("group_updated", $this->original(), $this);
}
return $this;
}
Expand Down
2 changes: 1 addition & 1 deletion modules/user/models/user.php
Expand Up @@ -68,7 +68,7 @@ public function save() {
if (isset($created)) {
module::event("user_created", $this);
} else {
module::event("user_updated", $this);
module::event("user_updated", $this->original(), $this);
}
return $this;
}
Expand Down

0 comments on commit 7ad0808

Please sign in to comment.