aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/lib/annotations.php88
1 files changed, 79 insertions, 9 deletions
diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php
index 6fdb69dc0..31c83fb8c 100644
--- a/engine/lib/annotations.php
+++ b/engine/lib/annotations.php
@@ -412,6 +412,11 @@ $value = "", $owner_guid = 0, $limit = 10, $offset = 0, $order_by = "asc", $time
* Returns entities based upon annotations. Accepts the same values as
* elgg_get_entities_from_metadata() but uses the annotations table.
*
+ * NB: Entity creation time is selected as max_time. To sort based upon
+ * this, pass 'order_by' => 'maxtime asc' || 'maxtime desc'
+ *
+ * time_created in this case will be the time the annotation was created.
+ *
* @see elgg_get_entities
* @see elgg_get_entities_from_metadata
* @param array $options Array in format:
@@ -546,18 +551,83 @@ $timelower = 0, $timeupper = 0) {
* @return string Formatted entity list
*/
function list_entities_from_annotations($entity_type = "", $entity_subtype = "", $name = "", $value = "", $limit = 10, $owner_guid = 0, $group_guid = 0, $asc = false, $fullview = true, $viewtypetoggle = false) {
+ elgg_deprecated_notice('list_entities_from_annotations is deprecated by elgg_list_entities_from_annotations', 1.8);
+
+ if ($entity_type) {
+ $options['types'] = $entity_type;
+ }
+
+ if ($entity_subtype) {
+ $options['subtypes'] = $entity_subtype;
+ }
+
+ if ($name) {
+ $options['annotation_names'] = $name;
+ }
+
+ if ($value) {
+ $options['annotation_values'] = $value;
+ }
+
+ if ($limit) {
+ $options['limit'] = $limit;
+ }
+
+ if ($owner_guid) {
+ $options['annotation_owner_guid'] = $owner_guid;
+ }
+
+ if ($group_guid) {
+ $options['container_guid'] = $group_guid;
+ }
+
if ($asc) {
- $asc = "asc";
- } else {
- $asc = "desc";
+ $options['order_by'] = 'maxtime desc';
}
- $count = get_entities_from_annotations($entity_type, $entity_subtype, $name,
- $value, $owner_guid, $group_guid, null, null, $asc, true);
- $offset = (int) get_input("offset",0);
- $entities = get_entities_from_annotations($entity_type, $entity_subtype, $name,
- $value, $owner_guid, $group_guid, $limit, $offset, $asc);
- return elgg_view_entity_list($entities, $count, $offset, $limit, $fullview, $viewtypetoggle);
+ if ($offset = sanitise_int(get_input('offset', null))) {
+ $options['offset'] = $offset;
+ }
+
+ $options['full_view'] = $fullview;
+ $options['view_type_toggle'] = $viewtypetoggle;
+ $options['pagination'] = $pagination;
+
+ return elgg_list_entities_from_annotations($options);
+}
+
+/**
+ * Returns a viewable list of entities from annotations.
+ *
+ * @param array $options Any elgg_get_entity_from_annotation() options plus:
+ *
+ * offset => INT Start this many from the first result
+ *
+ * limit => INT Limit results to this
+ *
+ * full_view => BOOL Display full view entities
+ *
+ * view_type_toggle => BOOL Display gallery / list switch
+ *
+ * pagination => BOOL Display pagination links
+ *
+ * @return str
+ */
+function elgg_list_entities_from_annotations($options = array()) {
+ $defaults = array(
+ 'offset' => (int) max(get_input('offset', 0), 0),
+ 'limit' => (int) max(get_input('limit', 10), 0),
+ 'full_view' => TRUE,
+ 'view_type_toggle' => FALSE,
+ 'pagination' => TRUE
+ );
+ $options = array_merge($defaults, $options);
+
+ $count = elgg_get_entities_from_annotations(array_merge(array('count' => TRUE), $options));
+ $entities = elgg_get_entities_from_annotations($options);
+
+ return elgg_view_entity_list($entities, $count, $options['offset'],
+ $options['limit'], $options['full_view'], $options['view_type_toggle'], $options['pagination']);
}
/**