/** * Send a new forum message for moderation to the moderator(s). * * @param array $message * An array containing the data for a forum message. */ function phorum_api_mail_message_moderate($message) { // Not "global $PHORUM", because we do not want the loading of language // files to override our already loaded language file. $PHORUM = $GLOBALS['PHORUM']; // Retrieve the list of moderators for the current forum. $moderators = phorum_api_user_list_moderators($PHORUM['forum_id'], $PHORUM['email_ignore_admin'], TRUE); // The list moderators function returns user_id => mail address. // We want the full user info, so we can lookup the preferred // language for the moderators. $moderators = phorum_api_user_get(array_keys($moderators)); // Sort all moderators by their preferred language. $recipients = array(); foreach ($moderators as $moderator) { if (!isset($recipients[$moderator['user_language']])) { $recipients[$moderator['user_language']] = array($moderator['email']); } else { $recipients[$moderator['user_language']][] = $moderator['email']; } } // No moderators (oomph)? Then we are done. if (empty($recipients)) { return; } if ($message['status'] > 0) { $mailsubjecttpl = 'NewUnModeratedSubject'; $mailmessagetpl = 'NewUnModeratedMessage'; } else { $mailsubjecttpl = 'NewModeratedSubject'; $mailmessagetpl = 'NewModeratedMessage'; } $mail_data = array('forumname' => strip_tags($PHORUM['DATA']['NAME']), 'forum_id' => $message['forum_id'], 'message_id' => $message['message_id'], 'author' => phorum_api_user_get_display_name($message['user_id'], $message['author'], PHORUM_FLAG_PLAINTEXT), 'subject' => $message['subject'], 'fully_body' => $message['body'], 'plain_body' => wordwrap(phorum_api_format_strip($message['body']), 72), 'approve_url' => phorum_api_url_no_uri_auth(PHORUM_CONTROLCENTER_URL, 'panel=messages'), 'read_url' => phorum_api_url_no_uri_auth(PHORUM_READ_URL, $message['thread'], $message['message_id']), 'mailmessagetpl' => $mailmessagetpl, 'mailsubjecttpl' => $mailsubjecttpl); foreach ($recipients as $language => $addresses) { $language = basename($language); if (file_exists(PHORUM_PATH . "/include/lang/{$language}.php")) { $mail_data['language'] = $language; include PHORUM_PATH . "/include/lang/{$language}.php"; } else { $mail_data['language'] = $PHORUM['language']; include PHORUM_PATH . "/include/lang/{$PHORUM['language']}.php"; } $mail_data['mailmessage'] = $PHORUM['DATA']['LANG'][$mailmessagetpl]; $mail_data['mailsubject'] = $PHORUM['DATA']['LANG'][$mailsubjecttpl]; phorum_api_mail($addresses, $mail_data); } }
$report = false; $template = "report"; $message = array(); // get the message if (isset($PHORUM["args"][1]) && is_numeric($PHORUM["args"][1])) { $message_id = $PHORUM["args"][1]; $message = phorum_db_get_message($message_id); } if (is_array($message) && count($message)) { // check for report requests if (!empty($_POST["report"])) { if ($PHORUM["DATA"]["LOGGEDIN"]) { if (empty($_POST["explanation"])) { $_POST["explanation"] = "<" . $PHORUM["DATA"]["LANG"]["None"] . ">"; } $mail_users = phorum_api_user_list_moderators($PHORUM['forum_id'], $PHORUM['email_ignore_admin'], TRUE); if (count($mail_users)) { $mail_data = array("mailmessage" => $PHORUM["DATA"]["LANG"]['ReportPostEmailBody'], "mailsubject" => $PHORUM["DATA"]["LANG"]['ReportPostEmailSubject'], "forumname" => $PHORUM["DATA"]["NAME"], "reportedby" => $PHORUM["user"]["display_name"], "author" => $message["author"], "subject" => $message["subject"], "body" => wordwrap($message["body"], 72), "ip" => $message["ip"], "raw_date" => $message["datestamp"], "date" => phorum_date($PHORUM["short_date_time"], $message["datestamp"]), "explanation" => wordwrap($_POST["explanation"], 72), "url" => phorum_get_url(PHORUM_READ_URL, $message["thread"], $message_id), "delete_url" => phorum_get_url(PHORUM_MODERATION_URL, PHORUM_DELETE_MESSAGE, $message_id), "hide_url" => phorum_get_url(PHORUM_MODERATION_URL, PHORUM_HIDE_POST, $message_id), "edit_url" => phorum_get_url(PHORUM_POSTING_URL, 'moderation', $message_id), "reporter_url" => phorum_get_url(PHORUM_PROFILE_URL, $PHORUM["user"]["user_id"]), "message" => $message); if (isset($_POST[PHORUM_SESSION_LONG_TERM])) { // strip any auth info from the created urls $mail_data["url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["url"]); $mail_data["delete_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["delete_url"]); $mail_data["hide_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["hide_url"]); $mail_data["edit_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["edit_url"]); $mail_data["reporter_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["reporter_url"]); } if (isset($PHORUM["hooks"]["report"])) { $mail_data = phorum_hook("report", $mail_data); } phorum_email_user($mail_users, $mail_data); $PHORUM["DATA"]["URL"]["REDIRECT"] = phorum_get_url(PHORUM_FOREIGN_READ_URL, $message["forum_id"], $message["thread"]);
function phorum_email_moderators($message) { $PHORUM = $GLOBALS["PHORUM"]; $mail_users = phorum_api_user_list_moderators($PHORUM['forum_id'], $PHORUM['email_ignore_admin'], TRUE); if (count($mail_users)) { include_once "./include/format_functions.php"; if ($message["status"] > 0) { // just notification of a new message $mailsubjecttpl = 'NewUnModeratedSubject'; $mailmessagetpl = 'NewUnModeratedMessage'; $mailsubject = $PHORUM["DATA"]["LANG"]['NewUnModeratedSubject']; $mailmessage = $PHORUM["DATA"]["LANG"]['NewUnModeratedMessage']; } else { // posts needing approval $mailsubjecttpl = 'NewModeratedSubject'; $mailmessagetpl = 'NewModeratedMessage'; $mailsubject = $PHORUM["DATA"]["LANG"]['NewModeratedSubject']; $mailmessage = $PHORUM["DATA"]["LANG"]['NewModeratedMessage']; } $mail_data = array("forumname" => strip_tags($PHORUM["DATA"]["NAME"]), "forum_id" => $PHORUM['forum_id'], "message_id" => $message['message_id'], "author" => phorum_api_user_get_display_name($message["user_id"], $message["author"], PHORUM_FLAG_PLAINTEXT), "subject" => $message['subject'], "full_body" => $message['body'], "plain_body" => phorum_strip_body($message['body']), "approve_url" => phorum_get_url(PHORUM_CONTROLCENTER_URL, "panel=messages"), "read_url" => phorum_get_url(PHORUM_READ_URL, $message['thread'], $message['message_id']), "mailmessage" => $mailmessage, "mailsubject" => $mailsubject, "mailmessagetpl" => $mailmessagetpl, "mailsubjecttpl" => $mailsubjecttpl, "language" => $PHORUM['language']); if (isset($_POST[PHORUM_SESSION_LONG_TERM])) { // strip any auth info from the read url $mail_data["read_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["read_url"]); $mail_data["approve_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["approve_url"]); } phorum_email_user($mail_users, $mail_data); } }
$report = false; $template = "report"; $message = array(); // get the message if (isset($PHORUM["args"][1]) && is_numeric($PHORUM["args"][1])) { $message_id = $PHORUM["args"][1]; $message = phorum_db_get_message($message_id); } if (is_array($message) && count($message)) { // check for report requests if (!empty($_POST["report"])) { if ($PHORUM["DATA"]["LOGGEDIN"]) { if (empty($_POST["explanation"])) { $_POST["explanation"] = "<" . $PHORUM["DATA"]["LANG"]["None"] . ">"; } $mail_users = phorum_api_user_list_moderators($PHORUM['forum_id'], FALSE, TRUE); if (count($mail_users)) { $mail_data = array("mailmessage" => $PHORUM["DATA"]["LANG"]['ReportPostEmailBody'], "mailsubject" => $PHORUM["DATA"]["LANG"]['ReportPostEmailSubject'], "forumname" => $PHORUM["DATA"]["NAME"], "reportedby" => $PHORUM["user"]["display_name"], "author" => $message["author"], "subject" => $message["subject"], "body" => wordwrap($message["body"], 72), "ip" => $message["ip"], "raw_date" => $message["datestamp"], "date" => phorum_date($PHORUM["short_date_time"], $message["datestamp"]), "explanation" => wordwrap($_POST["explanation"], 72), "url" => phorum_get_url(PHORUM_READ_URL, $message["thread"], $message_id), "delete_url" => phorum_get_url(PHORUM_MODERATION_URL, PHORUM_DELETE_MESSAGE, $message_id), "hide_url" => phorum_get_url(PHORUM_MODERATION_URL, PHORUM_HIDE_POST, $message_id), "edit_url" => phorum_get_url(PHORUM_POSTING_URL, 'moderation', $message_id), "reporter_url" => phorum_get_url(PHORUM_PROFILE_URL, $PHORUM["user"]["user_id"]), "message" => $message); if (isset($_POST[PHORUM_SESSION_LONG_TERM])) { // strip any auth info from the created urls $mail_data["url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["url"]); $mail_data["delete_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["delete_url"]); $mail_data["hide_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["hide_url"]); $mail_data["edit_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["edit_url"]); $mail_data["reporter_url"] = preg_replace("!,{0,1}" . PHORUM_SESSION_LONG_TERM . "=" . urlencode($_POST[PHORUM_SESSION_LONG_TERM]) . "!", "", $mail_data["reporter_url"]); } if (isset($PHORUM["hooks"]["report"])) { $mail_data = phorum_hook("report", $mail_data); } phorum_email_user($mail_users, $mail_data); $PHORUM["DATA"]["URL"]["REDIRECT"] = phorum_get_url(PHORUM_FOREIGN_READ_URL, $message["forum_id"], $message["thread"]);