]> 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 8f4b72d5c37e3128cb782aabea4475d0d1d88a14..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,33 +58,45 @@ 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)
     {
+        // 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 {
-            $notice->addToInboxes();
+            $notice->sendReplyNotifications();
         } catch (Exception $e) {
             $this->logit($notice, $e);
         }
 
         try {
-            $notice->sendReplyNotifications();
+            Event::handle('EndNoticeDistribute', array($notice));
         } catch (Exception $e) {
             $this->logit($notice, $e);
         }
 
         try {
             Event::handle('EndNoticeSave', array($notice));
-            // Enqueue for other handlers
         } catch (Exception $e) {
             $this->logit($notice, $e);
         }
 
         try {
+            // Enqueue for other handlers
             common_enqueue_notice($notice);
         } catch (Exception $e) {
             $this->logit($notice, $e);