]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/OStatus/lib/salmonaction.php
New event for Salmon including target
[quix0rs-gnu-social.git] / plugins / OStatus / lib / salmonaction.php
index 5fdb11abe40be4d91b6af9e5616cab7f887d6ee2..8bfd7c8261e81ef3ca021d481854c63468289aa3 100644 (file)
@@ -30,6 +30,7 @@ class SalmonAction extends Action
 {
     var $xml      = null;
     var $activity = null;
+    var $target   = null;
 
     function prepare($args)
     {
@@ -38,10 +39,12 @@ class SalmonAction extends Action
         parent::prepare($args);
 
         if ($_SERVER['REQUEST_METHOD'] != 'POST') {
+            // TRANS: Client error. POST is a HTTP command. It should not be translated.
             $this->clientError(_m('This method requires a POST.'));
         }
 
         if (empty($_SERVER['CONTENT_TYPE']) || $_SERVER['CONTENT_TYPE'] != 'application/magic-envelope+xml') {
+            // TRANS: Client error. Do not translate "application/magic-envelope+xml"
             $this->clientError(_m('Salmon requires "application/magic-envelope+xml".'));
         }
 
@@ -51,6 +54,7 @@ class SalmonAction extends Action
         $salmon = new Salmon;
         if (!$salmon->verifyMagicEnv($xml)) {
             common_log(LOG_DEBUG, "Salmon signature verification failed.");
+            // TRANS: Client error.
             $this->clientError(_m('Salmon signature verification failed.'));
         } else {
             $magic_env = new MagicEnvelope();
@@ -62,6 +66,7 @@ class SalmonAction extends Action
         if ($dom->documentElement->namespaceURI != Activity::ATOM ||
             $dom->documentElement->localName != 'entry') {
             common_log(LOG_DEBUG, "Got invalid Salmon post: $xml");
+            // TRANS: Client error.
             $this->clientError(_m('Salmon post must be an Atom entry.'));
         }
 
@@ -78,7 +83,8 @@ class SalmonAction extends Action
         StatusNet::setApi(true); // Send smaller error pages
 
         common_log(LOG_DEBUG, "Got a " . $this->activity->verb);
-        if (Event::handle('StartHandleSalmon', array($this->activity))) {
+        if (Event::handle('StartHandleSalmonTarget', array($this->activity, $this->target)) &&
+            Event::handle('StartHandleSalmon', array($this->activity))) {
             switch ($this->activity->verb)
             {
             case ActivityVerb::POST:
@@ -110,49 +116,59 @@ class SalmonAction extends Action
                 $this->handleUpdateProfile();
                 break;
             default:
+                // TRANS: Client exception.
                 throw new ClientException(_m("Unrecognized activity type."));
             }
             Event::handle('EndHandleSalmon', array($this->activity));
+            Event::handle('EndHandleSalmonTarget', array($this->activity, $this->target));
         }
     }
 
     function handlePost()
     {
+        // TRANS: Client exception.
         throw new ClientException(_m("This target doesn't understand posts."));
     }
 
     function handleFollow()
     {
+        // TRANS: Client exception.
         throw new ClientException(_m("This target doesn't understand follows."));
     }
 
     function handleUnfollow()
     {
+        // TRANS: Client exception.
         throw new ClientException(_m("This target doesn't understand unfollows."));
     }
 
     function handleFavorite()
     {
+        // TRANS: Client exception.
         throw new ClientException(_m("This target doesn't understand favorites."));
     }
 
     function handleUnfavorite()
     {
+        // TRANS: Client exception.
         throw new ClientException(_m("This target doesn't understand unfavorites."));
     }
 
     function handleShare()
     {
+        // TRANS: Client exception.
         throw new ClientException(_m("This target doesn't understand share events."));
     }
 
     function handleJoin()
     {
+        // TRANS: Client exception.
         throw new ClientException(_m("This target doesn't understand joins."));
     }
 
     function handleLeave()
     {
+        // TRANS: Client exception.
         throw new ClientException(_m("This target doesn't understand leave events."));
     }
 
@@ -180,7 +196,8 @@ class SalmonAction extends Action
         if (empty($actor->id)) {
             common_log(LOG_ERR, "broken actor: " . var_export($actor, true));
             common_log(LOG_ERR, "activity with no actor: " . var_export($this->activity, true));
-            throw new Exception("Received a salmon slap from unidentified actor.");
+            // TRANS: Exception.
+            throw new Exception(_m('Received a salmon slap from unidentified actor.'));
         }
 
         return Ostatus_profile::ensureActivityObjectProfile($actor);