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
*/
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
*
2010-09-05 04:45:39 +02:00
* @ since 2.0 . 0
2008-08-14 08:30:38 +02:00
* @ uses $wpdb
*
2010-09-05 04:45:39 +02:00
* @ param string $comment_author Author of the comment
* @ param string $comment_date Date of the comment
2008-08-14 08:30:38 +02:00
* @ return mixed Comment ID on success .
*/
2007-05-25 09:16:21 +02:00
function comment_exists ( $comment_author , $comment_date ) {
global $wpdb ;
2009-03-05 23:16:29 +01:00
$comment_author = stripslashes ( $comment_author );
$comment_date = stripslashes ( $comment_date );
2008-04-14 18:13:25 +02:00
return $wpdb -> get_var ( $wpdb -> prepare ( " SELECT comment_post_ID FROM $wpdb->comments
WHERE comment_author = % s AND comment_date = % s " , $comment_author , $comment_date ) );
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 () {
2011-01-07 17:17:05 +01:00
if ( ! current_user_can ( 'edit_comment' , ( int ) $_POST [ 'comment_ID' ] ) )
wp_die ( __ ( 'You are not allowed to edit comments on this post.' ) );
2007-05-25 09:16:21 +02:00
$_POST [ 'comment_author' ] = $_POST [ 'newcomment_author' ];
$_POST [ 'comment_author_email' ] = $_POST [ 'newcomment_author_email' ];
$_POST [ 'comment_author_url' ] = $_POST [ 'newcomment_author_url' ];
$_POST [ 'comment_approved' ] = $_POST [ 'comment_status' ];
$_POST [ 'comment_content' ] = $_POST [ 'content' ];
$_POST [ 'comment_ID' ] = ( int ) $_POST [ 'comment_ID' ];
2008-04-07 19:06:56 +02:00
foreach ( array ( 'aa' , 'mm' , 'jj' , 'hh' , 'mn' ) as $timeunit ) {
2008-03-17 00:05:16 +01:00
if ( ! empty ( $_POST [ 'hidden_' . $timeunit ] ) && $_POST [ 'hidden_' . $timeunit ] != $_POST [ $timeunit ] ) {
$_POST [ 'edit_date' ] = '1' ;
break ;
}
}
2010-09-05 04:45:39 +02:00
if ( ! empty ( $_POST [ 'edit_date' ] ) ) {
2007-05-25 09:16:21 +02: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 ;
$_POST [ 'comment_date' ] = " $aa - $mm - $jj $hh : $mn : $ss " ;
}
2010-09-05 04:45:39 +02:00
wp_update_comment ( $_POST );
2007-05-25 09:16:21 +02:00
}
2008-09-17 02:40:10 +02:00
/**
2013-01-28 03:20:47 +01:00
* Returns a 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 .
2010-09-05 04:45:39 +02:00
* @ return bool | object 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 ) {
2007-06-25 23:30:18 +02:00
if ( ! $comment = get_comment ( $id ) )
return false ;
2007-05-25 09:16:21 +02:00
2007-05-25 11:41:04 +02:00
$comment -> comment_ID = ( int ) $comment -> comment_ID ;
$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 );
$comment -> comment_content = apply_filters ( 'comment_edit_pre' , $comment -> comment_content );
2007-05-25 09:16:21 +02:00
$comment -> comment_author = format_to_edit ( $comment -> comment_author );
$comment -> comment_author_email = format_to_edit ( $comment -> comment_author_email );
$comment -> comment_author_url = format_to_edit ( $comment -> comment_author_url );
2009-07-19 01:21:50 +02:00
$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
2008-09-17 02:40:10 +02:00
* @ uses $wpdb
*
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 ;
if ( ! is_array ( $post_id ) ) {
2010-01-12 23:38:26 +01:00
$post_id_array = ( array ) $post_id ;
2008-04-22 23:26:01 +02: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
}
2010-01-12 23:38:26 +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 ) {
if ( empty ( $pending ) )
return 0 ;
else
return absint ( $pending [ 0 ][ 'num_comments' ]);
}
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
2010-01-12 23:38:26 +01:00
// Default to zero pending for all posts in request
foreach ( $post_id_array as $id )
$pending_keyed [ $id ] = 0 ;
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
/**
* Add avatars to relevant places in admin , or try to .
*
2010-02-25 23:19:03 +01:00
* @ since 2.5 . 0
2008-09-17 02:40:10 +02:00
* @ uses $comment
*
* @ param string $name User name .
* @ return string Avatar with Admin name .
*/
2008-02-16 03:39:13 +01:00
function floated_admin_avatar ( $name ) {
global $comment ;
2010-02-25 23:19:03 +01:00
$avatar = get_avatar ( $comment , 32 );
2008-02-16 03:39:13 +01:00
return " $avatar $name " ;
}
2008-10-17 00:23:32 +02:00
function enqueue_comment_hotkeys_js () {
if ( 'true' == get_user_option ( 'comment_shortcuts' ) )
wp_enqueue_script ( 'jquery-table-hotkeys' );
}