* 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.
* @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.
* @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);