2019-03-12 09:27:46 +00:00
< ? 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
* @ access private
*
* @ see WP_List_Tsble
*/
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 () ) {
2019-04-16 19:56:22 +00:00
parent :: __construct (
array (
'plural' => 'bookmarks' ,
'screen' => isset ( $args [ 'screen' ] ) ? $args [ 'screen' ] : null ,
)
);
2019-03-12 09:27:46 +00:00
}
/**
* @ 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' ) );
2019-04-16 19:56:22 +00:00
$args = array (
'hide_invisible' => 0 ,
'hide_empty' => 0 ,
);
2019-03-12 09:27:46 +00:00
2019-04-16 19:56:22 +00:00
if ( 'all' != $cat_id ) {
2019-03-12 09:27:46 +00:00
$args [ 'category' ] = $cat_id ;
2019-04-16 19:56:22 +00:00
}
if ( ! empty ( $s ) ) {
2019-03-12 09:27:46 +00:00
$args [ 'search' ] = $s ;
2019-04-16 19:56:22 +00:00
}
if ( ! empty ( $orderby ) ) {
2019-03-12 09:27:46 +00:00
$args [ 'orderby' ] = $orderby ;
2019-04-16 19:56:22 +00:00
}
if ( ! empty ( $order ) ) {
2019-03-12 09:27:46 +00:00
$args [ 'order' ] = $order ;
2019-04-16 19:56:22 +00:00
}
2019-03-12 09:27:46 +00:00
$this -> items = get_bookmarks ( $args );
}
/**
*/
public function no_items () {
_e ( 'No links found.' );
}
/**
* @ return array
*/
protected function get_bulk_actions () {
2019-04-16 19:56:22 +00:00
$actions = array ();
2019-03-12 09:27:46 +00:00
$actions [ 'delete' ] = __ ( 'Delete' );
return $actions ;
}
/**
* @ global int $cat_id
* @ param string $which
*/
protected function extra_tablenav ( $which ) {
global $cat_id ;
2019-04-16 19:56:22 +00:00
if ( 'top' != $which ) {
2019-03-12 09:27:46 +00:00
return ;
2019-04-16 19:56:22 +00:00
}
?>
2019-03-12 09:27:46 +00:00
< div class = " alignleft actions " >
2019-04-16 19:56:22 +00:00
< ? php
2019-03-12 09:27:46 +00:00
$dropdown_options = array (
2019-04-16 19:56:22 +00:00
'selected' => $cat_id ,
'name' => 'cat_id' ,
'taxonomy' => 'link_category' ,
2019-03-12 09:27:46 +00:00
'show_option_all' => get_taxonomy ( 'link_category' ) -> labels -> all_items ,
2019-04-16 19:56:22 +00:00
'hide_empty' => true ,
'hierarchical' => 1 ,
'show_count' => 0 ,
'orderby' => 'name' ,
2019-03-12 09:27:46 +00:00
);
echo '<label class="screen-reader-text" for="cat_id">' . __ ( 'Filter by category' ) . '</label>' ;
wp_dropdown_categories ( $dropdown_options );
submit_button ( __ ( 'Filter' ), '' , 'filter_action' , false , array ( 'id' => 'post-query-submit' ) );
2019-04-16 19:56:22 +00:00
?>
2019-03-12 09:27:46 +00:00
</ div >
2019-04-16 19:56:22 +00:00
< ? php
2019-03-12 09:27:46 +00:00
}
/**
* @ return array
*/
public function get_columns () {
return array (
'cb' => '<input type="checkbox" />' ,
'name' => _x ( 'Name' , 'link name' ),
'url' => __ ( 'URL' ),
'categories' => __ ( 'Categories' ),
'rel' => __ ( 'Relationship' ),
'visible' => __ ( 'Visible' ),
2019-04-16 19:56:22 +00:00
'rating' => __ ( 'Rating' ),
2019-03-12 09:27:46 +00:00
);
}
/**
* @ return array
*/
protected function get_sortable_columns () {
return array (
'name' => 'name' ,
'url' => 'url' ,
'visible' => 'visible' ,
2019-04-16 19:56:22 +00:00
'rating' => 'rating' ,
2019-03-12 09:27:46 +00:00
);
}
/**
* Get 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
*
* @ param object $link The current link object .
*/
public function column_cb ( $link ) {
?>
< label class = " screen-reader-text " for = " cb-select-<?php echo $link->link_id ; ?> " >< ? php echo sprintf ( __ ( 'Select %s' ), $link -> link_name ); ?> </label>
< input type = " checkbox " name = " linkcheck[] " id = " cb-select-<?php echo $link->link_id ; ?> " value = " <?php echo esc_attr( $link->link_id ); ?> " />
< ? 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 );
2019-04-16 19:56:22 +00:00
printf (
'<strong><a class="row-title" href="%s" aria-label="%s">%s</a></strong>' ,
2019-03-12 09:27:46 +00:00
$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 ( $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
*
* @ param object $link Link object .
* @ param string $column_name Current column name .
*/
public function column_default ( $link , $column_name ) {
/**
* 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 ) {
2019-04-16 19:56:22 +00:00
$link = sanitize_bookmark ( $link );
$link -> link_name = esc_attr ( $link -> link_name );
2019-03-12 09:27:46 +00:00
$link -> link_category = wp_get_link_cats ( $link -> link_id );
2019-04-16 19:56:22 +00:00
?>
2019-03-12 09:27:46 +00:00
< tr id = " link-<?php echo $link->link_id ; ?> " >
2019-04-16 19:56:22 +00:00
< ? php $this -> single_row_columns ( $link ); ?>
2019-03-12 09:27:46 +00:00
</ tr >
2019-04-16 19:56:22 +00:00
< ? php
2019-03-12 09:27:46 +00:00
}
}
/**
* Generates and displays row action links .
*
* @ since 4.3 . 0
*
* @ param object $link Link being acted upon .
* @ param string $column_name Current column name .
* @ param string $primary Primary column name .
* @ return string Row action output for links .
*/
protected function handle_row_actions ( $link , $column_name , $primary ) {
if ( $primary !== $column_name ) {
return '' ;
}
$edit_link = get_edit_bookmark_link ( $link );
2019-04-16 19:56:22 +00:00
$actions = array ();
$actions [ 'edit' ] = '<a href="' . $edit_link . '">' . __ ( 'Edit' ) . '</a>' ;
$actions [ 'delete' ] = " <a class='submitdelete' href=' " . wp_nonce_url ( " link.php?action=delete&link_id= $link->link_id " , 'delete-bookmark_' . $link -> link_id ) . " ' onclick= \" if ( confirm( ' " . esc_js ( sprintf ( __ ( " You are about to delete this link '%s' \n 'Cancel' to stop, 'OK' to delete. " ), $link -> link_name ) ) . " ' ) ) { return true;}return false; \" > " . __ ( 'Delete' ) . '</a>' ;
2019-03-12 09:27:46 +00:00
return $this -> row_actions ( $actions );
}
}