From 9ad20de616eb414a24394772dd548522fd000da2 Mon Sep 17 00:00:00 2001 From: ben Date: Sun, 22 Jun 2008 21:54:25 +0000 Subject: Introducing the annotation listing functions. git-svn-id: https://code.elgg.org/elgg/trunk@1047 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/annotations.php | 24 ++++++++++++++++++++++++ engine/lib/elgglib.php | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) (limited to 'engine/lib') diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php index 0507cba09..4dcf9b588 100644 --- a/engine/lib/annotations.php +++ b/engine/lib/annotations.php @@ -278,6 +278,30 @@ return get_data($query, "row_to_elggannotation"); } + + /** + * Returns a human-readable list of annotations on a particular entity. + * + * @param int $entity_guid The entity GUID + * @param string $name The name of the kind of annotation + * @param int $limit The number of annotations to display at once + * @param true|false $asc Whether or not the annotations are displayed in ascending order. (Default: true) + * @return string HTML (etc) version of the annotation list + */ + function list_annotations($entity_guid, $name = "", $limit = 25, $asc = true) { + + if ($asc) { + $asc = "asc"; + } else { + $asc = "desc"; + } + $count = count_annotations($entity_guid, "", "", $name); + $offset = (int) get_input("annoff",0); + $annotations = get_annotations($entity_guid, "", "", $name, "", "", $limit, $offset, $asc); + + return elgg_view_annotation_list($annotations, $count, $offset, $limit); + + } /** * Return the sum of a given integer annotation. diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index f1ddb2472..b39f83417 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -381,6 +381,49 @@ return $html; } + + /** + * Returns a view of a list of annotations, plus navigation. It is intended that this function + * be called from other wrapper functions. + * + * @param array $annotations List of annotations + * @param int $count The total number of annotations across all pages + * @param int $offset The current indexing offset + * @param int $limit The number of annotations to display per page + * @return string The list of annotations + */ + + function elgg_view_annotation_list($annotations, $count, $offset, $limit) { + + $count = (int) $count; + $offset = (int) $offset; + $limit = (int) $limit; + + $html = ""; + + $nav = elgg_view('navigation/pagination',array( + + 'baseurl' => $_SERVER['REQUEST_URI'], + 'offset' => $offset, + 'count' => $count, + 'word' => 'annoff', + + )); + + $html .= $nav; + + if (is_array($annotations) && sizeof($annotations) > 0) { + foreach($annotations as $annotation) { + $html .= elgg_view_annotation($annotation, "", false); + } + } + + if ($count) + $html .= $nav; + + return $html; + + } /** * Displays an internal layout for the use of a plugin canvas. -- cgit v1.2.3