aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/classes/ElggRiverItem.php8
-rw-r--r--views/json/page/components/list.php14
-rw-r--r--views/json/page/default.php7
-rw-r--r--views/json/river/item.php19
-rw-r--r--views/json/river/item/list.php45
-rw-r--r--views/json/search/entity_list.php14
6 files changed, 41 insertions, 66 deletions
diff --git a/engine/classes/ElggRiverItem.php b/engine/classes/ElggRiverItem.php
index cdb22239d..fcc8f9c85 100644
--- a/engine/classes/ElggRiverItem.php
+++ b/engine/classes/ElggRiverItem.php
@@ -28,8 +28,14 @@ class ElggRiverItem
// throw exception
}
+ // the casting is to support typed serialization like json
+ $int_types = array('id', 'subject_guid', 'object_guid', 'annotation_id', 'access_id', 'posted');
foreach ($object as $key => $value) {
- $this->$key = $value;
+ if (in_array($key, $int_types)) {
+ $this->$key = (int)$value;
+ } else {
+ $this->$key = $value;
+ }
}
}
diff --git a/views/json/page/components/list.php b/views/json/page/components/list.php
new file mode 100644
index 000000000..5de4f1f59
--- /dev/null
+++ b/views/json/page/components/list.php
@@ -0,0 +1,14 @@
+<?php
+/**
+ * JSON list view
+ *
+ * @uses $vars['items']
+ */
+
+$items = $vars['items'];
+
+if (is_array($items) && sizeof($items) > 0) {
+ foreach ($items as $item) {
+ elgg_view_list_item($item, $vars);
+ }
+} \ No newline at end of file
diff --git a/views/json/page/default.php b/views/json/page/default.php
index d1f86c8a7..2d0403e11 100644
--- a/views/json/page/default.php
+++ b/views/json/page/default.php
@@ -7,12 +7,7 @@
*
*/
-if(stristr($_SERVER["HTTP_ACCEPT"],"application/json")) {
- header("Content-Type: application/json");
-} else {
- header("Content-Type: application/javascript");
-}
-// echo $vars['body'];
+header("Content-Type: application/json");
global $jsonexport;
echo json_encode($jsonexport); \ No newline at end of file
diff --git a/views/json/river/item.php b/views/json/river/item.php
new file mode 100644
index 000000000..64677817f
--- /dev/null
+++ b/views/json/river/item.php
@@ -0,0 +1,19 @@
+<?php
+/**
+ * JSON river item view
+ *
+ * @uses $vars['item']
+ */
+
+global $jsonexport;
+
+if (!isset($jsonexport['activity'])) {
+ $jsonexport['activity'] = array();
+}
+
+$item = $vars['item'];
+if (elgg_view_exists($item->view, 'default')) {
+ $item->string = elgg_view('river/elements/summary', array('item' => $item), FALSE, FALSE, 'default');
+}
+
+$jsonexport['activity'][] = $vars['item'];
diff --git a/views/json/river/item/list.php b/views/json/river/item/list.php
deleted file mode 100644
index c79cd1042..000000000
--- a/views/json/river/item/list.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * JSON river view
- *
- * @package Elgg
- * @subpackage Core
- */
-global $jsonexport;
-
-$json_items = array();
-
-if (isset($vars['items']) && is_array($vars['items'])) {
- $i = 0;
-
- if (!empty($vars['items'])) {
- foreach($vars['items'] as $item) {
-
- $json_entry = array(
- 'subject' => NULL,
- 'object' => NULL,
- 'type' => NULL,
- 'subtype' => NULL,
- 'action_type' => NULL,
- 'view' => NULL,
- 'annotation' => NULL,
- 'timestamp' => NULL,
- 'string' => NULL
- );
-
- if (elgg_view_exists($item->view, 'default')) {
- $json_entry['string'] = elgg_view($item->view, array('item' => $item), FALSE, FALSE, 'default');
- $json_entry['timestamp'] = (int)$item->posted;
- }
-
- $json_items[] = $json_entry;
-
- $i++;
- if ($i >= $vars['limit']) {
- break;
- }
- }
- }
-}
-
-$jsonexport['activity'] = $json_items;
diff --git a/views/json/search/entity_list.php b/views/json/search/entity_list.php
deleted file mode 100644
index c778bf5df..000000000
--- a/views/json/search/entity_list.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Elgg default layout
- *
- * @package Elgg
- * @subpackage Core
- */
-
-$entities = $vars['entities'];
-if (is_array($entities) && sizeof($entities) > 0) {
- foreach($entities as $entity) {
- echo elgg_view_entity($entity);
- }
-}