diff options
Diffstat (limited to 'actions/unsubscribe.php')
-rw-r--r-- | actions/unsubscribe.php | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/actions/unsubscribe.php b/actions/unsubscribe.php new file mode 100644 index 000000000..c4e6b9891 --- /dev/null +++ b/actions/unsubscribe.php @@ -0,0 +1,35 @@ +<?php + +class UnsubscribeAction extends Action { + function handle($args) { + parent::handle($args); + if (!common_logged_in()) { + common_user_error(_t('Not logged in.')); + return; + } + $other_nickname = $this->arg('unsubscribeto'); + $other = User::staticGet('nickname', $other_nickname); + if (!$other) { + common_user_error(_t('No such user.')); + return; + } + + $user = common_current_user(); + + if (!$user->isSubscribed($other)) { + common_server_error(_t('Not subscribed!.')); + } + + $sub = new Subscription(); + $sub->subscriber = $user->id; + $sub->subscribed = $other->id; + + if (!$sub->delete()) { + common_server_error(_t('Couldn\'t delete subscription.')); + return; + } + + common_redirect(common_local_url('all', array('nickname' => + $user->nickname))); + } +} |