]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/implugin.php
Start using NoParentNoticeException more widely
[quix0rs-gnu-social.git] / lib / implugin.php
index a6a9a3dad95fde75e94de6a7dca3f0b1b5242b68..98fba19911ebe8d8ffac6162089fe7c664e4bc4b 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
      *
@@ -84,7 +86,7 @@ abstract class ImPlugin extends Plugin
      *
      * @return boolean success value
      */
-    function sendNotice($screenname, $notice)
+    function sendNotice($screenname, Notice $notice)
     {
         return $this->sendMessage($screenname, $this->formatNotice($notice));
     }
@@ -370,19 +372,19 @@ abstract class ImPlugin extends Plugin
      * @return string plain-text version of the notice, with user nickname prefixed
      */
 
-    function formatNotice($notice)
+    protected function formatNotice(Notice $notice)
     {
         $profile = $notice->getProfile();
-        $nicknames = $profile->nickname;
-        if (!empty($notice->reply_to)) {
-            $orig_notice = $notice->getParent();
-            $orig_profile = $orig_notice->getProfile();
-            $nicknames = $nicknames . " => " . $orig_profile->nickname;
+
+        try {
+            $parent = $notice->getParent();
+            $orig_profile = $parent->getProfile();
+            $nicknames = sprintf('%1$s => %2$s', $profile->nickname, $orig_profile->nickname);
+        } catch (NoParentNoticeException $e) {
+            $nicknames = $profile->nickname;
         }
-        common_log(LOG_INFO, "Notice: " . $notice->content, __FILE__);
-        $data = $nicknames . ': ' . $notice->content . ' [' . $notice->id . ']';
-        return $data;
 
+        return sprintf('%1$s: %2$s [%3$u]', $nicknames, $notice->content, $notice->id);
     }
     //========================UTILITY FUNCTIONS USEFUL TO IMPLEMENTATIONS - RECEIVING ========================\
 
@@ -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;
     }