]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/OStatus/actions/usersalmon.php
Fix L10n/i18n.
[quix0rs-gnu-social.git] / plugins / OStatus / actions / usersalmon.php
index e78c653300da11dd504afa0e21aa1a63badda4c2..483de9e50737d0551d68d08599150084055eee20 100644 (file)
@@ -34,15 +34,19 @@ class UsersalmonAction extends SalmonAction
         $id = $this->trimmed('id');
 
         if (!$id) {
+            // TRANS: Client error displayed trying to perform an action without providing an ID.
             $this->clientError(_m('No ID.'));
         }
 
         $this->user = User::staticGet('id', $id);
 
         if (empty($this->user)) {
+            // TRANS: Client error displayed when referring to a non-existing user.
             $this->clientError(_m('No such user.'));
         }
 
+        $this->target = $this->user;
+
         return true;
     }
 
@@ -65,7 +69,8 @@ class UsersalmonAction extends SalmonAction
         case ActivityObject::COMMENT:
             break;
         default:
-            throw new ClientException("Can't handle that kind of post.");
+            // TRANS: Client exception thrown when an undefied activity is performed.
+            throw new ClientException(_m('Cannot handle that kind of post.'));
         }
 
         // Notice must either be a) in reply to a notice by this user
@@ -90,11 +95,11 @@ class UsersalmonAction extends SalmonAction
                 !in_array(common_profile_url($this->user->nickname), $context->attention)) {
                 common_log(LOG_ERR, "{$this->user->uri} not in attention list (".implode(',', $context->attention).")");
                 // TRANS: Client exception.
-                throw new ClientException('To the attention of user(s), not including this one.');
+                throw new ClientException(_m('To the attention of user(s), not including this one.'));
             }
         } else {
             // TRANS: Client exception.
-            throw new ClientException('Not to anyone in reply to anything.');
+            throw new ClientException(_m('Not to anyone in reply to anything.'));
         }
 
         $existing = Notice::staticGet('uri', $this->activity->objects[0]->id);
@@ -155,7 +160,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 +182,81 @@ 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) {
+                // TRANS: Client exception.
+                throw new ClientException(_m('Not a person object.'));
+                return false;
+            }
+            // this is a peopletag
+            $tagged = User::staticGet('uri', $this->activity->objects[0]->id);
+
+            if (empty($tagged)) {
+                // TRANS: Client exception.
+                throw new ClientException(_m('Unidentified profile being tagged.'));
+            }
+
+            if ($tagged->id !== $this->user->id) {
+                // TRANS: Client exception.
+                throw new ClientException(_m('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) {
+                // TRANS: Client exception.
+                throw new ClientException(_m('The tag could not be saved.'));
+            }
+        }
+    }
+
+    function handleUntag()
+    {
+        if ($this->activity->target->type == ActivityObject::_LIST) {
+            if ($this->activity->objects[0]->type != ActivityObject::PERSON) {
+                // TRANS: Client exception.
+                throw new ClientException(_m('Not a person object.'));
+                return false;
+            }
+            // this is a peopletag
+            $tagged = User::staticGet('uri', $this->activity->objects[0]->id);
+
+            if (empty($tagged)) {
+                // TRANS: Client exception.
+                throw new ClientException(_m('Unidentified profile being untagged.'));
+            }
+
+            if ($tagged->id !== $this->user->id) {
+                // TRANS: Client exception.
+                throw new ClientException(_m('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) {
+                // TRANS: Client exception.
+                throw new ClientException(_m('The tag could not be deleted.'));
+            }
+        }
+    }
+
     /**
      * @param ActivityObject $object
      * @return Notice
@@ -192,7 +266,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 +278,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);