]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/OStatus/actions/usersalmon.php
Complete "people tag" to "list" in UI messages.
[quix0rs-gnu-social.git] / plugins / OStatus / actions / usersalmon.php
index c7ec33eeecd61fd95e30acb5d71ee2923eb1b00a..41b688af56506f30b6900442700828e0c5066236 100644 (file)
@@ -67,7 +67,7 @@ class UsersalmonAction extends SalmonAction
         case ActivityObject::COMMENT:
             break;
         default:
-            throw new ClientException("Can't handle that kind of post.");
+            throw new ClientException(_m('Cannot handle that kind of post.'));
         }
 
         // Notice must either be a) in reply to a notice by this user
@@ -185,6 +185,67 @@ class UsersalmonAction extends SalmonAction
         $fave->delete();
     }
 
+    function handleTag()
+    {
+        if ($this->activity->target->type == ActivityObject::_LIST) {
+            if ($this->activity->objects[0]->type != ActivityObject::PERSON) {
+                throw new ClientException("Not a person object");
+                return false;
+            }
+            // this is a peopletag
+            $tagged = User::staticGet('uri', $this->activity->objects[0]->id);
+
+            if (empty($tagged)) {
+                throw new ClientException("Unidentified profile being tagged");
+            }
+
+            if ($tagged->id !== $this->user->id) {
+                throw new ClientException("This user is not the one being tagged");
+            }
+
+            // save the list
+            $tagger = $this->ensureProfile();
+            $list   = Ostatus_profile::ensureActivityObjectProfile($this->activity->target);
+
+            $ptag = $list->localPeopletag();
+            $result = Profile_tag::setTag($ptag->tagger, $tagged->id, $ptag->tag);
+            if (!$result) {
+                throw new ClientException("The tag could not be saved.");
+            }
+        }
+    }
+
+    function handleUntag()
+    {
+        if ($this->activity->target->type == ActivityObject::_LIST) {
+            if ($this->activity->objects[0]->type != ActivityObject::PERSON) {
+                throw new ClientException("Not a person object");
+                return false;
+            }
+            // this is a peopletag
+            $tagged = User::staticGet('uri', $this->activity->objects[0]->id);
+
+            if (empty($tagged)) {
+                throw new ClientException("Unidentified profile being untagged");
+            }
+
+            if ($tagged->id !== $this->user->id) {
+                throw new ClientException("This user is not the one being untagged");
+            }
+
+            // save the list
+            $tagger = $this->ensureProfile();
+            $list   = Ostatus_profile::ensureActivityObjectProfile($this->activity->target);
+
+            $ptag = $list->localPeopletag();
+            $result = Profile_tag::unTag($ptag->tagger, $tagged->id, $ptag->tag);
+
+            if (!$result) {
+                throw new ClientException("The tag could not be deleted.");
+            }
+        }
+    }
+
     /**
      * @param ActivityObject $object
      * @return Notice
@@ -194,7 +255,7 @@ class UsersalmonAction extends SalmonAction
     {
         if (!$object) {
             // TRANS: Client exception.
-            throw new ClientException(_m('Can\'t favorite/unfavorite without an object.'));
+            throw new ClientException(_m('Cannot favorite/unfavorite without an object.'));
         }
 
         switch ($object->type) {
@@ -206,7 +267,7 @@ class UsersalmonAction extends SalmonAction
             break;
         default:
             // TRANS: Client exception.
-            throw new ClientException(_m('Can\'t handle that kind of object for liking/faving.'));
+            throw new ClientException(_m('Cannot handle that kind of object for liking/faving.'));
         }
 
         $notice = Notice::staticGet('uri', $object->id);