wp/wp-admin/includes/class-wp-terms-list-table.php
changeset 5 5e2f62d02dcd
parent 0 d970ebf37754
child 7 cf61fcea0001
--- a/wp/wp-admin/includes/class-wp-terms-list-table.php	Mon Jun 08 16:11:51 2015 +0000
+++ b/wp/wp-admin/includes/class-wp-terms-list-table.php	Tue Jun 09 03:35:32 2015 +0200
@@ -9,9 +9,21 @@
  */
 class WP_Terms_List_Table extends WP_List_Table {
 
-	var $callback_args;
+	public $callback_args;
+
+	private $level;
 
-	function __construct( $args = array() ) {
+	/**
+	 * Constructor.
+	 *
+	 * @since 3.1.0
+	 * @access public
+	 *
+	 * @see WP_List_Table::__construct() for more information on default arguments.
+	 *
+	 * @param array $args An associative array of arguments.
+	 */
+	public function __construct( $args = array() ) {
 		global $post_type, $taxonomy, $action, $tax;
 
 		parent::__construct( array(
@@ -38,18 +50,41 @@
 
 	}
 
-	function ajax_user_can() {
+	public function ajax_user_can() {
 		return current_user_can( get_taxonomy( $this->screen->taxonomy )->cap->manage_terms );
 	}
 
-	function prepare_items() {
+	public function prepare_items() {
 		$tags_per_page = $this->get_items_per_page( 'edit_' . $this->screen->taxonomy . '_per_page' );
 
 		if ( 'post_tag' == $this->screen->taxonomy ) {
+			/**
+			 * Filter the number of terms displayed per page for the Tags list table.
+			 *
+			 * @since 2.8.0
+			 *
+			 * @param int $tags_per_page Number of tags to be displayed. Default 20.
+			 */
 			$tags_per_page = apply_filters( 'edit_tags_per_page', $tags_per_page );
-			$tags_per_page = apply_filters( 'tagsperpage', $tags_per_page ); // Old filter
+
+			/**
+			 * Filter the number of terms displayed per page for the Tags list table.
+			 *
+			 * @since 2.7.0
+			 * @deprecated 2.8.0 Use edit_tags_per_page instead.
+			 *
+			 * @param int $tags_per_page Number of tags to be displayed. Default 20.
+			 */
+			$tags_per_page = apply_filters( 'tagsperpage', $tags_per_page );
 		} elseif ( 'category' == $this->screen->taxonomy ) {
-			$tags_per_page = apply_filters( 'edit_categories_per_page', $tags_per_page ); // Old filter
+			/**
+			 * Filter the number of terms displayed per page for the Categories list table.
+			 *
+			 * @since 2.8.0
+			 *
+			 * @param int $tags_per_page Number of categories to be displayed. Default 20.
+			 */
+			$tags_per_page = apply_filters( 'edit_categories_per_page', $tags_per_page );
 		}
 
 		$search = !empty( $_REQUEST['s'] ) ? trim( wp_unslash( $_REQUEST['s'] ) ) : '';
@@ -74,26 +109,30 @@
 		) );
 	}
 
-	function has_items() {
+	public function has_items() {
 		// todo: populate $this->items in prepare_items()
 		return true;
 	}
 
-	function get_bulk_actions() {
+	public function no_items() {
+		echo get_taxonomy( $this->screen->taxonomy )->labels->not_found;
+	}
+
+	protected function get_bulk_actions() {
 		$actions = array();
 		$actions['delete'] = __( 'Delete' );
 
 		return $actions;
 	}
 
-	function current_action() {
+	public function current_action() {
 		if ( isset( $_REQUEST['action'] ) && isset( $_REQUEST['delete_tags'] ) && ( 'delete' == $_REQUEST['action'] || 'delete' == $_REQUEST['action2'] ) )
 			return 'bulk-delete';
 
 		return parent::current_action();
 	}
 
-	function get_columns() {
+	public function get_columns() {
 		$columns = array(
 			'cb'          => '<input type="checkbox" />',
 			'name'        => _x( 'Name', 'term name' ),
@@ -104,14 +143,13 @@
 		if ( 'link_category' == $this->screen->taxonomy ) {
 			$columns['links'] = __( 'Links' );
 		} else {
-			$post_type_object = get_post_type_object( $this->screen->post_type );
-			$columns['posts'] = $post_type_object ? $post_type_object->labels->name : __( 'Posts' );
+			$columns['posts'] = _x( 'Count', 'Number/count of items' );
 		}
 
 		return $columns;
 	}
 
-	function get_sortable_columns() {
+	protected function get_sortable_columns() {
 		return array(
 			'name'        => 'name',
 			'description' => 'description',
@@ -121,7 +159,7 @@
 		);
 	}
 
-	function display_rows_or_placeholder() {
+	public function display_rows_or_placeholder() {
 		$taxonomy = $this->screen->taxonomy;
 
 		$args = wp_parse_args( $this->callback_args, array(
@@ -131,46 +169,56 @@
 			'hide_empty' => 0
 		) );
 
-		extract( $args, EXTR_SKIP );
+		$page = $args['page'];
+
+		// Set variable because $args['number'] can be subsequently overridden.
+		$number = $args['number'];
 
 		$args['offset'] = $offset = ( $page - 1 ) * $number;
 
-		// convert it to table rows
+		// Convert it to table rows.
 		$count = 0;
 
-		$terms = array();
-
-		if ( is_taxonomy_hierarchical( $taxonomy ) && !isset( $orderby ) ) {
+		if ( is_taxonomy_hierarchical( $taxonomy ) && ! isset( $args['orderby'] ) ) {
 			// We'll need the full set of terms then.
 			$args['number'] = $args['offset'] = 0;
 		}
 		$terms = get_terms( $taxonomy, $args );
 
 		if ( empty( $terms ) ) {
-			list( $columns, $hidden ) = $this->get_column_info();
 			echo '<tr class="no-items"><td class="colspanchange" colspan="' . $this->get_column_count() . '">';
 			$this->no_items();
 			echo '</td></tr>';
 			return;
 		}
 
-		if ( is_taxonomy_hierarchical( $taxonomy ) && !isset( $orderby ) ) {
-			if ( !empty( $search ) ) // Ignore children on searches.
+		if ( is_taxonomy_hierarchical( $taxonomy ) && ! isset( $args['orderby'] ) ) {
+			if ( ! empty( $args['search'] ) ) {// Ignore children on searches.
 				$children = array();
-			else
+			} else {
 				$children = _get_term_hierarchy( $taxonomy );
-
+			}
 			// Some funky recursion to get the job done( Paging & parents mainly ) is contained within, Skip it for non-hierarchical taxonomies for performance sake
 			$this->_rows( $taxonomy, $terms, $children, $offset, $number, $count );
 		} else {
 			$terms = get_terms( $taxonomy, $args );
-			foreach ( $terms as $term )
+			foreach ( $terms as $term ) {
 				$this->single_row( $term );
-			$count = $number; // Only displaying a single page.
+			}
 		}
 	}
 
-	function _rows( $taxonomy, $terms, &$children, $start, $per_page, &$count, $parent = 0, $level = 0 ) {
+	/**
+	 * @param string $taxonomy
+	 * @param array $terms
+	 * @param array $children
+	 * @param int $start
+	 * @param int $per_page
+	 * @param int $count
+	 * @param int $parent
+	 * @param int $level
+	 */
+	private function _rows( $taxonomy, $terms, &$children, $start, $per_page, &$count, $parent = 0, $level = 0 ) {
 
 		$end = $start + $per_page;
 
@@ -218,18 +266,27 @@
 		}
 	}
 
-	function single_row( $tag, $level = 0 ) {
-		static $row_class = '';
-		$row_class = ( $row_class == '' ? ' class="alternate"' : '' );
+	/**
+	 * @global string $taxonomy
+	 * @param object $tag
+	 * @param int $level
+	 */
+	public function single_row( $tag, $level = 0 ) {
+		global $taxonomy;
+ 		$tag = sanitize_term( $tag, $taxonomy );
 
 		$this->level = $level;
 
-		echo '<tr id="tag-' . $tag->term_id . '"' . $row_class . '>';
+		echo '<tr id="tag-' . $tag->term_id . '">';
 		$this->single_row_columns( $tag );
 		echo '</tr>';
 	}
 
-	function column_cb( $tag ) {
+	/**
+	 * @param object $tag
+	 * @return string
+	 */
+	public function column_cb( $tag ) {
 		$default_term = get_option( 'default_' . $this->screen->taxonomy );
 
 		if ( current_user_can( get_taxonomy( $this->screen->taxonomy )->cap->delete_terms ) && $tag->term_id != $default_term )
@@ -239,14 +296,33 @@
 		return '&nbsp;';
 	}
 
-	function column_name( $tag ) {
+	/**
+	 * @param object $tag
+	 * @return string
+	 */
+	public function column_name( $tag ) {
 		$taxonomy = $this->screen->taxonomy;
 		$tax = get_taxonomy( $taxonomy );
 
 		$default_term = get_option( 'default_' . $taxonomy );
 
 		$pad = str_repeat( '&#8212; ', max( 0, $this->level ) );
+
+		/**
+		 * Filter display of the term name in the terms list table.
+		 *
+		 * The default output may include padding due to the term's
+		 * current level in the term hierarchy.
+		 *
+		 * @since 2.5.0
+		 *
+		 * @see WP_Terms_List_Table::column_name()
+		 *
+		 * @param string $pad_tag_name The term name, padded if not top-level.
+		 * @param object $tag          Term object.
+		 */
 		$name = apply_filters( 'term_name', $pad . ' ' . $tag->name, $tag );
+
 		$qe_data = get_term( $tag->term_id, $taxonomy, OBJECT, 'edit' );
 		$edit_link = esc_url( get_edit_term_link( $tag->term_id, $taxonomy, $this->screen->post_type ) );
 
@@ -262,27 +338,64 @@
 		if ( $tax->public )
 			$actions['view'] = '<a href="' . get_term_link( $tag ) . '">' . __( 'View' ) . '</a>';
 
+		/**
+		 * Filter the action links displayed for each term in the Tags list table.
+		 *
+		 * @since 2.8.0
+		 * @deprecated 3.0.0 Use {$taxonomy}_row_actions instead.
+		 *
+		 * @param array  $actions An array of action links to be displayed. Default
+		 *                        'Edit', 'Quick Edit', 'Delete', and 'View'.
+		 * @param object $tag     Term object.
+		 */
 		$actions = apply_filters( 'tag_row_actions', $actions, $tag );
+
+		/**
+		 * Filter the action links displayed for each term in the terms list table.
+		 *
+		 * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
+		 *
+		 * @since 3.0.0
+		 *
+		 * @param array  $actions An array of action links to be displayed. Default
+		 *                        'Edit', 'Quick Edit', 'Delete', and 'View'.
+		 * @param object $tag     Term object.
+		 */
 		$actions = apply_filters( "{$taxonomy}_row_actions", $actions, $tag );
 
 		$out .= $this->row_actions( $actions );
 		$out .= '<div class="hidden" id="inline_' . $qe_data->term_id . '">';
 		$out .= '<div class="name">' . $qe_data->name . '</div>';
+
+		/** This filter is documented in wp-admin/edit-tag-form.php */
 		$out .= '<div class="slug">' . apply_filters( 'editable_slug', $qe_data->slug ) . '</div>';
 		$out .= '<div class="parent">' . $qe_data->parent . '</div></div>';
 
 		return $out;
 	}
 
-	function column_description( $tag ) {
+	/**
+	 * @param object $tag
+	 * @return string
+	 */
+	public function column_description( $tag ) {
 		return $tag->description;
 	}
 
-	function column_slug( $tag ) {
+	/**
+	 * @param object $tag
+	 * @return string
+	 */
+	public function column_slug( $tag ) {
+		/** This filter is documented in wp-admin/edit-tag-form.php */
 		return apply_filters( 'editable_slug', $tag->slug );
 	}
 
-	function column_posts( $tag ) {
+	/**
+	 * @param object $tag
+	 * @return string
+	 */
+	public function column_posts( $tag ) {
 		$count = number_format_i18n( $tag->count );
 
 		$tax = get_taxonomy( $this->screen->taxonomy );
@@ -306,14 +419,35 @@
 		return "<a href='" . esc_url ( add_query_arg( $args, 'edit.php' ) ) . "'>$count</a>";
 	}
 
-	function column_links( $tag ) {
+	/**
+	 * @param object $tag
+	 * @return string
+	 */
+	public function column_links( $tag ) {
 		$count = number_format_i18n( $tag->count );
 		if ( $count )
 			$count = "<a href='link-manager.php?cat_id=$tag->term_id'>$count</a>";
 		return $count;
 	}
 
-	function column_default( $tag, $column_name ) {
+	/**
+	 * @param object $tag
+	 * @param string $column_name
+	 * @return string
+	 */
+	public function column_default( $tag, $column_name ) {
+		/**
+		 * Filter the displayed columns in the terms list table.
+		 *
+		 * The dynamic portion of the hook name, `$this->screen->taxonomy`,
+		 * refers to the slug of the current taxonomy.
+		 *
+		 * @since 2.8.0
+		 *
+		 * @param string $string      Blank string.
+		 * @param string $column_name Name of the column.
+		 * @param int    $term_id     Term ID.
+		 */
 		return apply_filters( "manage_{$this->screen->taxonomy}_custom_column", '', $column_name, $tag->term_id );
 	}
 
@@ -322,14 +456,14 @@
 	 *
 	 * @since 3.1.0
 	 */
-	function inline_edit() {
+	public function inline_edit() {
 		$tax = get_taxonomy( $this->screen->taxonomy );
 
 		if ( ! current_user_can( $tax->cap->edit_terms ) )
 			return;
 ?>
 
-	<form method="get" action=""><table style="display: none"><tbody id="inlineedit">
+	<form method="get"><table style="display: none"><tbody id="inlineedit">
 		<tr id="inline-edit" class="inline-edit-row" style="display: none"><td colspan="<?php echo $this->get_column_count(); ?>" class="colspanchange">
 
 			<fieldset><div class="inline-edit-col">
@@ -356,14 +490,15 @@
 			if ( isset( $core_columns[$column_name] ) )
 				continue;
 
+			/** This action is documented in wp-admin/includes/class-wp-posts-list-table.php */
 			do_action( 'quick_edit_custom_box', $column_name, 'edit-tags', $this->screen->taxonomy );
 		}
 
 	?>
 
 		<p class="inline-edit-save submit">
-			<a accesskey="c" href="#inline-edit" class="cancel button-secondary alignleft"><?php _e( 'Cancel' ); ?></a>
-			<a accesskey="s" href="#inline-edit" class="save button-primary alignright"><?php echo $tax->labels->update_item; ?></a>
+			<a href="#inline-edit" class="cancel button-secondary alignleft"><?php _e( 'Cancel' ); ?></a>
+			<a href="#inline-edit" class="save button-primary alignright"><?php echo $tax->labels->update_item; ?></a>
 			<span class="spinner"></span>
 			<span class="error" style="display:none;"></span>
 			<?php wp_nonce_field( 'taxinlineeditnonce', '_inline_edit', false ); ?>