]> 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 e78c653300da11dd504afa0e21aa1a63badda4c2..41b688af56506f30b6900442700828e0c5066236 100644 (file)
@@ -43,6 +43,8 @@ class UsersalmonAction extends SalmonAction
             $this->clientError(_m('No such user.'));
         }
 
+        $this->target = $this->user;
+
         return true;
     }
 
@@ -65,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
@@ -155,7 +157,7 @@ class UsersalmonAction extends SalmonAction
 
         if (!empty($old)) {
             // TRANS: Client exception.
-            throw new ClientException(_('This is already a favorite.'));
+            throw new ClientException(_m('This is already a favorite.'));
         }
 
         if (!Fave::addNew($profile, $notice)) {
@@ -177,12 +179,73 @@ class UsersalmonAction extends SalmonAction
                                    'notice_id' => $notice->id));
         if (empty($fave)) {
             // TRANS: Client exception.
-            throw new ClientException(_('Notice wasn\'t favorited!'));
+            throw new ClientException(_m('Notice was not favorited!'));
         }
 
         $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
@@ -192,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) {
@@ -204,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);