]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/distribqueuehandler.php
Don't accept non-objects before testing with "instanceof".
[quix0rs-gnu-social.git] / lib / distribqueuehandler.php
index a7519c1d50729465000f6155f61d31f20e2bbe5f..036d970f2af9c3be343ffa36d350265b690895ac 100644 (file)
@@ -17,7 +17,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+if (!defined('GNUSOCIAL') && !defined('STATUSNET')) { exit(1); }
 
 /**
  * Base class for queue handlers.
@@ -43,7 +43,7 @@ class DistribQueueHandler
      * @return string
      */
 
-    function transport()
+    public function transport()
     {
         return 'distrib';
     }
@@ -58,17 +58,23 @@ class DistribQueueHandler
      * If this function indicates failure, a warning will be logged
      * and the item is placed back in the queue to be re-run.
      *
-     * @fixme addToInboxes is known to fail sometimes with large recipient sets
-     *
      * @param Notice $notice
      * @return boolean true on success, false on failure
      */
-    function handle($notice)
+    public function handle(Notice $notice)
     {
-        try {
-            $notice->addToInboxes();
-        } catch (Exception $e) {
-            $this->logit($notice, $e);
+        // We have to manually add attentions to non-profile subs and non-mentions
+        $ptAtts = $notice->getAttentionsFromProfileTags();
+        foreach (array_keys($ptAtts) as $profile_id) {
+            $profile = Profile::getKV('id', $profile_id);
+            if ($profile instanceof Profile) {
+                try {
+                    common_debug('Adding Attention for '.$notice->getID().' profile '.$profile->getID());
+                    Attention::saveNew($notice, $profile);
+                } catch (Exception $e) {
+                    $this->logit($notice, $e);
+                }
+            }
         }
 
         try {