2010-10-24 22:57:43 -04:00
< ? php
/**
2015-10-17 11:13:25 -04:00
* List Table API : WP_MS_Sites_List_Table class
2010-10-24 22:57:43 -04:00
*
* @ package WordPress
2015-10-17 11:13:25 -04:00
* @ subpackage Administration
* @ since 3.1 . 0
*/
/**
* Core class used to implement displaying sites in a list table for the network admin .
*
2010-10-25 00:04:18 -04:00
* @ since 3.1 . 0
2011-01-16 16:47:24 -05:00
* @ access private
2015-10-17 11:13:25 -04:00
*
* @ see WP_List_Table
2010-10-24 22:57:43 -04:00
*/
2010-11-04 04:07:03 -04:00
class WP_MS_Sites_List_Table extends WP_List_Table {
2010-10-24 22:57:43 -04:00
2015-06-13 12:23:25 -04:00
/**
2015-07-13 13:53:24 -04:00
* Site status list .
2015-06-13 12:23:25 -04:00
*
2015-07-13 13:53:24 -04:00
* @ since 4.3 . 0
2015-06-13 12:23:25 -04:00
* @ var array
*/
public $status_list ;
2014-08-09 22:18:17 -04:00
/**
* Constructor .
2014-09-04 11:23:16 -04:00
*
2014-08-09 22:18:17 -04:00
* @ since 3.1 . 0
*
* @ see WP_List_Table :: __construct () for more information on default arguments .
*
* @ param array $args An associative array of arguments .
2014-09-04 11:23:16 -04:00
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function __construct ( $args = array () ) {
2015-06-13 12:23:25 -04:00
$this -> status_list = array (
'archived' => array ( 'site-archived' , __ ( 'Archived' ) ),
'spam' => array ( 'site-spammed' , _x ( 'Spam' , 'site' ) ),
'deleted' => array ( 'site-deleted' , __ ( 'Deleted' ) ),
2017-11-30 18:11:00 -05:00
'mature' => array ( 'site-mature' , __ ( 'Mature' ) ),
2015-06-13 12:23:25 -04:00
);
2017-11-30 18:11:00 -05:00
parent :: __construct (
array (
'plural' => 'sites' ,
'screen' => isset ( $args [ 'screen' ] ) ? $args [ 'screen' ] : null ,
)
);
2010-10-24 22:57:43 -04:00
}
2015-05-29 16:17:26 -04:00
/**
* @ return bool
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function ajax_user_can () {
2010-12-16 04:18:28 -05:00
return current_user_can ( 'manage_sites' );
2010-10-24 22:57:43 -04:00
}
2015-05-28 17:41:30 -04:00
/**
2016-06-17 12:06:31 -04:00
* Prepares the list of sites for display .
*
* @ since 3.1 . 0
2015-05-28 17:41:30 -04:00
*
* @ global string $s
* @ global string $mode
* @ global wpdb $wpdb
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function prepare_items () {
2013-11-12 22:23:10 -05:00
global $s , $mode , $wpdb ;
2016-02-17 17:00:27 -05:00
if ( ! empty ( $_REQUEST [ 'mode' ] ) ) {
$mode = $_REQUEST [ 'mode' ] === 'excerpt' ? 'excerpt' : 'list' ;
2016-02-18 11:51:27 -05:00
set_user_setting ( 'sites_list_mode' , $mode );
2016-02-17 17:00:27 -05:00
} else {
2016-02-18 11:51:27 -05:00
$mode = get_user_setting ( 'sites_list_mode' , 'list' );
2016-02-17 17:00:27 -05:00
}
2010-10-24 22:57:43 -04:00
$per_page = $this -> get_items_per_page ( 'sites_network_per_page' );
$pagenum = $this -> get_pagenum ();
2017-11-30 18:11:00 -05:00
$s = isset ( $_REQUEST [ 's' ] ) ? wp_unslash ( trim ( $_REQUEST [ 's' ] ) ) : '' ;
2010-11-03 15:26:23 -04:00
$wild = '' ;
2017-11-30 18:11:00 -05:00
if ( false !== strpos ( $s , '*' ) ) {
2016-06-16 20:03:29 -04:00
$wild = '*' ;
2017-11-30 18:11:00 -05:00
$s = trim ( $s , '*' );
2010-11-03 15:26:23 -04:00
}
2014-07-17 05:14:16 -04:00
/*
* If the network is large and a search is not being performed , show only
2016-01-27 22:35:27 -05:00
* the latest sites with no paging in order to avoid expensive count queries .
2014-07-17 05:14:16 -04:00
*/
2017-11-30 18:11:00 -05:00
if ( ! $s && wp_is_large_network () ) {
if ( ! isset ( $_REQUEST [ 'orderby' ] ) ) {
2010-12-30 13:06:33 -05:00
$_GET [ 'orderby' ] = $_REQUEST [ 'orderby' ] = '' ;
2017-11-30 18:11:00 -05:00
}
if ( ! isset ( $_REQUEST [ 'order' ] ) ) {
2010-11-01 13:53:03 -04:00
$_GET [ 'order' ] = $_REQUEST [ 'order' ] = 'DESC' ;
2017-11-30 18:11:00 -05:00
}
2010-11-01 13:53:03 -04:00
}
2016-06-16 20:03:29 -04:00
$args = array (
'number' => intval ( $per_page ),
'offset' => intval ( ( $pagenum - 1 ) * $per_page ),
'network_id' => get_current_network_id (),
);
2010-10-24 22:57:43 -04:00
2017-11-30 18:11:00 -05:00
if ( empty ( $s ) ) {
2010-11-03 14:28:02 -04:00
// Nothing to do.
2011-07-15 11:42:26 -04:00
} elseif ( preg_match ( '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/' , $s ) ||
preg_match ( '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.?$/' , $s ) ||
preg_match ( '/^[0-9]{1,3}\.[0-9]{1,3}\.?$/' , $s ) ||
preg_match ( '/^[0-9]{1,3}\.$/' , $s ) ) {
// IPv4 address
2017-11-30 18:11:00 -05:00
$sql = $wpdb -> prepare ( " SELECT blog_id FROM { $wpdb -> registration_log } WHERE { $wpdb -> registration_log } .IP LIKE %s " , $wpdb -> esc_like ( $s ) . ( ! empty ( $wild ) ? '%' : '' ) );
2014-06-09 20:44:15 -04:00
$reg_blog_ids = $wpdb -> get_col ( $sql );
2010-11-19 13:16:03 -05:00
2016-06-16 20:03:29 -04:00
if ( $reg_blog_ids ) {
$args [ 'site__in' ] = $reg_blog_ids ;
}
} elseif ( is_numeric ( $s ) && empty ( $wild ) ) {
$args [ 'ID' ] = $s ;
2010-11-03 14:28:02 -04:00
} else {
2016-06-16 20:03:29 -04:00
$args [ 'search' ] = $s ;
if ( ! is_subdomain_install () ) {
$args [ 'search_columns' ] = array ( 'path' );
2010-10-24 22:57:43 -04:00
}
}
2010-12-30 13:06:33 -05:00
$order_by = isset ( $_REQUEST [ 'orderby' ] ) ? $_REQUEST [ 'orderby' ] : '' ;
2016-06-16 20:03:29 -04:00
if ( 'registered' === $order_by ) {
// registered is a valid field name.
} elseif ( 'lastupdated' === $order_by ) {
$order_by = 'last_updated' ;
} elseif ( 'blogname' === $order_by ) {
2015-06-10 02:50:25 -04:00
if ( is_subdomain_install () ) {
2016-06-16 20:03:29 -04:00
$order_by = 'domain' ;
2015-06-10 02:50:25 -04:00
} else {
2016-06-16 20:03:29 -04:00
$order_by = 'path' ;
2015-06-10 02:50:25 -04:00
}
2016-06-16 20:03:29 -04:00
} elseif ( 'blog_id' === $order_by ) {
$order_by = 'id' ;
} elseif ( ! $order_by ) {
$order_by = false ;
}
$args [ 'orderby' ] = $order_by ;
if ( $order_by ) {
2017-11-30 18:11:00 -05:00
$args [ 'order' ] = ( isset ( $_REQUEST [ 'order' ] ) && 'DESC' === strtoupper ( $_REQUEST [ 'order' ] ) ) ? 'DESC' : 'ASC' ;
2010-10-24 22:57:43 -04:00
}
2016-06-16 20:03:29 -04:00
if ( wp_is_large_network () ) {
$args [ 'no_found_rows' ] = true ;
} else {
$args [ 'no_found_rows' ] = false ;
2010-11-19 13:16:03 -05:00
}
2010-10-24 22:57:43 -04:00
2016-06-28 18:26:30 -04:00
/**
* Filters the arguments for the site query in the sites list table .
*
* @ since 4.6 . 0
*
* @ param array $args An array of get_sites () arguments .
*/
$args = apply_filters ( 'ms_sites_list_table_query_args' , $args );
2016-06-16 20:03:29 -04:00
$_sites = get_sites ( $args );
if ( is_array ( $_sites ) ) {
update_site_cache ( $_sites );
2010-10-24 22:57:43 -04:00
2016-06-16 20:03:29 -04:00
$this -> items = array_slice ( $_sites , 0 , $per_page );
}
2010-10-24 22:57:43 -04:00
2017-11-30 18:11:00 -05:00
$total_sites = get_sites (
array_merge (
2018-08-16 21:51:36 -04:00
$args ,
array (
2017-11-30 18:11:00 -05:00
'count' => true ,
'offset' => 0 ,
'number' => 0 ,
)
)
);
2010-11-01 13:53:03 -04:00
2017-11-30 18:11:00 -05:00
$this -> set_pagination_args (
array (
'total_items' => $total_sites ,
'per_page' => $per_page ,
)
);
2010-10-24 22:57:43 -04:00
}
2015-05-29 17:32:24 -04:00
/**
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
public function no_items () {
2010-10-24 22:57:43 -04:00
_e ( 'No sites found.' );
}
2015-05-29 16:17:26 -04:00
/**
* @ return array
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
protected function get_bulk_actions () {
2010-10-24 22:57:43 -04:00
$actions = array ();
2017-11-30 18:11:00 -05:00
if ( current_user_can ( 'delete_sites' ) ) {
2010-11-12 11:35:28 -05:00
$actions [ 'delete' ] = __ ( 'Delete' );
2017-11-30 18:11:00 -05:00
}
$actions [ 'spam' ] = _x ( 'Mark as Spam' , 'site' );
2010-10-24 22:57:43 -04:00
$actions [ 'notspam' ] = _x ( 'Not Spam' , 'site' );
return $actions ;
}
2014-11-30 19:33:23 -05:00
/**
2017-03-21 23:48:42 -04:00
* @ global string $mode List table view mode .
2015-05-28 17:41:30 -04:00
*
2014-11-30 19:33:23 -05:00
* @ param string $which
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
protected function pagination ( $which ) {
2010-10-24 22:57:43 -04:00
global $mode ;
parent :: pagination ( $which );
2017-11-30 18:11:00 -05:00
if ( 'top' === $which ) {
2010-10-24 22:57:43 -04:00
$this -> view_switcher ( $mode );
2017-11-30 18:11:00 -05:00
}
2010-10-24 22:57:43 -04:00
}
2015-05-29 16:17:26 -04:00
/**
* @ return array
*/
2014-07-11 23:27:14 -04:00
public function get_columns () {
2010-10-24 22:57:43 -04:00
$sites_columns = array (
'cb' => '<input type="checkbox" />' ,
2015-06-10 02:50:25 -04:00
'blogname' => __ ( 'URL' ),
2010-10-24 22:57:43 -04:00
'lastupdated' => __ ( 'Last Updated' ),
'registered' => _x ( 'Registered' , 'site' ),
2015-06-10 02:50:25 -04:00
'users' => __ ( 'Users' ),
2010-10-24 22:57:43 -04:00
);
2015-06-10 02:50:25 -04:00
if ( has_filter ( 'wpmublogsaction' ) ) {
2010-10-24 22:57:43 -04:00
$sites_columns [ 'plugins' ] = __ ( 'Actions' );
2015-06-10 02:50:25 -04:00
}
2010-10-24 22:57:43 -04:00
2013-11-23 16:58:10 -05:00
/**
2016-05-22 14:01:30 -04:00
* Filters the displayed site columns in Sites list table .
2013-11-23 16:58:10 -05:00
*
2017-08-01 16:44:43 -04:00
* @ since MU ( 3.0 . 0 )
2013-11-23 16:58:10 -05:00
*
2018-03-22 16:27:32 -04:00
* @ param string [] $sites_columns An array of displayed site columns . Default 'cb' ,
* 'blogname' , 'lastupdated' , 'registered' , 'users' .
2013-11-23 16:58:10 -05:00
*/
2015-05-29 16:17:26 -04:00
return apply_filters ( 'wpmu_blogs_columns' , $sites_columns );
2010-10-24 22:57:43 -04:00
}
2015-05-29 16:17:26 -04:00
/**
* @ return array
*/
Add access modifiers to methods and members of list table classes:
* `WP_List_Table` is the base class that implements `__get()` and `__call()` for BC
* Adds unit tests to confirm that subclasses properly inherit magic methods
* Add modifiers to subclasses: `WP_Links_List_Table`, `WP_Media_List_Table`, `WP_MS_Sites_List_Table`, `WP_MS_Themes_List_Table`, `WP_MS_Users_List_Table`, `WP_Plugin_Install_List_Table`, `WP_Plugins_List_Table`, `WP_Posts_List_Table`, `WP_Terms_List_Table`, `WP_Theme_Install_List_Table`, `WP_Themes_List_Table`
See #27881, #22234.
Built from https://develop.svn.wordpress.org/trunk@28493
git-svn-id: http://core.svn.wordpress.org/trunk@28319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-05-18 21:17:15 -04:00
protected function get_sortable_columns () {
2010-10-24 22:57:43 -04:00
return array (
'blogname' => 'blogname' ,
'lastupdated' => 'lastupdated' ,
2010-12-30 13:06:33 -05:00
'registered' => 'blog_id' ,
2010-10-24 22:57:43 -04:00
);
}
2015-05-28 17:41:30 -04:00
/**
2015-07-13 13:53:24 -04:00
* Handles the checkbox column output .
*
2015-06-13 12:23:25 -04:00
* @ since 4.3 . 0
*
2015-07-13 13:53:24 -04:00
* @ param array $blog Current site .
2015-06-13 12:23:25 -04:00
*/
public function column_cb ( $blog ) {
if ( ! is_main_site ( $blog [ 'blog_id' ] ) ) :
$blogname = untrailingslashit ( $blog [ 'domain' ] . $blog [ 'path' ] );
2018-08-16 21:51:36 -04:00
?>
2017-11-30 18:11:00 -05:00
< label class = " screen-reader-text " for = " blog_<?php echo $blog['blog_id'] ; ?> " >
< ? php
printf ( __ ( 'Select %s' ), $blogname );
2018-08-16 21:51:36 -04:00
?>
2017-11-30 18:11:00 -05:00
</ label >
< input type = " checkbox " id = " blog_<?php echo $blog['blog_id'] ; ?> " name = " allblogs[] " value = " <?php echo esc_attr( $blog['blog_id'] ); ?> " />
2018-08-16 21:51:36 -04:00
< ? php
2017-11-30 18:11:00 -05:00
endif ;
2015-06-13 12:23:25 -04:00
}
2015-09-18 11:58:25 -04:00
/**
* Handles the ID column output .
*
* @ since 4.4 . 0
*
* @ param array $blog Current site .
*/
public function column_id ( $blog ) {
echo $blog [ 'blog_id' ];
}
2015-06-13 12:23:25 -04:00
/**
2016-01-27 22:35:27 -05:00
* Handles the site name column output .
2015-07-13 13:53:24 -04:00
*
2015-06-13 12:23:25 -04:00
* @ since 4.3 . 0
2015-05-28 17:41:30 -04:00
*
2017-03-21 23:48:42 -04:00
* @ global string $mode List table view mode .
2015-06-13 12:23:25 -04:00
*
2016-01-27 22:35:27 -05:00
* @ param array $blog Current site .
2015-05-28 17:41:30 -04:00
*/
2015-06-13 12:23:25 -04:00
public function column_blogname ( $blog ) {
2013-11-12 22:23:10 -05:00
global $mode ;
2010-10-24 22:57:43 -04:00
2017-11-30 18:11:00 -05:00
$blogname = untrailingslashit ( $blog [ 'domain' ] . $blog [ 'path' ] );
2015-06-13 12:23:25 -04:00
$blog_states = array ();
reset ( $this -> status_list );
foreach ( $this -> status_list as $status => $col ) {
if ( $blog [ $status ] == 1 ) {
$blog_states [] = $col [ 1 ];
}
}
$blog_state = '' ;
if ( ! empty ( $blog_states ) ) {
$state_count = count ( $blog_states );
2017-11-30 18:11:00 -05:00
$i = 0 ;
2017-04-07 09:51:43 -04:00
$blog_state .= ' — ' ;
2015-06-13 12:23:25 -04:00
foreach ( $blog_states as $state ) {
++ $i ;
2017-11-30 18:11:00 -05:00
$sep = ( $i == $state_count ) ? '' : ', ' ;
2015-06-13 12:23:25 -04:00
$blog_state .= " <span class='post-state'> $state $sep </span> " ;
}
}
?>
2017-04-07 09:51:43 -04:00
< strong >
< a href = " <?php echo esc_url( network_admin_url( 'site-info.php?id=' . $blog['blog_id'] ) ); ?> " class = " edit " >< ? php echo $blogname ; ?> </a>
< ? php echo $blog_state ; ?>
</ strong >
2015-06-13 12:23:25 -04:00
< ? php
if ( 'list' !== $mode ) {
switch_to_blog ( $blog [ 'blog_id' ] );
2016-02-23 20:06:26 -05:00
echo '<p>' ;
printf (
/* translators: 1: site name, 2: site tagline. */
__ ( '%1$s – %2$s' ),
get_option ( 'blogname' ),
'<em>' . get_option ( 'blogdescription ' ) . '</em>'
);
echo '</p>' ;
2015-06-13 12:23:25 -04:00
restore_current_blog ();
}
}
/**
2015-07-13 13:53:24 -04:00
* Handles the lastupdated column output .
*
2015-06-13 12:23:25 -04:00
* @ since 4.3 . 0
*
2017-03-21 23:48:42 -04:00
* @ global string $mode List table view mode .
*
2015-07-13 13:53:24 -04:00
* @ param array $blog Current site .
2015-06-13 12:23:25 -04:00
*/
public function column_lastupdated ( $blog ) {
global $mode ;
2010-10-24 22:57:43 -04:00
2015-09-22 02:06:25 -04:00
if ( 'list' === $mode ) {
2015-03-19 12:22:28 -04:00
$date = __ ( 'Y/m/d' );
2014-06-29 14:11:14 -04:00
} else {
2015-03-19 12:22:28 -04:00
$date = __ ( 'Y/m/d g:i:s a' );
2014-06-29 14:11:14 -04:00
}
2015-09-22 02:06:25 -04:00
echo ( $blog [ 'last_updated' ] === '0000-00-00 00:00:00' ) ? __ ( 'Never' ) : mysql2date ( $date , $blog [ 'last_updated' ] );
2015-06-13 12:23:25 -04:00
}
2010-10-24 22:57:43 -04:00
2015-06-13 12:23:25 -04:00
/**
2015-07-13 13:53:24 -04:00
* Handles the registered column output .
*
2015-06-13 12:23:25 -04:00
* @ since 4.3 . 0
*
2017-03-21 23:48:42 -04:00
* @ global string $mode List table view mode .
*
2015-07-13 13:53:24 -04:00
* @ param array $blog Current site .
2015-06-13 12:23:25 -04:00
*/
public function column_registered ( $blog ) {
global $mode ;
2010-10-24 22:57:43 -04:00
2015-09-22 02:06:25 -04:00
if ( 'list' === $mode ) {
2015-06-13 12:23:25 -04:00
$date = __ ( 'Y/m/d' );
} else {
$date = __ ( 'Y/m/d g:i:s a' );
}
2010-11-17 13:47:34 -05:00
2015-09-22 02:06:25 -04:00
if ( $blog [ 'registered' ] === '0000-00-00 00:00:00' ) {
2015-06-13 12:23:25 -04:00
echo '—' ;
} else {
echo mysql2date ( $date , $blog [ 'registered' ] );
}
}
2010-10-24 22:57:43 -04:00
2015-06-13 12:23:25 -04:00
/**
2015-07-13 13:53:24 -04:00
* Handles the users column output .
*
2015-06-13 12:23:25 -04:00
* @ since 4.3 . 0
*
2015-07-13 13:53:24 -04:00
* @ param array $blog Current site .
2015-06-13 12:23:25 -04:00
*/
public function column_users ( $blog ) {
$user_count = wp_cache_get ( $blog [ 'blog_id' ] . '_user_count' , 'blog-details' );
if ( ! $user_count ) {
2018-08-16 21:51:36 -04:00
$blog_users = new WP_User_Query (
array (
'blog_id' => $blog [ 'blog_id' ],
'fields' => 'ID' ,
'number' => 1 ,
'count_total' => true ,
)
);
2018-06-27 22:45:03 -04:00
$user_count = $blog_users -> get_total ();
2015-06-13 12:23:25 -04:00
wp_cache_set ( $blog [ 'blog_id' ] . '_user_count' , $user_count , 'blog-details' , 12 * HOUR_IN_SECONDS );
}
2015-05-28 22:41:25 -04:00
2015-06-13 12:23:25 -04:00
printf (
'<a href="%s">%s</a>' ,
esc_url ( network_admin_url ( 'site-users.php?id=' . $blog [ 'blog_id' ] ) ),
number_format_i18n ( $user_count )
);
}
2015-05-28 22:41:25 -04:00
2015-06-13 12:23:25 -04:00
/**
2015-07-13 13:53:24 -04:00
* Handles the plugins column output .
*
2015-06-13 12:23:25 -04:00
* @ since 4.3 . 0
*
2015-07-13 13:53:24 -04:00
* @ param array $blog Current site .
2015-06-13 12:23:25 -04:00
*/
public function column_plugins ( $blog ) {
if ( has_filter ( 'wpmublogsaction' ) ) {
/**
* Fires inside the auxiliary 'Actions' column of the Sites list table .
*
* By default this column is hidden unless something is hooked to the action .
*
2017-08-01 16:44:43 -04:00
* @ since MU ( 3.0 . 0 )
2015-06-13 12:23:25 -04:00
*
* @ param int $blog_id The site ID .
*/
do_action ( 'wpmublogsaction' , $blog [ 'blog_id' ] );
}
}
2015-05-28 22:41:25 -04:00
2015-06-13 12:23:25 -04:00
/**
2015-07-13 13:53:24 -04:00
* Handles output for the default column .
*
2015-06-13 12:23:25 -04:00
* @ since 4.3 . 0
*
2015-07-13 13:53:24 -04:00
* @ param array $blog Current site .
* @ param string $column_name Current column name .
2015-06-13 12:23:25 -04:00
*/
public function column_default ( $blog , $column_name ) {
/**
* Fires for each registered custom column in the Sites list table .
*
* @ since 3.1 . 0
*
* @ param string $column_name The name of the column to display .
* @ param int $blog_id The site ID .
*/
do_action ( 'manage_sites_custom_column' , $column_name , $blog [ 'blog_id' ] );
}
/**
* @ global string $mode
*/
public function display_rows () {
foreach ( $this -> items as $blog ) {
2017-11-30 18:11:00 -05:00
$blog = $blog -> to_array ();
2015-06-13 12:23:25 -04:00
$class = '' ;
reset ( $this -> status_list );
foreach ( $this -> status_list as $status => $col ) {
if ( $blog [ $status ] == 1 ) {
$class = " class=' { $col [ 0 ] } ' " ;
2010-10-24 22:57:43 -04:00
}
}
2015-06-13 12:23:25 -04:00
echo " <tr { $class } > " ;
$this -> single_row_columns ( $blog );
echo '</tr>' ;
2010-10-24 22:57:43 -04:00
}
}
2015-05-28 22:41:25 -04:00
/**
2015-07-13 13:53:24 -04:00
* Gets the name of the default primary column .
2015-05-28 22:41:25 -04:00
*
* @ since 4.3 . 0
*
2015-05-30 21:34:25 -04:00
* @ return string Name of the default primary column , in this case , 'blogname' .
2015-05-28 22:41:25 -04:00
*/
protected function get_default_primary_column_name () {
return 'blogname' ;
}
/**
2015-07-13 13:53:24 -04:00
* Generates and displays row action links .
2015-05-28 22:41:25 -04:00
*
* @ since 4.3 . 0
*
2016-01-27 22:35:27 -05:00
* @ param object $blog Site being acted upon .
2015-05-30 21:34:25 -04:00
* @ param string $column_name Current column name .
* @ param string $primary Primary column name .
* @ return string Row actions output .
2015-05-28 22:41:25 -04:00
*/
protected function handle_row_actions ( $blog , $column_name , $primary ) {
2015-07-14 13:47:24 -04:00
if ( $primary !== $column_name ) {
return ;
}
2015-05-28 22:41:25 -04:00
2015-07-14 13:47:24 -04:00
$blogname = untrailingslashit ( $blog [ 'domain' ] . $blog [ 'path' ] );
2015-05-28 22:41:25 -04:00
2015-07-14 13:47:24 -04:00
// Preordered.
$actions = array (
2017-11-30 18:11:00 -05:00
'edit' => '' ,
'backend' => '' ,
'activate' => '' ,
'deactivate' => '' ,
'archive' => '' ,
'unarchive' => '' ,
'spam' => '' ,
'unspam' => '' ,
'delete' => '' ,
'visit' => '' ,
2015-07-14 13:47:24 -04:00
);
2015-05-28 22:41:25 -04:00
2017-11-30 18:11:00 -05:00
$actions [ 'edit' ] = '<a href="' . esc_url ( network_admin_url ( 'site-info.php?id=' . $blog [ 'blog_id' ] ) ) . '">' . __ ( 'Edit' ) . '</a>' ;
$actions [ 'backend' ] = " <a href=' " . esc_url ( get_admin_url ( $blog [ 'blog_id' ] ) ) . " ' class='edit'> " . __ ( 'Dashboard' ) . '</a>' ;
2016-10-19 00:47:30 -04:00
if ( get_network () -> site_id != $blog [ 'blog_id' ] ) {
2015-07-14 13:47:24 -04:00
if ( $blog [ 'deleted' ] == '1' ) {
2017-11-30 18:11:00 -05:00
$actions [ 'activate' ] = '<a href="' . esc_url ( wp_nonce_url ( network_admin_url ( 'sites.php?action=confirm&action2=activateblog&id=' . $blog [ 'blog_id' ] ), 'activateblog_' . $blog [ 'blog_id' ] ) ) . '">' . __ ( 'Activate' ) . '</a>' ;
2015-07-14 13:47:24 -04:00
} else {
2015-09-01 17:51:21 -04:00
$actions [ 'deactivate' ] = '<a href="' . esc_url ( wp_nonce_url ( network_admin_url ( 'sites.php?action=confirm&action2=deactivateblog&id=' . $blog [ 'blog_id' ] ), 'deactivateblog_' . $blog [ 'blog_id' ] ) ) . '">' . __ ( 'Deactivate' ) . '</a>' ;
2015-07-14 13:47:24 -04:00
}
2015-05-28 22:41:25 -04:00
2015-07-14 13:47:24 -04:00
if ( $blog [ 'archived' ] == '1' ) {
2015-09-01 17:51:21 -04:00
$actions [ 'unarchive' ] = '<a href="' . esc_url ( wp_nonce_url ( network_admin_url ( 'sites.php?action=confirm&action2=unarchiveblog&id=' . $blog [ 'blog_id' ] ), 'unarchiveblog_' . $blog [ 'blog_id' ] ) ) . '">' . __ ( 'Unarchive' ) . '</a>' ;
2015-07-14 13:47:24 -04:00
} else {
2017-11-30 18:11:00 -05:00
$actions [ 'archive' ] = '<a href="' . esc_url ( wp_nonce_url ( network_admin_url ( 'sites.php?action=confirm&action2=archiveblog&id=' . $blog [ 'blog_id' ] ), 'archiveblog_' . $blog [ 'blog_id' ] ) ) . '">' . _x ( 'Archive' , 'verb; site' ) . '</a>' ;
2015-05-28 22:41:25 -04:00
}
2015-07-14 13:47:24 -04:00
if ( $blog [ 'spam' ] == '1' ) {
2015-09-01 17:51:21 -04:00
$actions [ 'unspam' ] = '<a href="' . esc_url ( wp_nonce_url ( network_admin_url ( 'sites.php?action=confirm&action2=unspamblog&id=' . $blog [ 'blog_id' ] ), 'unspamblog_' . $blog [ 'blog_id' ] ) ) . '">' . _x ( 'Not Spam' , 'site' ) . '</a>' ;
2015-07-14 13:47:24 -04:00
} else {
2017-11-30 18:11:00 -05:00
$actions [ 'spam' ] = '<a href="' . esc_url ( wp_nonce_url ( network_admin_url ( 'sites.php?action=confirm&action2=spamblog&id=' . $blog [ 'blog_id' ] ), 'spamblog_' . $blog [ 'blog_id' ] ) ) . '">' . _x ( 'Spam' , 'site' ) . '</a>' ;
2015-07-14 13:47:24 -04:00
}
2015-05-28 22:41:25 -04:00
2015-07-14 13:47:24 -04:00
if ( current_user_can ( 'delete_site' , $blog [ 'blog_id' ] ) ) {
2015-09-01 17:51:21 -04:00
$actions [ 'delete' ] = '<a href="' . esc_url ( wp_nonce_url ( network_admin_url ( 'sites.php?action=confirm&action2=deleteblog&id=' . $blog [ 'blog_id' ] ), 'deleteblog_' . $blog [ 'blog_id' ] ) ) . '">' . __ ( 'Delete' ) . '</a>' ;
2015-07-14 13:47:24 -04:00
}
2015-05-28 22:41:25 -04:00
}
2015-07-14 13:47:24 -04:00
2017-11-30 18:11:00 -05:00
$actions [ 'visit' ] = " <a href=' " . esc_url ( get_home_url ( $blog [ 'blog_id' ], '/' ) ) . " ' rel='bookmark'> " . __ ( 'Visit' ) . '</a>' ;
2015-07-14 13:47:24 -04:00
/**
2016-05-22 14:01:30 -04:00
* Filters the action links displayed for each site in the Sites list table .
2015-07-14 13:47:24 -04:00
*
* The 'Edit' , 'Dashboard' , 'Delete' , and 'Visit' links are displayed by
* default for each site . The site ' s status determines whether to show the
* 'Activate' or 'Deactivate' link , 'Unarchive' or 'Archive' links , and
* 'Not Spam' or 'Spam' link for each site .
*
* @ since 3.1 . 0
*
2018-03-22 16:27:32 -04:00
* @ param string [] $actions An array of action links to be displayed .
* @ param int $blog_id The site ID .
* @ param string $blogname Site path , formatted depending on whether it is a sub - domain
* or subdirectory multisite installation .
2015-07-14 13:47:24 -04:00
*/
$actions = apply_filters ( 'manage_sites_action_links' , array_filter ( $actions ), $blog [ 'blog_id' ], $blogname );
return $this -> row_actions ( $actions );
2015-05-28 22:41:25 -04:00
}
2010-10-24 22:57:43 -04:00
}