X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fdisfavor.php;h=3e3e4a5476d48e43743c3807cb07f5df20455fd5;hb=bc15d027a804e60e76bdaf6fd47e69d41b395e7e;hp=467a52df5d88602b7afcdbf110740c3a1d33b433;hpb=59ef19b7d3fa6aa326cebf528a30dcae42631204;p=quix0rs-gnu-social.git diff --git a/actions/disfavor.php b/actions/disfavor.php index 467a52df5d..3e3e4a5476 100644 --- a/actions/disfavor.php +++ b/actions/disfavor.php @@ -19,54 +19,67 @@ if (!defined('LACONICA')) { exit(1); } -class DisfavorAction extends Action { - - function handle($args) { - - parent::handle($args); - - if (!common_logged_in()) { - common_user_error(_('Not logged in.')); - return; - } - - $user = common_current_user(); - - if ($_SERVER['REQUEST_METHOD'] != 'POST') { - common_redirect(common_local_url('favorites', array('nickname' => $user->nickname))); - return; - } - - $token = $this->trimmed('token'); - - if (!$token || $token != common_session_token()) { - $this->client_error(_('There was a problem with your session token. Try again, please.')); - return; - } - - $id = $this->trimmed('notice'); - - $notice = Notice::staticGet($id); - - $fave = new Fave(); - $fave->user_id = $this->id; - $fave->notice_id = $notice->id; - if (!$fave->find(true)) { - $this->client_error(_('This notice is not a favorite!')); - return; - } - - $result = $fave->delete(); - - if (!$result) { - common_log_db_error($fave, 'DELETE', __FILE__); - $this->server_error(_('Could not delete favorite.')); - return; - } - - # XXX: ajax response - - common_redirect(common_local_url('favorites', - array('nickname' => $user->nickname))); - } -} \ No newline at end of file +class DisfavorAction extends Action +{ + + function handle($args) + { + + parent::handle($args); + + if (!common_logged_in()) { + $this->clientError(_('Not logged in.')); + return; + } + + $user = common_current_user(); + + if ($_SERVER['REQUEST_METHOD'] != 'POST') { + common_redirect(common_local_url('showfavorites', array('nickname' => $user->nickname))); + return; + } + + $id = $this->trimmed('notice'); + + $notice = Notice::staticGet($id); + + $token = $this->trimmed('token-'.$notice->id); + + if (!$token || $token != common_session_token()) { + $this->clientError(_("There was a problem with your session token. Try again, please.")); + return; + } + + $fave = new Fave(); + $fave->user_id = $this->id; + $fave->notice_id = $notice->id; + if (!$fave->find(true)) { + $this->clientError(_('This notice is not a favorite!')); + return; + } + + $result = $fave->delete(); + + if (!$result) { + common_log_db_error($fave, 'DELETE', __FILE__); + $this->serverError(_('Could not delete favorite.')); + return; + } + + $user->blowFavesCache(); + + if ($this->boolean('ajax')) { + $this->startHTML('text/xml;charset=utf-8', true); + $this->elementStart('head'); + $this->element('title', null, _('Add to favorites')); + $this->elementEnd('head'); + $this->elementStart('body'); + common_favor_form($notice); + $this->elementEnd('body'); + $this->elementEnd('html'); + } else { + common_redirect(common_local_url('showfavorites', + array('nickname' => $user->nickname))); + } + } +}