summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
3b19b63)
The ShowmessageAction was using the MailboxAction to do its display of
a single direct message. Since we redid the nickname management, this
was breaking (MailboxAction requires a nickname argument,
ShowmessageAction does not, and nickname validation that used to
quietly fail now throws an exception).
I've moved the message list processing to its own widget class, so the
need to subclass MailboxAction has disappeared. I've rewritten this
action to use the MessageListItem widget, and it works fine now.
-require_once INSTALLDIR.'/lib/mailbox.php';
-
/**
* Show a single message
*
/**
* 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/
*/
* @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
{
/**
* Message object to show
$this->user = common_current_user();
$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)
{
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;
- }
- 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;
- }
+ $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)
- function showAside()
- {
+
+ function showAside() {
- /**
- * Don't show any instructions
- *
- * @return string
- */
- function getInstructions()
+class ShowMessageListItem extends MessageListItem
+{
+ var $user;
+
+ function __construct($out, $message, $user)
+ parent::__construct($out, $message);
+ $this->user = $user;
- function isReadOnly($args)
+ 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;
+ }