Comment type filter from Viper007Bond. see #7552

git-svn-id: http://svn.automattic.com/wordpress/trunk@9046 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2008-10-01 15:48:45 +00:00
parent 716d37190a
commit 3d87a48713
2 changed files with 41 additions and 5 deletions

View File

@ -72,7 +72,9 @@ require_once('admin-header.php');
$mode = ( ! isset($_GET['mode']) || empty($_GET['mode']) ) ? 'detail' : attribute_escape($_GET['mode']);
$comment_status = isset($_GET['comment_status']) ? attribute_escape($_GET['comment_status']) : '';
$comment_status = !empty($_GET['comment_status']) ? attribute_escape($_GET['comment_status']) : '';
$comment_type = !empty($_GET['comment_type']) ? attribute_escape($_GET['comment_type']) : '';
$post_id = isset($_GET['p']) ? (int) $_GET['p'] : 0;
@ -134,13 +136,14 @@ $stati = array(
);
$class = ( '' === $comment_status ) ? ' class="current"' : '';
$status_links[] = "<li><a href=\"edit-comments.php\"$class>".__('Show All Comments')."</a>";
$type = ( !$comment_type && 'all' != $comment_type ) ? '' : "&amp;comment_type=$comment_type";
foreach ( $stati as $status => $label ) {
$class = '';
if ( $status == $comment_status )
$class = ' class="current"';
$status_links[] = "<li class='$status'><a href=\"edit-comments.php?comment_status=$status\"$class>$label</a>";
$status_links[] = "<li class='$status'><a href=\"edit-comments.php?comment_status=$status$type\"$class>$label</a>";
}
$status_links = apply_filters( 'comment_status_links', $status_links );
@ -150,6 +153,29 @@ unset($status_links);
?>
</ul>
<div class="filter">
<form id="list-filter" action="" method="get">
<?php if ( $comment_status ) echo "<input type='hidden' name='comment_status' value='$comment_status' />\n"; ?>
<select name="comment_type">
<option value="all"><?php _e('Show all comment types'); ?></option>
<?php
$comment_types = array(
'comment' => __('Comments'),
'pingback' => __('Pingbacks'),
'trackback' => __('Trackbacks'),
);
foreach ( $comment_types as $type => $label ) {
echo " <option value='$type'";
selected( $comment_type, $type );
echo ">$label</option>\n";
}
?>
</select>
<input type="submit" id="post-query-submit" value="<?php _e('Filter'); ?>" class="button-secondary" />
</form>
</div>
<?php
$comments_per_page = apply_filters('comments_per_page', 20, $comment_status);
@ -160,7 +186,7 @@ else
$start = $offset = ( $page - 1 ) * $comments_per_page;
list($_comments, $total) = _wp_get_comment_list( $comment_status, $search_dirty, $start, $comments_per_page + 5, $post_id ); // Grab a few extra
list($_comments, $total) = _wp_get_comment_list( $comment_status, $search_dirty, $start, $comments_per_page + 5, $post_id, $comment_type ); // Grab a few extra
$comments = array_slice($_comments, 0, $comments_per_page);
$extra_comments = array_slice($_comments, $comments_per_page);

View File

@ -1531,7 +1531,7 @@ function user_row( $user_object, $style = '', $role = '' ) {
return $r;
}
function _wp_get_comment_list( $status = '', $s = false, $start, $num, $post = 0 ) {
function _wp_get_comment_list( $status = '', $s = false, $start, $num, $post = 0, $type = '' ) {
global $wpdb;
$start = abs( (int) $start );
@ -1552,6 +1552,15 @@ function _wp_get_comment_list( $status = '', $s = false, $start, $num, $post = 0
else
$post = '';
if ( 'comment' == $type )
$typesql = "AND comment_type = ''";
elseif ( 'pingback' == $type )
$typesql = "AND comment_type = 'pingback'";
elseif ( 'trackback' == $type )
$typesql = "AND comment_type = 'trackback'";
else
$typesql = '';
if ( $s ) {
$s = $wpdb->escape($s);
$comments = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->comments WHERE
@ -1561,9 +1570,10 @@ function _wp_get_comment_list( $status = '', $s = false, $start, $num, $post = 0
comment_author_IP LIKE ('%$s%') OR
comment_content LIKE ('%$s%') ) AND
$approved
$typesql
ORDER BY comment_date_gmt DESC LIMIT $start, $num");
} else {
$comments = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->comments WHERE $approved $post ORDER BY comment_date_gmt DESC LIMIT $start, $num" );
$comments = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->comments WHERE $approved $post $typesql ORDER BY comment_date_gmt DESC LIMIT $start, $num" );
}
update_comment_cache($comments);