]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/OStatus/OStatusPlugin.php
do some double-checks on favor and disfavor handlers in OStatusPlugin
[quix0rs-gnu-social.git] / plugins / OStatus / OStatusPlugin.php
index 1b58d3c35620dabc16a211a729d2f8bd7029b464..29799b0dc1fd9bc08ad745a88ba6a9debbff1e73 100644 (file)
@@ -63,10 +63,10 @@ class OStatusPlugin extends Plugin
 
         // Salmon endpoint
         $m->connect('main/salmon/user/:id',
-                    array('action' => 'salmon'),
+                    array('action' => 'usersalmon'),
                     array('id' => '[0-9]+'));
         $m->connect('main/salmon/group/:id',
-                    array('action' => 'salmongroup'),
+                    array('action' => 'groupsalmon'),
                     array('id' => '[0-9]+'));
         return true;
     }
@@ -255,7 +255,7 @@ class OStatusPlugin extends Plugin
     {
         if ($user instanceof Profile) {
             $profile = $user;
-        } else if ($user instanceof Profile) {
+        } else if ($user instanceof User) {
             $profile = $user->getProfile();
         }
         $oprofile = Ostatus_profile::staticGet('profile_id', $other->id);
@@ -335,4 +335,74 @@ class OStatusPlugin extends Plugin
             common_log(LOG_DEBUG, "No ostatus profile for incoming feed $feedsub->uri");
         }
     }
+
+    function onEndSubscribe($subscriber, $other)
+    {
+        $user = User::staticGet('id', $subscriber->id);
+
+        if (empty($user)) {
+            return true;
+        }
+
+        $oprofile = Ostatus_profile::staticGet('profile_id', $other->id);
+
+        if (empty($oprofile)) {
+            return true;
+        }
+
+        // We have a local user subscribing to a remote profile; make the
+        // magic happen!
+
+        $oprofile->notify($subscriber, ActivityVerb::FOLLOW, $oprofile);
+
+        return true;
+    }
+
+    /**
+     * Notify remote users when their notices get favorited.
+     *
+     * @param Profile or User $profile of local user doing the faving
+     * @param Notice $notice being favored
+     * @return hook return value
+     */
+    function onEndFavorNotice(Profile $profile, Notice $notice)
+    {
+        $user = User::staticGet('id', $profile->id);
+
+        if (empty($user)) {
+            return true;
+        }
+
+        $oprofile = Ostatus_profile::staticGet('profile_id', $notice->profile_id);
+
+        if ($oprofile) {
+            $oprofile->notify($profile, ActivityVerb::FAVORITE, $notice);
+        }
+
+        return true;
+    }
+
+    /**
+     * Notify remote users when their notices get de-favorited.
+     *
+     * @param Profile or User $profile of local user doing the de-faving
+     * @param Notice $notice being favored
+     * @return hook return value
+     */
+    function onEndDisfavorNotice(Profile $profile, Notice $notice)
+    {
+        $user = User::staticGet('id', $profile->id);
+
+        if (empty($user)) {
+            return true;
+        }
+
+        $oprofile = Ostatus_profile::staticGet('profile_id', $notice->profile_id);
+
+        if ($oprofile) {
+            $oprofile->notify($profile, ActivityVerb::UNFAVORITE, $notice);
+        }
+
+        return true;
+    }
 }