summaryrefslogtreecommitdiff
path: root/modules/comment
diff options
context:
space:
mode:
Diffstat (limited to 'modules/comment')
-rw-r--r--modules/comment/controllers/comments.php18
-rw-r--r--modules/comment/helpers/comment.php12
2 files changed, 24 insertions, 6 deletions
diff --git a/modules/comment/controllers/comments.php b/modules/comment/controllers/comments.php
index b51e7e4e..34557a83 100644
--- a/modules/comment/controllers/comments.php
+++ b/modules/comment/controllers/comments.php
@@ -22,10 +22,17 @@ class Comments_Controller extends REST_Controller {
/**
* Display comments based on criteria.
- * @see Rest_Controller::_delete($resource)
+ * @see Rest_Controller::_index()
*/
- public function _index($query) {
- throw new Exception("@todo Comment_Controller::_index NOT IMPLEMENTED");
+ public function _index() {
+ $item_id = $this->input->get('item_id');
+
+ if (empty($item_id)) {
+ /* We currently do not support getting all comments from the entire gallery. */
+ header("HTTP/1.1 400 Bad Request");
+ return;
+ }
+ print comment::get_comments($item_id, $this->get_output_format());
}
/**
@@ -51,15 +58,18 @@ class Comments_Controller extends REST_Controller {
/**
* Display an existing comment.
- * @see Rest_Controller::_show($resource, $format)
+ * @todo Set proper Content-Type in a central place (REST_Controller::dispatch?).
+ * @see Rest_Controller::_show($resource, $output_format)
*/
public function _show($comment, $output_format) {
switch ($output_format) {
case "xml":
+ header("Content-Type: application/xml");
print xml::to_xml($comment->as_array(), array("comment"));
break;
case "json":
+ header("Content-Type: application/json");
print json_encode($comment->as_array());
break;
diff --git a/modules/comment/helpers/comment.php b/modules/comment/helpers/comment.php
index e474bf65..e9628a01 100644
--- a/modules/comment/helpers/comment.php
+++ b/modules/comment/helpers/comment.php
@@ -105,17 +105,25 @@ class Comment_Core {
return $block;
}
- static function get_comments($item, $output_format) {
- $comments = ORM::factory('comment')->where('item_id', $item->id)
+ // @todo Set proper Content-Type in a central place (REST_Controller::dispatch?).
+ static function get_comments($item_id, $output_format) {
+ $comments = ORM::factory('comment')->where('item_id', $item_id)
->orderby('datetime', 'asc')
->find_all();
+ if (!$comments->count()) {
+ header("HTTP/1.1 400 Bad Request");
+ return;
+ }
+
switch ($output_format) {
case "xml":
+ header("Content-Type: application/xml");
return xml::to_xml($comments, array("comments", "comment"));
break;
case "json":
+ header("Content-Type: application/json");
foreach ($comments as $comment) {
$data[] = $comment->as_array();
}