Skip to content

Commit

Permalink
Add a "convert_ids" parameter to Item_Model::as_restful_array(), which
Browse files Browse the repository at this point in the history
we can turn on with a query parameter.
  • Loading branch information
bharat committed Jun 8, 2010
1 parent 5151f0b commit 98fce83
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 8 deletions.
20 changes: 12 additions & 8 deletions modules/gallery/models/item.php
Original file line number Diff line number Diff line change
Expand Up @@ -924,17 +924,21 @@ public function read_only(Validation $v, $field) {
/**
* Same as ORM::as_array() but convert id fields into their RESTful form.
*/
public function as_restful_array() {
public function as_restful_array($convert_ids=true) {
// Convert item ids to rest URLs for consistency
$data = $this->as_array();
if ($tmp = $this->parent()) {
$data["parent"] = rest::url("item", $tmp);
}
unset($data["parent_id"]);
if ($tmp = $this->album_cover()) {
$data["album_cover"] = rest::url("item", $tmp);

if ($convert_ids) {
if ($tmp = $this->parent()) {
$data["parent"] = rest::url("item", $tmp);
}
unset($data["parent_id"]);

if ($tmp = $this->album_cover()) {
$data["album_cover"] = rest::url("item", $tmp);
}
unset($data["album_cover_item_id"]);
}
unset($data["album_cover_item_id"]);

if (access::can("view_full", $this) && $this->is_photo()) {
$data["file_url"] = $this->file_url(true);
Expand Down
12 changes: 12 additions & 0 deletions modules/gallery/tests/Item_Model_Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,18 @@ public function as_restful_array_test() {
$this->assert_true(!array_key_exists("album_cover_item_id", $result));
}

public function as_restful_array_with_ids_test() {
$album = test::random_album();
$photo = test::random_photo($album);
$album->reload();

$result = $album->as_restful_array(false);
$this->assert_same(item::root()->id, $result["parent_id"]);
$this->assert_same($photo->id, $result["album_cover_item_id"]);
$this->assert_true(!array_key_exists("parent", $result));
$this->assert_true(!array_key_exists("album_cover_item", $result));
}

public function first_photo_becomes_album_cover() {
$album = test::random_album();
$photo = test::random_photo($album);
Expand Down

0 comments on commit 98fce83

Please sign in to comment.