2010-10-31 05:37:15 -04:00
< ? php
/**
* MS Themes List Table class .
*
* @ package WordPress
* @ subpackage List_Table
* @ since 3.1 . 0
2011-01-16 16:47:24 -05:00
* @ access private
2010-10-31 05:37:15 -04:00
*/
2010-11-04 04:07:03 -04:00
class WP_MS_Themes_List_Table extends WP_List_Table {
2010-11-17 13:47:34 -05: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 $site_id ;
public $is_site_themes ;
2010-10-31 05:37:15 -04:00
2015-01-12 11:17:22 -05:00
private $has_items ;
2014-08-09 22:18:17 -04:00
/**
* Constructor .
*
* @ since 3.1 . 0
2014-08-09 22:22:16 -04:00
* @ access public
2014-08-09 22:18:17 -04:00
*
* @ see WP_List_Table :: __construct () for more information on default arguments .
*
2015-05-28 17:41:30 -04:00
* @ global string $status
* @ global int $page
*
2014-08-09 22:18:17 -04:00
* @ param array $args An associative array of arguments .
*/
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 () ) {
2010-10-31 05:37:15 -04:00
global $status , $page ;
2012-09-19 08:43:31 -04:00
parent :: __construct ( array (
'plural' => 'themes' ,
'screen' => isset ( $args [ 'screen' ] ) ? $args [ 'screen' ] : null ,
) );
2012-02-28 15:13:21 -05:00
$status = isset ( $_REQUEST [ 'theme_status' ] ) ? $_REQUEST [ 'theme_status' ] : 'all' ;
2012-03-08 02:32:42 -05:00
if ( ! in_array ( $status , array ( 'all' , 'enabled' , 'disabled' , 'upgrade' , 'search' , 'broken' ) ) )
2010-10-31 05:37:15 -04:00
$status = 'all' ;
$page = $this -> get_pagenum ();
2012-09-19 08:43:31 -04:00
$this -> is_site_themes = ( 'site-themes-network' == $this -> screen -> id ) ? true : false ;
2010-11-12 17:44:08 -05:00
2010-11-23 19:27:54 -05:00
if ( $this -> is_site_themes )
2010-11-23 17:27:05 -05:00
$this -> site_id = isset ( $_REQUEST [ 'id' ] ) ? intval ( $_REQUEST [ 'id' ] ) : 0 ;
2010-10-31 05:37:15 -04:00
}
2010-11-17 13:47:34 -05: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_table_classes () {
2014-07-17 05:14:16 -04:00
// todo: remove and add CSS for .themes
return array ( 'widefat' , 'plugins' );
2010-12-23 09:34:14 -05: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 () {
2012-06-30 08:40:25 -04:00
if ( $this -> is_site_themes )
return current_user_can ( 'manage_sites' );
else
return current_user_can ( 'manage_network_themes' );
2010-10-31 05:37:15 -04:00
}
2015-05-28 17:41:30 -04:00
/**
*
* @ global string $status
* @ global array $totals
* @ global int $page
* @ global string $orderby
* @ global string $order
* @ global string $s
*/
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 () {
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
global $status , $totals , $page , $orderby , $order , $s ;
2010-10-31 05:37:15 -04:00
wp_reset_vars ( array ( 'orderby' , 'order' , 's' ) );
$themes = array (
2014-02-04 03:25:13 -05:00
/**
* Filter the full array of WP_Theme objects to list in the Multisite
* themes list table .
*
* @ since 3.1 . 0
*
* @ param array $all An array of WP_Theme objects to display in the list table .
*/
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
'all' => apply_filters ( 'all_themes' , wp_get_themes () ),
2010-10-31 05:37:15 -04:00
'search' => array (),
'enabled' => array (),
'disabled' => array (),
2012-03-08 02:32:42 -05:00
'upgrade' => array (),
'broken' => $this -> is_site_themes ? array () : wp_get_themes ( array ( 'errors' => true ) ),
2010-10-31 05:37:15 -04:00
);
2010-10-31 19:26:38 -04:00
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
if ( $this -> is_site_themes ) {
2010-11-11 10:16:16 -05:00
$themes_per_page = $this -> get_items_per_page ( 'site_themes_network_per_page' );
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
$allowed_where = 'site' ;
} else {
$themes_per_page = $this -> get_items_per_page ( 'themes_network_per_page' );
$allowed_where = 'network' ;
2010-11-11 10:16:16 -05:00
}
2010-11-17 13:47:34 -05:00
2012-03-21 12:19:27 -04:00
$maybe_update = current_user_can ( 'update_themes' ) && ! $this -> is_site_themes && $current = get_site_transient ( 'update_themes' );
2010-10-31 05:37:15 -04:00
foreach ( ( array ) $themes [ 'all' ] as $key => $theme ) {
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
if ( $this -> is_site_themes && $theme -> is_allowed ( 'network' ) ) {
unset ( $themes [ 'all' ][ $key ] );
continue ;
2010-10-31 05:37:15 -04:00
}
2010-11-08 16:52:54 -05:00
2012-03-21 12:19:27 -04:00
if ( $maybe_update && isset ( $current -> response [ $key ] ) ) {
$themes [ 'all' ][ $key ] -> update = true ;
$themes [ 'upgrade' ][ $key ] = $themes [ 'all' ][ $key ];
}
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
$filter = $theme -> is_allowed ( $allowed_where , $this -> site_id ) ? 'enabled' : 'disabled' ;
$themes [ $filter ][ $key ] = $themes [ 'all' ][ $key ];
}
2010-10-31 05:37:15 -04:00
if ( $s ) {
2010-10-31 19:26:38 -04:00
$status = 'search' ;
2013-09-05 12:34:09 -04:00
$themes [ 'search' ] = array_filter ( array_merge ( $themes [ 'all' ], $themes [ 'broken' ] ), array ( $this , '_search_callback' ) );
2010-10-31 05:37:15 -04:00
}
$totals = array ();
foreach ( $themes as $type => $list )
$totals [ $type ] = count ( $list );
if ( empty ( $themes [ $status ] ) && ! in_array ( $status , array ( 'all' , 'search' ) ) )
$status = 'all' ;
$this -> items = $themes [ $status ];
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
WP_Theme :: sort_by_name ( $this -> items );
$this -> has_items = ! empty ( $themes [ 'all' ] );
2010-10-31 05:37:15 -04:00
$total_this_page = $totals [ $status ];
if ( $orderby ) {
$orderby = ucfirst ( $orderby );
$order = strtoupper ( $order );
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
if ( $orderby == 'Name' ) {
if ( 'ASC' == $order )
$this -> items = array_reverse ( $this -> items );
} else {
2013-09-05 12:34:09 -04:00
uasort ( $this -> items , array ( $this , '_order_callback' ) );
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
}
2010-10-31 05:37:15 -04:00
}
$start = ( $page - 1 ) * $themes_per_page ;
if ( $total_this_page > $themes_per_page )
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
$this -> items = array_slice ( $this -> items , $start , $themes_per_page , true );
2010-10-31 05:37:15 -04:00
$this -> set_pagination_args ( array (
'total_items' => $total_this_page ,
'per_page' => $themes_per_page ,
) );
}
2010-11-17 13:47:34 -05:00
2014-11-30 19:33:23 -05:00
/**
* @ staticvar string $term
* @ param WP_Theme $theme
* @ 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 _search_callback ( $theme ) {
2015-05-29 11:43:29 -04:00
static $term = null ;
2010-10-31 05:37:15 -04:00
if ( is_null ( $term ) )
2013-03-01 12:00:25 -05:00
$term = wp_unslash ( $_REQUEST [ 's' ] );
2010-10-31 19:26:38 -04:00
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
foreach ( array ( 'Name' , 'Description' , 'Author' , 'Author' , 'AuthorURI' ) as $field ) {
// Don't mark up; Do translate.
if ( false !== stripos ( $theme -> display ( $field , false , true ), $term ) )
2010-10-31 05:37:15 -04:00
return true ;
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
}
if ( false !== stripos ( $theme -> get_stylesheet (), $term ) )
return true ;
if ( false !== stripos ( $theme -> get_template (), $term ) )
return true ;
2010-10-31 05:37:15 -04:00
return false ;
}
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
// Not used by any core columns.
2014-11-30 19:33:23 -05:00
/**
* @ global string $orderby
* @ global string $order
* @ param array $theme_a
* @ param array $theme_b
* @ return int
*/
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 _order_callback ( $theme_a , $theme_b ) {
2010-10-31 05:37:15 -04:00
global $orderby , $order ;
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
$a = $theme_a [ $orderby ];
$b = $theme_b [ $orderby ];
2010-10-31 05:37:15 -04:00
if ( $a == $b )
return 0 ;
if ( 'DESC' == $order )
return ( $a < $b ) ? 1 : - 1 ;
else
return ( $a < $b ) ? - 1 : 1 ;
}
2015-05-29 17:32:24 -04:00
/**
* @ access public
*/
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 () {
2012-02-29 17:54:50 -05:00
if ( ! $this -> has_items )
2010-10-31 05:37:15 -04:00
_e ( 'No themes found.' );
else
_e ( 'You do not appear to have any themes available at this time.' );
}
2015-05-28 17:41:30 -04:00
/**
*
* @ return array
*/
2014-07-11 23:27:14 -04:00
public function get_columns () {
2010-10-31 05:37:15 -04:00
return array (
'cb' => '<input type="checkbox" />' ,
'name' => __ ( 'Theme' ),
'description' => __ ( 'Description' ),
);
}
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-31 05:37:15 -04:00
return array (
'name' => 'name' ,
);
}
2015-05-28 22:41:25 -04:00
/**
2015-07-13 12:13:26 -04:00
* Gets the name of the primary column .
2015-05-28 22:41:25 -04:00
*
* @ since 4.3 . 0
* @ access protected
*
2015-06-03 11:08:28 -04:00
* @ return string Unalterable name of the primary column name , in this case , 'name' .
2015-05-28 22:41:25 -04:00
*/
2015-09-14 16:29:26 -04:00
protected function get_primary_column_name () {
2015-05-28 22:41:25 -04:00
return 'name' ;
}
2015-05-28 17:41:30 -04:00
/**
*
* @ global array $totals
* @ global string $status
* @ 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_views () {
2010-10-31 05:37:15 -04:00
global $totals , $status ;
$status_links = array ();
foreach ( $totals as $type => $count ) {
if ( ! $count )
continue ;
switch ( $type ) {
case 'all' :
$text = _nx ( 'All <span class="count">(%s)</span>' , 'All <span class="count">(%s)</span>' , $count , 'themes' );
break ;
case 'enabled' :
$text = _n ( 'Enabled <span class="count">(%s)</span>' , 'Enabled <span class="count">(%s)</span>' , $count );
break ;
case 'disabled' :
$text = _n ( 'Disabled <span class="count">(%s)</span>' , 'Disabled <span class="count">(%s)</span>' , $count );
break ;
case 'upgrade' :
2010-12-02 16:45:47 -05:00
$text = _n ( 'Update Available <span class="count">(%s)</span>' , 'Update Available <span class="count">(%s)</span>' , $count );
2010-10-31 05:37:15 -04:00
break ;
2012-03-08 02:32:42 -05:00
case 'broken' :
$text = _n ( 'Broken <span class="count">(%s)</span>' , 'Broken <span class="count">(%s)</span>' , $count );
break ;
2010-10-31 05:37:15 -04:00
}
2010-11-17 13:47:34 -05:00
if ( $this -> is_site_themes )
$url = 'site-themes.php?id=' . $this -> site_id ;
else
2010-11-08 16:52:54 -05:00
$url = 'themes.php' ;
2010-12-18 20:11:38 -05:00
if ( 'search' != $type ) {
$status_links [ $type ] = sprintf ( " <a href='%s' %s>%s</a> " ,
2010-12-24 09:19:41 -05:00
esc_url ( add_query_arg ( 'theme_status' , $type , $url ) ),
2010-12-18 20:11:38 -05:00
( $type == $status ) ? ' class="current"' : '' ,
sprintf ( $text , number_format_i18n ( $count ) )
);
}
2010-10-31 05:37:15 -04:00
}
return $status_links ;
}
2015-05-28 17:41:30 -04:00
/**
* @ global string $status
2015-05-29 16:17:26 -04:00
*
2015-05-28 17:41:30 -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-31 05:37:15 -04:00
global $status ;
$actions = array ();
if ( 'enabled' != $status )
2010-12-02 18:49:18 -05:00
$actions [ 'enable-selected' ] = $this -> is_site_themes ? __ ( 'Enable' ) : __ ( 'Network Enable' );
2010-10-31 05:37:15 -04:00
if ( 'disabled' != $status )
2010-12-02 18:49:18 -05:00
$actions [ 'disable-selected' ] = $this -> is_site_themes ? __ ( 'Disable' ) : __ ( 'Network Disable' );
2010-12-21 11:50:16 -05:00
if ( ! $this -> is_site_themes ) {
if ( current_user_can ( 'update_themes' ) )
$actions [ 'update-selected' ] = __ ( 'Update' );
2012-06-28 16:05:15 -04:00
if ( current_user_can ( 'delete_themes' ) )
$actions [ 'delete-selected' ] = __ ( 'Delete' );
2010-12-21 11:50:16 -05:00
}
2010-10-31 05:37:15 -04:00
return $actions ;
}
2015-05-29 17:32:24 -04:00
/**
* @ access public
*/
2014-07-13 18:09:16 -04:00
public function display_rows () {
2013-05-28 00:10:10 -04:00
foreach ( $this -> items as $theme )
$this -> single_row ( $theme );
2010-11-13 18:47:14 -05:00
}
2014-11-30 19:33:23 -05:00
/**
2015-07-13 12:13:26 -04:00
* Handles the checkbox column output .
*
2015-06-13 12:54:26 -04:00
* @ since 4.3 . 0
2015-07-13 12:13:26 -04:00
* @ access public
2015-06-13 12:54:26 -04:00
*
2015-07-13 12:13:26 -04:00
* @ param WP_Theme $theme The current WP_Theme object .
2015-06-13 12:54:26 -04:00
*/
public function column_cb ( $theme ) {
$checkbox_id = 'checkbox_' . md5 ( $theme -> get ( 'Name' ) );
?>
< input type = " checkbox " name = " checked[] " value = " <?php echo esc_attr( $theme->get_stylesheet () ) ?> " id = " <?php echo $checkbox_id ?> " />
< label class = " screen-reader-text " for = " <?php echo $checkbox_id ?> " >< ? php _e ( 'Select' ) ?> <?php echo $theme->display( 'Name' ) ?></label>
< ? php
}
/**
2015-07-13 12:13:26 -04:00
* Handles the name column output .
*
2015-06-13 12:54:26 -04:00
* @ since 4.3 . 0
2015-07-13 12:13:26 -04:00
* @ access public
2015-06-13 12:54:26 -04:00
*
2014-11-30 19:33:23 -05:00
* @ global string $status
2015-06-13 12:54:26 -04:00
* @ global int $page
2014-11-30 19:33:23 -05:00
* @ global string $s
2015-05-29 17:32:24 -04:00
*
2015-07-13 12:13:26 -04:00
* @ param WP_Theme $theme The current WP_Theme object .
2014-11-30 19:33:23 -05:00
*/
2015-06-13 12:54:26 -04:00
public function column_name ( $theme ) {
global $status , $page , $s ;
2010-10-31 05:37:15 -04:00
$context = $status ;
2010-11-13 18:47:14 -05:00
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
if ( $this -> is_site_themes ) {
2010-11-08 16:52:54 -05:00
$url = " site-themes.php?id= { $this -> site_id } & " ;
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
$allowed = $theme -> is_allowed ( 'site' , $this -> site_id );
} else {
2010-11-08 16:52:54 -05:00
$url = 'themes.php?' ;
Introduce WP_Theme, wp_get_themes(), and wp_get_theme() to replace get_themes(), get_theme(), get_theme_data(), current_theme_info(), and others.
* Getters and Helpers: Introduces a series of methods to allow for easy generation of headers for display, and other theme metadata, including page templates.
* Screenshots: Handles support for multiple screenshots. (see # Additional screenshots must be PNG and start with screenshot-2.png, and be sequential to be counted. see #19816.
* Error Handling: Broken themes have a WP_Error object attached to them.
* Caching: Introduces a wp_cache_themes_persistently filter (also in [20020]) to enable persistent caching of all filesystem and sanitization operations normally handled by WP_Theme (and formerly get_file_data() and get_themes()). Themes are cached individually and across five different cache keys for different data pieces.
* Compatibility: A WP_Theme object is backwards compatible with a theme's array formerly returned by get_themes() and get_theme(), and an stdClass object formerly returned by current_theme_info().
* i18n/L10n: Theme headers are now localizable with proper Text Domain and Domain Path headers, like plugins. (Language packs may remove the requirement for headers.) For page templates, see #6007 (not fixed yet, but will be easy now). For headers, fixes #15858.
* PHP and CSS files: New methods that fetch a list of theme files (for the theme editor) only on demand, rather than only loading them into memory. fixes #11214.
Functions deprecated:
* get_themes(), get_allowed_themes() and get_broken_themes() -- use wp_get_themes()
* get_theme() and current_theme_info() -- use wp_get_theme()
* get_site_allowed_themes() -- use WP_Theme::get_allowed_on_network()
* wpmu_get_blog_allowedthemes() -- use WP_theme::get_allowed_on_site()
see also [20016], [20018], [20019], [20020], [20021], [20022], [20025], [20026], [20027]. also fixes #19244.
see #20103.
git-svn-id: http://svn.automattic.com/wordpress/trunk@20029 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-02-28 16:24:44 -05:00
$allowed = $theme -> is_allowed ( 'network' );
}
2010-10-31 05:37:15 -04:00
2014-07-17 05:14:16 -04:00
// Pre-order.
2010-11-13 18:47:14 -05:00
$actions = array (
'enable' => '' ,
'disable' => '' ,
2010-12-21 11:50:16 -05:00
'edit' => '' ,
'delete' => ''
2010-11-13 18:47:14 -05:00
);
2010-10-31 05:37:15 -04:00
2012-09-04 18:35:12 -04:00
$stylesheet = $theme -> get_stylesheet ();
$theme_key = urlencode ( $stylesheet );
2010-11-13 18:47:14 -05:00
2012-03-08 12:08:55 -05:00
if ( ! $allowed ) {
2015-06-13 12:54:26 -04:00
if ( ! $theme -> errors () ) {
2012-09-04 18:35:12 -04:00
$actions [ 'enable' ] = '<a href="' . esc_url ( wp_nonce_url ( $url . 'action=enable&theme=' . $theme_key . '&paged=' . $page . '&s=' . $s , 'enable-theme_' . $stylesheet ) ) . '" title="' . esc_attr__ ( 'Enable this theme' ) . '" class="edit">' . ( $this -> is_site_themes ? __ ( 'Enable' ) : __ ( 'Network Enable' ) ) . '</a>' ;
2015-06-13 12:54:26 -04:00
}
2012-03-08 12:08:55 -05:00
} else {
2012-09-04 18:35:12 -04:00
$actions [ 'disable' ] = '<a href="' . esc_url ( wp_nonce_url ( $url . 'action=disable&theme=' . $theme_key . '&paged=' . $page . '&s=' . $s , 'disable-theme_' . $stylesheet ) ) . '" title="' . esc_attr__ ( 'Disable this theme' ) . '">' . ( $this -> is_site_themes ? __ ( 'Disable' ) : __ ( 'Network Disable' ) ) . '</a>' ;
2012-03-08 12:08:55 -05:00
}
2010-11-13 18:47:14 -05:00
2015-06-13 12:54:26 -04:00
if ( current_user_can ( 'edit_themes' ) ) {
2012-09-04 18:35:12 -04:00
$actions [ 'edit' ] = '<a href="' . esc_url ( 'theme-editor.php?theme=' . $theme_key ) . '" title="' . esc_attr__ ( 'Open this theme in the Theme Editor' ) . '" class="edit">' . __ ( 'Edit' ) . '</a>' ;
2015-06-13 12:54:26 -04:00
}
2010-12-24 12:41:36 -05:00
2015-06-13 12:54:26 -04:00
if ( ! $allowed && current_user_can ( 'delete_themes' ) && ! $this -> is_site_themes && $stylesheet != get_option ( 'stylesheet' ) && $stylesheet != get_option ( 'template' ) ) {
2010-12-21 11:50:16 -05:00
$actions [ 'delete' ] = '<a href="' . esc_url ( wp_nonce_url ( 'themes.php?action=delete-selected&checked[]=' . $theme_key . '&theme_status=' . $context . '&paged=' . $page . '&s=' . $s , 'bulk-themes' ) ) . '" title="' . esc_attr__ ( 'Delete this theme' ) . '" class="delete">' . __ ( 'Delete' ) . '</a>' ;
2015-06-13 12:54:26 -04:00
}
2014-02-04 03:25:13 -05:00
/**
* Filter the action links displayed for each theme in the Multisite
* themes list table .
*
* The action links displayed are determined by the theme ' s status , and
* which Multisite themes list table is being displayed - the Network
* themes list table ( themes . php ), which displays all installed themes ,
* or the Site themes list table ( site - themes . php ), which displays the
* non - network enabled themes when editing a site in the Network admin .
*
* The default action links for the Network themes list table include
* 'Network Enable' , 'Network Disable' , 'Edit' , and 'Delete' .
*
* The default action links for the Site themes list table include
* 'Enable' , 'Disable' , and 'Edit' .
*
* @ since 2.8 . 0
*
* @ param array $actions An array of action links .
* @ param WP_Theme $theme The current WP_Theme object .
* @ param string $context Status of the theme .
*/
2013-08-16 11:47:10 -04:00
$actions = apply_filters ( 'theme_action_links' , array_filter ( $actions ), $theme , $context );
2014-02-04 03:25:13 -05:00
/**
* Filter the action links of a specific theme in the Multisite themes
* list table .
*
2014-11-30 06:28:24 -05:00
* The dynamic portion of the hook name , `$stylesheet` , refers to the
2014-02-04 03:25:13 -05:00
* directory name of the theme , which in most cases is synonymous
* with the template name .
*
* @ since 3.1 . 0
*
* @ param array $actions An array of action links .
* @ param WP_Theme $theme The current WP_Theme object .
* @ param string $context Status of the theme .
*/
2013-08-16 11:47:10 -04:00
$actions = apply_filters ( " theme_action_links_ $stylesheet " , $actions , $theme , $context );
2011-01-05 23:11:14 -05:00
2015-06-13 12:54:26 -04:00
echo $this -> row_actions ( $actions , true );
}
2010-11-13 18:47:14 -05:00
2015-06-13 12:54:26 -04:00
/**
2015-07-13 12:13:26 -04:00
* Handles the description column output .
*
2015-06-13 12:54:26 -04:00
* @ since 4.3 . 0
2015-07-13 12:13:26 -04:00
* @ access public
2015-06-13 12:54:26 -04:00
*
* @ global string $status
* @ global array $totals
*
2015-07-13 12:13:26 -04:00
* @ param WP_Theme $theme The current WP_Theme object .
2015-06-13 12:54:26 -04:00
*/
public function column_description ( $theme ) {
global $status , $totals ;
if ( $theme -> errors () ) {
$pre = $status == 'broken' ? __ ( 'Broken Theme:' ) . ' ' : '' ;
2015-07-07 19:11:24 -04:00
echo '<p><strong class="error-message">' . $pre . $theme -> errors () -> get_error_message () . '</strong></p>' ;
2015-06-13 12:54:26 -04:00
}
2010-11-13 18:47:14 -05:00
2015-06-13 12:54:26 -04:00
if ( $this -> is_site_themes ) {
$allowed = $theme -> is_allowed ( 'site' , $this -> site_id );
} else {
$allowed = $theme -> is_allowed ( 'network' );
}
$class = ! $allowed ? 'inactive' : 'active' ;
2012-03-21 12:19:27 -04:00
if ( ! empty ( $totals [ 'upgrade' ] ) && ! empty ( $theme -> update ) )
$class .= ' update' ;
2015-06-13 12:54:26 -04:00
echo " <div class='theme-description'><p> " . $theme -> display ( 'Description' ) . " </p></div>
< div class = '$class second theme-version-author-uri' > " ;
$stylesheet = $theme -> get_stylesheet ();
$theme_meta = array ();
if ( $theme -> get ( 'Version' ) ) {
$theme_meta [] = sprintf ( __ ( 'Version %s' ), $theme -> display ( 'Version' ) );
}
$theme_meta [] = sprintf ( __ ( 'By %s' ), $theme -> display ( 'Author' ) );
if ( $theme -> get ( 'ThemeURI' ) ) {
$theme_meta [] = '<a href="' . $theme -> display ( 'ThemeURI' ) . '" title="' . esc_attr__ ( 'Visit theme homepage' ) . '">' . __ ( 'Visit Theme Site' ) . '</a>' ;
}
/**
* Filter the array of row meta for each theme in the Multisite themes
* list table .
*
* @ since 3.1 . 0
*
* @ param array $theme_meta An array of the theme ' s metadata ,
* including the version , author , and
* theme URI .
* @ param string $stylesheet Directory name of the theme .
* @ param WP_Theme $theme WP_Theme object .
* @ param string $status Status of the theme .
*/
$theme_meta = apply_filters ( 'theme_row_meta' , $theme_meta , $stylesheet , $theme , $status );
echo implode ( ' | ' , $theme_meta );
echo '</div>' ;
}
2010-11-13 18:47:14 -05:00
2015-06-13 12:54:26 -04:00
/**
2015-07-13 12:13:26 -04:00
* Handles default column output .
*
2015-06-13 12:54:26 -04:00
* @ since 4.3 . 0
2015-07-13 12:13:26 -04:00
* @ access public
2015-06-13 12:54:26 -04:00
*
2015-07-13 12:13:26 -04:00
* @ param WP_Theme $theme The current WP_Theme object .
* @ param string $column_name The current column name .
2015-06-13 12:54:26 -04:00
*/
public function column_default ( $theme , $column_name ) {
$stylesheet = $theme -> get_stylesheet ();
2015-07-13 12:13:26 -04:00
2015-06-13 12:54:26 -04:00
/**
* Fires inside each custom column of the Multisite themes list table .
*
* @ since 3.1 . 0
*
* @ param string $column_name Name of the column .
* @ param string $stylesheet Directory name of the theme .
* @ param WP_Theme $theme Current WP_Theme object .
*/
do_action ( 'manage_themes_custom_column' , $column_name , $stylesheet , $theme );
}
/**
2015-07-13 12:13:26 -04:00
* Handles the output for a single table row .
*
2015-06-13 12:54:26 -04:00
* @ since 4.3 . 0
2015-07-13 12:13:26 -04:00
* @ access public
2015-06-13 12:54:26 -04:00
*
2015-07-13 12:13:26 -04:00
* @ param WP_Theme $item The current WP_Theme object .
2015-06-13 12:54:26 -04:00
*/
public function single_row_columns ( $item ) {
2015-05-28 22:41:25 -04:00
list ( $columns , $hidden , $sortable , $primary ) = $this -> get_column_info ();
2010-11-13 18:47:14 -05:00
foreach ( $columns as $column_name => $column_display_name ) {
2015-06-10 15:47:27 -04:00
$extra_classes = '' ;
if ( in_array ( $column_name , $hidden ) ) {
$extra_classes .= ' hidden' ;
}
2010-11-13 18:47:14 -05:00
switch ( $column_name ) {
case 'cb' :
2015-06-13 12:54:26 -04:00
echo '<th scope="row" class="check-column">' ;
$this -> column_cb ( $item );
echo '</th>' ;
2010-11-13 18:47:14 -05:00
break ;
2015-06-13 12:54:26 -04:00
2010-11-13 18:47:14 -05:00
case 'name' :
2015-06-13 12:54:26 -04:00
echo " <td class='theme-title column-primary { $extra_classes } '><strong> " . $item -> display ( 'Name' ) . " </strong> " ;
$this -> column_name ( $item );
2010-11-13 18:47:14 -05:00
echo " </td> " ;
break ;
2015-06-13 12:54:26 -04:00
2010-11-13 18:47:14 -05:00
case 'description' :
2015-06-10 15:47:27 -04:00
echo " <td class='column-description desc { $extra_classes } '> " ;
2015-06-13 12:54:26 -04:00
$this -> column_description ( $item );
2015-05-28 22:41:25 -04:00
echo '</td>' ;
2010-11-17 13:47:34 -05:00
break ;
2010-11-28 12:39:44 -05:00
2010-11-13 18:47:14 -05:00
default :
2015-06-10 15:47:27 -04:00
echo " <td class=' $column_name column- $column_name { $extra_classes } '> " ;
2014-02-04 03:25:13 -05:00
2015-06-13 12:54:26 -04:00
$this -> column_default ( $item , $column_name );
2015-05-28 22:41:25 -04:00
2010-11-13 18:47:14 -05:00
echo " </td> " ;
2015-06-13 12:54:26 -04:00
break ;
2010-11-13 18:47:14 -05:00
}
2010-10-31 05:37:15 -04:00
}
2015-06-13 12:54:26 -04:00
}
/**
* @ global string $status
* @ global array $totals
*
* @ param WP_Theme $theme
*/
public function single_row ( $theme ) {
global $status , $totals ;
if ( $this -> is_site_themes ) {
$allowed = $theme -> is_allowed ( 'site' , $this -> site_id );
} else {
$allowed = $theme -> is_allowed ( 'network' );
}
$stylesheet = $theme -> get_stylesheet ();
$class = ! $allowed ? 'inactive' : 'active' ;
$id = sanitize_html_class ( $theme -> get_stylesheet () );
if ( ! empty ( $totals [ 'upgrade' ] ) && ! empty ( $theme -> update ) ) {
$class .= ' update' ;
}
echo " <tr id=' $id ' class=' $class '> " ;
$this -> single_row_columns ( $theme );
2010-11-13 18:47:14 -05:00
echo " </tr> " ;
2010-11-30 15:31:49 -05:00
if ( $this -> is_site_themes )
2012-09-04 18:35:12 -04:00
remove_action ( " after_theme_row_ $stylesheet " , 'wp_theme_update_row' );
2014-02-04 03:25:13 -05:00
/**
* Fires after each row in the Multisite themes list table .
*
* @ since 3.1 . 0
*
* @ param string $stylesheet Directory name of the theme .
* @ param WP_Theme $theme Current WP_Theme object .
* @ param string $status Status of the theme .
*/
2012-09-04 18:35:12 -04:00
do_action ( 'after_theme_row' , $stylesheet , $theme , $status );
2014-02-04 03:25:13 -05:00
/**
* Fires after each specific row in the Multisite themes list table .
*
2014-11-30 06:28:24 -05:00
* The dynamic portion of the hook name , `$stylesheet` , refers to the
2014-02-04 03:25:13 -05:00
* directory name of the theme , most often synonymous with the template
* name of the theme .
*
* @ since 3.5 . 0
*
* @ param string $stylesheet Directory name of the theme .
* @ param WP_Theme $theme Current WP_Theme object .
* @ param string $status Status of the theme .
*/
2012-09-04 18:35:12 -04:00
do_action ( " after_theme_row_ $stylesheet " , $stylesheet , $theme , $status );
2010-10-31 05:37:15 -04:00
}
}