]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Skip enqueueing to outgoing bridges on incoming remote messages. Twitter, Facebook...
authorBrion Vibber <brion@pobox.com>
Thu, 3 Jun 2010 23:58:45 +0000 (16:58 -0700)
committerBrion Vibber <brion@pobox.com>
Thu, 3 Jun 2010 23:58:45 +0000 (16:58 -0700)
Notice::isLocal() can replace a number of manual checks for $notice->is_local being LOCAL_PUBLIC or LOCAL_NONPUBLIC.

classes/Notice.php
lib/util.php
plugins/Facebook/FacebookPlugin.php
plugins/OStatus/OStatusPlugin.php
plugins/RSSCloud/RSSCloudPlugin.php
plugins/TwitterBridge/TwitterBridgePlugin.php

index 3d7d21533b55a8b537cb9f96d165502bd89a04d5..cda6328853affe577fec764d6cd87f929a6623d5 100644 (file)
@@ -1861,4 +1861,16 @@ class Notice extends Memcached_DataObject
         return $ns;
     }
 
+    /**
+     * Determine whether the notice was locally created
+     *
+     * @return boolean locality
+     */
+
+    public function isLocal()
+    {
+        return ($this->is_local == Notice::LOCAL_PUBLIC ||
+                $this->is_local == Notice::LOCAL_NONPUBLIC);
+    }
+
 }
index 59d5132ec60d86873e8d80274a42f5e8b5563570..049001abaf982b299ddfc89fa7bf6696e06b0f93 100644 (file)
@@ -1235,9 +1235,8 @@ function common_enqueue_notice($notice)
         $transports[] = 'jabber';
     }
 
-    // @fixme move these checks into QueueManager and/or individual handlers
-    if ($notice->is_local == Notice::LOCAL_PUBLIC ||
-        $notice->is_local == Notice::LOCAL_NONPUBLIC) {
+    // We can skip these for gatewayed notices.
+    if ($notice->isLocal()) {
         $transports = array_merge($transports, $localTransports);
         if ($xmpp) {
             $transports[] = 'public';
index 5dba73a5d8574a63f63c852229ae15a0b478b739..19989a952e6e5757b1b1ab94f9d9acbf5457d8c8 100644 (file)
@@ -585,7 +585,7 @@ class FacebookPlugin extends Plugin
 
     function onStartEnqueueNotice($notice, &$transports)
     {
-        if (self::hasKeys()) {
+        if (self::hasKeys() && $notice->isLocal()) {
             array_push($transports, 'facebook');
         }
         return true;
index 5b153216ef0c09c7f09939bb577ef25a8c0a67b2..5a657c83d00875ee8af6923cc620fb465853e763 100644 (file)
@@ -102,8 +102,10 @@ class OStatusPlugin extends Plugin
      */
     function onStartEnqueueNotice($notice, &$transports)
     {
-        // put our transport first, in case there's any conflict (like OMB)
-        array_unshift($transports, 'ostatus');
+        if ($notice->isLocal()) {
+            // put our transport first, in case there's any conflict (like OMB)
+            array_unshift($transports, 'ostatus');
+        }
         return true;
     }
 
index 661c32141faedf7a3f23c4edf86036543b3365df..c1951cdbf856b31931ae83d6cb82fcf9c61b1e20 100644 (file)
@@ -192,24 +192,12 @@ class RSSCloudPlugin extends Plugin
 
     function onStartEnqueueNotice($notice, &$transports)
     {
-        array_push($transports, 'rsscloud');
+        if ($notice->isLocal()) {
+            array_push($transports, 'rsscloud');
+        }
         return true;
     }
 
-    /**
-     * Determine whether the notice was locally created
-     *
-     * @param Notice $notice the notice in question
-     *
-     * @return boolean locality
-     */
-
-    function _isLocal($notice)
-    {
-        return ($notice->is_local == Notice::LOCAL_PUBLIC ||
-                $notice->is_local == Notice::LOCAL_NONPUBLIC);
-    }
-
     /**
      * Create the rsscloud_subscription table if it's not
      * already in the DB
index 1a0a69682a269b1eb7c50f4232e35f42e09d4e54..65b3a6b38ece6fea543887e8717160f1a0c0a0e1 100644 (file)
@@ -221,7 +221,7 @@ class TwitterBridgePlugin extends Plugin
      */
     function onStartEnqueueNotice($notice, &$transports)
     {
-        if (self::hasKeys()) {
+        if (self::hasKeys() && $notice->isLocal()) {
             // Avoid a possible loop
             if ($notice->source != 'twitter') {
                 array_push($transports, 'twitter');