]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/finishremotesubscribe.php
ajax load for additional inline replies; /replies variant of conversationview
[quix0rs-gnu-social.git] / actions / finishremotesubscribe.php
index 44abbfceb793c31d9a74119cce11987643246948..59725af27f6c5b0f8cab234a1d4570f91e153a5e 100644 (file)
@@ -37,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 <evan@controlyourself.ca>
+ * @author   Evan Prodromou <evan@status.net>
  * @author   Robin Millette <millette@controlyourself.ca>
  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
  * @link     http://laconi.ca/
  */
 class FinishremotesubscribeAction extends Action
 {
-
     /**
      * Class handler.
      *
@@ -56,7 +55,7 @@ class FinishremotesubscribeAction extends Action
      *
      * @return nothing
      *
-     **/
+     */
     function handle($args)
     {
         parent::handle($args);
@@ -66,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;
         }
@@ -77,6 +77,7 @@ class FinishremotesubscribeAction extends Action
         $user = User::staticGet('uri', $service->getListeneeURI());
 
         if (!$user) {
+            // TRANS: Client error displayed when subscribing to a remote profile that does not exist.
             $this->clientError(_('User being listened to does not exist.'));
             return;
         }
@@ -84,17 +85,23 @@ class FinishremotesubscribeAction extends Action
         $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);
+            $profile = Profile::staticGet($remote->id);
 
-        if ($user->hasBlocked($profile)) {
-            $this->clientError(_('That user has blocked you from subscribing.'));
-            return;
+            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. */
@@ -103,14 +110,17 @@ class FinishremotesubscribeAction extends Action
         } catch (OAuthException $e) {
             if ($e->getMessage() == 'The authorized token does not equal the ' .
                                     'submitted token.') {
+                // TRANS: Client error displayed when subscribing to a remote profile without providing an authorised token.
                 $this->clientError(_('You are not authorized.'));
                 return;
             } else {
+                // 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) {
+            // 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;
@@ -122,6 +132,7 @@ 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    =
@@ -130,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;
         }
 
@@ -143,67 +155,4 @@ class FinishremotesubscribeAction extends Action
                                                              $user->nickname)),
                         303);
     }
-
-    function add_avatar($profile, $url)
-    {
-        $temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar');
-        copy($url, $temp_filename);
-        $imagefile = new ImageFile($profile->id, $temp_filename);
-        $filename = Avatar::filename($profile->id,
-                                     image_type_to_extension($imagefile->type),
-                                     null,
-                                     common_timestamp());
-        rename($temp_filename, Avatar::path($filename));
-        return $profile->setOriginal($filename);
-    }
-
-    function access_token($omb)
-    {
-
-        common_debug('starting request for access token', __FILE__);
-
-        $con = omb_oauth_consumer();
-        $tok = new OAuthToken($omb['token'], $omb['secret']);
-
-        common_debug('using request token "'.$tok.'"', __FILE__);
-
-        $url = $omb['access_token_url'];
-
-        common_debug('using access token url "'.$url.'"', __FILE__);
-
-        # XXX: Is this the right thing to do? Strip off GET params and make them
-        # POST params? Seems wrong to me.
-
-        $parsed = parse_url($url);
-        $params = array();
-        parse_str($parsed['query'], $params);
-
-        $req = OAuthRequest::from_consumer_and_token($con, $tok, "POST", $url, $params);
-
-        $req->set_parameter('omb_version', OMB_VERSION_01);
-
-        # XXX: test to see if endpoint accepts this signature method
-
-        $req->sign_request(omb_hmac_sha1(), $con, $tok);
-
-        # We re-use this tool's fetcher, since it's pretty good
-
-        common_debug('posting to access token url "'.$req->get_normalized_http_url().'"', __FILE__);
-        common_debug('posting request data "'.$req->to_postdata().'"', __FILE__);
-
-        $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
-        $result = $fetcher->post($req->get_normalized_http_url(),
-                                 $req->to_postdata(),
-                                 array('User-Agent: StatusNet/' . STATUSNET_VERSION));
-
-        common_debug('got result: "'.print_r($result,true).'"', __FILE__);
-
-        if ($result->status != 200) {
-            return null;
-        }
-
-        parse_str($result->body, $return);
-
-        return array($return['oauth_token'], $return['oauth_token_secret']);
-    }
 }