private function getMessageContent($user, $is_update, $check_perms) { $ignore_perms = !$check_perms; $lang = $user->getLanguage(); $mailManager = new MailManager(); $format = $mailManager->getMailPreferencesByUser($user); $htmlBody = ''; if ($format == Codendi_Mail_Interface::FORMAT_HTML) { $htmlBody .= $this->getBodyHtml($is_update, $user, $lang, $ignore_perms); $htmlBody .= $this->getHTMLAssignedToFilter($user); } $txtBody = $this->getBodyText($is_update, $user, $lang, $ignore_perms); $txtBody .= $this->getTextAssignedToFilter($user); $subject = $this->getSubject($user, $ignore_perms); $message = array(); $message['htmlBody'] = $htmlBody; $message['txtBody'] = $txtBody; $message['subject'] = $subject; return $message; }
if ($request->valid(new Valid_WhiteList('user_csv_dateformat', PFUser::$csv_dateformats))) { $user_csv_dateformat = $request->get('user_csv_dateformat'); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('account_preferences', 'error_user_csv_dateformat')); } } $username_display = null; if ($request->existAndNonEmpty('username_display')) { if ($request->valid(new Valid_WhiteList('username_display', array(UserHelper::PREFERENCES_NAME_AND_LOGIN, UserHelper::PREFERENCES_LOGIN_AND_NAME, UserHelper::PREFERENCES_LOGIN, UserHelper::PREFERENCES_REAL_NAME)))) { $username_display = $request->get('username_display'); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('account_preferences', 'error_username_display')); } } $mailManager = new MailManager(); $user_tracker_mailformat = $mailManager->getMailPreferencesByUser($user); if ($request->existAndNonEmpty(Codendi_Mail_Interface::PREF_FORMAT)) { if ($request->valid(new Valid_WhiteList(Codendi_Mail_Interface::PREF_FORMAT, $mailManager->getAllMailFormats()))) { $user_tracker_mailformat = $request->get(Codendi_Mail_Interface::PREF_FORMAT); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('account_preferences', 'error_user_tracker_mailformat')); } } // // Perform the update // // User db_query("UPDATE user SET " . "mail_siteupdates=" . $form_mail_site . "," . "mail_va=" . $form_mail_va . "," . "theme='" . db_es($user_theme) . "'," . "sticky_login="******"," . "language_id='" . db_es($language_id) . "' WHERE " . "user_id=" . user_getid()); // Preferences user_set_preference("user_csv_separator", $user_csv_separator); user_set_preference("user_csv_dateformat", $user_csv_dateformat);
$can_change_password = true; $can_change_realname = true; $can_change_email = true; $extra_user_info = array(); $ssh_keys_extra_html = ''; $em->processEvent(Event::MANAGE_THIRD_PARTY_APPS, array('user' => $user, 'html' => &$third_paty_html)); $em->processEvent('display_change_password', array('allow' => &$can_change_password)); $em->processEvent('display_change_realname', array('allow' => &$can_change_realname)); $em->processEvent('display_change_email', array('allow' => &$can_change_email)); $em->processEvent('account_pi_entry', array('user' => $user, 'user_info' => &$extra_user_info)); $em->processEvent(Event::LIST_SSH_KEYS, array('user' => $user, 'html' => &$ssh_keys_extra_html)); $csrf = new CSRFSynchronizerToken('/account/index.php'); $mail_manager = new MailManager(); $tracker_formats = array(); foreach ($mail_manager->getAllMailFormats() as $format) { $tracker_formats[] = array('format' => $format, 'is_selected' => $format === $mail_manager->getMailPreferencesByUser($user)); } $all_themes = array(); $themes = util_get_theme_list(); natcasesort($themes); foreach ($themes as $theme) { $is_default = $theme === $GLOBALS['sys_themedefault']; $is_selected = $is_default; if ($user->getTheme()) { $is_selected = $theme === $user->getTheme(); } $all_themes[] = array('theme_name' => $theme, 'is_selected' => $is_selected, 'is_default' => $is_default); } $languages_html = array(); foreach ($GLOBALS['Language']->getLanguages() as $code => $lang) { $languages_html[] = array('lang' => $lang, 'code' => $code, 'is_selected' => $user->getLocale() === $code);
/** * Build the reminder messages * * @param Tracker_DateReminder $reminder Reminder that will send notifications * @param Tracker_Artifact $artifact Artifact for which reminders will be sent * @param Array $messages Messages * @param PFUser $user Receipient * * return Array */ protected function buildMessage(Tracker_DateReminder $reminder, Tracker_Artifact $artifact, &$messages, $user) { $mailManager = new MailManager(); $recipient = $user->getEmail(); $lang = $user->getLanguage(); $format = $mailManager->getMailPreferencesByUser($user); //We send multipart mail: html & text body in case of preferences set to html $htmlBody = ''; if ($format == Codendi_Mail_Interface::FORMAT_HTML) { $htmlBody .= $this->getBodyHtml($reminder, $artifact, $user, $lang); } $txtBody = $this->getBodyText($reminder, $artifact, $user, $lang); $subject = $this->getSubject($reminder, $artifact, $user); $headers = array(); $hash = md5($htmlBody . $txtBody . serialize($headers) . serialize($subject)); if (isset($messages[$hash])) { $messages[$hash]['recipients'][] = $recipient; } else { $messages[$hash] = array('headers' => $headers, 'htmlBody' => $htmlBody, 'txtBody' => $txtBody, 'subject' => $subject, 'recipients' => array($recipient)); } }
/** * Remind a user about the document he is supposed to review * * @param Docman_ApprovalTable $table Approval table * @param Integer $reviewerId Id of the reviewer * * @return Boolean */ private function notifyIndividual(Docman_ApprovalTable $table, $reviewerId) { $hp = Codendi_HTMLPurifier::instance(); $um = UserManager::instance(); $reviewer = $um->getUserById($reviewerId); if (!$reviewer->getEmail()) { return; } if ($table instanceof Docman_ApprovalTableFile) { $versionFactory = new Docman_VersionFactory(); $version = $versionFactory->getSpecificVersionById($table->getVersionId(), 'plugin_docman_version'); $itemId = ""; if ($version) { $itemId = $version->getItemId(); } } elseif ($table) { $itemId = $table->getItemId(); } if (!$itemId) { return; } $itemFactory = new Docman_ItemFactory(); $docmanItem = $itemFactory->getItemFromDb($itemId); if (!$docmanItem) { return; } $subject = $GLOBALS['Language']->getText('plugin_docman', 'approval_reminder_mail_subject', array($GLOBALS['sys_name'], $docmanItem->getTitle())); $mailMgr = new MailManager(); $mailPrefs = $mailMgr->getMailPreferencesByUser($reviewer); if ($mailPrefs == Codendi_Mail_Interface::FORMAT_HTML) { $html_body = $this->getBodyHtml($table, $docmanItem); } $text_body = $this->getBodyText($table, $docmanItem); $mail_notification_builder = new MailNotificationBuilder(new MailBuilder(TemplateRendererFactory::build())); return $mail_notification_builder->buildAndSendEmail($this->getItemProject($docmanItem), array($reviewer->getEmail()), $subject, $html_body, $text_body, $this->getReviewUrl($docmanItem), DocmanPlugin::TRUNCATED_SERVICE_NAME, new MailEnhancer()); }
function testGetMailPrefsByUsersShouldReturnHTMLWhenPreferenceReturnsFalse() { $mm = new MailManager(); $user = new MockUser(); $user->expectOnce('getPreference', array('user_tracker_mailformat')); $user->setReturnValue('getPreference', false); $this->assertEqual($mm->getMailPreferencesByUser($user), Codendi_Mail_Interface::FORMAT_HTML); }
/** * Notify after deleting monitoring for a user * * @param FRSPackage $package Id of th package * @param PFUser $user The deleted user * * @return Boolean */ function notifyAfterDelete(FRSPackage $package, PFUser $user) { $mailMgr = new MailManager(); $mailPrefs = $mailMgr->getMailPreferencesByUser($user); $mail = $this->prepareMail($package, $user); if ($mailPrefs == Codendi_Mail_Interface::FORMAT_HTML) { $htmlBody = $GLOBALS['Language']->getText('file_filemodule_monitor', 'delete_monitor_mail'); $htmlBody .= ' <a href="' . get_server_url() . '/file/showfiles.php?group_id=' . $package->getGroupID() . '&package_id=' . $package->getPackageID() . '" >' . $package->getName() . '</a>'; $htmlBody .= '<br /><br /><a href="' . get_server_url() . '/file/filemodule_monitor.php?group_id=' . $package->getGroupID() . '&filemodule_id=' . $package->getPackageID() . '" >' . $GLOBALS['Language']->getText('file_showfiles', 'start_monitoring') . '</a>'; $mail->setBodyHtml($htmlBody); } $txtBody = $GLOBALS['Language']->getText('file_filemodule_monitor', 'delete_monitor_mail') . ' "' . $package->getName() . '" : '; $txtBody .= get_server_url() . '/file/showfiles.php?group_id=' . $package->getGroupID() . '&package_id=' . $package->getPackageID(); $txtBody .= "\n\n" . $GLOBALS['Language']->getText('file_showfiles', 'start_monitoring') . ': '; $txtBody .= get_server_url() . '/file/filemodule_monitor.php?group_id=' . $package->getGroupID() . '&filemodule_id=' . $package->getPackageID(); $mail->setBodyText($txtBody); return $mail->send(); }
/** * Remind a user about the document he is supposed to review * * @param Docman_ApprovalTable $table Approval table * @param Integer $reviewerId Id of the reviewer * * @return Boolean */ private function notifyIndividual(Docman_ApprovalTable $table, $reviewerId) { $hp = Codendi_HTMLPurifier::instance(); $um = UserManager::instance(); $reviewer = $um->getUserById($reviewerId); if ($table instanceof Docman_ApprovalTableFile) { $versionFactory = new Docman_VersionFactory(); $version = $versionFactory->getSpecificVersionById($table->getVersionId(), 'plugin_docman_version'); $itemId = $version->getItemId(); } else { $itemId = $table->getItemId(); } $itemFactory = new Docman_ItemFactory(); $docmanItem = $itemFactory->getItemFromDb($itemId); $subject = $GLOBALS['Language']->getText('plugin_docman', 'approval_reminder_mail_subject', array($GLOBALS['sys_name'], $docmanItem->getTitle())); $mailMgr = new MailManager(); $mailPrefs = $mailMgr->getMailPreferencesByUser($reviewer); $mail = new Codendi_Mail(); $mail->getLookAndFeelTemplate()->set('title', $hp->purify($subject)); $mail->setFrom($GLOBALS['sys_noreply']); $mail->setTo($reviewer->getEmail()); $mail->setSubject($subject); if ($mailPrefs == Codendi_Mail_Interface::FORMAT_HTML) { $htmlBody = $this->getBodyHtml($table, $docmanItem); $mail->setBodyHtml($htmlBody); } $txtBody = $this->getBodyText($table, $docmanItem); $mail->setBodyText($txtBody); return $mail->send(); }