From cbabab273f38c0ee3750e03dd06e6043b2e576fe Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Thu, 9 Apr 2015 12:17:31 +0200 Subject: [PATCH] ImPlugin classes generally require background daemons in CLI 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 | 13 ++++++++++--- scripts/commandline.inc | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/implugin.php b/lib/implugin.php index 4ee9d85466..5b0f3dbe09 100644 --- a/lib/implugin.php +++ b/lib/implugin.php @@ -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; } diff --git a/scripts/commandline.inc b/scripts/commandline.inc index 89b61a34ab..392166a980 100644 --- a/scripts/commandline.inc +++ b/scripts/commandline.inc @@ -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"); -- 2.39.2