wp/wp-admin/includes/list-table.php
changeset 0 d970ebf37754
child 5 5e2f62d02dcd
equal deleted inserted replaced
-1:000000000000 0:d970ebf37754
       
     1 <?php
       
     2 /**
       
     3  * Helper functions for displaying a list of items in an ajaxified HTML table.
       
     4  *
       
     5  * @package WordPress
       
     6  * @subpackage List_Table
       
     7  * @since 3.1.0
       
     8  */
       
     9 
       
    10 /**
       
    11  * Fetch an instance of a WP_List_Table class.
       
    12  *
       
    13  * @access private
       
    14  * @since 3.1.0
       
    15  *
       
    16  * @param string $class The type of the list table, which is the class name.
       
    17  * @param array $args Optional. Arguments to pass to the class. Accepts 'screen'.
       
    18  * @return object|bool Object on success, false if the class does not exist.
       
    19  */
       
    20 function _get_list_table( $class, $args = array() ) {
       
    21 	$core_classes = array(
       
    22 		//Site Admin
       
    23 		'WP_Posts_List_Table' => 'posts',
       
    24 		'WP_Media_List_Table' => 'media',
       
    25 		'WP_Terms_List_Table' => 'terms',
       
    26 		'WP_Users_List_Table' => 'users',
       
    27 		'WP_Comments_List_Table' => 'comments',
       
    28 		'WP_Post_Comments_List_Table' => 'comments',
       
    29 		'WP_Links_List_Table' => 'links',
       
    30 		'WP_Plugin_Install_List_Table' => 'plugin-install',
       
    31 		'WP_Themes_List_Table' => 'themes',
       
    32 		'WP_Theme_Install_List_Table' => array( 'themes', 'theme-install' ),
       
    33 		'WP_Plugins_List_Table' => 'plugins',
       
    34 		// Network Admin
       
    35 		'WP_MS_Sites_List_Table' => 'ms-sites',
       
    36 		'WP_MS_Users_List_Table' => 'ms-users',
       
    37 		'WP_MS_Themes_List_Table' => 'ms-themes',
       
    38 	);
       
    39 
       
    40 	if ( isset( $core_classes[ $class ] ) ) {
       
    41 		foreach ( (array) $core_classes[ $class ] as $required )
       
    42 			require_once( ABSPATH . 'wp-admin/includes/class-wp-' . $required . '-list-table.php' );
       
    43 
       
    44 		if ( isset( $args['screen'] ) )
       
    45 			$args['screen'] = convert_to_screen( $args['screen'] );
       
    46 		elseif ( isset( $GLOBALS['hook_suffix'] ) )
       
    47 			$args['screen'] = get_current_screen();
       
    48 		else
       
    49 			$args['screen'] = null;
       
    50 
       
    51 		return new $class( $args );
       
    52 	}
       
    53 
       
    54 	return false;
       
    55 }
       
    56 
       
    57 /**
       
    58  * Register column headers for a particular screen.
       
    59  *
       
    60  * @since 2.7.0
       
    61  *
       
    62  * @param string $screen The handle for the screen to add help to. This is usually the hook name returned by the add_*_page() functions.
       
    63  * @param array $columns An array of columns with column IDs as the keys and translated column names as the values
       
    64  * @see get_column_headers(), print_column_headers(), get_hidden_columns()
       
    65  */
       
    66 function register_column_headers($screen, $columns) {
       
    67 	$wp_list_table = new _WP_List_Table_Compat($screen, $columns);
       
    68 }
       
    69 
       
    70 /**
       
    71  * Prints column headers for a particular screen.
       
    72  *
       
    73  * @since 2.7.0
       
    74  */
       
    75 function print_column_headers($screen, $id = true) {
       
    76 	$wp_list_table = new _WP_List_Table_Compat($screen);
       
    77 
       
    78 	$wp_list_table->print_column_headers($id);
       
    79 }
       
    80 
       
    81 /**
       
    82  * Helper class to be used only by back compat functions
       
    83  *
       
    84  * @since 3.1.0
       
    85  */
       
    86 class _WP_List_Table_Compat extends WP_List_Table {
       
    87 	var $_screen;
       
    88 	var $_columns;
       
    89 
       
    90 	function _WP_List_Table_Compat( $screen, $columns = array() ) {
       
    91 		if ( is_string( $screen ) )
       
    92 			$screen = convert_to_screen( $screen );
       
    93 
       
    94 		$this->_screen = $screen;
       
    95 
       
    96 		if ( !empty( $columns ) ) {
       
    97 			$this->_columns = $columns;
       
    98 			add_filter( 'manage_' . $screen->id . '_columns', array( $this, 'get_columns' ), 0 );
       
    99 		}
       
   100 	}
       
   101 
       
   102 	function get_column_info() {
       
   103 		$columns = get_column_headers( $this->_screen );
       
   104 		$hidden = get_hidden_columns( $this->_screen );
       
   105 		$sortable = array();
       
   106 
       
   107 		return array( $columns, $hidden, $sortable );
       
   108 	}
       
   109 
       
   110 	function get_columns() {
       
   111 		return $this->_columns;
       
   112 	}
       
   113 }