diff options
Diffstat (limited to 'mod/likes/actions')
-rw-r--r-- | mod/likes/actions/likes/add.php | 50 | ||||
-rw-r--r-- | mod/likes/actions/likes/delete.php | 31 |
2 files changed, 81 insertions, 0 deletions
diff --git a/mod/likes/actions/likes/add.php b/mod/likes/actions/likes/add.php new file mode 100644 index 000000000..a6a8d6c45 --- /dev/null +++ b/mod/likes/actions/likes/add.php @@ -0,0 +1,50 @@ +<?php +/** + * Elgg add like action + * + */ + +$entity_guid = (int) get_input('guid'); + +//check to see if the user has already liked the item +if (elgg_annotation_exists($entity_guid, 'likes')) { + system_message(elgg_echo("likes:alreadyliked")); + forward(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(REFERER); +} + +// 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); +} + +$user = elgg_get_logged_in_user_entity(); +$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(REFERER); +} + +// notify if poster wasn't owner +if ($entity->owner_guid != $user->guid) { + + likes_notify_user($entity->getOwnerEntity(), $user, $entity); +} + +system_message(elgg_echo("likes:likes")); + +// Forward back to the page where the user 'liked' the object +forward(REFERER); diff --git a/mod/likes/actions/likes/delete.php b/mod/likes/actions/likes/delete.php new file mode 100644 index 000000000..322d512e8 --- /dev/null +++ b/mod/likes/actions/likes/delete.php @@ -0,0 +1,31 @@ +<?php +/** + * Elgg delete like action + * + */ + +// Support deleting by id in case we're deleting another user's likes +$id = (int) get_input('id'); + +$like = NULL; +if ($id) { + $like = elgg_get_annotation_from_id($id); +} + +if (!$like) { + $likes = elgg_get_annotations(array( + 'guid' => (int) get_input('guid'), + 'annotation_owner_guid' => elgg_get_logged_in_user_guid(), + 'annotation_name' => 'likes', + )); + $like = $likes[0]; +} + +if ($like && $like->canEdit()) { + $like->delete(); + system_message(elgg_echo("likes:deleted")); + forward(REFERER); +} + +register_error(elgg_echo("likes:notdeleted")); +forward(REFERER); |