]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/implugin.php
Modernize Queue_item to use Managed_DataObject functions
[quix0rs-gnu-social.git] / lib / implugin.php
index def9a942c90b27620053f0b826c26a072a00f0ca..2da4fa961a6cf4962a1dafbdcbb80b72235334b4 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
      *
@@ -375,9 +377,10 @@ abstract class ImPlugin extends Plugin
         $profile = $notice->getProfile();
 
         try {
-            $orig_profile = $notice->getParent()->getProfile();
+            $parent = $notice->getParent();
+            $orig_profile = $parent->getProfile();
             $nicknames = sprintf('%1$s => %2$s', $profile->nickname, $orig_profile->nickname);
-        } catch (Exception $e) {
+        } catch (NoParentNoticeException $e) {
             $nicknames = $profile->nickname;
         }
 
@@ -399,9 +402,8 @@ abstract class ImPlugin extends Plugin
             $chan = new IMChannel($this);
             $cmd->execute($chan);
             return true;
-        } else {
-            return false;
         }
+        return false;
     }
 
     /**
@@ -529,9 +531,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;
     }