From bdb5d2b95792782ebc379e3348cad1812c1980b4 Mon Sep 17 00:00:00 2001 From: cash Date: Wed, 9 Mar 2011 03:07:40 +0000 Subject: Fixes #3058 pulls likes out as a plugin git-svn-id: http://code.elgg.org/elgg/trunk@8639 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/likes/start.php | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 mod/likes/start.php (limited to 'mod/likes/start.php') diff --git a/mod/likes/start.php b/mod/likes/start.php new file mode 100644 index 000000000..97823087a --- /dev/null +++ b/mod/likes/start.php @@ -0,0 +1,104 @@ + 'likes', + 'text' => elgg_view('likes/display', array('entity' => $entity)), + 'href' => false, + 'priority' => 1000, + ); + $return[] = ElggMenuItem::factory($options); + + return $return; +} + +/** + * Add a like button to river actions + */ +function likes_river_menu_setup($hook, $type, $return, $params) { + if (elgg_is_logged_in()) { + $item = $params['item']; + $object = $item->getObjectEntity(); + if (!elgg_in_context('widgets') && $item->annotation_id == 0) { + if ($object->canAnnotate(0, 'likes')) { + if (!elgg_annotation_exists($object->getGUID(), 'likes')) { + // user has not liked this yet + $url = "action/likes/add?guid={$object->getGUID()}"; + $options = array( + 'name' => 'like', + 'href' => $url, + 'text' => elgg_echo('likes:likethis'), + 'is_action' => true, + 'priority' => 100, + ); + } else { + // user has liked this + $likes = elgg_get_annotations(array( + 'guid' => $guid, + 'annotation_name' => 'likes', + 'owner_guid' => elgg_get_logged_in_user_guid() + )); + $url = elgg_get_site_url() . "action/likes/delete?annotation_id={$likes[0]->id}"; + $options = array( + 'name' => 'like', + 'href' => $url, + 'text' => elgg_echo('likes:remove'), + 'is_action' => true, + 'priority' => 100, + ); + } + $return[] = ElggMenuItem::factory($options); + } + } + } + + return $return; +} + +/** + * Count how many people have liked an entity. + * + * @param ElggEntity $entity + * + * @return int Number of likes + */ +function likes_count($entity) { + $type = $entity->getType(); + $params = array('entity' => $entity); + $number = elgg_trigger_plugin_hook('likes:count', $type, $params, false); + + if ($number) { + return $number; + } else { + return $entity->countAnnotations('likes'); + } +} -- cgit v1.2.3