summaryrefslogtreecommitdiff
path: root/modules/comment/helpers/comment.php
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2008-11-17 00:30:18 +0000
committerBharat Mediratta <bharat@menalto.com>2008-11-17 00:30:18 +0000
commitc91e90406bbc81f8311a1d2707dd141d150f99a4 (patch)
treeddda2c6bacd4b0e0e30f4c8a62d13b2842b864cc /modules/comment/helpers/comment.php
parent0975e702a99dad701f66c606de6597048338f247 (diff)
Add output formats to our REST controllers. Add support for JSON and
XML to the comment controllers as a proof of concept. It's not fully baked; we should examine ways to create helpers to make this process easier.
Diffstat (limited to 'modules/comment/helpers/comment.php')
-rw-r--r--modules/comment/helpers/comment.php36
1 files changed, 25 insertions, 11 deletions
diff --git a/modules/comment/helpers/comment.php b/modules/comment/helpers/comment.php
index b5d57829..0bfd08d0 100644
--- a/modules/comment/helpers/comment.php
+++ b/modules/comment/helpers/comment.php
@@ -96,7 +96,7 @@ class Comment_Core {
$block = new Block;
$block->id = "gComment";
$block->title = _("Comments");
- $block->content = comment::get_comments($theme->item());
+ $block->content = comment::get_comments($theme->item(), "html");
if ($show_add_form) {
$block->content .= comment::get_add_form($theme->item())->render("form.html");
@@ -104,17 +104,31 @@ class Comment_Core {
return $block;
}
- static function get_comments($item) {
- $comments = array("<ul>");
- foreach (ORM::factory('comment')->where('item_id', $item->id)
- ->orderby('datetime', 'asc')
- ->find_all() as $comment) {
- $v = new View("comment.html");
- $v->comment = $comment;
- $comments[] = $v;
+ static function get_comments($item, $output_format) {
+ $comments = ORM::factory('comment')->where('item_id', $item->id)
+ ->orderby('datetime', 'asc')
+ ->find_all();
+
+ switch ($output_format) {
+ case "xml":
+ return xml::to_xml($comments, array("comments", "comment"));
+ break;
+
+ case "json":
+ foreach ($comments as $comment) {
+ $data[] = $comment->as_array();
+ }
+ return json_encode($data);
+
+ default:
+ $html = array("<ul>");
+ foreach ($comments as $comment) {
+ $v = new View("comment.html");
+ $v->comment = $comment;
+ $html[] = $v;
+ }
+ return "<ul>\n" . implode("\n", $html) . "</ul>\n";
}
- $comments[] = "</ul>";
- return implode("\n", $comments);
}
/**