aboutsummaryrefslogtreecommitdiff
path: root/mod/likes/actions/likes/add.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/likes/actions/likes/add.php')
-rw-r--r--mod/likes/actions/likes/add.php50
1 files changed, 50 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);