X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fshowmessage.php;h=1c867af1190ccbff3ff58d88a8cb4da00c91a7b9;hb=f79aec36feaa4760201a7e88d5b31513a3c458ba;hp=572a71739aa56a000062c8e7418b02dff34317c4;hpb=d06a929d703e0ad776230234b3d821a83f22d492;p=quix0rs-gnu-social.git diff --git a/actions/showmessage.php b/actions/showmessage.php index 572a71739a..1c867af119 100644 --- a/actions/showmessage.php +++ b/actions/showmessage.php @@ -1,6 +1,6 @@ . * * @category Personal - * @package Laconica - * @author Evan Prodromou - * @copyright 2008-2009 Control Yourself, Inc. + * @package StatusNet + * @author Evan Prodromou + * @copyright 2008-2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -if (!defined('LACONICA')) { - exit(1); +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 Laconica - * @author Evan Prodromou + * @package StatusNet + * @author Evan Prodromou * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -class ShowmessageAction extends MailboxAction +class ShowmessageAction extends Action { /** * Message object to show */ - var $message = null; - + /** * The current user */ - + var $user = null; /** @@ -67,93 +62,72 @@ class ShowmessageAction extends MailboxAction * * @return success flag */ - function prepare($args) { parent::prepare($args); - + $this->page = 1; - + $id = $this->trimmed('message'); $this->message = Message::staticGet('id', $id); if (!$this->message) { + // TRANS: Client error displayed requesting a single message that does not exist. $this->clientError(_('No such message.'), 404); return false; } $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 { - $this->clientError(_('Only the sender and recipient ' . - 'may read this message.'), 403); - return; - } + $this->showPage(); } - + function title() - { + { if ($this->user->id == $this->message->from_profile) { $to = $this->message->getTo(); - return sprintf(_("Message to %1\$s on %2\$s"), + // @todo FIXME: Might be nice if the timestamp could be localised. + // TRANS: Page title for single direct message display when viewing user is the sender. + // TRANS: %1$s is the addressed user's nickname, $2$s is a timestamp. + return sprintf(_('Message to %1$s on %2$s'), $to->nickname, common_exact_date($this->message->created)); } else if ($this->user->id == $this->message->to_profile) { $from = $this->message->getFrom(); - return sprintf(_("Message from %1\$s on %2\$s"), + // @todo FIXME: Might be nice if the timestamp could be localised. + // TRANS: Page title for single message display. + // TRANS: %1$s is the sending user's nickname, $2$s is a timestamp. + return sprintf(_('Message from %1$s on %2$s'), $from->nickname, common_exact_date($this->message->created)); } } - - function getMessages() - { - $message = new Message(); - $message->id = $this->message->id; - $message->find(); - return $message; - } - - function getMessageProfile() - { - 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; - } - } - - /** - * Don't show local navigation - * - * @return void - */ - function showLocalNavBlock() + + function showContent() { + $this->elementStart('ul', 'notices messages'); + $ml = new ShowMessageListItem($this, $this->message, $this->user); + $ml->show(); + $this->elementEnd('ul'); } - - /** - * Don't show page notice - * - * @return void - */ - function showPageNoticeBlock() + function isReadOnly($args) { + return true; } /** @@ -162,23 +136,29 @@ 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() + 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; + } } }