X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Ffinishremotesubscribe.php;h=59725af27f6c5b0f8cab234a1d4570f91e153a5e;hb=65bf58be806d19bc7fe962c0824160deab07d5c3;hp=13f367823536a3dee0105b4fe9934059bf67af77;hpb=4b2aa517501037e86e4a3c3bad3f363dcf8a26c6;p=quix0rs-gnu-social.git diff --git a/actions/finishremotesubscribe.php b/actions/finishremotesubscribe.php index 13f3678235..59725af27f 100644 --- a/actions/finishremotesubscribe.php +++ b/actions/finishremotesubscribe.php @@ -5,14 +5,14 @@ * PHP version 5 * * @category Action - * @package Laconica - * @author Evan Prodromou - * @author Robin Millette + * @package StatusNet + * @author Evan Prodromou + * @author Robin Millette * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://laconi.ca/ + * @link http://status.net/ * - * Laconica - a distributed open-source microblogging tool - * Copyright (C) 2008, 2009, Control Yourself, Inc. + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2008, 2009, StatusNet, Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -28,9 +28,7 @@ * along with this program. If not, see . **/ -if (!defined('LACONICA')) { - exit(1); -} +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } require_once INSTALLDIR.'/extlib/libomb/service_consumer.php'; require_once INSTALLDIR.'/lib/omb.php'; @@ -39,18 +37,17 @@ require_once INSTALLDIR.'/lib/omb.php'; * Handler for remote subscription finish callback * * When a remote user subscribes a local user, a redirect to this action is - * issued after the remote user authorized his service to subscribe. + * issued after the remote user authorized their service to subscribe. * * @category Action * @package Laconica - * @author Evan Prodromou + * @author Evan Prodromou * @author Robin Millette * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 * @link http://laconi.ca/ */ class FinishremotesubscribeAction extends Action { - /** * Class handler. * @@ -58,7 +55,7 @@ class FinishremotesubscribeAction extends Action * * @return nothing * - **/ + */ function handle($args) { parent::handle($args); @@ -68,6 +65,7 @@ class FinishremotesubscribeAction extends Action $service = unserialize($_SESSION['oauth_authorization_request']); if (!$service) { + // TRANS: Client error displayed when subscribing to a remote profile and an unexpected response is received. $this->clientError(_('Not expecting this response!')); return; } @@ -76,36 +74,55 @@ class FinishremotesubscribeAction extends Action /* Create user objects for both users. Do it early for request validation. */ - $listenee = $service->getListeneeURI(); - $user = User::staticGet('uri', $listenee); + $user = User::staticGet('uri', $service->getListeneeURI()); if (!$user) { - $this->clientError(_('User being listened to doesn\'t exist.')); + // TRANS: Client error displayed when subscribing to a remote profile that does not exist. + $this->clientError(_('User being listened to does not exist.')); return; } $other = User::staticGet('uri', $service->getListenerURI()); if ($other) { + // TRANS: Client error displayed when subscribing to a remote profile that is a local profile. $this->clientError(_('You can use the local subscription!')); return; } + $remote = Remote_profile::staticGet('uri', $service->getListenerURI()); + if ($remote) { + // Note remote profile may not have been saved yet. + // @fixme not convinced this is correct at all! + + $profile = Profile::staticGet($remote->id); + + if ($user->hasBlocked($profile)) { + // TRANS: Client error displayed when subscribing to a remote profile that is blocked form subscribing to. + $this->clientError(_('That user has blocked you from subscribing.')); + return; + } + } + /* Perform the handling itself via libomb. */ try { - $service->finishAuthorization($listenee); + $service->finishAuthorization(); } catch (OAuthException $e) { if ($e->getMessage() == 'The authorized token does not equal the ' . 'submitted token.') { - $this->clientError(_('Not authorized.')); + // TRANS: Client error displayed when subscribing to a remote profile without providing an authorised token. + $this->clientError(_('You are not authorized.')); return; } else { - $this->clientError(_('Couldn\'t convert request token to ' . + // TRANS: Client error displayed when subscribing to a remote profile and conversion of the request token to access token fails. + $this->clientError(_('Could not convert request token to ' . 'access token.')); return; } } catch (OMB_RemoteServiceException $e) { - $this->clientError(_('Unknown version of OMB protocol.')); + // TRANS: Client error displayed when subscribing to a remote profile fails because of an unsupported version of the OMB protocol. + $this->clientError(_('Remote service uses unknown version of ' . + 'OMB protocol.')); return; } catch (Exception $e) { common_debug('Got exception ' . print_r($e, true), __FILE__); @@ -116,7 +133,6 @@ class FinishremotesubscribeAction extends Action /* The service URLs are not accessible from datastore, so setting them after insertion of the profile. */ $remote = Remote_profile::staticGet('uri', $service->getListenerURI()); - $orig_remote = clone($remote); $remote->postnoticeurl = @@ -125,7 +141,8 @@ class FinishremotesubscribeAction extends Action $service->getServiceURI(OMB_ENDPOINT_UPDATEPROFILE); if (!$remote->update($orig_remote)) { - $this->serverError(_('Error updating remote profile')); + // TRANS: Server error displayed when subscribing to a remote profile fails because the remote profile could not be updated. + $this->serverError(_('Error updating remote profile.')); return; }