diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:56:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:56:49 +0000 |
commit | a415c29efee45520ae252d2aa28f1083a521cd7b (patch) | |
tree | f4ade4b6668ecc0765de7e1424f7c1427ad433ff /wp-admin/includes/class-wp-links-list-table.php | |
parent | Initial commit. (diff) | |
download | wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.tar.xz wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.zip |
Adding upstream version 6.4.3+dfsg1.upstream/6.4.3+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'wp-admin/includes/class-wp-links-list-table.php')
-rw-r--r-- | wp-admin/includes/class-wp-links-list-table.php | 354 |
1 files changed, 354 insertions, 0 deletions
diff --git a/wp-admin/includes/class-wp-links-list-table.php b/wp-admin/includes/class-wp-links-list-table.php new file mode 100644 index 0000000..5159c1c --- /dev/null +++ b/wp-admin/includes/class-wp-links-list-table.php @@ -0,0 +1,354 @@ +<?php +/** + * List Table API: WP_Links_List_Table class + * + * @package WordPress + * @subpackage Administration + * @since 3.1.0 + */ + +/** + * Core class used to implement displaying links in a list table. + * + * @since 3.1.0 + * + * @see WP_List_Table + */ +class WP_Links_List_Table extends WP_List_Table { + + /** + * Constructor. + * + * @since 3.1.0 + * + * @see WP_List_Table::__construct() for more information on default arguments. + * + * @param array $args An associative array of arguments. + */ + public function __construct( $args = array() ) { + parent::__construct( + array( + 'plural' => 'bookmarks', + 'screen' => isset( $args['screen'] ) ? $args['screen'] : null, + ) + ); + } + + /** + * @return bool + */ + public function ajax_user_can() { + return current_user_can( 'manage_links' ); + } + + /** + * @global int $cat_id + * @global string $s + * @global string $orderby + * @global string $order + */ + public function prepare_items() { + global $cat_id, $s, $orderby, $order; + + wp_reset_vars( array( 'action', 'cat_id', 'link_id', 'orderby', 'order', 's' ) ); + + $args = array( + 'hide_invisible' => 0, + 'hide_empty' => 0, + ); + + if ( 'all' !== $cat_id ) { + $args['category'] = $cat_id; + } + if ( ! empty( $s ) ) { + $args['search'] = $s; + } + if ( ! empty( $orderby ) ) { + $args['orderby'] = $orderby; + } + if ( ! empty( $order ) ) { + $args['order'] = $order; + } + + $this->items = get_bookmarks( $args ); + } + + /** + */ + public function no_items() { + _e( 'No links found.' ); + } + + /** + * @return array + */ + protected function get_bulk_actions() { + $actions = array(); + $actions['delete'] = __( 'Delete' ); + + return $actions; + } + + /** + * @global int $cat_id + * @param string $which + */ + protected function extra_tablenav( $which ) { + global $cat_id; + + if ( 'top' !== $which ) { + return; + } + ?> + <div class="alignleft actions"> + <?php + $dropdown_options = array( + 'selected' => $cat_id, + 'name' => 'cat_id', + 'taxonomy' => 'link_category', + 'show_option_all' => get_taxonomy( 'link_category' )->labels->all_items, + 'hide_empty' => true, + 'hierarchical' => 1, + 'show_count' => 0, + 'orderby' => 'name', + ); + + echo '<label class="screen-reader-text" for="cat_id">' . get_taxonomy( 'link_category' )->labels->filter_by_item . '</label>'; + + wp_dropdown_categories( $dropdown_options ); + + submit_button( __( 'Filter' ), '', 'filter_action', false, array( 'id' => 'post-query-submit' ) ); + ?> + </div> + <?php + } + + /** + * @return string[] Array of column titles keyed by their column name. + */ + public function get_columns() { + return array( + 'cb' => '<input type="checkbox" />', + 'name' => _x( 'Name', 'link name' ), + 'url' => __( 'URL' ), + 'categories' => __( 'Categories' ), + 'rel' => __( 'Relationship' ), + 'visible' => __( 'Visible' ), + 'rating' => __( 'Rating' ), + ); + } + + /** + * @return array + */ + protected function get_sortable_columns() { + return array( + 'name' => array( 'name', false, _x( 'Name', 'link name' ), __( 'Table ordered by Name.' ), 'asc' ), + 'url' => array( 'url', false, __( 'URL' ), __( 'Table ordered by URL.' ) ), + 'visible' => array( 'visible', false, __( 'Visible' ), __( 'Table ordered by Visibility.' ) ), + 'rating' => array( 'rating', false, __( 'Rating' ), __( 'Table ordered by Rating.' ) ), + ); + } + + /** + * Gets the name of the default primary column. + * + * @since 4.3.0 + * + * @return string Name of the default primary column, in this case, 'name'. + */ + protected function get_default_primary_column_name() { + return 'name'; + } + + /** + * Handles the checkbox column output. + * + * @since 4.3.0 + * @since 5.9.0 Renamed `$link` to `$item` to match parent class for PHP 8 named parameter support. + * + * @param object $item The current link object. + */ + public function column_cb( $item ) { + // Restores the more descriptive, specific name for use within this method. + $link = $item; + + ?> + <input type="checkbox" name="linkcheck[]" id="cb-select-<?php echo $link->link_id; ?>" value="<?php echo esc_attr( $link->link_id ); ?>" /> + <label for="cb-select-<?php echo $link->link_id; ?>"> + <span class="screen-reader-text"> + <?php + /* translators: Hidden accessibility text. %s: Link name. */ + printf( __( 'Select %s' ), $link->link_name ); + ?> + </span> + </label> + <?php + } + + /** + * Handles the link name column output. + * + * @since 4.3.0 + * + * @param object $link The current link object. + */ + public function column_name( $link ) { + $edit_link = get_edit_bookmark_link( $link ); + printf( + '<strong><a class="row-title" href="%s" aria-label="%s">%s</a></strong>', + $edit_link, + /* translators: %s: Link name. */ + esc_attr( sprintf( __( 'Edit “%s”' ), $link->link_name ) ), + $link->link_name + ); + } + + /** + * Handles the link URL column output. + * + * @since 4.3.0 + * + * @param object $link The current link object. + */ + public function column_url( $link ) { + $short_url = url_shorten( $link->link_url ); + echo "<a href='$link->link_url'>$short_url</a>"; + } + + /** + * Handles the link categories column output. + * + * @since 4.3.0 + * + * @global int $cat_id + * + * @param object $link The current link object. + */ + public function column_categories( $link ) { + global $cat_id; + + $cat_names = array(); + foreach ( $link->link_category as $category ) { + $cat = get_term( $category, 'link_category', OBJECT, 'display' ); + if ( is_wp_error( $cat ) ) { + echo $cat->get_error_message(); + } + $cat_name = $cat->name; + if ( (int) $cat_id !== $category ) { + $cat_name = "<a href='link-manager.php?cat_id=$category'>$cat_name</a>"; + } + $cat_names[] = $cat_name; + } + echo implode( ', ', $cat_names ); + } + + /** + * Handles the link relation column output. + * + * @since 4.3.0 + * + * @param object $link The current link object. + */ + public function column_rel( $link ) { + echo empty( $link->link_rel ) ? '<br />' : $link->link_rel; + } + + /** + * Handles the link visibility column output. + * + * @since 4.3.0 + * + * @param object $link The current link object. + */ + public function column_visible( $link ) { + if ( 'Y' === $link->link_visible ) { + _e( 'Yes' ); + } else { + _e( 'No' ); + } + } + + /** + * Handles the link rating column output. + * + * @since 4.3.0 + * + * @param object $link The current link object. + */ + public function column_rating( $link ) { + echo $link->link_rating; + } + + /** + * Handles the default column output. + * + * @since 4.3.0 + * @since 5.9.0 Renamed `$link` to `$item` to match parent class for PHP 8 named parameter support. + * + * @param object $item Link object. + * @param string $column_name Current column name. + */ + public function column_default( $item, $column_name ) { + // Restores the more descriptive, specific name for use within this method. + $link = $item; + + /** + * Fires for each registered custom link column. + * + * @since 2.1.0 + * + * @param string $column_name Name of the custom column. + * @param int $link_id Link ID. + */ + do_action( 'manage_link_custom_column', $column_name, $link->link_id ); + } + + public function display_rows() { + foreach ( $this->items as $link ) { + $link = sanitize_bookmark( $link ); + $link->link_name = esc_attr( $link->link_name ); + $link->link_category = wp_get_link_cats( $link->link_id ); + ?> + <tr id="link-<?php echo $link->link_id; ?>"> + <?php $this->single_row_columns( $link ); ?> + </tr> + <?php + } + } + + /** + * Generates and displays row action links. + * + * @since 4.3.0 + * @since 5.9.0 Renamed `$link` to `$item` to match parent class for PHP 8 named parameter support. + * + * @param object $item Link being acted upon. + * @param string $column_name Current column name. + * @param string $primary Primary column name. + * @return string Row actions output for links, or an empty string + * if the current column is not the primary column. + */ + protected function handle_row_actions( $item, $column_name, $primary ) { + if ( $primary !== $column_name ) { + return ''; + } + + // Restores the more descriptive, specific name for use within this method. + $link = $item; + + $edit_link = get_edit_bookmark_link( $link ); + + $actions = array(); + $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>'; + $actions['delete'] = sprintf( + '<a class="submitdelete" href="%s" onclick="return confirm( \'%s\' );">%s</a>', + wp_nonce_url( "link.php?action=delete&link_id=$link->link_id", 'delete-bookmark_' . $link->link_id ), + /* translators: %s: Link name. */ + esc_js( sprintf( __( "You are about to delete this link '%s'\n 'Cancel' to stop, 'OK' to delete." ), $link->link_name ) ), + __( 'Delete' ) + ); + + return $this->row_actions( $actions ); + } +} |