From 79f81ad76d413908c097c121912eff233aebc483 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 11 Dec 2009 11:29:51 -0500 Subject: change Notice::saveNew() to use named arguments for little-used options --- lib/command.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib/command.php') diff --git a/lib/command.php b/lib/command.php index 450db9da3..085331f82 100644 --- a/lib/command.php +++ b/lib/command.php @@ -433,8 +433,9 @@ class ReplyCommand extends Command return; } - $notice = Notice::saveNew($this->user->id, $this->text, $channel->source(), 1, - $notice->id); + $notice = Notice::saveNew($this->user->id, $this->text, $channel->source(), + array('reply_to' => $notice->id)); + if ($notice) { $channel->output($this->user, sprintf(_('Reply to %s sent'), $recipient->nickname)); } else { -- cgit v1.2.3-54-g00ecf From bed4e1c9e96b2bf2208f987479d15e3f624aac6a Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Sat, 12 Dec 2009 21:24:38 -0500 Subject: Add repeat command --- lib/command.php | 61 ++++++++++++++++++++++++++++++++++++++++++++++ lib/commandinterpreter.php | 13 ++++++++++ 2 files changed, 74 insertions(+) (limited to 'lib/command.php') diff --git a/lib/command.php b/lib/command.php index 085331f82..222bd7683 100644 --- a/lib/command.php +++ b/lib/command.php @@ -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 { var $other = null; @@ -696,6 +755,8 @@ class HelpCommand extends Command "whois - get profile info on user\n". "fav - add user's last notice as a 'fave'\n". "fav # - add notice with the given id as a 'fave'\n". + "repeat # - repeat a notice with a given id\n". + "repeat - repeat the last notice from user\n". "reply # - reply to notice with a given id\n". "reply - reply to the last notice from user\n". "join - join group\n". diff --git a/lib/commandinterpreter.php b/lib/commandinterpreter.php index 665015afc..c2add7299 100644 --- a/lib/commandinterpreter.php +++ b/lib/commandinterpreter.php @@ -169,6 +169,19 @@ class CommandInterpreter } else { 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': if (!$arg) { return null; -- cgit v1.2.3-54-g00ecf From 19bb9a04d171fe2a8d87a51c0267c5670cb0f5bf Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 15 Dec 2009 10:18:27 -0500 Subject: add mail notification for dm command results --- lib/command.php | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/command.php') diff --git a/lib/command.php b/lib/command.php index 222bd7683..b30780bfb 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) { + mail_notify_message($message, $this->user, $other); $channel->output($this->user, sprintf(_('Direct message to %s sent'), $this->other)); } else { $channel->error($this->user, _('Error sending direct message.')); -- cgit v1.2.3-54-g00ecf From 797a0d79fbf4e105ee4ccdce093c1595c1f08a4a Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 15 Dec 2009 10:31:25 -0500 Subject: create a method for notification for new messages, and use it --- actions/apidirectmessagenew.php | 2 +- actions/newmessage.php | 8 +------- classes/Message.php | 8 ++++++++ lib/command.php | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) (limited to 'lib/command.php') diff --git a/actions/apidirectmessagenew.php b/actions/apidirectmessagenew.php index e6c39ce4a..b9ac92d77 100644 --- a/actions/apidirectmessagenew.php +++ b/actions/apidirectmessagenew.php @@ -175,7 +175,7 @@ class ApiDirectMessageNewAction extends ApiAuthAction return; } - mail_notify_message($message, $this->user, $this->other); + $message->notify(); if ($this->format == 'xml') { $this->showSingleXmlDirectMessage($message); diff --git a/actions/newmessage.php b/actions/newmessage.php index 0db2e7181..350452091 100644 --- a/actions/newmessage.php +++ b/actions/newmessage.php @@ -173,7 +173,7 @@ class NewmessageAction extends Action return; } - $this->notify($user, $this->other, $message); + $message->notify(); if ($this->boolean('ajax')) { $this->startHTML('text/xml;charset=utf-8'); @@ -247,12 +247,6 @@ class NewmessageAction extends Action } } - function notify($from, $to, $message) - { - mail_notify_message($message, $from, $to); - // XXX: Jabber, SMS notifications... probably queued - } - // Do nothing (override) function showNoticeForm() diff --git a/classes/Message.php b/classes/Message.php index 718a9d922..16d0c60b3 100644 --- a/classes/Message.php +++ b/classes/Message.php @@ -89,4 +89,12 @@ class Message extends Memcached_DataObject $contentlimit = self::maxContent(); return ($contentlimit > 0 && !empty($content) && (mb_strlen($content) > $contentlimit)); } + + function notify() + { + $from = User::staticGet('id', $this->from_profile); + $to = User::staticGet('id', $this->to_profile); + + mail_notify_message($this, $from, $to); + } } diff --git a/lib/command.php b/lib/command.php index b30780bfb..67140c348 100644 --- a/lib/command.php +++ b/lib/command.php @@ -372,7 +372,7 @@ class MessageCommand extends Command } $message = Message::saveNew($this->user->id, $other->id, $this->text, $channel->source()); if ($message) { - mail_notify_message($message, $this->user, $other); + $message->notify(); $channel->output($this->user, sprintf(_('Direct message to %s sent'), $this->other)); } else { $channel->error($this->user, _('Error sending direct message.')); -- cgit v1.2.3-54-g00ecf