]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/showmessage.php
Make ShowmessageAction not be a subclass of MailboxAction
[quix0rs-gnu-social.git] / actions / showmessage.php
index d737f85d3a0b2ba3b4bb0531f5344f023c5eb4ed..1c867af1190ccbff3ff58d88a8cb4da00c91a7b9 100644 (file)
@@ -30,20 +30,17 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
-require_once INSTALLDIR.'/lib/mailbox.php';
-
 /**
  * Show a single message
  *
- * // XXX: It is totally weird how this works!
- *
  * @category Personal
  * @package  StatusNet
  * @author   Evan Prodromou <evan@status.net>
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link     http://status.net/
  */
-class ShowmessageAction extends MailboxAction
+
+class ShowmessageAction extends Action
 {
     /**
      * Message object to show
@@ -82,22 +79,20 @@ class ShowmessageAction extends MailboxAction
 
         $this->user = common_current_user();
 
+        if (empty($this->user) ||
+            ($this->user->id != $this->message->from_profile &&
+             $this->user->id != $this->message->to_profile)) {
+            // TRANS: Client error displayed requesting a single direct message the requesting user was not a party in.
+            throw new ClientException(_('Only the sender and recipient ' .
+                                        'may read this message.'), 403);
+        }
+
         return true;
     }
 
     function handle($args)
     {
-        Action::handle($args);
-
-        if ($this->user && ($this->user->id == $this->message->from_profile ||
-            $this->user->id == $this->message->to_profile)) {
-                $this->showPage();
-        } else {
-            // TRANS: Client error displayed requesting a single direct message the requesting user was not a party in.
-            $this->clientError(_('Only the sender and recipient ' .
-                'may read this message.'), 403);
-            return;
-        }
+        $this->showPage();
     }
 
     function title()
@@ -121,42 +116,18 @@ class ShowmessageAction extends MailboxAction
         }
     }
 
-    function getMessages()
-    {
-        $message     = new Message();
-        $message->id = $this->message->id;
-        $message->find();
-        return $message;
-    }
 
-    function getMessageProfile()
+    function showContent()
     {
-        if ($this->user->id == $this->message->from_profile) {
-            return $this->message->getTo();
-        } else if ($this->user->id == $this->message->to_profile) {
-            return $this->message->getFrom();
-        } else {
-            // This shouldn't happen
-            return null;
-        }
+        $this->elementStart('ul', 'notices messages');
+        $ml = new ShowMessageListItem($this, $this->message, $this->user);
+        $ml->show();
+        $this->elementEnd('ul');
     }
 
-    /**
-     * Don't show local navigation
-     *
-     * @return void
-     */
-    function showLocalNavBlock()
-    {
-    }
-
-    /**
-     * Don't show page notice
-     *
-     * @return void
-     */
-    function showPageNoticeBlock()
+    function isReadOnly($args)
     {
+        return true;
     }
 
     /**
@@ -164,22 +135,30 @@ class ShowmessageAction extends MailboxAction
      *
      * @return void
      */
-    function showAside()
-    {
+
+    function showAside() {
     }
+}
 
-    /**
-     * Don't show any instructions
-     *
-     * @return string
-     */
-    function getInstructions()
+class ShowMessageListItem extends MessageListItem
+{
+    var $user;
+
+    function __construct($out, $message, $user)
     {
-        return '';
+        parent::__construct($out, $message);
+        $this->user = $user;
     }
 
-    function isReadOnly($args)
+    function getMessageProfile()
     {
-        return true;
+        if ($this->user->id == $this->message->from_profile) {
+            return $this->message->getTo();
+        } else if ($this->user->id == $this->message->to_profile) {
+            return $this->message->getFrom();
+        } else {
+            // This shouldn't happen
+            return null;
+        }
     }
 }