X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fdistribqueuehandler.php;h=8f4b72d5c37e3128cb782aabea4475d0d1d88a14;hb=93bea7ff28434dee5202659a99a024476d43592f;hp=f458d238da97c77cdd6006ee821de09ab361c36b;hpb=e26a843caf9f6bb0d11a7128884db235ededcce0;p=quix0rs-gnu-social.git diff --git a/lib/distribqueuehandler.php b/lib/distribqueuehandler.php index f458d238da..8f4b72d5c3 100644 --- a/lib/distribqueuehandler.php +++ b/lib/distribqueuehandler.php @@ -49,36 +49,58 @@ class DistribQueueHandler } /** - * Here's the meat of your queue handler -- you're handed a Notice - * object, which you may do as you will with. + * Handle distribution of a notice after we've saved it: + * @li add to local recipient inboxes + * @li send email notifications to local @-reply targets + * @li run final EndNoticeSave plugin events + * @li put any remaining post-processing into the queues * * 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) { - // XXX: do we need to change this for remote users? - - $notice->saveTags(); - - $groups = $notice->saveGroups(); - - $recipients = $notice->saveReplies(); + try { + $notice->addToInboxes(); + } catch (Exception $e) { + $this->logit($notice, $e); + } - $notice->addToInboxes($groups, $recipients); + try { + $notice->sendReplyNotifications(); + } catch (Exception $e) { + $this->logit($notice, $e); + } - $notice->saveUrls(); + try { + Event::handle('EndNoticeSave', array($notice)); + // Enqueue for other handlers + } catch (Exception $e) { + $this->logit($notice, $e); + } - Event::handle('EndNoticeSave', array($notice)); + try { + common_enqueue_notice($notice); + } catch (Exception $e) { + $this->logit($notice, $e); + } - // Enqueue for other handlers + return true; + } - common_enqueue_notice($notice); + protected function logit($notice, $e) + { + common_log(LOG_ERR, "Distrib queue exception saving notice $notice->id: " . + $e->getMessage() . ' ' . + str_replace("\n", " ", $e->getTraceAsString())); - return true; + // We'll still return true so we don't get stuck in a loop + // trying to run a bad insert over and over... } }