]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/shownotice.php
Try to get mime data before hashing (cpu intensive)
[quix0rs-gnu-social.git] / actions / shownotice.php
index 23386868ddbc1b042b3151b29340b952c86cf35c..b2385ec1d7b71edcbe3f1ffbf07a0309ec1b412b 100644 (file)
@@ -74,6 +74,7 @@ class ShownoticeAction extends ManagedAction
         }
 
         $this->notice = $this->getNotice();
+        $this->target = $this->notice;
 
         if (!$this->notice->inScope($this->scoped)) {
             // TRANS: Client exception thrown when trying a view a notice the user has no access to.
@@ -113,20 +114,22 @@ class ShownoticeAction extends ManagedAction
     {
         $id = $this->arg('notice');
 
-        $notice = Notice::getKV('id', $id);
-        if ($notice instanceof Notice) {
+        $notice = null;
+        try {
+            $notice = Notice::getByID($id);
             // Alright, got it!
             return $notice;
-        }
-
-        // Did we use to have it, and it got deleted?
-        $deleted = Deleted_notice::getKV('id', $id);
-        if ($deleted instanceof Deleted_notice) {
-            // TRANS: Client error displayed trying to show a deleted notice.
-            $this->clientError(_('Notice deleted.'), 410);
+        } catch (NoResultException $e) {
+            // Hm, not found.
+            $deleted = null;
+            Event::handle('IsNoticeDeleted', array($id, &$deleted));
+            if ($deleted === true) {
+                // TRANS: Client error displayed trying to show a deleted notice.
+                throw new ClientException(_('Notice deleted.'), 410);
+            }
         }
         // TRANS: Client error displayed trying to show a non-existing notice.
-        $this->clientError(_('No such notice.'), 404);
+        throw new ClientException(_('No such notice.'), 404);
     }
 
     /**
@@ -211,12 +214,24 @@ class ShownoticeAction extends ManagedAction
     {
     }
 
-    /**
-     * Don't show aside
-     *
-     * @return void
-     */
-    function showAside() {
+    function getFeeds()
+    {
+        return array(new Feed(Feed::JSON,
+                              common_local_url('ApiStatusesShow',
+                                               array(
+                                                    'id' => $this->target->getID(),
+                                                    'format' => 'json')),
+                              // TRANS: Title for link to single notice representation.
+                              // TRANS: %s is a user nickname.
+                              sprintf(_('Single notice (JSON)'))),
+                     new Feed(Feed::ATOM,
+                              common_local_url('ApiStatusesShow',
+                                               array(
+                                                    'id' => $this->target->getID(),
+                                                    'format' => 'atom')),
+                              // TRANS: Title for link to notice feed.
+                              // TRANS: %s is a user nickname.
+                              sprintf(_('Single notice (Atom)'))));
     }
 
     /**