예제 #1
0
 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;
 }