From 64be91148a881f65224c583b92c407205db24634 Mon Sep 17 00:00:00 2001 From: dave Date: Sun, 21 Mar 2010 16:22:19 +0000 Subject: generic like this functionality added git-svn-id: http://code.elgg.org/elgg/trunk@5456 36083f99-b078-4883-b0ff-0f9b5a30f544 --- actions/likes/add.php | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ actions/likes/delete.php | 32 ++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 actions/likes/add.php create mode 100644 actions/likes/delete.php (limited to 'actions/likes') diff --git a/actions/likes/add.php b/actions/likes/add.php new file mode 100644 index 000000000..36672d3ec --- /dev/null +++ b/actions/likes/add.php @@ -0,0 +1,64 @@ + + * @link http://elgg.org/ + */ + +// Make sure we're logged in; forward to the front page if not +gatekeeper(); + +// Get input +$entity_guid = (int) get_input('guid'); +//check to see if the user has already liked the item +if(elgg_already_created_annotation($entity_guid, 'likes')){ + system_message(elgg_echo("likes:alreadyliked")); + forward($_SERVER['HTTP_REFERER']); +} +// Let's see if we can get an entity with the specified GUID +$entity = get_entity($entity_guid); +if (!$entity) { + register_error(elgg_echo("likes:notfound")); + forward($_SERVER['HTTP_REFERER']); +} + +$user = get_loggedin_user(); +$annotation = create_annotation($entity->guid, + 'likes', + "likes", + "", + $user->guid, + $entity->access_id); + +// tell user annotation didn't work if that is the case +if (!$annotation) { + register_error(elgg_echo("likes:failure")); + forward($_SERVER['HTTP_REFERER']); +} + +// notify if poster wasn't owner +if ($entity->owner_guid != $user->guid) { + + notify_user($entity->owner_guid, + $user->guid, + elgg_echo('likes:email:subject'), + sprintf( + elgg_echo('likes:email:body'), + $entity->title, + $user->name, + $comment_text, + $entity->getURL(), + $user->name, + $user->getURL() + ) + ); +} + +system_message(elgg_echo("likes:likes")); +//add to river +add_to_river('annotation/annotatelike','likes',$user->guid,$entity->guid, "", 0, $annotation); + +// Forward back to the page where the user 'liked' the object +forward($_SERVER['HTTP_REFERER']); diff --git a/actions/likes/delete.php b/actions/likes/delete.php new file mode 100644 index 000000000..cbb89f67a --- /dev/null +++ b/actions/likes/delete.php @@ -0,0 +1,32 @@ + + * @link http://elgg.org/ + */ + +// Ensure we're logged in +if (!isloggedin()) { + forward(); +} + +// Make sure we can get the comment in question +$annotation_id = (int) get_input('annotation_id'); +if ($likes = get_annotation($annotation_id)) { + + $entity = get_entity($likes->entity_guid); + + if ($likes->canEdit()) { + $likes->delete(); + system_message(elgg_echo("likes:deleted")); + forward($entity->getURL()); + } + +} else { + $url = ""; +} + +register_error(elgg_echo("likes:notdeleted")); +forward($entity->getURL()); \ No newline at end of file -- cgit v1.2.3