2010-10-24 22:57:43 -04:00
< ? php
/**
2015-10-17 11:13:25 -04:00
* List Table API : WP_Links_List_Table class
2010-10-24 22:57:43 -04:00
*
* @ package WordPress
2015-10-17 11:13:25 -04:00
* @ subpackage Administration
* @ since 3.1 . 0
*/
/**
* Core class used to implement displaying links in a list table .
*
2010-10-25 00:04:18 -04:00
* @ since 3.1 . 0
2011-01-16 16:47:24 -05:00
* @ access private
2015-10-17 11:13:25 -04:00
*
* @ see WP_List_Tsble
2010-10-24 22:57:43 -04:00
*/
2010-11-04 04:07:03 -04:00
class WP_Links_List_Table extends WP_List_Table {
2010-10-24 22:57:43 -04:00
2014-08-09 22:18:17 -04:00
/**
* Constructor .
2014-09-04 11:23:16 -04:00
*
2014-08-09 22:18:17 -04:00
* @ since 3.1 . 0
*
* @ see WP_List_Table :: __construct () for more information on default arguments .
*
* @ param array $args An associative array of arguments .
2014-09-04 11:23:16 -04: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 function __construct ( $args = array () ) {
2017-11-30 18:11:00 -05:00
parent :: __construct (
array (
'plural' => 'bookmarks' ,
'screen' => isset ( $args [ 'screen' ] ) ? $args [ 'screen' ] : null ,
)
);
2010-10-24 22:57:43 -04: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 () {
2010-12-16 04:18:28 -05:00
return current_user_can ( 'manage_links' );
2010-10-24 22:57:43 -04:00
}
2015-05-28 17:41:30 -04:00
/**
* @ global int $cat_id
* @ global string $s
* @ global string $orderby
* @ global string $order
*/
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 () {
2010-10-24 22:57:43 -04:00
global $cat_id , $s , $orderby , $order ;
2013-02-16 13:28:41 -05:00
wp_reset_vars ( array ( 'action' , 'cat_id' , 'link_id' , 'orderby' , 'order' , 's' ) );
2010-10-24 22:57:43 -04:00
2017-11-30 18:11:00 -05:00
$args = array (
'hide_invisible' => 0 ,
'hide_empty' => 0 ,
);
2010-10-24 22:57:43 -04:00
2017-11-30 18:11:00 -05:00
if ( 'all' != $cat_id ) {
2010-10-24 22:57:43 -04:00
$args [ 'category' ] = $cat_id ;
2017-11-30 18:11:00 -05:00
}
if ( ! empty ( $s ) ) {
2010-10-24 22:57:43 -04:00
$args [ 'search' ] = $s ;
2017-11-30 18:11:00 -05:00
}
if ( ! empty ( $orderby ) ) {
2010-10-24 22:57:43 -04:00
$args [ 'orderby' ] = $orderby ;
2017-11-30 18:11:00 -05:00
}
if ( ! empty ( $order ) ) {
2010-10-24 22:57:43 -04:00
$args [ 'order' ] = $order ;
2017-11-30 18:11:00 -05:00
}
2010-10-24 22:57:43 -04:00
$this -> items = get_bookmarks ( $args );
}
2015-05-29 17:32:24 -04: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 function no_items () {
2010-10-24 22:57:43 -04:00
_e ( 'No links found.' );
}
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_bulk_actions () {
2017-11-30 18:11:00 -05:00
$actions = array ();
2010-10-24 22:57:43 -04:00
$actions [ 'delete' ] = __ ( 'Delete' );
return $actions ;
}
2015-05-28 17:41:30 -04:00
/**
* @ global int $cat_id
* @ param string $which
*/
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 extra_tablenav ( $which ) {
2010-10-24 22:57:43 -04:00
global $cat_id ;
2017-11-30 18:11:00 -05:00
if ( 'top' != $which ) {
2010-10-24 22:57:43 -04:00
return ;
2017-11-30 18:11:00 -05:00
}
2018-08-16 21:51:36 -04:00
?>
2010-10-24 22:57:43 -04:00
< div class = " alignleft actions " >
2018-08-16 21:51:36 -04:00
< ? php
2010-10-24 22:57:43 -04:00
$dropdown_options = array (
2017-11-30 18:11:00 -05:00
'selected' => $cat_id ,
'name' => 'cat_id' ,
'taxonomy' => 'link_category' ,
2016-03-02 17:14:25 -05:00
'show_option_all' => get_taxonomy ( 'link_category' ) -> labels -> all_items ,
2017-11-30 18:11:00 -05:00
'hide_empty' => true ,
'hierarchical' => 1 ,
'show_count' => 0 ,
'orderby' => 'name' ,
2010-10-24 22:57:43 -04:00
);
2014-10-10 22:21:19 -04:00
echo '<label class="screen-reader-text" for="cat_id">' . __ ( 'Filter by category' ) . '</label>' ;
2010-10-24 22:57:43 -04:00
wp_dropdown_categories ( $dropdown_options );
2016-09-28 15:54:28 -04:00
submit_button ( __ ( 'Filter' ), '' , 'filter_action' , false , array ( 'id' => 'post-query-submit' ) );
2018-08-16 21:51:36 -04:00
?>
2010-10-24 22:57:43 -04:00
</ div >
2018-08-16 21:51:36 -04:00
< ? php
2010-10-24 22:57:43 -04:00
}
2015-05-29 16:17:26 -04:00
/**
* @ return array
*/
2014-07-11 23:27:14 -04:00
public function get_columns () {
2010-10-24 22:57:43 -04:00
return array (
'cb' => '<input type="checkbox" />' ,
2011-06-10 18:13:26 -04:00
'name' => _x ( 'Name' , 'link name' ),
2010-10-24 22:57:43 -04:00
'url' => __ ( 'URL' ),
'categories' => __ ( 'Categories' ),
'rel' => __ ( 'Relationship' ),
'visible' => __ ( 'Visible' ),
2017-11-30 18:11:00 -05:00
'rating' => __ ( 'Rating' ),
2010-10-24 22:57:43 -04: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_sortable_columns () {
2010-10-24 22:57:43 -04:00
return array (
'name' => 'name' ,
'url' => 'url' ,
'visible' => 'visible' ,
2017-11-30 18:11:00 -05:00
'rating' => 'rating' ,
2010-10-24 22:57:43 -04:00
);
}
2015-05-28 22:41:25 -04:00
/**
2015-05-30 21:23:26 -04:00
* Get the name of the default primary column .
2015-05-28 22:41:25 -04:00
*
* @ since 4.3 . 0
2015-05-30 21:29:26 -04:00
*
2015-05-30 21:23:26 -04:00
* @ return string Name of the default primary column , in this case , 'name' .
2015-05-28 22:41:25 -04:00
*/
protected function get_default_primary_column_name () {
return 'name' ;
}
2015-05-28 17:41:30 -04:00
/**
2015-12-17 17:53:28 -05:00
* Handles the checkbox column output .
2015-07-13 14:03:24 -04:00
*
2015-06-13 11:33:25 -04:00
* @ since 4.3 . 0
2015-05-28 17:41:30 -04:00
*
2015-07-13 14:03:24 -04:00
* @ param object $link The current link object .
2015-05-28 17:41:30 -04:00
*/
2015-06-13 11:33:25 -04:00
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
}
2010-10-24 22:57:43 -04:00
2015-06-13 11:33:25 -04:00
/**
2015-12-17 17:53:28 -05:00
* Handles the link name column output .
2015-07-13 14:03:24 -04:00
*
2015-06-13 11:33:25 -04:00
* @ since 4.3 . 0
*
2015-07-13 14:03:24 -04:00
* @ param object $link The current link object .
2015-06-13 11:33:25 -04:00
*/
public function column_name ( $link ) {
$edit_link = get_edit_bookmark_link ( $link );
2017-11-30 18:11:00 -05:00
printf (
'<strong><a class="row-title" href="%s" aria-label="%s">%s</a></strong>' ,
2016-02-29 18:26:26 -05:00
$edit_link ,
/* translators: %s: link name */
esc_attr ( sprintf ( __ ( 'Edit “%s”' ), $link -> link_name ) ),
$link -> link_name
);
2015-06-13 11:33:25 -04:00
}
2010-10-24 22:57:43 -04:00
2015-06-13 11:33:25 -04:00
/**
2015-12-17 17:53:28 -05:00
* Handles the link URL column output .
2015-07-13 14:03:24 -04:00
*
2015-06-13 11:33:25 -04:00
* @ since 4.3 . 0
*
2015-07-13 14:03:24 -04:00
* @ param object $link The current link object .
2015-06-13 11:33:25 -04:00
*/
public function column_url ( $link ) {
$short_url = url_shorten ( $link -> link_url );
2015-12-17 17:53:28 -05:00
echo " <a href=' $link->link_url '> $short_url </a> " ;
2015-06-13 11:33:25 -04:00
}
2010-10-24 22:57:43 -04:00
2015-06-13 11:33:25 -04:00
/**
2015-07-13 14:03:24 -04:00
* Handles the link categories column output .
*
2015-06-13 11:33:25 -04:00
* @ since 4.3 . 0
*
2017-07-25 09:19:42 -04:00
* @ global int $cat_id
2015-06-13 11:33:25 -04:00
*
2015-07-13 14:03:24 -04:00
* @ param object $link The current link object .
2015-06-13 11:33:25 -04:00
*/
public function column_categories ( $link ) {
global $cat_id ;
2010-10-24 22:57:43 -04:00
2015-06-13 11:33:25 -04:00
$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 );
}
2010-10-24 22:57:43 -04:00
2015-06-13 11:33:25 -04:00
/**
2015-12-17 17:53:28 -05:00
* Handles the link relation column output .
2015-07-13 14:03:24 -04:00
*
2015-06-13 11:33:25 -04:00
* @ since 4.3 . 0
*
2015-07-13 14:03:24 -04:00
* @ param object $link The current link object .
2015-06-13 11:33:25 -04:00
*/
public function column_rel ( $link ) {
echo empty ( $link -> link_rel ) ? '<br />' : $link -> link_rel ;
}
2015-05-28 22:41:25 -04:00
2015-06-13 11:33:25 -04:00
/**
2015-12-17 17:53:28 -05:00
* Handles the link visibility column output .
2015-07-13 14:03:24 -04:00
*
2015-06-13 11:33:25 -04:00
* @ since 4.3 . 0
*
2015-07-13 14:03:24 -04:00
* @ param object $link The current link object .
2015-06-13 11:33:25 -04:00
*/
public function column_visible ( $link ) {
if ( 'Y' === $link -> link_visible ) {
_e ( 'Yes' );
} else {
_e ( 'No' );
}
}
2010-10-24 22:57:43 -04:00
2015-06-13 11:33:25 -04:00
/**
2015-12-17 17:53:28 -05:00
* Handles the link rating column output .
2015-07-13 14:03:24 -04:00
*
2015-06-13 11:33:25 -04:00
* @ since 4.3 . 0
*
2015-07-13 14:03:24 -04:00
* @ param object $link The current link object .
2015-06-13 11:33:25 -04:00
*/
public function column_rating ( $link ) {
echo $link -> link_rating ;
}
2015-05-28 22:41:25 -04:00
2015-06-13 11:33:25 -04:00
/**
2015-07-13 14:03:24 -04:00
* Handles the default column output .
*
2015-06-13 11:33:25 -04:00
* @ since 4.3 . 0
*
2015-07-13 14:03:24 -04:00
* @ param object $link Link object .
* @ param string $column_name Current column name .
2015-06-13 11:33:25 -04:00
*/
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 );
}
2015-05-28 22:41:25 -04:00
2015-06-13 11:33:25 -04:00
public function display_rows () {
foreach ( $this -> items as $link ) {
2017-11-30 18:11:00 -05:00
$link = sanitize_bookmark ( $link );
$link -> link_name = esc_attr ( $link -> link_name );
2015-06-13 11:33:25 -04:00
$link -> link_category = wp_get_link_cats ( $link -> link_id );
2018-08-16 21:51:36 -04:00
?>
2015-06-13 11:33:25 -04:00
< tr id = " link-<?php echo $link->link_id ; ?> " >
2017-11-30 18:11:00 -05:00
< ? php $this -> single_row_columns ( $link ); ?>
2010-10-24 22:57:43 -04:00
</ tr >
2018-08-16 21:51:36 -04:00
< ? php
2010-10-24 22:57:43 -04:00
}
}
2015-05-28 22:41:25 -04:00
/**
2015-07-13 14:03:24 -04:00
* Generates and displays row action links .
2015-05-28 22:41:25 -04:00
*
2015-05-30 21:23:26 -04:00
* @ since 4.3 . 0
2015-05-28 22:41:25 -04:00
*
2015-05-30 21:23:26 -04:00
* @ 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 .
2015-05-28 22:41:25 -04:00
*/
protected function handle_row_actions ( $link , $column_name , $primary ) {
2015-07-14 13:47:24 -04:00
if ( $primary !== $column_name ) {
return '' ;
2015-05-28 22:41:25 -04:00
}
2015-07-14 13:47:24 -04:00
$edit_link = get_edit_bookmark_link ( $link );
2017-11-30 18:11:00 -05: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>' ;
2015-07-14 13:47:24 -04:00
return $this -> row_actions ( $actions );
2015-05-28 22:41:25 -04:00
}
2010-10-24 22:57:43 -04:00
}