X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fdistribqueuehandler.php;h=036d970f2af9c3be343ffa36d350265b690895ac;hb=046d070ad46bb58096664dabb6f7c13a062d847d;hp=d2be7a92c72488d846374bb27413f103490fd34d;hpb=79c0d52daa92b60e8eed80fa9459367c26f97122;p=quix0rs-gnu-social.git diff --git a/lib/distribqueuehandler.php b/lib/distribqueuehandler.php index d2be7a92c7..036d970f2a 100644 --- a/lib/distribqueuehandler.php +++ b/lib/distribqueuehandler.php @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } +if (!defined('GNUSOCIAL') && !defined('STATUSNET')) { exit(1); } /** * Base class for queue handlers. @@ -43,14 +43,17 @@ class DistribQueueHandler * @return string */ - function transport() + public function transport() { return 'distrib'; } /** - * 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. @@ -58,24 +61,42 @@ class DistribQueueHandler * @param Notice $notice * @return boolean true on success, false on failure */ - function handle($notice) + public function handle(Notice $notice) { - // XXX: do we need to change this for remote users? + // 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->sendReplyNotifications(); + } catch (Exception $e) { + $this->logit($notice, $e); + } try { - $notice->addToInboxes(); + 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);