Add lose <nickname> command to the command interpreter
This commit is contained in:
parent
daccaeb748
commit
f0d1d07b94
@ -668,6 +668,34 @@ class LoginCommand extends Command
|
||||
}
|
||||
}
|
||||
|
||||
class LoseCommand extends Command
|
||||
{
|
||||
|
||||
var $other = null;
|
||||
|
||||
function __construct($user, $other)
|
||||
{
|
||||
parent::__construct($user);
|
||||
$this->other = $other;
|
||||
}
|
||||
|
||||
function execute($channel)
|
||||
{
|
||||
if(!$this->other) {
|
||||
$channel->error($this->user, _('Specify the name of the user to unsubscribe from'));
|
||||
return;
|
||||
}
|
||||
|
||||
$result=subs_unsubscribe_from($this->user, $this->other);
|
||||
|
||||
if ($result) {
|
||||
$channel->output($this->user, sprintf(_('Unsubscribed %s'), $this->other));
|
||||
} else {
|
||||
$channel->error($this->user, $result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class SubscriptionsCommand extends Command
|
||||
{
|
||||
function execute($channel)
|
||||
@ -750,6 +778,7 @@ class HelpCommand extends Command
|
||||
"d <nickname> <text> - direct message to user\n".
|
||||
"get <nickname> - get last notice from user\n".
|
||||
"whois <nickname> - get profile info on user\n".
|
||||
"lose <nickname> - force user to stop following you\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".
|
||||
|
@ -47,6 +47,17 @@ class CommandInterpreter
|
||||
} else {
|
||||
return new LoginCommand($user);
|
||||
}
|
||||
case 'lose':
|
||||
if ($arg) {
|
||||
list($other, $extra) = $this->split_arg($arg);
|
||||
if ($extra) {
|
||||
return null;
|
||||
} else {
|
||||
return new LoseCommand($user, $other);
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
case 'subscribers':
|
||||
if ($arg) {
|
||||
return null;
|
||||
|
45
lib/subs.php
45
lib/subs.php
@ -42,4 +42,47 @@ function subs_unsubscribe_to($user, $other)
|
||||
} catch (Exception $e) {
|
||||
return $e->getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function subs_unsubscribe_from($user, $other){
|
||||
$local = User::staticGet("nickname",$other);
|
||||
if($local){
|
||||
return subs_unsubscribe_to($local,$user);
|
||||
} else {
|
||||
try {
|
||||
$remote = Profile::staticGet("nickname",$other);
|
||||
if(is_string($remote)){
|
||||
return $remote;
|
||||
}
|
||||
if (Event::handle('StartUnsubscribe', array($remote,$user))) {
|
||||
|
||||
$sub = DB_DataObject::factory('subscription');
|
||||
|
||||
$sub->subscriber = $remote->id;
|
||||
$sub->subscribed = $user->id;
|
||||
|
||||
$sub->find(true);
|
||||
|
||||
// note we checked for existence above
|
||||
|
||||
if (!$sub->delete())
|
||||
return _('Couldn\'t delete subscription.');
|
||||
|
||||
$cache = common_memcache();
|
||||
|
||||
if ($cache) {
|
||||
$cache->delete(common_cache_key('user:notices_with_friends:' . $remote->id));
|
||||
}
|
||||
|
||||
|
||||
$user->blowSubscribersCount();
|
||||
$remote->blowSubscribersCount();
|
||||
|
||||
Event::handle('EndUnsubscribe', array($remote, $user));
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
return $e->getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user