]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/implugin.php
Merge branch 'master' of git.gnu.io:Quix0r/gnu-social
[quix0rs-gnu-social.git] / lib / implugin.php
index 9542d4d206d604633691360ad05cc391a26fc4b3..ff6eed3aa508b46327b9071c20a4531804c1f2cd 100644 (file)
@@ -49,6 +49,8 @@ abstract class ImPlugin extends Plugin
     //list of screennames that should get all public notices
     public $public = array();
 
+    protected $requires_cli = true;
+
     /**
      * normalize a screenname for comparison
      *
@@ -530,9 +532,14 @@ abstract class ImPlugin extends Plugin
      */
     function onEndInitializeQueueManager(QueueManager $manager)
     {
-        $manager->connect($this->transport . '-in', new ImReceiverQueueHandler($this), 'im');
-        $manager->connect($this->transport, new ImQueueHandler($this));
-        $manager->connect($this->transport . '-out', new ImSenderQueueHandler($this), 'im');
+        // If we don't require CLI mode, or if we do and GNUSOCIAL_CLI _is_ set, then connect the transports
+        // This check is made mostly because some IM plugins can't deliver to transports unless they
+        // have continously running daemons (such as XMPP) and we can't have that over HTTP requests.
+        if (!$this->requires_cli || defined('GNUSOCIAL_CLI')) {
+            $manager->connect($this->transport . '-in', new ImReceiverQueueHandler($this), 'im');
+            $manager->connect($this->transport, new ImQueueHandler($this));
+            $manager->connect($this->transport . '-out', new ImSenderQueueHandler($this), 'im');
+        }
         return true;
     }