diff options
Diffstat (limited to 'mod/likes')
-rw-r--r-- | mod/likes/actions/likes/add.php | 2 | ||||
-rw-r--r-- | mod/likes/actions/likes/delete.php | 26 | ||||
-rw-r--r-- | mod/likes/manifest.xml | 1 | ||||
-rw-r--r-- | mod/likes/start.php | 37 | ||||
-rw-r--r-- | mod/likes/views/default/likes/display.php | 3 |
5 files changed, 21 insertions, 48 deletions
diff --git a/mod/likes/actions/likes/add.php b/mod/likes/actions/likes/add.php index f56493864..7ccb19d92 100644 --- a/mod/likes/actions/likes/add.php +++ b/mod/likes/actions/likes/add.php @@ -18,7 +18,7 @@ if (!$entity) { forward(REFERER); } -// cannot like your own stuff +// limit likes through a plugin hook (to prevent liking your own content for example) if (!$entity->canAnnotate(0, 'likes')) { // plugins should register the error message to explain why liking isn't allowed forward(REFERER); diff --git a/mod/likes/actions/likes/delete.php b/mod/likes/actions/likes/delete.php index 867d5dfef..db3036bb4 100644 --- a/mod/likes/actions/likes/delete.php +++ b/mod/likes/actions/likes/delete.php @@ -4,26 +4,18 @@ * */ -// Ensure we're logged in -if (!elgg_is_logged_in()) { - forward(); -} - -// Make sure we can get the comment in question -$annotation_id = (int) get_input('annotation_id'); -if ($likes = elgg_get_annotation_from_id($annotation_id)) { - - $entity = get_entity($likes->entity_guid); - - if ($likes->canEdit()) { - $likes->delete(); +$likes = elgg_get_annotations(array( + 'guid' => (int) get_input('guid'), + 'annotation_owner_guid' => elgg_get_logged_in_user_guid(), + 'annotation_name' => 'likes', +)); +if ($likes) { + if ($likes[0]->canEdit()) { + $likes[0]->delete(); system_message(elgg_echo("likes:deleted")); forward(REFERER); } - -} else { - $url = ""; } register_error(elgg_echo("likes:notdeleted")); -forward(REFERER);
\ No newline at end of file +forward(REFERER); diff --git a/mod/likes/manifest.xml b/mod/likes/manifest.xml index abd3f7c76..f63c643a6 100644 --- a/mod/likes/manifest.xml +++ b/mod/likes/manifest.xml @@ -4,6 +4,7 @@ <author>Core developers</author> <version>1.8</version> <category>bundled</category> + <category>social</category> <description>Enables users to like content on the site.</description> <website>http://www.elgg.org/</website> <copyright>See COPYRIGHT.txt</copyright> diff --git a/mod/likes/start.php b/mod/likes/start.php index 435e7a3ab..b2aa83260 100644 --- a/mod/likes/start.php +++ b/mod/likes/start.php @@ -1,7 +1,7 @@ <?php /** * Likes plugin - * + * */ elgg_register_event_handler('init', 'system', 'likes_init'); @@ -50,32 +50,13 @@ function likes_river_menu_setup($hook, $type, $return, $params) { $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_view('likes/display', array('entity' => $object)), - 'is_action' => true, - 'priority' => 100, - ); - } else { - // user has liked this - $likes = elgg_get_annotations(array( - 'guid' => $object->getGUID(), - 'annotation_name' => 'likes', - 'annotation_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_view('likes/display', array('entity' => $object)), - 'is_action' => true, - 'priority' => 100, - ); - } + $options = array( + 'name' => 'likes', + 'href' => false, + 'text' => elgg_view('likes/display', array('entity' => $object)), + 'is_action' => true, + 'priority' => 100, + ); $return[] = ElggMenuItem::factory($options); } } @@ -87,7 +68,7 @@ function likes_river_menu_setup($hook, $type, $return, $params) { /** * Count how many people have liked an entity. * - * @param ElggEntity $entity + * @param ElggEntity $entity * * @return int Number of likes */ diff --git a/mod/likes/views/default/likes/display.php b/mod/likes/views/default/likes/display.php index cbfe46078..2dc50ddd0 100644 --- a/mod/likes/views/default/likes/display.php +++ b/mod/likes/views/default/likes/display.php @@ -28,8 +28,7 @@ if (elgg_is_logged_in() && $vars['entity']->canAnnotate(0, 'likes')) { 'annotation_name' => 'likes', 'owner_guid' => elgg_get_logged_in_user_guid() ); - $likes = elgg_get_annotations($options); - $url = elgg_get_site_url() . "action/likes/delete?annotation_id={$likes[0]->id}"; + $url = elgg_get_site_url() . "action/likes/delete?guid={$guid}"; $params = array( 'href' => $url, 'text' => elgg_view_icon('thumbs-up-alt'), |