2007-05-25 09:16:21 +02:00
< ? php
2008-09-17 02:40:10 +02:00
/**
2008-10-10 20:21:16 +02:00
* WordPress Comment Administration API .
2008-09-17 02:40:10 +02:00
*
* @ package WordPress
* @ subpackage Administration
2015-10-18 16:34:25 +02:00
* @ since 2.3 . 0
2008-09-17 02:40:10 +02:00
*/
2007-05-25 09:16:21 +02:00
2008-08-14 08:30:38 +02:00
/**
2013-01-28 03:20:47 +01:00
* Determine if a comment exists based on author and date .
2008-08-14 08:30:38 +02:00
*
2015-09-23 20:16:26 +02:00
* For best performance , use `$timezone = 'gmt'` , which queries a field that is properly indexed . The default value
* for `$timezone` is 'blog' for legacy reasons .
*
2010-09-05 04:45:39 +02:00
* @ since 2.0 . 0
2015-09-23 20:16:26 +02:00
* @ since 4.4 . 0 Added the `$timezone` parameter .
2014-10-31 18:56:22 +01:00
*
* @ global wpdb $wpdb WordPress database abstraction object .
2008-08-14 08:30:38 +02:00
*
2015-09-23 20:16:26 +02:00
* @ 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' .
*
2013-02-15 19:49:07 +01:00
* @ return mixed Comment post ID on success .
2008-08-14 08:30:38 +02:00
*/
2015-09-23 20:16:26 +02:00
function comment_exists ( $comment_author , $comment_date , $timezone = 'blog' ) {
2007-05-25 09:16:21 +02:00
global $wpdb ;
2015-09-23 20:16:26 +02:00
$date_field = 'comment_date' ;
if ( 'gmt' === $timezone ) {
$date_field = 'comment_date_gmt' ;
}
2017-12-01 00:11:00 +01:00
return $wpdb -> get_var (
$wpdb -> prepare (
" SELECT comment_post_ID FROM $wpdb->comments
2015-09-23 20:16:26 +02:00
WHERE comment_author = % s AND $date_field = % s " ,
2015-05-29 22:17:26 +02:00
stripslashes ( $comment_author ),
stripslashes ( $comment_date )
2017-12-01 00:11:00 +01:00
)
);
2007-05-25 09:16:21 +02:00
}
2008-08-14 08:30:38 +02:00
/**
2010-09-05 04:45:39 +02:00
* Update a comment with values provided in $_POST .
2008-08-14 08:30:38 +02:00
*
2010-09-05 04:45:39 +02:00
* @ since 2.0 . 0
2008-08-14 08:30:38 +02:00
*/
2007-05-25 09:16:21 +02:00
function edit_comment () {
2017-12-01 00:11:00 +01:00
if ( ! current_user_can ( 'edit_comment' , ( int ) $_POST [ 'comment_ID' ] ) ) {
wp_die ( __ ( 'Sorry, you are not allowed to edit comments on this post.' ) );
}
2007-05-25 09:16:21 +02:00
2017-12-01 00:11:00 +01:00
if ( isset ( $_POST [ 'newcomment_author' ] ) ) {
2013-09-14 00:18:08 +02:00
$_POST [ 'comment_author' ] = $_POST [ 'newcomment_author' ];
2017-12-01 00:11:00 +01:00
}
if ( isset ( $_POST [ 'newcomment_author_email' ] ) ) {
2013-09-14 00:18:08 +02:00
$_POST [ 'comment_author_email' ] = $_POST [ 'newcomment_author_email' ];
2017-12-01 00:11:00 +01:00
}
if ( isset ( $_POST [ 'newcomment_author_url' ] ) ) {
2013-09-14 00:18:08 +02:00
$_POST [ 'comment_author_url' ] = $_POST [ 'newcomment_author_url' ];
2017-12-01 00:11:00 +01:00
}
if ( isset ( $_POST [ 'comment_status' ] ) ) {
2013-09-14 00:18:08 +02:00
$_POST [ 'comment_approved' ] = $_POST [ 'comment_status' ];
2017-12-01 00:11:00 +01:00
}
if ( isset ( $_POST [ 'content' ] ) ) {
2013-09-14 00:18:08 +02:00
$_POST [ 'comment_content' ] = $_POST [ 'content' ];
2017-12-01 00:11:00 +01:00
}
if ( isset ( $_POST [ 'comment_ID' ] ) ) {
2013-09-14 00:18:08 +02:00
$_POST [ 'comment_ID' ] = ( int ) $_POST [ 'comment_ID' ];
2017-12-01 00:11:00 +01:00
}
2007-05-25 09:16:21 +02:00
2017-12-01 00:11:00 +01:00
foreach ( array ( 'aa' , 'mm' , 'jj' , 'hh' , 'mn' ) as $timeunit ) {
if ( ! empty ( $_POST [ 'hidden_' . $timeunit ] ) && $_POST [ 'hidden_' . $timeunit ] != $_POST [ $timeunit ] ) {
2008-03-17 00:05:16 +01:00
$_POST [ 'edit_date' ] = '1' ;
break ;
}
}
2017-12-01 00:11:00 +01:00
if ( ! empty ( $_POST [ 'edit_date' ] ) ) {
2020-01-29 01:45:18 +01:00
$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 ;
2013-03-01 17:28:40 +01:00
$_POST [ 'comment_date' ] = " $aa - $mm - $jj $hh : $mn : $ss " ;
2007-05-25 09:16:21 +02:00
}
2013-03-01 17:28:40 +01:00
wp_update_comment ( $_POST );
2007-05-25 09:16:21 +02:00
}
2008-09-17 02:40:10 +02:00
/**
2015-09-03 20:17:24 +02:00
* Returns a WP_Comment object based on comment ID .
2008-09-17 02:40:10 +02:00
*
2010-09-05 04:45:39 +02:00
* @ since 2.0 . 0
2008-09-17 02:40:10 +02:00
*
2013-01-28 03:20:47 +01:00
* @ param int $id ID of comment to retrieve .
2015-09-03 20:17:24 +02:00
* @ return WP_Comment | false Comment if found . False on failure .
2008-09-17 02:40:10 +02:00
*/
2007-05-25 09:16:21 +02:00
function get_comment_to_edit ( $id ) {
2019-07-01 14:52:01 +02:00
$comment = get_comment ( $id );
if ( ! $comment ) {
2007-06-25 23:30:18 +02:00
return false ;
2017-12-01 00:11:00 +01:00
}
2007-05-25 09:16:21 +02:00
2017-12-01 00:11:00 +01:00
$comment -> comment_ID = ( int ) $comment -> comment_ID ;
2007-05-25 11:41:04 +02:00
$comment -> comment_post_ID = ( int ) $comment -> comment_post_ID ;
2007-06-04 19:43:22 +02:00
$comment -> comment_content = format_to_edit ( $comment -> comment_content );
2013-09-14 03:01:08 +02:00
/**
2016-05-22 20:01:30 +02:00
* Filters the comment content before editing .
2013-09-14 03:01:08 +02:00
*
* @ since 2.0 . 0
*
* @ param string $comment -> comment_content Comment content .
*/
$comment -> comment_content = apply_filters ( 'comment_edit_pre' , $comment -> comment_content );
2007-05-25 09:16:21 +02:00
2017-12-01 00:11:00 +01:00
$comment -> comment_author = format_to_edit ( $comment -> comment_author );
2007-05-25 09:16:21 +02:00
$comment -> comment_author_email = format_to_edit ( $comment -> comment_author_email );
2017-12-01 00:11:00 +01:00
$comment -> comment_author_url = format_to_edit ( $comment -> comment_author_url );
$comment -> comment_author_url = esc_url ( $comment -> comment_author_url );
2007-05-25 09:16:21 +02:00
return $comment ;
}
2008-09-17 02:40:10 +02:00
/**
2010-01-02 18:15:11 +01:00
* Get the number of pending comments on a post or posts
2008-09-17 02:40:10 +02:00
*
2010-09-05 04:45:39 +02:00
* @ since 2.3 . 0
2014-10-31 18:56:22 +01:00
*
* @ global wpdb $wpdb WordPress database abstraction object .
2008-09-17 02:40:10 +02:00
*
2010-01-02 18:15:11 +01:00
* @ 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
2008-09-17 02:40:10 +02:00
*/
2007-07-29 21:56:55 +02:00
function get_pending_comments_num ( $post_id ) {
global $wpdb ;
2008-04-22 23:26:01 +02:00
$single = false ;
2017-12-01 00:11:00 +01:00
if ( ! is_array ( $post_id ) ) {
2010-01-12 23:38:26 +01:00
$post_id_array = ( array ) $post_id ;
2017-12-01 00:11:00 +01:00
$single = true ;
2010-01-12 23:38:26 +01:00
} else {
$post_id_array = $post_id ;
2008-04-22 23:26:01 +02:00
}
2017-12-01 00:11:00 +01:00
$post_id_array = array_map ( 'intval' , $post_id_array );
$post_id_in = " ' " . implode ( " ', ' " , $post_id_array ) . " ' " ;
2008-04-22 23:26:01 +02:00
2010-01-12 23:38:26 +01: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 );
2008-04-22 23:26:01 +02:00
2010-01-12 23:38:26 +01:00
if ( $single ) {
2017-12-01 00:11:00 +01:00
if ( empty ( $pending ) ) {
2010-01-12 23:38:26 +01:00
return 0 ;
2017-12-01 00:11:00 +01:00
} else {
return absint ( $pending [ 0 ][ 'num_comments' ] );
}
2010-01-12 23:38:26 +01:00
}
2010-01-15 23:11:12 +01:00
2008-04-22 23:26:01 +02:00
$pending_keyed = array ();
2010-01-15 23:11:12 +01:00
2020-01-18 01:54:04 +01:00
// Default to zero pending for all posts in request.
2017-12-01 00:11:00 +01:00
foreach ( $post_id_array as $id ) {
$pending_keyed [ $id ] = 0 ;
}
2010-01-12 23:38:26 +01:00
2017-12-01 00:11:00 +01:00
if ( ! empty ( $pending ) ) {
foreach ( $pending as $pend ) {
$pending_keyed [ $pend [ 'comment_post_ID' ] ] = absint ( $pend [ 'num_comments' ] );
}
}
2008-04-22 23:26:01 +02:00
return $pending_keyed ;
2007-07-29 21:56:55 +02:00
}
2008-09-17 02:40:10 +02:00
/**
2020-03-25 15:43:11 +01:00
* Adds avatars to relevant places in admin .
2008-09-17 02:40:10 +02:00
*
2010-02-25 23:19:03 +01:00
* @ since 2.5 . 0
2015-05-29 22:17:26 +02:00
*
2008-09-17 02:40:10 +02:00
* @ param string $name User name .
2020-03-25 15:43:11 +01:00
* @ return string Avatar with the user name .
2008-09-17 02:40:10 +02:00
*/
2008-02-16 03:39:13 +01:00
function floated_admin_avatar ( $name ) {
2015-09-09 04:51:24 +02:00
$avatar = get_avatar ( get_comment (), 32 , 'mystery' );
2008-02-16 03:39:13 +01:00
return " $avatar $name " ;
}
2015-05-31 05:18:25 +02:00
/**
* @ since 2.7 . 0
*/
2008-10-17 00:23:32 +02:00
function enqueue_comment_hotkeys_js () {
2020-05-16 20:42:12 +02:00
if ( 'true' === get_user_option ( 'comment_shortcuts' ) ) {
2008-10-17 00:23:32 +02:00
wp_enqueue_script ( 'jquery-table-hotkeys' );
2017-12-01 00:11:00 +01:00
}
2008-10-17 00:23:32 +02:00
}
2015-09-10 23:29:24 +02: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> " ;
2020-02-06 07:33:11 +01:00
require_once ABSPATH . 'wp-admin/admin-footer.php' ;
2015-09-10 23:29:24 +02:00
die ;
2017-12-01 00:11:00 +01:00
}