2019-03-12 09:27:46 +00:00
< ? php
/**
* WordPress Comment Administration API .
*
* @ package WordPress
* @ subpackage Administration
* @ since 2.3 . 0
*/
/**
* Determine if a comment exists based on author and date .
*
* For best performance , use `$timezone = 'gmt'` , which queries a field that is properly indexed . The default value
* for `$timezone` is 'blog' for legacy reasons .
*
* @ since 2.0 . 0
* @ since 4.4 . 0 Added the `$timezone` parameter .
*
* @ global wpdb $wpdb WordPress database abstraction object .
*
* @ param string $comment_author Author of the comment .
* @ param string $comment_date Date of the comment .
* @ param string $timezone Timezone . Accepts 'blog' or 'gmt' . Default 'blog' .
*
* @ return mixed Comment post ID on success .
*/
function comment_exists ( $comment_author , $comment_date , $timezone = 'blog' ) {
global $wpdb ;
$date_field = 'comment_date' ;
if ( 'gmt' === $timezone ) {
$date_field = 'comment_date_gmt' ;
}
2019-04-16 19:56:22 +00:00
return $wpdb -> get_var (
$wpdb -> prepare (
" SELECT comment_post_ID FROM $wpdb->comments
2019-03-12 09:27:46 +00:00
WHERE comment_author = % s AND $date_field = % s " ,
stripslashes ( $comment_author ),
stripslashes ( $comment_date )
2019-04-16 19:56:22 +00:00
)
);
2019-03-12 09:27:46 +00:00
}
/**
* Update a comment with values provided in $_POST .
*
* @ since 2.0 . 0
*/
function edit_comment () {
2019-04-16 19:56:22 +00:00
if ( ! current_user_can ( 'edit_comment' , ( int ) $_POST [ 'comment_ID' ] ) ) {
wp_die ( __ ( 'Sorry, you are not allowed to edit comments on this post.' ) );
}
2019-03-12 09:27:46 +00:00
2019-04-16 19:56:22 +00:00
if ( isset ( $_POST [ 'newcomment_author' ] ) ) {
2019-03-12 09:27:46 +00:00
$_POST [ 'comment_author' ] = $_POST [ 'newcomment_author' ];
2019-04-16 19:56:22 +00:00
}
if ( isset ( $_POST [ 'newcomment_author_email' ] ) ) {
2019-03-12 09:27:46 +00:00
$_POST [ 'comment_author_email' ] = $_POST [ 'newcomment_author_email' ];
2019-04-16 19:56:22 +00:00
}
if ( isset ( $_POST [ 'newcomment_author_url' ] ) ) {
2019-03-12 09:27:46 +00:00
$_POST [ 'comment_author_url' ] = $_POST [ 'newcomment_author_url' ];
2019-04-16 19:56:22 +00:00
}
if ( isset ( $_POST [ 'comment_status' ] ) ) {
2019-03-12 09:27:46 +00:00
$_POST [ 'comment_approved' ] = $_POST [ 'comment_status' ];
2019-04-16 19:56:22 +00:00
}
if ( isset ( $_POST [ 'content' ] ) ) {
2019-03-12 09:27:46 +00:00
$_POST [ 'comment_content' ] = $_POST [ 'content' ];
2019-04-16 19:56:22 +00:00
}
if ( isset ( $_POST [ 'comment_ID' ] ) ) {
2019-03-12 09:27:46 +00:00
$_POST [ 'comment_ID' ] = ( int ) $_POST [ 'comment_ID' ];
2019-04-16 19:56:22 +00:00
}
2019-03-12 09:27:46 +00:00
2019-04-16 19:56:22 +00:00
foreach ( array ( 'aa' , 'mm' , 'jj' , 'hh' , 'mn' ) as $timeunit ) {
if ( ! empty ( $_POST [ 'hidden_' . $timeunit ] ) && $_POST [ 'hidden_' . $timeunit ] != $_POST [ $timeunit ] ) {
2019-03-12 09:27:46 +00:00
$_POST [ 'edit_date' ] = '1' ;
break ;
}
}
2019-04-16 19:56:22 +00:00
if ( ! empty ( $_POST [ 'edit_date' ] ) ) {
$aa = $_POST [ 'aa' ];
$mm = $_POST [ 'mm' ];
$jj = $_POST [ 'jj' ];
$hh = $_POST [ 'hh' ];
$mn = $_POST [ 'mn' ];
$ss = $_POST [ 'ss' ];
$jj = ( $jj > 31 ) ? 31 : $jj ;
$hh = ( $hh > 23 ) ? $hh - 24 : $hh ;
$mn = ( $mn > 59 ) ? $mn - 60 : $mn ;
$ss = ( $ss > 59 ) ? $ss - 60 : $ss ;
2019-03-12 09:27:46 +00:00
$_POST [ 'comment_date' ] = " $aa - $mm - $jj $hh : $mn : $ss " ;
}
wp_update_comment ( $_POST );
}
/**
* Returns a WP_Comment object based on comment ID .
*
* @ since 2.0 . 0
*
* @ param int $id ID of comment to retrieve .
* @ return WP_Comment | false Comment if found . False on failure .
*/
function get_comment_to_edit ( $id ) {
2019-04-16 19:56:22 +00:00
if ( ! $comment = get_comment ( $id ) ) {
2019-03-12 09:27:46 +00:00
return false ;
2019-04-16 19:56:22 +00:00
}
2019-03-12 09:27:46 +00:00
2019-04-16 19:56:22 +00:00
$comment -> comment_ID = ( int ) $comment -> comment_ID ;
2019-03-12 09:27:46 +00:00
$comment -> comment_post_ID = ( int ) $comment -> comment_post_ID ;
$comment -> comment_content = format_to_edit ( $comment -> comment_content );
/**
* Filters the comment content before editing .
*
* @ since 2.0 . 0
*
* @ param string $comment -> comment_content Comment content .
*/
$comment -> comment_content = apply_filters ( 'comment_edit_pre' , $comment -> comment_content );
2019-04-16 19:56:22 +00:00
$comment -> comment_author = format_to_edit ( $comment -> comment_author );
2019-03-12 09:27:46 +00:00
$comment -> comment_author_email = format_to_edit ( $comment -> comment_author_email );
2019-04-16 19:56:22 +00:00
$comment -> comment_author_url = format_to_edit ( $comment -> comment_author_url );
$comment -> comment_author_url = esc_url ( $comment -> comment_author_url );
2019-03-12 09:27:46 +00:00
return $comment ;
}
/**
* Get the number of pending comments on a post or posts
*
* @ since 2.3 . 0
*
* @ global wpdb $wpdb WordPress database abstraction object .
*
* @ param int | array $post_id Either a single Post ID or an array of Post IDs
* @ return int | array Either a single Posts pending comments as an int or an array of ints keyed on the Post IDs
*/
function get_pending_comments_num ( $post_id ) {
global $wpdb ;
$single = false ;
2019-04-16 19:56:22 +00:00
if ( ! is_array ( $post_id ) ) {
2019-03-12 09:27:46 +00:00
$post_id_array = ( array ) $post_id ;
2019-04-16 19:56:22 +00:00
$single = true ;
2019-03-12 09:27:46 +00:00
} else {
$post_id_array = $post_id ;
}
2019-04-16 19:56:22 +00:00
$post_id_array = array_map ( 'intval' , $post_id_array );
$post_id_in = " ' " . implode ( " ', ' " , $post_id_array ) . " ' " ;
2019-03-12 09:27:46 +00:00
$pending = $wpdb -> get_results ( " SELECT comment_post_ID, COUNT(comment_ID) as num_comments FROM $wpdb->comments WHERE comment_post_ID IN ( $post_id_in ) AND comment_approved = '0' GROUP BY comment_post_ID " , ARRAY_A );
if ( $single ) {
2019-04-16 19:56:22 +00:00
if ( empty ( $pending ) ) {
2019-03-12 09:27:46 +00:00
return 0 ;
2019-04-16 19:56:22 +00:00
} else {
return absint ( $pending [ 0 ][ 'num_comments' ] );
}
2019-03-12 09:27:46 +00:00
}
$pending_keyed = array ();
// Default to zero pending for all posts in request
2019-04-16 19:56:22 +00:00
foreach ( $post_id_array as $id ) {
$pending_keyed [ $id ] = 0 ;
}
2019-03-12 09:27:46 +00:00
2019-04-16 19:56:22 +00:00
if ( ! empty ( $pending ) ) {
foreach ( $pending as $pend ) {
$pending_keyed [ $pend [ 'comment_post_ID' ] ] = absint ( $pend [ 'num_comments' ] );
}
}
2019-03-12 09:27:46 +00:00
return $pending_keyed ;
}
/**
* Add avatars to relevant places in admin , or try to .
*
* @ since 2.5 . 0
*
* @ param string $name User name .
* @ return string Avatar with Admin name .
*/
function floated_admin_avatar ( $name ) {
$avatar = get_avatar ( get_comment (), 32 , 'mystery' );
return " $avatar $name " ;
}
/**
* @ since 2.7 . 0
*/
function enqueue_comment_hotkeys_js () {
2019-04-16 19:56:22 +00:00
if ( 'true' == get_user_option ( 'comment_shortcuts' ) ) {
2019-03-12 09:27:46 +00:00
wp_enqueue_script ( 'jquery-table-hotkeys' );
2019-04-16 19:56:22 +00:00
}
2019-03-12 09:27:46 +00:00
}
/**
* Display error message at bottom of comments .
*
* @ param string $msg Error Message . Assumed to contain HTML and be sanitized .
*/
function comment_footer_die ( $msg ) {
echo " <div class='wrap'><p> $msg </p></div> " ;
include ( ABSPATH . 'wp-admin/admin-footer.php' );
die ;
2019-04-16 19:56:22 +00:00
}