/**
  *
  * @param array $aResponsibleEditorIds
  * @param User $oUser
  * @param array $aTitles
  * @param string $sAction
  */
 public static function notifyResponsibleEditors($aResponsibleEditorIds, $oUser, $aTitles, $sAction)
 {
     if (empty($aResponsibleEditorIds)) {
         return true;
     }
     foreach ($aResponsibleEditorIds as $iUserId) {
         $oREUser = User::newFromId($iUserId);
         if ($iUserId == $oUser->getId()) {
             continue;
         }
         if (BsConfig::getVarForUser("MW::ResponsibleEditors::E" . ucfirst($sAction), $oREUser) === false) {
             continue;
         }
         $sUserRealName = BsCore::getInstance()->getUserDisplayName($oUser);
         $sUsername = $oUser->getName();
         $sArticleName = $aTitles[0]->getText();
         $sArticleLink = $aTitles[0]->getFullURL();
         $sLanguageCode = $oREUser->getOption('language');
         switch ($sAction) {
             case 'change':
                 $sSubject = wfMessage('bs-responsibleeditors-mail-subject-re-article-changed', $sArticleName, $sUsername, $sUserRealName)->inLanguage($sLanguageCode)->text();
                 $sMessage = wfMessage('bs-responsibleeditors-mail-text-re-article-changed', $sArticleName, $sUsername, $sUserRealName, $sArticleLink)->inLanguage($sLanguageCode)->text();
                 break;
             case 'delete':
                 $sSubject = wfMessage('bs-responsibleeditors-mail-subject-re-article-deleted', $sArticleName, $sUsername, $sUserRealName)->inLanguage($sLanguageCode)->text();
                 $sMessage = wfMessage('bs-responsibleeditors-mail-text-re-article-deleted', $sArticleName, $sUsername, $sUserRealName, $sArticleLink)->inLanguage($sLanguageCode)->text();
                 break;
             case 'move':
                 $sSubject = wfMessage('bs-responsibleeditors-mail-subject-re-article-moved', $sArticleName, $sUsername, $sUserRealName)->inLanguage($sLanguageCode)->text();
                 $sMessage = wfMessage('bs-responsibleeditors-mail-text-re-article-moved', $sArticleName, $aTitles[1]->getPrefixedText(), $sUsername, $sUserRealName, $sArticleLink)->inLanguage($sLanguageCode)->text();
                 break;
             default:
                 wfDebugLog('BS::ResponsibleEditors::notifyResponsibleEditors', 'Action "' . $sAction . '" is unknown. No mails sent.');
                 return;
         }
         BsMailer::getInstance('MW')->send($oREUser, $sSubject, $sMessage);
     }
 }
 /**
  * Send email notification to next user(s) on review list.
  * @param BsReviewProcess $oReviewProcess Review process users should be notified for.
  * @return Status
  */
 public function emailNotifyNextUsers($oReviewProcess)
 {
     $aNextUsers = $oReviewProcess->getNextUsers();
     // Identify owner
     $oOwner = User::newFromId($oReviewProcess->getOwner());
     $sOwnerRealName = BsCore::getUserDisplayName($oOwner);
     $oTitle = Title::newFromID($oReviewProcess->pid);
     $sTitleText = $oTitle->getPrefixedText();
     $sLink = BsLinkProvider::makeLink($oTitle, $oTitle->getFullURL());
     foreach ($aNextUsers as $aReviewer) {
         // dirty workaround, sometimes id comes as username
         if (is_numeric($aReviewer['id'])) {
             $oReviewer = User::newFromId($aReviewer['id']);
         } else {
             $oReviewer = User::newFromName($aReviewer['id']);
         }
         if (!BsConfig::getVarForUser('MW::Review::EmailNotifyReviewer', $oReviewer->getName())) {
             continue;
         }
         // Identify reviewer
         //PW(10.03.2015): Echo notifications
         $sReviewerMail = $oReviewer->getEmail();
         if (!$sReviewerMail) {
             continue;
         }
         $sReviewerLang = $oReviewer->getOption('language');
         $sSubject = wfMessage('bs-review-mail-invite-header', $sTitleText)->inLanguage($sReviewerLang)->text();
         $sMsg = wfMessage('bs-review-mail-invite-body', $sOwnerRealName, $oOwner->getName(), $sTitleText)->inLanguage($sReviewerLang)->text();
         $sMsg .= "\n\n" . $sLink;
         if ($aReviewer['comment']) {
             $sMsg .= "\n" . wfMessage('bs-review-mail-comment', $aReviewer['comment'])->inLanguage($sReviewerLang)->text();
         }
         //Send mail to next user in queue
         BsMailer::getInstance('MW')->send($oReviewer, $sSubject, $sMsg);
     }
 }