Add repeat command
This commit is contained in:
parent
b9b8e08c10
commit
bed4e1c9e9
|
@ -379,6 +379,65 @@ class MessageCommand extends Command
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class RepeatCommand extends Command
|
||||||
|
{
|
||||||
|
var $other = null;
|
||||||
|
function __construct($user, $other)
|
||||||
|
{
|
||||||
|
parent::__construct($user);
|
||||||
|
$this->other = $other;
|
||||||
|
}
|
||||||
|
|
||||||
|
function execute($channel)
|
||||||
|
{
|
||||||
|
if(substr($this->other,0,1)=='#'){
|
||||||
|
//repeating a specific notice_id
|
||||||
|
|
||||||
|
$notice = Notice::staticGet(substr($this->other,1));
|
||||||
|
if (!$notice) {
|
||||||
|
$channel->error($this->user, _('Notice with that id does not exist'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$recipient = $notice->getProfile();
|
||||||
|
}else{
|
||||||
|
//repeating a given user's last notice
|
||||||
|
|
||||||
|
$recipient =
|
||||||
|
common_relative_profile($this->user, common_canonical_nickname($this->other));
|
||||||
|
|
||||||
|
if (!$recipient) {
|
||||||
|
$channel->error($this->user, _('No such user.'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$notice = $recipient->getCurrentNotice();
|
||||||
|
if (!$notice) {
|
||||||
|
$channel->error($this->user, _('User has no last notice'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($this->user->id == $notice->profile_id)
|
||||||
|
{
|
||||||
|
$channel->error($this->user, _('Cannot repeat your own notice'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($recipient->hasRepeated($notice->id)) {
|
||||||
|
$channel->error($this->user, _('Already repeated that notice'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$repeat = $notice->repeat($this->user->id, $channel->source);
|
||||||
|
|
||||||
|
if ($repeat) {
|
||||||
|
common_broadcast_notice($repeat);
|
||||||
|
$channel->output($this->user, sprintf(_('Notice from %s repeated'), $recipient->nickname));
|
||||||
|
} else {
|
||||||
|
$channel->error($this->user, _('Error repeating notice.'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class ReplyCommand extends Command
|
class ReplyCommand extends Command
|
||||||
{
|
{
|
||||||
var $other = null;
|
var $other = null;
|
||||||
|
@ -696,6 +755,8 @@ class HelpCommand extends Command
|
||||||
"whois <nickname> - get profile info on user\n".
|
"whois <nickname> - get profile info on user\n".
|
||||||
"fav <nickname> - add user's last notice as a 'fave'\n".
|
"fav <nickname> - add user's last notice as a 'fave'\n".
|
||||||
"fav #<notice_id> - add notice with the given id as a 'fave'\n".
|
"fav #<notice_id> - add notice with the given id as a 'fave'\n".
|
||||||
|
"repeat #<notice_id> - repeat a notice with a given id\n".
|
||||||
|
"repeat <nickname> - repeat the last notice from user\n".
|
||||||
"reply #<notice_id> - reply to notice with a given id\n".
|
"reply #<notice_id> - reply to notice with a given id\n".
|
||||||
"reply <nickname> - reply to the last notice from user\n".
|
"reply <nickname> - reply to the last notice from user\n".
|
||||||
"join <group> - join group\n".
|
"join <group> - join group\n".
|
||||||
|
|
|
@ -169,6 +169,19 @@ class CommandInterpreter
|
||||||
} else {
|
} else {
|
||||||
return new ReplyCommand($user, $other, $extra);
|
return new ReplyCommand($user, $other, $extra);
|
||||||
}
|
}
|
||||||
|
case 'repeat':
|
||||||
|
case 'rp':
|
||||||
|
case 'rt':
|
||||||
|
case 'rd':
|
||||||
|
if (!$arg) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
list($other, $extra) = $this->split_arg($arg);
|
||||||
|
if ($extra) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return new RepeatCommand($user, $other);
|
||||||
|
}
|
||||||
case 'whois':
|
case 'whois':
|
||||||
if (!$arg) {
|
if (!$arg) {
|
||||||
return null;
|
return null;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user