]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
ImPlugin classes generally require background daemons in CLI
authorMikael Nordfeldth <mmn@hethane.se>
Thu, 9 Apr 2015 10:17:31 +0000 (12:17 +0200)
committerMikael Nordfeldth <mmn@hethane.se>
Thu, 9 Apr 2015 10:17:31 +0000 (12:17 +0200)
If someone designs an ImPlugin which _doesn't_ require the queues to be
handled in background daemons then they can set the requires_cli property
to false in their class.

lib/implugin.php
scripts/commandline.inc

index 4ee9d854663e22cd240df05d189da15b28a938b4..5b0f3dbe092fa42dbd73d01dc3e727392151d1bb 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($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;
     }
 
index 89b61a34aba87ef83eca47a028dcc012337183c1..392166a98088dae0ca2f563b0a1709b68ccc7e9b 100644 (file)
@@ -29,6 +29,8 @@ if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
 define('GNUSOCIAL', true);
 define('STATUSNET', true); //compatibility
 
+define('GNUSOCIAL_CLI', true);  // to know we're in a CLI environment
+
 // Set various flags so we don't time out on long-running processes
 
 ini_set("max_execution_time", "0");