protected function _getArticleRelatedUsers(Article $article, User $triggered_by_user = null) { $u_id = $triggered_by_user instanceof User ? $triggered_by_user->getID() : $triggered_by_user; $subscribers = $article->getSubscribers(); $users = array(); foreach ($subscribers as $user) { if ($user->getNotificationSetting(self::NOTIFY_SUBSCRIBED_ARTICLES, true, 'mailing')->isOff()) { unset($users[$user->getID()]); } if ($user->getNotificationSetting(self::NOTIFY_UPDATED_SELF, true, 'mailing')->isOff() && $user->getID() == $u_id) { unset($users[$user->getID()]); } if ($user->getNotificationSetting(self::NOTIFY_ITEM_ONCE, false, 'mailing')->isOn() && $user->getNotificationSetting(self::NOTIFY_ITEM_ONCE . '_article_' . $article->getID(), false, 'mailing')->isOn()) { unset($users[$user->getID()]); } if ($user->getNotificationSetting(framework\Settings::SETTINGS_USER_NOTIFY_ONLY_IN_BOX_WHEN_ACTIVE, false, 'core')->isOn() && $user->isActive()) { unset($users[$user->getID()]); } } $mentioned_users = $article->getMentionedUsers(); foreach ($mentioned_users as $user) { $users[$user->getID()] = $user; if ($user->getNotificationSetting(self::NOTIFY_MENTIONED, true, 'mailing')->isOff()) { unset($users[$user->getID()]); } if ($user->getNotificationSetting(self::NOTIFY_ITEM_ONCE, false, 'mailing')->isOn() && $user->getNotificationSetting(self::NOTIFY_ITEM_ONCE . '_article_' . $article->getID(), false, 'mailing')->isOn()) { unset($users[$user->getID()]); } if ($user->getNotificationSetting(framework\Settings::SETTINGS_USER_NOTIFY_ONLY_IN_BOX_WHEN_ACTIVE, false, 'core')->isOn() && $user->isActive()) { unset($users[$user->getID()]); } } return $users; }