Make ShowmessageAction not be a subclass of MailboxAction
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.
This commit is contained in:
parent
3b19b63bab
commit
e903ff0525
@ -30,20 +30,17 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once INSTALLDIR.'/lib/mailbox.php';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show a single message
|
* Show a single message
|
||||||
*
|
*
|
||||||
* // XXX: It is totally weird how this works!
|
|
||||||
*
|
|
||||||
* @category Personal
|
* @category Personal
|
||||||
* @package StatusNet
|
* @package StatusNet
|
||||||
* @author Evan Prodromou <evan@status.net>
|
* @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
|
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
class ShowmessageAction extends MailboxAction
|
|
||||||
|
class ShowmessageAction extends Action
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Message object to show
|
* Message object to show
|
||||||
@ -82,22 +79,20 @@ class ShowmessageAction extends MailboxAction
|
|||||||
|
|
||||||
$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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function handle($args)
|
function handle($args)
|
||||||
{
|
{
|
||||||
Action::handle($args);
|
$this->showPage();
|
||||||
|
|
||||||
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 title()
|
function title()
|
||||||
@ -121,12 +116,38 @@ class ShowmessageAction extends MailboxAction
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getMessages()
|
|
||||||
|
function showContent()
|
||||||
{
|
{
|
||||||
$message = new Message();
|
$this->elementStart('ul', 'notices messages');
|
||||||
$message->id = $this->message->id;
|
$ml = new ShowMessageListItem($this, $this->message, $this->user);
|
||||||
$message->find();
|
$ml->show();
|
||||||
return $message;
|
$this->elementEnd('ul');
|
||||||
|
}
|
||||||
|
|
||||||
|
function isReadOnly($args)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Don't show aside
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
|
||||||
|
function showAside() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ShowMessageListItem extends MessageListItem
|
||||||
|
{
|
||||||
|
var $user;
|
||||||
|
|
||||||
|
function __construct($out, $message, $user)
|
||||||
|
{
|
||||||
|
parent::__construct($out, $message);
|
||||||
|
$this->user = $user;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getMessageProfile()
|
function getMessageProfile()
|
||||||
@ -140,46 +161,4 @@ class ShowmessageAction extends MailboxAction
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Don't show local navigation
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function showLocalNavBlock()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Don't show page notice
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function showPageNoticeBlock()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Don't show aside
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function showAside()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Don't show any instructions
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
function getInstructions()
|
|
||||||
{
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
function isReadOnly($args)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user