]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/queuemanager.php
Avoid having to check for notices without rendered copies in upgrade.php
[quix0rs-gnu-social.git] / lib / queuemanager.php
index 0e37ab0c530f84c363987adf881a430a06a60437..487104099a9e0c5d716be87e786907b9ae0980a2 100644 (file)
@@ -43,6 +43,7 @@ abstract class QueueManager extends IoManager
     protected $handlers = array();
     protected $groups = array();
     protected $activeGroups = array();
+    protected $ignoredTransports = array();
 
     /**
      * Factory function to pull the appropriate QueueManager object
@@ -180,7 +181,11 @@ abstract class QueueManager extends IoManager
         $object = unserialize($frame);
 
         // If it is a string, we really store a JSON object in there
-        if (is_string($object)) {
+        // except if it begins with '<', because then it is XML.
+        if (is_string($object) &&
+            substr($object, 0, 1) != '<' &&
+            !is_numeric($object))
+        {
             $json = json_decode($object);
             if ($json === null) {
                 throw new Exception('Bad frame in queue item');
@@ -229,8 +234,6 @@ abstract class QueueManager extends IoManager
             } else {
                 $this->_log(LOG_ERR, "Nonexistent handler class '$class' for queue '$queue'");
             }
-        } else {
-            $this->_log(LOG_ERR, "Requested handler for unkown queue '$queue'");
         }
         return null;
     }
@@ -253,6 +256,17 @@ abstract class QueueManager extends IoManager
         return array_keys($queues);
     }
 
+    function getIgnoredTransports()
+    {
+        return array_keys($this->ignoredTransports);
+    }
+
+    function ignoreTransport($transport)
+    {
+        // key is used for uniqueness, value doesn't mean anything
+        $this->ignoredTransports[$transport] = true;
+    }
+
     /**
      * Initialize the list of queue handlers for the current site.
      *