diff options
author | Brenda Wallace <shiny@cpan.org> | 2009-12-28 01:57:51 +0000 |
---|---|---|
committer | Brenda Wallace <shiny@cpan.org> | 2009-12-28 01:57:51 +0000 |
commit | f4459dfedcdea2f2a6078bedf9530deb45b6d52c (patch) | |
tree | 942db6159710f5dd17e0c43a5659e1eec027a9e6 /lib/command.php | |
parent | 9d3829df9d29581c1d0281e57fda8ba4452ce2c2 (diff) | |
parent | ce8c69a49fc6668a19886ebc354ea5bef808d12a (diff) |
Merge commit 'origin/0.9.x' into 0.9.x
Diffstat (limited to 'lib/command.php')
-rw-r--r-- | lib/command.php | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/lib/command.php b/lib/command.php index 085331f82..67140c348 100644 --- a/lib/command.php +++ b/lib/command.php @@ -372,6 +372,7 @@ class MessageCommand extends Command } $message = Message::saveNew($this->user->id, $other->id, $this->text, $channel->source()); if ($message) { + $message->notify(); $channel->output($this->user, sprintf(_('Direct message to %s sent'), $this->other)); } else { $channel->error($this->user, _('Error sending direct message.')); @@ -379,6 +380,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 { var $other = null; @@ -696,6 +756,8 @@ class HelpCommand extends Command "whois <nickname> - get profile info on user\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". + "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 <nickname> - reply to the last notice from user\n". "join <group> - join group\n". |