]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/postnotice.php
Merge remote branch 'gitorious/1.0.x' into 1.0.x
[quix0rs-gnu-social.git] / actions / postnotice.php
index c2e1c44cae0b4a84099663aee85d954befa4edaf..43c764aa63b10728944eb2053c1415bf16fe0d14 100644 (file)
@@ -54,7 +54,10 @@ class PostnoticeAction extends Action
      */
     function prepare($argarray)
     {
+        StatusNet::setApi(true); // Send smaller error pages
+
         parent::prepare($argarray);
+
         try {
             $this->checkNotice();
         } catch (Exception $e) {
@@ -71,6 +74,14 @@ class PostnoticeAction extends Action
             $srv = new OMB_Service_Provider(null, omb_oauth_datastore(),
                                             omb_oauth_server());
             $srv->handlePostNotice();
+        } catch (OMB_RemoteServiceException $rse) {
+            $msg = $rse->getMessage();
+            if (preg_match('/Revoked accesstoken/', $msg) ||
+                preg_match('/No subscriber/', $msg)) {
+                $this->clientError($msg, 403);
+            } else {
+                $this->clientError($msg);
+            }
         } catch (Exception $e) {
             $this->serverError($e->getMessage());
             return;
@@ -81,16 +92,18 @@ class PostnoticeAction extends Action
     {
         $content = common_shorten_links($_POST['omb_notice_content']);
         if (Notice::contentTooLong($content)) {
-            $this->clientError(_('Invalid notice content'), 400);
+            // TRANS: Client error displayed if the notice posted has too many characters.
+            $this->clientError(_('Invalid notice content.'), 400);
             return false;
         }
         $license      = $_POST['omb_notice_license'];
         $site_license = common_config('license', 'url');
         if ($license && !common_compatible_license($license, $site_license)) {
-            throw new Exception(sprintf(_('Notice license ā€˜%sā€™ is not ' .
-                                          'compatible with site license ā€˜%sā€™.'),
+            // TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+            // TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+            throw new Exception(sprintf(_('Notice license "%1$s" is not ' .
+                                          'compatible with site license "%2$s".'),
                                         $license, $site_license));
         }
     }
 }
-?>
\ No newline at end of file