<?php
/* Plugin Name: Sortable Spam Column */
class SortableSpamColumn{
function init(){
if(is_super_admin()){
if($_SERVER['PHP_SELF']=='/wp-admin/network/users.php'){
add_filter('wpmu_users_columns', array('SortableSpamColumn', 'register_column'));
add_filter('manage_users-network_sortable_columns', array('SortableSpamColumn', 'register_sortable_column'));
add_filter('manage_users_custom_column', array('SortableSpamColumn', 'users_field'), 10, 3);
if((isset($_GET['orderby'])) && ($_GET['orderby']=="spam")){
add_action('pre_user_query', array('SortableSpamColumn', 'users_query') );
}
}elseif($_SERVER['PHP_SELF']=='/wp-admin/network/sites.php'){
add_filter('wpmu_blogs_columns', array('SortableSpamColumn', 'register_column'));
add_filter('manage_sites-network_sortable_columns', array('SortableSpamColumn', 'register_sortable_column'));
add_filter('manage_sites_custom_column', array('SortableSpamColumn', 'sites_field'), 10, 2);
if((isset($_GET['orderby'])) && ($_GET['orderby']=="spam")){
add_action('query', array('SortableSpamColumn', 'sites_query') );
}
}
}
}
function register_column($columns){
$columns['spam'] = __('Spam');
return $columns;
}
function register_sortable_column($columns){
$columns['spam'] = 'spam';
return $columns;
}
function users_field($dummy, $column, $userid){
if ($column == 'spam'){
echo get_user_option('spam', $userid);
}
return $dummy;
}
function sites_field($column, $blogid){
if ($column == 'spam'){
echo get_blog_status($blogid, 'spam');
}
return $column;
}
public function query_order_by(){
$sOrder = ( isset( $_REQUEST['order'] ) && 'DESC' == strtoupper( $_REQUEST['order'] ) ) ? "DESC" : "ASC";
return "ORDER BY spam ".$sOrder;
}
public function users_query($wp_user_query){
$wp_user_query->query_orderby = SortableSpamColumn::query_order_by();
return $wp_user_query;
}
public function sites_query($query){
global $wpdb,$wp_list_table;
if(strpos($query,"SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' ")!==FALSE){
$query = "SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' ".SortableSpamColumn::query_order_by();
$per_page = (int) get_user_option( 'sites_network_per_page' );
$query .= " LIMIT " . intval( ( $wp_list_table->get_pagenum() - 1 ) * $per_page ) . ", " . intval( $per_page );
}
return $query;
}
}
add_filter('init' , array('SortableSpamColumn','init'));
?>