wp_notify_moderator( int $comment_id )
Notifies the moderator of the site about a new comment that is awaiting approval.
Description
Parameters
- $comment_id
-
(Required) Comment ID.
Return
(true) Always returns true.
Source
File: bp-core/bp-core-wp-emails.php
function wp_notify_moderator($comment_id) {
global $wpdb;
$maybe_notify = get_option( 'moderation_notify' );
/**
* Filters whether to send the site moderator email notifications, overriding the site setting.
*
* @since BuddyPress 4.4.0
*
* @param bool $maybe_notify Whether to notify blog moderator.
* @param int $comment_ID The id of the comment for the notification.
*/
$maybe_notify = apply_filters( 'notify_moderator', $maybe_notify, $comment_id );
if ( ! $maybe_notify ) {
return true;
}
$comment = get_comment($comment_id);
$post = get_post($comment->comment_post_ID);
$user = get_userdata( $post->post_author );
// Send to the administration and to the post author if the author can modify the comment.
$emails = array( get_option( 'admin_email' ) );
if ( $user && user_can( $user->ID, 'edit_comment', $comment_id ) && ! empty( $user->user_email ) ) {
if ( 0 !== strcasecmp( $user->user_email, get_option( 'admin_email' ) ) )
$emails[] = $user->user_email;
}
$switched_locale = switch_to_locale( get_locale() );
$comment_author_domain = @gethostbyaddr($comment->comment_author_IP);
$comments_waiting = $wpdb->get_var("SELECT count(comment_ID) FROM $wpdb->comments WHERE comment_approved = '0'");
// The blogname option is escaped with esc_html on the way into the database in sanitize_option
// we want to reverse this for the plain text arena of emails.
$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
$comment_content = wp_specialchars_decode( $comment->comment_content );
// Get customizer setting options
$settings = bp_email_get_appearance_settings();
switch ( $comment->comment_type ) {
case 'trackback':
$title = sprintf( __( 'added new trackback on the post <a href="%s">"%s"</a> is waiting for your approval.', 'buddyboss' ), get_permalink($comment->comment_post_ID), $post->post_title );
$footer_message = sprintf( __('<a href="%s">Click here</a> to see all trackbacks on this post.', 'buddyboss' ), get_permalink( $comment->comment_post_ID ) . '#comments' );
$moderate_text = __('Moderate this trackback: ', 'buddyboss' );
break;
case 'pingback':
$title = sprintf( __( 'added new pingback on the post <a href="%s">"%s"</a> is waiting for your approval.', 'buddyboss' ), get_permalink($comment->comment_post_ID), $post->post_title );
$footer_message = sprintf( __('<a href="%s">Click here</a> to see all pingbacks on this post.', 'buddyboss' ), get_permalink( $comment->comment_post_ID ) . '#comments' );
$moderate_text = __('Moderate this pingback: ', 'buddyboss' );
break;
default: // Comments
$title = sprintf( __( 'added new comment on the post <a href="%s">"%s"</a> is waiting for your approval.', 'buddyboss' ), get_permalink($comment->comment_post_ID), $post->post_title );
$footer_message = sprintf( __('<a href="%s">Click here</a> to see all comments on this post.', 'buddyboss' ), get_permalink( $comment->comment_post_ID ) . '#comments' );
$moderate_text = __('Moderate this comment: ', 'buddyboss' );
break;
}
ob_start();
?>
<p>
<?php if ( !empty( $comment->user_id ) ) { ?>
<a href="<?php echo esc_attr( bp_core_get_user_domain( $comment->user_id ) ); ?>">
<?php echo $comment->comment_author; ?>
</a>
<?php } else {
echo $comment->comment_author;
} ?>
<?php echo $title; ?>
</p>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<?php if ( !empty( $comment->user_id ) ) { ?>
<tr>
<td align="center">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody>
<tr>
<td valign="middle" width="65px" style="vertical-align: middle;">
<a style="display: block; width: 47px;" href="<?php echo esc_attr( bp_core_get_user_domain( $comment->user_id ) ); ?>"
target="_blank" rel="nofollow">
<?php
$avatar_url = bp_core_fetch_avatar( array(
'item_id' => $comment->user_id,
'width' => 100,
'height' => 100,
'type' => 'full',
'html' => false,
) );
?>
<img src="<?php echo esc_attr( $avatar_url ); ?>" width="47" height="47"
style="margin:0; padding:0; border:none; display:block; max-width: 47px; border-radius: 50%;"
border="0">
</a>
</td>
<td width="88%" style="vertical-align: middle;">
<div style="color: <?php echo esc_attr( $settings['body_secondary_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; line-height: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px;">
<?php echo bp_core_get_user_displayname( $comment->user_id ); ?>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td height="24px" style="font-size: 24px; line-height: 24px;"> </td>
</tr>
<?php } ?>
<tr>
<td>
<table cellspacing="0" cellpadding="0" border="0" width="100%"
style="background: <?php echo esc_attr( $settings['quote_bg'] ); ?>; border: 1px solid <?php echo esc_attr( $settings['body_border_color'] ); ?>; border-radius: 4px; border-collapse: separate !important">
<tbody>
<tr>
<td height="5px" style="font-size: 5px; line-height: 5px;"> </td>
</tr>
<tr>
<td align="center">
<table cellpadding="0" cellspacing="0" border="0" width="88%" style="width: 88%;">
<tbody>
<tr>
<td>
<div style="color: <?php echo esc_attr( $settings['body_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>;">
<?php echo wpautop($comment_content); ?>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td height="5px" style="font-size: 5px; line-height: 5px;"> </td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td height="24px" style="font-size: 24px; line-height: 24px;"> </td>
</tr>
<tr>
<td>
<a href="<?php echo get_comment_link( $comment ); ?>" target="_blank" rel="nofollow"
style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; color: <?php echo $settings['highlight_color']; ?>; text-decoration: none; display: block; border: 1px solid <?php echo $settings['highlight_color']; ?>; border-radius: 100px; width: 84px; text-align: center; height: 32px; line-height: 32px;"><?php _e( 'Reply', 'buddyboss' ); ?></a>
</td>
</tr>
<tr>
<td>
<div style="color: <?php echo esc_attr( $settings['body_text_color'] ); ?>; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>; letter-spacing: -0.24px; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.625 ) . 'px' ) ?>;">
<p><?php echo $footer_message; ?></p>
<?php
$approve_comment = sprintf( __( '<a href="%s">Approve</a>', 'buddyboss' ), admin_url( "comment.php?action=approve&c={$comment_id}#wpbody-content" ) );
$trash_comment = '';
$delete_comment = '';
if ( EMPTY_TRASH_DAYS ) {
/* translators: Comment moderation. 1: Comment action URL */
$trash_comment = sprintf( __( '<a href="%s">Trash</a>', 'buddyboss' ), admin_url( "comment.php?action=trash&c={$comment_id}#wpbody-content" ) );
} else {
/* translators: Comment moderation. 1: Comment action URL */
$delete_comment = sprintf( __( '<a href="%s">Delete</a>', 'buddyboss' ), admin_url( "comment.php?action=delete&c={$comment_id}#wpbody-content" ) );
}
/* translators: Comment moderation. 1: Comment action URL */
$spam_comment = sprintf( __( '<a href="%s">Spam</a>', 'buddyboss' ), admin_url( "comment.php?action=spam&c={$comment_id}#wpbody-content" ) );
?>
<p><?php echo $moderate_text; ?><?php echo $approve_comment; ?><?php if( !empty( $trash_comment ) ) { echo ', '.$trash_comment; } ?><?php if( !empty( $delete_comment ) ) { echo ', '.$delete_comment; } ?><?php echo ', '.$spam_comment; ?></p>
</div>
</td>
</tr>
</table>
<?php $notify_message = ob_get_clean();
/* translators: Comment moderation notification email subject. 1: Site name, 2: Post title */
$subject = sprintf( __( '[%1$s] Please moderate: "%2$s"', 'buddyboss' ), $blogname, $post->post_title );
$message_headers = '';
/**
* Filters the list of recipients for comment moderation emails.
*
* @since BuddyPress 3.7.0
*
* @param array $emails List of email addresses to notify for comment moderation.
* @param int $comment_id Comment ID.
*/
$emails = apply_filters( 'comment_moderation_recipients', $emails, $comment_id );
/**
* Filters the comment moderation email text.
*
* @since BuddyPress 1.5.2
*
* @param string $notify_message Text of the comment moderation email.
* @param int $comment_id Comment ID.
*/
$notify_message = apply_filters( 'comment_moderation_text', $notify_message, $comment_id );
/**
* Filters the comment moderation email subject.
*
* @since BuddyPress 1.5.2
*
* @param string $subject Subject of the comment moderation email.
* @param int $comment_id Comment ID.
*/
$subject = apply_filters( 'comment_moderation_subject', $subject, $comment_id );
/**
* Filters the comment moderation email headers.
*
* @since BuddyPress 2.8.0
*
* @param string $message_headers Headers for the comment moderation email.
* @param int $comment_id Comment ID.
*/
$message_headers = apply_filters( 'comment_moderation_headers', $message_headers, $comment_id );
add_filter( 'wp_mail_content_type', 'bp_email_set_content_type' );
foreach ( $emails as $email ) {
$email_notify_message = bp_email_core_wp_get_template( $notify_message, get_user_by( 'email', $email ) );
@wp_mail( $email, wp_specialchars_decode( $subject ), $email_notify_message, $message_headers );
}
remove_filter( 'wp_mail_content_type', 'bp_email_set_content_type' );
if ( $switched_locale ) {
restore_previous_locale();
}
return true;
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.