]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/OStatus/OStatusPlugin.php
showAvatar requires a profile
[quix0rs-gnu-social.git] / plugins / OStatus / OStatusPlugin.php
index d5411b705101ae9f84f9f4bd4d0d7fb3259070a8..42ee9a43efb86a5299adfff1dfd5249d1e0f4be8 100644 (file)
@@ -423,7 +423,12 @@ class OStatusPlugin extends Plugin
     {
         $oprofile = $this->pullRemoteProfile($arg);
         if ($oprofile instanceof Ostatus_profile && !$oprofile->isGroup()) {
-            $profile = $oprofile->localProfile();
+            try {
+                $profile = $oprofile->localProfile();
+            } catch (NoProfileException $e) {
+                // No locally stored profile found for remote profile
+                return true;
+            }
             return false;
         } else {
             return true;
@@ -611,10 +616,7 @@ class OStatusPlugin extends Plugin
             return true;
         }
 
-        if (!$oprofile->subscribe()) {
-            // TRANS: Exception thrown when setup of remote subscription fails.
-            throw new Exception(_m('Could not set up remote subscription.'));
-        }
+        $oprofile->subscribe();
     }
 
     /**
@@ -706,6 +708,7 @@ class OStatusPlugin extends Plugin
      * @param Profile    $profile
      *
      * @return mixed hook return value
+     * @throws Exception of various kinds, some from $oprofile->subscribe();
      */
     function onStartJoinGroup($group, $profile)
     {
@@ -714,10 +717,7 @@ class OStatusPlugin extends Plugin
             return true;
         }
 
-        if (!$oprofile->subscribe()) {
-            // TRANS: Exception thrown when setup of remote group membership fails.
-            throw new Exception(_m('Could not set up remote group membership.'));
-        }
+        $oprofile->subscribe();
 
         // NOTE: we don't use Group_member::asActivity() since that record
         // has not yet been created.
@@ -807,6 +807,7 @@ class OStatusPlugin extends Plugin
      * @param User         $user
      *
      * @return mixed hook return value
+     * @throws Exception of various kinds, some from $oprofile->subscribe();
      */
 
     function onStartSubscribePeopletag($peopletag, $user)
@@ -816,10 +817,7 @@ class OStatusPlugin extends Plugin
             return true;
         }
 
-        if (!$oprofile->subscribe()) {
-            // TRANS: Exception thrown when setup of remote list subscription fails.
-            throw new Exception(_m('Could not set up remote list subscription.'));
-        }
+        $oprofile->subscribe();
 
         $sub = $user->getProfile();
         $tagger = Profile::getKV($peopletag->tagger);
@@ -919,7 +917,7 @@ class OStatusPlugin extends Plugin
             return true;
         }
 
-        $fav = Fave::pkeyGet(array('user_id' => $user->id,
+        $fav = Fave::pkeyGet(array('user_id' => $profile->id,
                                    'notice_id' => $notice->id));
 
         if (!$fav instanceof Fave) {
@@ -942,6 +940,7 @@ class OStatusPlugin extends Plugin
      *
      * @param Profile_tag $ptag the people tag that was created
      * @return hook return value
+     * @throws Exception of various kinds, some from $oprofile->subscribe();
      */
     function onEndTagProfile($ptag)
     {
@@ -981,12 +980,7 @@ class OStatusPlugin extends Plugin
         $oprofile->notifyDeferred($act, $tagger);
 
         // initiate a PuSH subscription for the person being tagged
-        if (!$oprofile->subscribe()) {
-            // TRANS: Exception thrown when subscribing to a remote list fails.
-            throw new Exception(sprintf(_m('Could not complete subscription to remote '.
-                                          'profile\'s feed. List %s could not be saved.'), $ptag->tag));
-            return false;
-        }
+        $oprofile->subscribe();
         return true;
     }
 
@@ -1269,9 +1263,8 @@ class OStatusPlugin extends Plugin
     public static function localGroupFromUrl($url)
     {
         $group = User_group::getKV('uri', $url);
-        if ($group) {
-            $local = Local_group::getKV('group_id', $group->id);
-            if ($local) {
+        if ($group instanceof User_group) {
+            if ($group->isLocal()) {
                 return $group->id;
             }
         } else {
@@ -1348,16 +1341,16 @@ class OStatusPlugin extends Plugin
         $xrd->links[] = new XML_XRD_Element_Link(Salmon::NS_REPLIES, $salmon_url);
         $xrd->links[] = new XML_XRD_Element_Link(Salmon::NS_MENTIONS, $salmon_url);
 
-        // Get this user's keypair
-        $magickey = Magicsig::getKV('user_id', $target->id);
-        if (!($magickey instanceof Magicsig)) {
-            // No keypair yet, let's generate one.
-            $magickey = new Magicsig();
-            $magickey->generate($target->id);
+        // Get this profile's keypair
+        $magicsig = Magicsig::getKV('user_id', $target->id);
+        if (!$magicsig instanceof Magicsig && $target->isLocal()) {
+            $magicsig = Magicsig::generate($target->getUser());
         }
 
-        $xrd->links[] = new XML_XRD_Element_Link(Magicsig::PUBLICKEYREL,
-                            'data:application/magic-public-key,'. $magickey->toString(false));
+        if ($magicsig instanceof Magicsig) {
+            $xrd->links[] = new XML_XRD_Element_Link(Magicsig::PUBLICKEYREL,
+                                'data:application/magic-public-key,'. $magicsig->toString());
+        }
 
         // TODO - finalize where the redirect should go on the publisher
         $xrd->links[] = new XML_XRD_Element_Link('http://ostatus.org/schema/1.0/subscribe',