Ticket #25699: 25699.2.patch
File 25699.2.patch, 7.6 KB (added by , 11 years ago) |
---|
-
src/wp-includes/comment.php
1376 1376 * that it is properly set, such as in wp-config.php, for your environment. 1377 1377 * See {@link http://core.trac.wordpress.org/ticket/9235} 1378 1378 * 1379 * @since 1.5.0 1380 * @uses apply_filters() Calls 'preprocess_comment' hook on $commentdata parameter array before processing 1381 * @uses do_action() Calls 'comment_post' hook on $comment_ID returned from adding the comment and if the comment was approved. 1382 * @uses wp_filter_comment() Used to filter comment before adding comment. 1383 * @uses wp_allow_comment() checks to see if comment is approved. 1384 * @uses wp_insert_comment() Does the actual comment insertion to the database. 1385 * 1386 * @param array $commentdata Contains information on the comment. 1387 * @return int The ID of the comment after adding. 1379 * @since 1.5.0 1380 * @param array $commentdata Contains information on the comment. 1381 * @uses apply_filters 1382 * @uses wp_get_comment_status 1383 * @uses wp_filter_comment 1384 * @uses wp_allow_comment 1385 * @uses wp_insert_comment 1386 * @uses do_action 1387 * @uses wp_notify_moderator 1388 * @uses get_option 1389 * @uses wp_notify_postauthor 1390 * @return int The ID of the comment after adding. 1388 1391 */ 1389 1392 function wp_new_comment( $commentdata ) { 1390 1393 $commentdata = apply_filters('preprocess_comment', $commentdata); … … 1417 1420 if ( '0' == $commentdata['comment_approved'] ) 1418 1421 wp_notify_moderator($comment_ID); 1419 1422 1420 $post = get_post($commentdata['comment_post_ID']); // Don't notify if it's your own comment1421 1422 if ( get_option( 'comments_notify') && $commentdata['comment_approved'] && ( ! isset( $commentdata['user_id'] ) || $post->post_author != $commentdata['user_id'] ))1423 wp_notify_postauthor( $comment_ID, isset( $commentdata['comment_type'] ) ? $commentdata['comment_type'] : '' );1423 // wp_notify_postauthor() checks if notifying the author of his/her own comment. 1424 // By default, it won't, but filters can override this. 1425 if ( get_option( 'comments_notify' ) && $commentdata['comment_approved'] ) 1426 wp_notify_postauthor( $comment_ID, isset( $commentdata['comment_type'] ) ? $commentdata['comment_type'] : '' ); 1424 1427 } 1425 1428 1426 1429 return $comment_ID; -
src/wp-includes/pluggable.php
1000 1000 1001 1001 if ( ! function_exists('wp_notify_postauthor') ) : 1002 1002 /** 1003 * Notify an author of a comment/trackback/pingback to one of theirposts.1003 * Notify an author and/or others of a comment/trackback/pingback on a posts. 1004 1004 * 1005 1005 * @since 1.0.0 1006 1006 * 1007 * @param int $comment_id Comment ID 1008 * @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback' 1009 * @return bool False if user email does not exist. True on completion. 1007 * @param int $comment_id Comment ID 1008 * @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback' 1009 * @uses get_comment 1010 * @uses get_post 1011 * @uses get_userdata 1012 * @uses apply_filters 1013 * @uses wp_specialchars_decode 1014 * @uses get_option 1015 * @uses __ 1016 * @uses get_permalink 1017 * @uses admin_url 1018 * @uses wp_mail 1019 * @return bool True on completion. False if no email addresses were specified. 1010 1020 */ 1011 1021 function wp_notify_postauthor( $comment_id, $comment_type = '' ) { 1012 1022 $comment = get_comment( $comment_id ); 1013 if ( empty( $comment ) ) 1023 if ( empty( $comment ) ) { 1014 1024 return false; 1025 } 1015 1026 1016 1027 $post = get_post( $comment->comment_post_ID ); 1017 1028 $author = get_userdata( $post->post_author ); 1018 1029 1019 // The comment was left by the author 1020 if ( $comment->user_id == $post->post_author ) 1030 // Who to notify? By default, just the post author, but others can be added. 1031 $emails = array( $author->user_email ); 1032 $emails = apply_filters( 'comment_notification_recipients', $emails, $comment_id ); 1033 $emails = array_filter( $emails ); 1034 1035 // If there are no addresses to send the comment to, bail. 1036 if ( ! count( $emails ) ) { 1021 1037 return false; 1038 } 1022 1039 1040 // Facilitate unsetting below without knowing the keys. 1041 $emails = array_flip( $emails ); 1042 1043 // Post author may want to receive notifications for their own comments 1044 $notify_author = apply_filters( 'comment_notification_notify_author', false, $comment_id ); 1045 1046 // The comment was left by the author 1047 if ( ! $notify_author && $comment->user_id == $post->post_author ) { 1048 unset( $emails[ $author->user_email ] ); 1049 } 1050 1023 1051 // The author moderated a comment on his own post 1024 if ( $post->post_author == get_current_user_id() ) 1025 return false; 1052 if ( ! $notify_author && $post->post_author == get_current_user_id() ) { 1053 unset( $emails[ $author->user_email ] ); 1054 } 1026 1055 1027 1056 // The post author is no longer a member of the blog 1028 if ( ! user_can( $post->post_author, 'read_post', $post->ID ) ) 1029 return false; 1057 if ( ! $notify_author && ! user_can( $post->post_author, 'read_post', $post->ID ) ) { 1058 unset( $emails[ $author->user_email ] ); 1059 } 1030 1060 1031 // If there's no email to send the comment to 1032 if ( '' == $author->user_email )1061 // If there's no email to send the comment to, bail, otherwise flip array back around for use below 1062 if ( ! count( $emails ) ) { 1033 1063 return false; 1064 } else { 1065 $emails = array_flip( $emails ); 1066 } 1034 1067 1035 1068 $comment_author_domain = @gethostbyaddr($comment->comment_author_IP); 1036 1069 … … 1038 1071 // we want to reverse this for the plain text arena of emails. 1039 1072 $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); 1040 1073 1041 if ( empty( $comment_type ) ) $comment_type = 'comment'; 1074 if ( empty( $comment_type ) ) { 1075 $comment_type = 'comment'; 1076 } 1042 1077 1043 1078 switch ( $comment_type ) { 1044 1079 case 'trackback': … … 1078 1113 $notify_message .= sprintf( __('Permalink: %s'), get_permalink( $comment->comment_post_ID ) . '#comment-' . $comment_id ) . "\r\n"; 1079 1114 1080 1115 if ( user_can( $post->post_author, 'edit_comment', $comment_id ) ) { 1081 if ( EMPTY_TRASH_DAYS ) 1116 if ( EMPTY_TRASH_DAYS ) { 1082 1117 $notify_message .= sprintf( __('Trash it: %s'), admin_url("comment.php?action=trash&c=$comment_id") ) . "\r\n"; 1083 else1118 } else { 1084 1119 $notify_message .= sprintf( __('Delete it: %s'), admin_url("comment.php?action=delete&c=$comment_id") ) . "\r\n"; 1120 } 1121 1085 1122 $notify_message .= sprintf( __('Spam it: %s'), admin_url("comment.php?action=spam&c=$comment_id") ) . "\r\n"; 1086 1123 } 1087 1124 … … 1089 1126 1090 1127 if ( '' == $comment->comment_author ) { 1091 1128 $from = "From: \"$blogname\" <$wp_email>"; 1092 if ( '' != $comment->comment_author_email ) 1129 if ( '' != $comment->comment_author_email ) { 1093 1130 $reply_to = "Reply-To: $comment->comment_author_email"; 1131 } 1094 1132 } else { 1095 1133 $from = "From: \"$comment->comment_author\" <$wp_email>"; 1096 if ( '' != $comment->comment_author_email ) 1134 if ( '' != $comment->comment_author_email ) { 1097 1135 $reply_to = "Reply-To: \"$comment->comment_author_email\" <$comment->comment_author_email>"; 1136 } 1098 1137 } 1099 1138 1100 1139 $message_headers = "$from\n" 1101 1140 . "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n"; 1102 1141 1103 if ( isset( $reply_to) )1142 if ( isset( $reply_to ) ) { 1104 1143 $message_headers .= $reply_to . "\n"; 1144 } 1105 1145 1106 $emails = array( $author->user_email );1107 1108 $emails = apply_filters( 'comment_notification_recipients', $emails, $comment_id );1109 1146 $notify_message = apply_filters( 'comment_notification_text', $notify_message, $comment_id ); 1110 1147 $subject = apply_filters( 'comment_notification_subject', $subject, $comment_id ); 1111 1148 $message_headers = apply_filters( 'comment_notification_headers', $message_headers, $comment_id );