Ticket #21307: link-manager.diff

File link-manager.diff, 229.5 KB (added by wonderboymusic, 10 months ago)

First pass at moving code into a plugin

  • wp-includes/admin-bar.php

     
    492492        if ( current_user_can( 'upload_files' ) ) 
    493493                $actions[ 'media-new.php' ] = array( _x( 'Media', 'add new from admin bar' ), 'new-media' ); 
    494494 
    495         if ( current_user_can( 'manage_links' ) ) 
    496                 $actions[ 'link-add.php' ] = array( _x( 'Link', 'add new from admin bar' ), 'new-link' ); 
    497  
    498495        if ( isset( $cpts['page'] ) && current_user_can( $cpts['page']->cap->edit_posts ) ) { 
    499496                $actions[ 'post-new.php?post_type=page' ] = array( $cpts['page']->labels->name_admin_bar, 'new-page' ); 
    500497                unset( $cpts['page'] ); 
  • wp-includes/category.php

     
    4141        $args = wp_parse_args( $args, $defaults ); 
    4242 
    4343        $taxonomy = apply_filters( 'get_categories_taxonomy', $args['taxonomy'], $args ); 
    44  
    45         // Back compat 
    46         if ( isset($args['type']) && 'link' == $args['type'] ) { 
    47                 _deprecated_argument( __FUNCTION__, '3.0', '' ); 
    48                 $taxonomy = $args['taxonomy'] = 'link_category'; 
    49         } 
    50  
     44        $args['taxonomy'] = $taxonomy; 
     45         
    5146        $categories = (array) get_terms( $taxonomy, $args ); 
    5247 
    5348        foreach ( array_keys( $categories ) as $k ) 
  • wp-includes/taxonomy.php

     
    7373                'show_in_nav_menus' => false, 
    7474        ) ); 
    7575 
    76         register_taxonomy( 'link_category', 'link', array( 
    77                 'hierarchical' => false, 
    78                 'labels' => array( 
    79                         'name' => __( 'Link Categories' ), 
    80                         'singular_name' => __( 'Link Category' ), 
    81                         'search_items' => __( 'Search Link Categories' ), 
    82                         'popular_items' => null, 
    83                         'all_items' => __( 'All Link Categories' ), 
    84                         'edit_item' => __( 'Edit Link Category' ), 
    85                         'update_item' => __( 'Update Link Category' ), 
    86                         'add_new_item' => __( 'Add New Link Category' ), 
    87                         'new_item_name' => __( 'New Link Category Name' ), 
    88                         'separate_items_with_commas' => null, 
    89                         'add_or_remove_items' => null, 
    90                         'choose_from_most_used' => null, 
    91                 ), 
    92                 'query_var' => false, 
    93                 'rewrite' => false, 
    94                 'public' => false, 
    95                 'show_ui' => false, 
    96                 '_builtin' => true, 
    97         ) ); 
    98  
    9976        register_taxonomy( 'post_format', 'post', array( 
    10077                'public' => true, 
    10178                'hierarchical' => false, 
     
    29202897/** 
    29212898 * Will update term count based on number of objects. 
    29222899 * 
    2923  * Default callback for the link_category taxonomy. 
    29242900 * 
    29252901 * @package WordPress 
    29262902 * @subpackage Taxonomy 
  • wp-includes/default-widgets.php

     
    8383} 
    8484 
    8585/** 
    86  * Links widget class 
    87  * 
    88  * @since 2.8.0 
    89  */ 
    90 class WP_Widget_Links extends WP_Widget { 
    91  
    92         function __construct() { 
    93                 $widget_ops = array('description' => __( "Your blogroll" ) ); 
    94                 parent::__construct('links', __('Links'), $widget_ops); 
    95         } 
    96  
    97         function widget( $args, $instance ) { 
    98                 extract($args, EXTR_SKIP); 
    99  
    100                 $show_description = isset($instance['description']) ? $instance['description'] : false; 
    101                 $show_name = isset($instance['name']) ? $instance['name'] : false; 
    102                 $show_rating = isset($instance['rating']) ? $instance['rating'] : false; 
    103                 $show_images = isset($instance['images']) ? $instance['images'] : true; 
    104                 $category = isset($instance['category']) ? $instance['category'] : false; 
    105                 $orderby = isset( $instance['orderby'] ) ? $instance['orderby'] : 'name'; 
    106                 $order = $orderby == 'rating' ? 'DESC' : 'ASC'; 
    107                 $limit = isset( $instance['limit'] ) ? $instance['limit'] : -1; 
    108  
    109                 $before_widget = preg_replace('/id="[^"]*"/','id="%id"', $before_widget); 
    110                 wp_list_bookmarks(apply_filters('widget_links_args', array( 
    111                         'title_before' => $before_title, 'title_after' => $after_title, 
    112                         'category_before' => $before_widget, 'category_after' => $after_widget, 
    113                         'show_images' => $show_images, 'show_description' => $show_description, 
    114                         'show_name' => $show_name, 'show_rating' => $show_rating, 
    115                         'category' => $category, 'class' => 'linkcat widget', 
    116                         'orderby' => $orderby, 'order' => $order, 
    117                         'limit' => $limit, 
    118                 ))); 
    119         } 
    120  
    121         function update( $new_instance, $old_instance ) { 
    122                 $new_instance = (array) $new_instance; 
    123                 $instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0 ); 
    124                 foreach ( $instance as $field => $val ) { 
    125                         if ( isset($new_instance[$field]) ) 
    126                                 $instance[$field] = 1; 
    127                 } 
    128  
    129                 $instance['orderby'] = 'name'; 
    130                 if ( in_array( $new_instance['orderby'], array( 'name', 'rating', 'id', 'rand' ) ) ) 
    131                         $instance['orderby'] = $new_instance['orderby']; 
    132  
    133                 $instance['category'] = intval( $new_instance['category'] ); 
    134                 $instance['limit'] = ! empty( $new_instance['limit'] ) ? intval( $new_instance['limit'] ) : -1; 
    135  
    136                 return $instance; 
    137         } 
    138  
    139         function form( $instance ) { 
    140  
    141                 //Defaults 
    142                 $instance = wp_parse_args( (array) $instance, array( 'images' => true, 'name' => true, 'description' => false, 'rating' => false, 'category' => false, 'orderby' => 'name', 'limit' => -1 ) ); 
    143                 $link_cats = get_terms( 'link_category' ); 
    144                 if ( ! $limit = intval( $instance['limit'] ) ) 
    145                         $limit = -1; 
    146 ?> 
    147                 <p> 
    148                 <label for="<?php echo $this->get_field_id('category'); ?>"><?php _e( 'Select Link Category:' ); ?></label> 
    149                 <select class="widefat" id="<?php echo $this->get_field_id('category'); ?>" name="<?php echo $this->get_field_name('category'); ?>"> 
    150                 <option value=""><?php _ex('All Links', 'links widget'); ?></option> 
    151                 <?php 
    152                 foreach ( $link_cats as $link_cat ) { 
    153                         echo '<option value="' . intval($link_cat->term_id) . '"' 
    154                                 . ( $link_cat->term_id == $instance['category'] ? ' selected="selected"' : '' ) 
    155                                 . '>' . $link_cat->name . "</option>\n"; 
    156                 } 
    157                 ?> 
    158                 </select> 
    159                 <label for="<?php echo $this->get_field_id('orderby'); ?>"><?php _e( 'Sort by:' ); ?></label> 
    160                 <select name="<?php echo $this->get_field_name('orderby'); ?>" id="<?php echo $this->get_field_id('orderby'); ?>" class="widefat"> 
    161                         <option value="name"<?php selected( $instance['orderby'], 'name' ); ?>><?php _e( 'Link title' ); ?></option> 
    162                         <option value="rating"<?php selected( $instance['orderby'], 'rating' ); ?>><?php _e( 'Link rating' ); ?></option> 
    163                         <option value="id"<?php selected( $instance['orderby'], 'id' ); ?>><?php _e( 'Link ID' ); ?></option> 
    164                         <option value="rand"<?php selected( $instance['orderby'], 'rand' ); ?>><?php _e( 'Random' ); ?></option> 
    165                 </select> 
    166                 </p> 
    167                 <p> 
    168                 <input class="checkbox" type="checkbox" <?php checked($instance['images'], true) ?> id="<?php echo $this->get_field_id('images'); ?>" name="<?php echo $this->get_field_name('images'); ?>" /> 
    169                 <label for="<?php echo $this->get_field_id('images'); ?>"><?php _e('Show Link Image'); ?></label><br /> 
    170                 <input class="checkbox" type="checkbox" <?php checked($instance['name'], true) ?> id="<?php echo $this->get_field_id('name'); ?>" name="<?php echo $this->get_field_name('name'); ?>" /> 
    171                 <label for="<?php echo $this->get_field_id('name'); ?>"><?php _e('Show Link Name'); ?></label><br /> 
    172                 <input class="checkbox" type="checkbox" <?php checked($instance['description'], true) ?> id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>" /> 
    173                 <label for="<?php echo $this->get_field_id('description'); ?>"><?php _e('Show Link Description'); ?></label><br /> 
    174                 <input class="checkbox" type="checkbox" <?php checked($instance['rating'], true) ?> id="<?php echo $this->get_field_id('rating'); ?>" name="<?php echo $this->get_field_name('rating'); ?>" /> 
    175                 <label for="<?php echo $this->get_field_id('rating'); ?>"><?php _e('Show Link Rating'); ?></label> 
    176                 </p> 
    177                 <p> 
    178                 <label for="<?php echo $this->get_field_id('limit'); ?>"><?php _e( 'Number of links to show:' ); ?></label> 
    179                 <input id="<?php echo $this->get_field_id('limit'); ?>" name="<?php echo $this->get_field_name('limit'); ?>" type="text" value="<?php echo $limit == -1 ? '' : intval( $limit ); ?>" size="3" /> 
    180                 </p> 
    181 <?php 
    182         } 
    183 } 
    184  
    185 /** 
    18686 * Search widget class 
    18787 * 
    18888 * @since 2.8.0 
     
    11581058 
    11591059        register_widget('WP_Widget_Archives'); 
    11601060 
    1161         register_widget('WP_Widget_Links'); 
    1162  
    11631061        register_widget('WP_Widget_Meta'); 
    11641062 
    11651063        register_widget('WP_Widget_Search'); 
  • wp-includes/bookmark-template.php

     
    1 <?php 
    2 /** 
    3  * Bookmark Template Functions for usage in Themes 
    4  * 
    5  * @package WordPress 
    6  * @subpackage Template 
    7  */ 
    8  
    9 /** 
    10  * The formatted output of a list of bookmarks. 
    11  * 
    12  * The $bookmarks array must contain bookmark objects and will be iterated over 
    13  * to retrieve the bookmark to be used in the output. 
    14  * 
    15  * The output is formatted as HTML with no way to change that format. However, 
    16  * what is between, before, and after can be changed. The link itself will be 
    17  * HTML. 
    18  * 
    19  * This function is used internally by wp_list_bookmarks() and should not be 
    20  * used by themes. 
    21  * 
    22  * The defaults for overwriting are: 
    23  * 'show_updated' - Default is 0 (integer). Will show the time of when the 
    24  *              bookmark was last updated. 
    25  * 'show_description' - Default is 0 (integer). Whether to show the description 
    26  *              of the bookmark. 
    27  * 'show_images' - Default is 1 (integer). Whether to show link image if 
    28  *              available. 
    29  * 'show_name' - Default is 0 (integer). Whether to show link name if 
    30  *              available. 
    31  * 'before' - Default is '<li>' (string). The html or text to prepend to each 
    32  *              bookmarks. 
    33  * 'after' - Default is '</li>' (string). The html or text to append to each 
    34  *              bookmarks. 
    35  * 'link_before' - Default is '' (string). The html or text to prepend to each 
    36  *              bookmarks inside the <a> tag. 
    37  * 'link_after' - Default is '' (string). The html or text to append to each 
    38  *              bookmarks inside the <a> tag. 
    39  * 'between' - Default is '\n' (string). The string for use in between the link, 
    40  *              description, and image. 
    41  * 'show_rating' - Default is 0 (integer). Whether to show the link rating. 
    42  * 
    43  * @since 2.1.0 
    44  * @access private 
    45  * 
    46  * @param array $bookmarks List of bookmarks to traverse 
    47  * @param string|array $args Optional. Overwrite the defaults. 
    48  * @return string Formatted output in HTML 
    49  */ 
    50 function _walk_bookmarks($bookmarks, $args = '' ) { 
    51         $defaults = array( 
    52                 'show_updated' => 0, 'show_description' => 0, 
    53                 'show_images' => 1, 'show_name' => 0, 
    54                 'before' => '<li>', 'after' => '</li>', 'between' => "\n", 
    55                 'show_rating' => 0, 'link_before' => '', 'link_after' => '' 
    56         ); 
    57  
    58         $r = wp_parse_args( $args, $defaults ); 
    59         extract( $r, EXTR_SKIP ); 
    60  
    61         $output = ''; // Blank string to start with. 
    62  
    63         foreach ( (array) $bookmarks as $bookmark ) { 
    64                 if ( !isset($bookmark->recently_updated) ) 
    65                         $bookmark->recently_updated = false; 
    66                 $output .= $before; 
    67                 if ( $show_updated && $bookmark->recently_updated ) 
    68                         $output .= get_option('links_recently_updated_prepend'); 
    69  
    70                 $the_link = '#'; 
    71                 if ( !empty($bookmark->link_url) ) 
    72                         $the_link = esc_url($bookmark->link_url); 
    73  
    74                 $desc = esc_attr(sanitize_bookmark_field('link_description', $bookmark->link_description, $bookmark->link_id, 'display')); 
    75                 $name = esc_attr(sanitize_bookmark_field('link_name', $bookmark->link_name, $bookmark->link_id, 'display')); 
    76                 $title = $desc; 
    77  
    78                 if ( $show_updated ) 
    79                         if ( '00' != substr($bookmark->link_updated_f, 0, 2) ) { 
    80                                 $title .= ' ('; 
    81                                 $title .= sprintf(__('Last updated: %s'), date(get_option('links_updated_date_format'), $bookmark->link_updated_f + (get_option('gmt_offset') * 3600))); 
    82                                 $title .= ')'; 
    83                         } 
    84  
    85                 $alt = ' alt="' . $name . ( $show_description ? ' ' . $title : '' ) . '"'; 
    86  
    87                 if ( '' != $title ) 
    88                         $title = ' title="' . $title . '"'; 
    89  
    90                 $rel = $bookmark->link_rel; 
    91                 if ( '' != $rel ) 
    92                         $rel = ' rel="' . esc_attr($rel) . '"'; 
    93  
    94                 $target = $bookmark->link_target; 
    95                 if ( '' != $target ) 
    96                         $target = ' target="' . $target . '"'; 
    97  
    98                 $output .= '<a href="' . $the_link . '"' . $rel . $title . $target . '>'; 
    99  
    100                 $output .= $link_before; 
    101  
    102                 if ( $bookmark->link_image != null && $show_images ) { 
    103                         if ( strpos($bookmark->link_image, 'http') === 0 ) 
    104                                 $output .= "<img src=\"$bookmark->link_image\" $alt $title />"; 
    105                         else // If it's a relative path 
    106                                 $output .= "<img src=\"" . get_option('siteurl') . "$bookmark->link_image\" $alt $title />"; 
    107  
    108                         if ( $show_name ) 
    109                                 $output .= " $name"; 
    110                 } else { 
    111                         $output .= $name; 
    112                 } 
    113  
    114                 $output .= $link_after; 
    115  
    116                 $output .= '</a>'; 
    117  
    118                 if ( $show_updated && $bookmark->recently_updated ) 
    119                         $output .= get_option('links_recently_updated_append'); 
    120  
    121                 if ( $show_description && '' != $desc ) 
    122                         $output .= $between . $desc; 
    123  
    124                 if ( $show_rating ) 
    125                         $output .= $between . sanitize_bookmark_field('link_rating', $bookmark->link_rating, $bookmark->link_id, 'display'); 
    126  
    127                 $output .= "$after\n"; 
    128         } // end while 
    129  
    130         return $output; 
    131 } 
    132  
    133 /** 
    134  * Retrieve or echo all of the bookmarks. 
    135  * 
    136  * List of default arguments are as follows: 
    137  * 'orderby' - Default is 'name' (string). How to order the links by. String is 
    138  *              based off of the bookmark scheme. 
    139  * 'order' - Default is 'ASC' (string). Either 'ASC' or 'DESC'. Orders in either 
    140  *              ascending or descending order. 
    141  * 'limit' - Default is -1 (integer) or show all. The amount of bookmarks to 
    142  *              display. 
    143  * 'category' - Default is empty string (string). Include the links in what 
    144  *              category ID(s). 
    145  * 'category_name' - Default is empty string (string). Get links by category 
    146  *              name. 
    147  * 'hide_invisible' - Default is 1 (integer). Whether to show (default) or hide 
    148  *              links marked as 'invisible'. 
    149  * 'show_updated' - Default is 0 (integer). Will show the time of when the 
    150  *              bookmark was last updated. 
    151  * 'echo' - Default is 1 (integer). Whether to echo (default) or return the 
    152  *              formatted bookmarks. 
    153  * 'categorize' - Default is 1 (integer). Whether to show links listed by 
    154  *              category (default) or show links in one column. 
    155  * 'show_description' - Default is 0 (integer). Whether to show the description 
    156  *              of the bookmark. 
    157  * 
    158  * These options define how the Category name will appear before the category 
    159  * links are displayed, if 'categorize' is 1. If 'categorize' is 0, then it will 
    160  * display for only the 'title_li' string and only if 'title_li' is not empty. 
    161  * 'title_li' - Default is 'Bookmarks' (translatable string). What to show 
    162  *              before the links appear. 
    163  * 'title_before' - Default is '<h2>' (string). The HTML or text to show before 
    164  *              the 'title_li' string. 
    165  * 'title_after' - Default is '</h2>' (string). The HTML or text to show after 
    166  *              the 'title_li' string. 
    167  * 'class' - Default is 'linkcat' (string). The CSS class to use for the 
    168  *              'title_li'. 
    169  * 
    170  * 'category_before' - Default is '<li id="%id" class="%class">'. String must 
    171  *              contain '%id' and '%class' to get 
    172  * the id of the category and the 'class' argument. These are used for 
    173  *              formatting in themes. 
    174  * Argument will be displayed before the 'title_before' argument. 
    175  * 'category_after' - Default is '</li>' (string). The HTML or text that will 
    176  *              appear after the list of links. 
    177  * 
    178  * These are only used if 'categorize' is set to 1 or true. 
    179  * 'category_orderby' - Default is 'name'. How to order the bookmark category 
    180  *              based on term scheme. 
    181  * 'category_order' - Default is 'ASC'. Set the order by either ASC (ascending) 
    182  *              or DESC (descending). 
    183  * 
    184  * @see _walk_bookmarks() For other arguments that can be set in this function 
    185  *              and passed to _walk_bookmarks(). 
    186  * @see get_bookmarks() For other arguments that can be set in this function and 
    187  *              passed to get_bookmarks(). 
    188  * @link http://codex.wordpress.org/Template_Tags/wp_list_bookmarks 
    189  * 
    190  * @since 2.1.0 
    191  * @uses _walk_bookmarks() Used to iterate over all of the bookmarks and return 
    192  *              the html 
    193  * @uses get_terms() Gets all of the categories that are for links. 
    194  * 
    195  * @param string|array $args Optional. Overwrite the defaults of the function 
    196  * @return string|null Will only return if echo option is set to not echo. 
    197  *              Default is not return anything. 
    198  */ 
    199 function wp_list_bookmarks($args = '') { 
    200         $defaults = array( 
    201                 'orderby' => 'name', 'order' => 'ASC', 
    202                 'limit' => -1, 'category' => '', 'exclude_category' => '', 
    203                 'category_name' => '', 'hide_invisible' => 1, 
    204                 'show_updated' => 0, 'echo' => 1, 
    205                 'categorize' => 1, 'title_li' => __('Bookmarks'), 
    206                 'title_before' => '<h2>', 'title_after' => '</h2>', 
    207                 'category_orderby' => 'name', 'category_order' => 'ASC', 
    208                 'class' => 'linkcat', 'category_before' => '<li id="%id" class="%class">', 
    209                 'category_after' => '</li>' 
    210         ); 
    211  
    212         $r = wp_parse_args( $args, $defaults ); 
    213         extract( $r, EXTR_SKIP ); 
    214  
    215         $output = ''; 
    216  
    217         if ( $categorize ) { 
    218                 //Split the bookmarks into ul's for each category 
    219                 $cats = get_terms('link_category', array('name__like' => $category_name, 'include' => $category, 'exclude' => $exclude_category, 'orderby' => $category_orderby, 'order' => $category_order, 'hierarchical' => 0)); 
    220  
    221                 foreach ( (array) $cats as $cat ) { 
    222                         $params = array_merge($r, array('category'=>$cat->term_id)); 
    223                         $bookmarks = get_bookmarks($params); 
    224                         if ( empty($bookmarks) ) 
    225                                 continue; 
    226                         $output .= str_replace(array('%id', '%class'), array("linkcat-$cat->term_id", $class), $category_before); 
    227                         $catname = apply_filters( "link_category", $cat->name ); 
    228                         $output .= "$title_before$catname$title_after\n\t<ul class='xoxo blogroll'>\n"; 
    229                         $output .= _walk_bookmarks($bookmarks, $r); 
    230                         $output .= "\n\t</ul>\n$category_after\n"; 
    231                 } 
    232         } else { 
    233                 //output one single list using title_li for the title 
    234                 $bookmarks = get_bookmarks($r); 
    235  
    236                 if ( !empty($bookmarks) ) { 
    237                         if ( !empty( $title_li ) ){ 
    238                                 $output .= str_replace(array('%id', '%class'), array("linkcat-$category", $class), $category_before); 
    239                                 $output .= "$title_before$title_li$title_after\n\t<ul class='xoxo blogroll'>\n"; 
    240                                 $output .= _walk_bookmarks($bookmarks, $r); 
    241                                 $output .= "\n\t</ul>\n$category_after\n"; 
    242                         } else { 
    243                                 $output .= _walk_bookmarks($bookmarks, $r); 
    244                         } 
    245                 } 
    246         } 
    247  
    248         $output = apply_filters( 'wp_list_bookmarks', $output ); 
    249  
    250         if ( !$echo ) 
    251                 return $output; 
    252         echo $output; 
    253 } 
  • wp-includes/bookmark.php

     
    1 <?php 
    2 /** 
    3  * Link/Bookmark API 
    4  * 
    5  * @package WordPress 
    6  * @subpackage Bookmark 
    7  */ 
    8  
    9 /** 
    10  * Retrieve Bookmark data 
    11  * 
    12  * @since 2.1.0 
    13  * @uses $wpdb Database Object 
    14  * 
    15  * @param mixed $bookmark 
    16  * @param string $output Optional. Either OBJECT, ARRAY_N, or ARRAY_A constant 
    17  * @param string $filter Optional, default is 'raw'. 
    18  * @return array|object Type returned depends on $output value. 
    19  */ 
    20 function get_bookmark($bookmark, $output = OBJECT, $filter = 'raw') { 
    21         global $wpdb; 
    22  
    23         if ( empty($bookmark) ) { 
    24                 if ( isset($GLOBALS['link']) ) 
    25                         $_bookmark = & $GLOBALS['link']; 
    26                 else 
    27                         $_bookmark = null; 
    28         } elseif ( is_object($bookmark) ) { 
    29                 wp_cache_add($bookmark->link_id, $bookmark, 'bookmark'); 
    30                 $_bookmark = $bookmark; 
    31         } else { 
    32                 if ( isset($GLOBALS['link']) && ($GLOBALS['link']->link_id == $bookmark) ) { 
    33                         $_bookmark = & $GLOBALS['link']; 
    34                 } elseif ( ! $_bookmark = wp_cache_get($bookmark, 'bookmark') ) { 
    35                         $_bookmark = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->links WHERE link_id = %d LIMIT 1", $bookmark)); 
    36                         $_bookmark->link_category = array_unique( wp_get_object_terms($_bookmark->link_id, 'link_category', array('fields' => 'ids')) ); 
    37                         wp_cache_add($_bookmark->link_id, $_bookmark, 'bookmark'); 
    38                 } 
    39         } 
    40  
    41         $_bookmark = sanitize_bookmark($_bookmark, $filter); 
    42  
    43         if ( $output == OBJECT ) { 
    44                 return $_bookmark; 
    45         } elseif ( $output == ARRAY_A ) { 
    46                 return get_object_vars($_bookmark); 
    47         } elseif ( $output == ARRAY_N ) { 
    48                 return array_values(get_object_vars($_bookmark)); 
    49         } else { 
    50                 return $_bookmark; 
    51         } 
    52 } 
    53  
    54 /** 
    55  * Retrieve single bookmark data item or field. 
    56  * 
    57  * @since 2.3.0 
    58  * @uses get_bookmark() Gets bookmark object using $bookmark as ID 
    59  * @uses sanitize_bookmark_field() Sanitizes Bookmark field based on $context. 
    60  * 
    61  * @param string $field The name of the data field to return 
    62  * @param int $bookmark The bookmark ID to get field 
    63  * @param string $context Optional. The context of how the field will be used. 
    64  * @return string 
    65  */ 
    66 function get_bookmark_field( $field, $bookmark, $context = 'display' ) { 
    67         $bookmark = (int) $bookmark; 
    68         $bookmark = get_bookmark( $bookmark ); 
    69  
    70         if ( is_wp_error($bookmark) ) 
    71                 return $bookmark; 
    72  
    73         if ( !is_object($bookmark) ) 
    74                 return ''; 
    75  
    76         if ( !isset($bookmark->$field) ) 
    77                 return ''; 
    78  
    79         return sanitize_bookmark_field($field, $bookmark->$field, $bookmark->link_id, $context); 
    80 } 
    81  
    82 /** 
    83  * Retrieves the list of bookmarks 
    84  * 
    85  * Attempts to retrieve from the cache first based on MD5 hash of arguments. If 
    86  * that fails, then the query will be built from the arguments and executed. The 
    87  * results will be stored to the cache. 
    88  * 
    89  * List of default arguments are as follows: 
    90  * 'orderby' - Default is 'name' (string). How to order the links by. String is 
    91  *              based off of the bookmark scheme. 
    92  * 'order' - Default is 'ASC' (string). Either 'ASC' or 'DESC'. Orders in either 
    93  *              ascending or descending order. 
    94  * 'limit' - Default is -1 (integer) or show all. The amount of bookmarks to 
    95  *              display. 
    96  * 'category' - Default is empty string (string). Include the links in what 
    97  *              category ID(s). 
    98  * 'category_name' - Default is empty string (string). Get links by category 
    99  *              name. 
    100  * 'hide_invisible' - Default is 1 (integer). Whether to show (default) or hide 
    101  *              links marked as 'invisible'. 
    102  * 'show_updated' - Default is 0 (integer). Will show the time of when the 
    103  *              bookmark was last updated. 
    104  * 'include' - Default is empty string (string). Include bookmark ID(s) 
    105  *              separated by commas. 
    106  * 'exclude' - Default is empty string (string). Exclude bookmark ID(s) 
    107  *              separated by commas. 
    108  * 
    109  * @since 2.1.0 
    110  * @uses $wpdb Database Object 
    111  * @link http://codex.wordpress.org/Template_Tags/get_bookmarks 
    112  * 
    113  * @param string|array $args List of arguments to overwrite the defaults 
    114  * @return array List of bookmark row objects 
    115  */ 
    116 function get_bookmarks($args = '') { 
    117         global $wpdb; 
    118  
    119         $defaults = array( 
    120                 'orderby' => 'name', 'order' => 'ASC', 
    121                 'limit' => -1, 'category' => '', 
    122                 'category_name' => '', 'hide_invisible' => 1, 
    123                 'show_updated' => 0, 'include' => '', 
    124                 'exclude' => '', 'search' => '' 
    125         ); 
    126  
    127         $r = wp_parse_args( $args, $defaults ); 
    128         extract( $r, EXTR_SKIP ); 
    129  
    130         $cache = array(); 
    131         $key = md5( serialize( $r ) ); 
    132         if ( $cache = wp_cache_get( 'get_bookmarks', 'bookmark' ) ) { 
    133                 if ( is_array($cache) && isset( $cache[ $key ] ) ) 
    134                         return apply_filters('get_bookmarks', $cache[ $key ], $r ); 
    135         } 
    136  
    137         if ( !is_array($cache) ) 
    138                 $cache = array(); 
    139  
    140         $inclusions = ''; 
    141         if ( !empty($include) ) { 
    142                 $exclude = '';  //ignore exclude, category, and category_name params if using include 
    143                 $category = ''; 
    144                 $category_name = ''; 
    145                 $inclinks = preg_split('/[\s,]+/',$include); 
    146                 if ( count($inclinks) ) { 
    147                         foreach ( $inclinks as $inclink ) { 
    148                                 if (empty($inclusions)) 
    149                                         $inclusions = ' AND ( link_id = ' . intval($inclink) . ' '; 
    150                                 else 
    151                                         $inclusions .= ' OR link_id = ' . intval($inclink) . ' '; 
    152                         } 
    153                 } 
    154         } 
    155         if (!empty($inclusions)) 
    156                 $inclusions .= ')'; 
    157  
    158         $exclusions = ''; 
    159         if ( !empty($exclude) ) { 
    160                 $exlinks = preg_split('/[\s,]+/',$exclude); 
    161                 if ( count($exlinks) ) { 
    162                         foreach ( $exlinks as $exlink ) { 
    163                                 if (empty($exclusions)) 
    164                                         $exclusions = ' AND ( link_id <> ' . intval($exlink) . ' '; 
    165                                 else 
    166                                         $exclusions .= ' AND link_id <> ' . intval($exlink) . ' '; 
    167                         } 
    168                 } 
    169         } 
    170         if (!empty($exclusions)) 
    171                 $exclusions .= ')'; 
    172  
    173         if ( !empty($category_name) ) { 
    174                 if ( $category = get_term_by('name', $category_name, 'link_category') ) { 
    175                         $category = $category->term_id; 
    176                 } else { 
    177                         $cache[ $key ] = array(); 
    178                         wp_cache_set( 'get_bookmarks', $cache, 'bookmark' ); 
    179                         return apply_filters( 'get_bookmarks', array(), $r ); 
    180                 } 
    181         } 
    182  
    183         if ( ! empty($search) ) { 
    184                 $search = like_escape($search); 
    185                 $search = " AND ( (link_url LIKE '%$search%') OR (link_name LIKE '%$search%') OR (link_description LIKE '%$search%') ) "; 
    186         } 
    187  
    188         $category_query = ''; 
    189         $join = ''; 
    190         if ( !empty($category) ) { 
    191                 $incategories = preg_split('/[\s,]+/',$category); 
    192                 if ( count($incategories) ) { 
    193                         foreach ( $incategories as $incat ) { 
    194                                 if (empty($category_query)) 
    195                                         $category_query = ' AND ( tt.term_id = ' . intval($incat) . ' '; 
    196                                 else 
    197                                         $category_query .= ' OR tt.term_id = ' . intval($incat) . ' '; 
    198                         } 
    199                 } 
    200         } 
    201         if (!empty($category_query)) { 
    202                 $category_query .= ") AND taxonomy = 'link_category'"; 
    203                 $join = " INNER JOIN $wpdb->term_relationships AS tr ON ($wpdb->links.link_id = tr.object_id) INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_taxonomy_id = tr.term_taxonomy_id"; 
    204         } 
    205  
    206         if ( $show_updated && get_option('links_recently_updated_time') ) { 
    207                 $recently_updated_test = ", IF (DATE_ADD(link_updated, INTERVAL " . get_option('links_recently_updated_time') . " MINUTE) >= NOW(), 1,0) as recently_updated "; 
    208         } else { 
    209                 $recently_updated_test = ''; 
    210         } 
    211  
    212         $get_updated = ( $show_updated ) ? ', UNIX_TIMESTAMP(link_updated) AS link_updated_f ' : ''; 
    213  
    214         $orderby = strtolower($orderby); 
    215         $length = ''; 
    216         switch ( $orderby ) { 
    217                 case 'length': 
    218                         $length = ", CHAR_LENGTH(link_name) AS length"; 
    219                         break; 
    220                 case 'rand': 
    221                         $orderby = 'rand()'; 
    222                         break; 
    223                 case 'link_id': 
    224                         $orderby = "$wpdb->links.link_id"; 
    225                         break; 
    226                 default: 
    227                         $orderparams = array(); 
    228                         foreach ( explode(',', $orderby) as $ordparam ) { 
    229                                 $ordparam = trim($ordparam); 
    230                                 $keys = array( 'link_id', 'link_name', 'link_url', 'link_visible', 'link_rating', 'link_owner', 'link_updated', 'link_notes' ); 
    231                                 if ( in_array( 'link_' . $ordparam, $keys ) ) 
    232                                         $orderparams[] = 'link_' . $ordparam; 
    233                                 elseif ( in_array( $ordparam, $keys ) ) 
    234                                         $orderparams[] = $ordparam; 
    235                         } 
    236                         $orderby = implode(',', $orderparams); 
    237         } 
    238  
    239         if ( empty( $orderby ) ) 
    240                 $orderby = 'link_name'; 
    241  
    242         $order = strtoupper( $order ); 
    243         if ( '' !== $order && !in_array( $order, array( 'ASC', 'DESC' ) ) ) 
    244                 $order = 'ASC'; 
    245  
    246         $visible = ''; 
    247         if ( $hide_invisible ) 
    248                 $visible = "AND link_visible = 'Y'"; 
    249  
    250         $query = "SELECT * $length $recently_updated_test $get_updated FROM $wpdb->links $join WHERE 1=1 $visible $category_query"; 
    251         $query .= " $exclusions $inclusions $search"; 
    252         $query .= " ORDER BY $orderby $order"; 
    253         if ($limit != -1) 
    254                 $query .= " LIMIT $limit"; 
    255  
    256         $results = $wpdb->get_results($query); 
    257  
    258         $cache[ $key ] = $results; 
    259         wp_cache_set( 'get_bookmarks', $cache, 'bookmark' ); 
    260  
    261         return apply_filters('get_bookmarks', $results, $r); 
    262 } 
    263  
    264 /** 
    265  * Sanitizes all bookmark fields 
    266  * 
    267  * @since 2.3.0 
    268  * 
    269  * @param object|array $bookmark Bookmark row 
    270  * @param string $context Optional, default is 'display'. How to filter the 
    271  *              fields 
    272  * @return object|array Same type as $bookmark but with fields sanitized. 
    273  */ 
    274 function sanitize_bookmark($bookmark, $context = 'display') { 
    275         $fields = array('link_id', 'link_url', 'link_name', 'link_image', 'link_target', 'link_category', 
    276                 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_updated', 
    277                 'link_rel', 'link_notes', 'link_rss', ); 
    278  
    279         if ( is_object($bookmark) ) { 
    280                 $do_object = true; 
    281                 $link_id = $bookmark->link_id; 
    282         } else { 
    283                 $do_object = false; 
    284                 $link_id = $bookmark['link_id']; 
    285         } 
    286  
    287         foreach ( $fields as $field ) { 
    288                 if ( $do_object ) { 
    289                         if ( isset($bookmark->$field) ) 
    290                                 $bookmark->$field = sanitize_bookmark_field($field, $bookmark->$field, $link_id, $context); 
    291                 } else { 
    292                         if ( isset($bookmark[$field]) ) 
    293                                 $bookmark[$field] = sanitize_bookmark_field($field, $bookmark[$field], $link_id, $context); 
    294                 } 
    295         } 
    296  
    297         return $bookmark; 
    298 } 
    299  
    300 /** 
    301  * Sanitizes a bookmark field 
    302  * 
    303  * Sanitizes the bookmark fields based on what the field name is. If the field 
    304  * has a strict value set, then it will be tested for that, else a more generic 
    305  * filtering is applied. After the more strict filter is applied, if the 
    306  * $context is 'raw' then the value is immediately return. 
    307  * 
    308  * Hooks exist for the more generic cases. With the 'edit' context, the 
    309  * 'edit_$field' filter will be called and passed the $value and $bookmark_id 
    310  * respectively. With the 'db' context, the 'pre_$field' filter is called and 
    311  * passed the value. The 'display' context is the final context and has the 
    312  * $field has the filter name and is passed the $value, $bookmark_id, and 
    313  * $context respectively. 
    314  * 
    315  * @since 2.3.0 
    316  * 
    317  * @param string $field The bookmark field 
    318  * @param mixed $value The bookmark field value 
    319  * @param int $bookmark_id Bookmark ID 
    320  * @param string $context How to filter the field value. Either 'raw', 'edit', 
    321  *              'attribute', 'js', 'db', or 'display' 
    322  * @return mixed The filtered value 
    323  */ 
    324 function sanitize_bookmark_field($field, $value, $bookmark_id, $context) { 
    325         switch ( $field ) { 
    326         case 'link_id' : // ints 
    327         case 'link_rating' : 
    328                 $value = (int) $value; 
    329                 break; 
    330         case 'link_category' : // array( ints ) 
    331                 $value = array_map('absint', (array) $value); 
    332                 // We return here so that the categories aren't filtered. 
    333                 // The 'link_category' filter is for the name of a link category, not an array of a link's link categories 
    334                 return $value; 
    335                 break; 
    336         case 'link_visible' : // bool stored as Y|N 
    337                 $value = preg_replace('/[^YNyn]/', '', $value); 
    338                 break; 
    339         case 'link_target' : // "enum" 
    340                 $targets = array('_top', '_blank'); 
    341                 if ( ! in_array($value, $targets) ) 
    342                         $value = ''; 
    343                 break; 
    344         } 
    345  
    346         if ( 'raw' == $context ) 
    347                 return $value; 
    348  
    349         if ( 'edit' == $context ) { 
    350                 $value = apply_filters("edit_$field", $value, $bookmark_id); 
    351  
    352                 if ( 'link_notes' == $field ) { 
    353                         $value = esc_html( $value ); // textarea_escaped 
    354                 } else { 
    355                         $value = esc_attr($value); 
    356                 } 
    357         } else if ( 'db' == $context ) { 
    358                 $value = apply_filters("pre_$field", $value); 
    359         } else { 
    360                 // Use display filters by default. 
    361                 $value = apply_filters($field, $value, $bookmark_id, $context); 
    362  
    363                 if ( 'attribute' == $context ) 
    364                         $value = esc_attr($value); 
    365                 else if ( 'js' == $context ) 
    366                         $value = esc_js($value); 
    367         } 
    368  
    369         return $value; 
    370 } 
    371  
    372 /** 
    373  * Deletes bookmark cache 
    374  * 
    375  * @since 2.7.0 
    376  * @uses wp_cache_delete() Deletes the contents of 'get_bookmarks' 
    377  */ 
    378 function clean_bookmark_cache( $bookmark_id ) { 
    379         wp_cache_delete( $bookmark_id, 'bookmark' ); 
    380         wp_cache_delete( 'get_bookmarks', 'bookmark' ); 
    381         clean_object_term_cache( $bookmark_id, 'link'); 
    382 } 
  • wp-includes/link-template.php

     
    10151015        echo $before . apply_filters( 'edit_comment_link', $link, $comment->comment_ID ) . $after; 
    10161016} 
    10171017 
    1018 /** 
    1019  * Display edit bookmark (literally a URL external to blog) link. 
    1020  * 
    1021  * @since 2.7.0 
    1022  * 
    1023  * @param int $link Optional. Bookmark ID. 
    1024  * @return string 
    1025  */ 
    1026 function get_edit_bookmark_link( $link = 0 ) { 
    1027         $link = get_bookmark( $link ); 
    1028  
    1029         if ( !current_user_can('manage_links') ) 
    1030                 return; 
    1031  
    1032         $location = admin_url('link.php?action=edit&amp;link_id=') . $link->link_id; 
    1033         return apply_filters( 'get_edit_bookmark_link', $location, $link->link_id ); 
    1034 } 
    1035  
    1036 /** 
    1037  * Display edit bookmark (literally a URL external to blog) link anchor content. 
    1038  * 
    1039  * @since 2.7.0 
    1040  * 
    1041  * @param string $link Optional. Anchor text. 
    1042  * @param string $before Optional. Display before edit link. 
    1043  * @param string $after Optional. Display after edit link. 
    1044  * @param int $bookmark Optional. Bookmark ID. 
    1045  */ 
    1046 function edit_bookmark_link( $link = '', $before = '', $after = '', $bookmark = null ) { 
    1047         $bookmark = get_bookmark($bookmark); 
    1048  
    1049         if ( !current_user_can('manage_links') ) 
    1050                 return; 
    1051  
    1052         if ( empty($link) ) 
    1053                 $link = __('Edit This'); 
    1054  
    1055         $link = '<a href="' . get_edit_bookmark_link( $bookmark ) . '" title="' . esc_attr__( 'Edit Link' ) . '">' . $link . '</a>'; 
    1056         echo $before . apply_filters( 'edit_bookmark_link', $link, $bookmark->link_id ) . $after; 
    1057 } 
    1058  
    10591018// Navigation links 
    10601019 
    10611020/** 
  • wp-includes/formatting.php

     
    27462746                case 'rss_excerpt_length': 
    27472747                case 'default_category': 
    27482748                case 'default_email_category': 
    2749                 case 'default_link_category': 
    27502749                case 'close_comments_days_old': 
    27512750                case 'comments_per_page': 
    27522751                case 'thread_comments_depth': 
  • wp-includes/deprecated.php

     
    384384} 
    385385 
    386386/** 
    387  * Gets the links associated with category $cat_name. 
    388  * 
    389  * @since 0.71 
    390  * @deprecated 2.1 
    391  * @deprecated Use get_bookmarks() 
    392  * @see get_bookmarks() 
    393  * 
    394  * @param string $cat_name Optional. The category name to use. If no match is found uses all. 
    395  * @param string $before Optional. The html to output before the link. 
    396  * @param string $after Optional. The html to output after the link. 
    397  * @param string $between Optional. The html to output between the link/image and it's description. Not used if no image or $show_images is true. 
    398  * @param bool $show_images Optional. Whether to show images (if defined). 
    399  * @param string $orderby Optional. The order to output the links. E.g. 'id', 'name', 'url', 'description' or 'rating'. Or maybe owner. 
    400  *              If you start the name with an underscore the order will be reversed. You can also specify 'rand' as the order which will return links in a 
    401  *              random order. 
    402  * @param bool $show_description Optional. Whether to show the description if show_images=false/not defined. 
    403  * @param bool $show_rating Optional. Show rating stars/chars. 
    404  * @param int $limit            Optional. Limit to X entries. If not specified, all entries are shown. 
    405  * @param int $show_updated Optional. Whether to show last updated timestamp 
    406  */ 
    407 function get_linksbyname($cat_name = "noname", $before = '', $after = '<br />', $between = " ", $show_images = true, $orderby = 'id', 
    408                                                  $show_description = true, $show_rating = false, 
    409                                                  $limit = -1, $show_updated = 0) { 
    410         _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); 
    411  
    412         $cat_id = -1; 
    413         $cat = get_term_by('name', $cat_name, 'link_category'); 
    414         if ( $cat ) 
    415                 $cat_id = $cat->term_id; 
    416  
    417         get_links($cat_id, $before, $after, $between, $show_images, $orderby, $show_description, $show_rating, $limit, $show_updated); 
    418 } 
    419  
    420 /** 
    421  * Gets the links associated with the named category. 
    422  * 
    423  * @since 1.0.1 
    424  * @deprecated 2.1 
    425  * @deprecated Use wp_list_bookmarks() 
    426  * @see wp_list_bookmarks() 
    427  * 
    428  * @param string $category The category to use. 
    429  * @param string $args 
    430  * @return bool|null 
    431  */ 
    432 function wp_get_linksbyname($category, $args = '') { 
    433         _deprecated_function(__FUNCTION__, '2.1', 'wp_list_bookmarks()'); 
    434  
    435         $defaults = array( 
    436                 'after' => '<br />', 
    437                 'before' => '', 
    438                 'categorize' => 0, 
    439                 'category_after' => '', 
    440                 'category_before' => '', 
    441                 'category_name' => $category, 
    442                 'show_description' => 1, 
    443                 'title_li' => '', 
    444         ); 
    445  
    446         $r = wp_parse_args( $args, $defaults ); 
    447  
    448         return wp_list_bookmarks($r); 
    449 } 
    450  
    451 /** 
    452  * Gets an array of link objects associated with category $cat_name. 
    453  * 
    454  * <code> 
    455  *      $links = get_linkobjectsbyname('fred'); 
    456  *      foreach ($links as $link) { 
    457  *              echo '<li>'.$link->link_name.'</li>'; 
    458  *      } 
    459  * </code> 
    460  * 
    461  * @since 1.0.1 
    462  * @deprecated 2.1 
    463  * @deprecated Use get_bookmarks() 
    464  * @see get_bookmarks() 
    465  * 
    466  * @param string $cat_name The category name to use. If no match is found uses all. 
    467  * @param string $orderby The order to output the links. E.g. 'id', 'name', 'url', 'description', or 'rating'. 
    468  *              Or maybe owner. If you start the name with an underscore the order will be reversed. You can also 
    469  *              specify 'rand' as the order which will return links in a random order. 
    470  * @param int $limit Limit to X entries. If not specified, all entries are shown. 
    471  * @return unknown 
    472  */ 
    473 function get_linkobjectsbyname($cat_name = "noname" , $orderby = 'name', $limit = -1) { 
    474         _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); 
    475  
    476         $cat_id = -1; 
    477         $cat = get_term_by('name', $cat_name, 'link_category'); 
    478         if ( $cat ) 
    479                 $cat_id = $cat->term_id; 
    480  
    481         return get_linkobjects($cat_id, $orderby, $limit); 
    482 } 
    483  
    484 /** 
    485  * Gets an array of link objects associated with category n. 
    486  * 
    487  * Usage: 
    488  * <code> 
    489  *      $links = get_linkobjects(1); 
    490  *      if ($links) { 
    491  *              foreach ($links as $link) { 
    492  *                      echo '<li>'.$link->link_name.'<br />'.$link->link_description.'</li>'; 
    493  *              } 
    494  *      } 
    495  * </code> 
    496  * 
    497  * Fields are: 
    498  * <ol> 
    499  *      <li>link_id</li> 
    500  *      <li>link_url</li> 
    501  *      <li>link_name</li> 
    502  *      <li>link_image</li> 
    503  *      <li>link_target</li> 
    504  *      <li>link_category</li> 
    505  *      <li>link_description</li> 
    506  *      <li>link_visible</li> 
    507  *      <li>link_owner</li> 
    508  *      <li>link_rating</li> 
    509  *      <li>link_updated</li> 
    510  *      <li>link_rel</li> 
    511  *      <li>link_notes</li> 
    512  * </ol> 
    513  * 
    514  * @since 1.0.1 
    515  * @deprecated 2.1 
    516  * @deprecated Use get_bookmarks() 
    517  * @see get_bookmarks() 
    518  * 
    519  * @param int $category The category to use. If no category supplied uses all 
    520  * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url', 
    521  *              'description', or 'rating'. Or maybe owner. If you start the name with an 
    522  *              underscore the order will be reversed. You can also specify 'rand' as the 
    523  *              order which will return links in a random order. 
    524  * @param int $limit Limit to X entries. If not specified, all entries are shown. 
    525  * @return unknown 
    526  */ 
    527 function get_linkobjects($category = 0, $orderby = 'name', $limit = 0) { 
    528         _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); 
    529  
    530         $links = get_bookmarks( array( 'category' => $category, 'orderby' => $orderby, 'limit' => $limit ) ) ; 
    531  
    532         $links_array = array(); 
    533         foreach ($links as $link) 
    534                 $links_array[] = $link; 
    535  
    536         return $links_array; 
    537 } 
    538  
    539 /** 
    540  * Gets the links associated with category 'cat_name' and display rating stars/chars. 
    541  * 
    542  * @since 0.71 
    543  * @deprecated 2.1 
    544  * @deprecated Use get_bookmarks() 
    545  * @see get_bookmarks() 
    546  * 
    547  * @param string $cat_name The category name to use. If no match is found uses all 
    548  * @param string $before The html to output before the link 
    549  * @param string $after The html to output after the link 
    550  * @param string $between The html to output between the link/image and it's description. Not used if no image or show_images is true 
    551  * @param bool $show_images Whether to show images (if defined). 
    552  * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url', 
    553  *              'description', or 'rating'. Or maybe owner. If you start the name with an 
    554  *              underscore the order will be reversed. You can also specify 'rand' as the 
    555  *              order which will return links in a random order. 
    556  * @param bool $show_description Whether to show the description if show_images=false/not defined 
    557  * @param int $limit Limit to X entries. If not specified, all entries are shown. 
    558  * @param int $show_updated Whether to show last updated timestamp 
    559  */ 
    560 function get_linksbyname_withrating($cat_name = "noname", $before = '', $after = '<br />', $between = " ", 
    561                                                                         $show_images = true, $orderby = 'id', $show_description = true, $limit = -1, $show_updated = 0) { 
    562         _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); 
    563  
    564         get_linksbyname($cat_name, $before, $after, $between, $show_images, $orderby, $show_description, true, $limit, $show_updated); 
    565 } 
    566  
    567 /** 
    568  * Gets the links associated with category n and display rating stars/chars. 
    569  * 
    570  * @since 0.71 
    571  * @deprecated 2.1 
    572  * @deprecated Use get_bookmarks() 
    573  * @see get_bookmarks() 
    574  * 
    575  * @param int $category The category to use. If no category supplied uses all 
    576  * @param string $before The html to output before the link 
    577  * @param string $after The html to output after the link 
    578  * @param string $between The html to output between the link/image and it's description. Not used if no image or show_images == true 
    579  * @param bool $show_images Whether to show images (if defined). 
    580  * @param string $orderby The order to output the links. E.g. 'id', 'name', 'url', 
    581  *              'description', or 'rating'. Or maybe owner. If you start the name with an 
    582  *              underscore the order will be reversed. You can also specify 'rand' as the 
    583  *              order which will return links in a random order. 
    584  * @param bool $show_description Whether to show the description if show_images=false/not defined. 
    585  * @param string $limit Limit to X entries. If not specified, all entries are shown. 
    586  * @param int $show_updated Whether to show last updated timestamp 
    587  */ 
    588 function get_links_withrating($category = -1, $before = '', $after = '<br />', $between = " ", $show_images = true, 
    589                                                           $orderby = 'id', $show_description = true, $limit = -1, $show_updated = 0) { 
    590         _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); 
    591  
    592         get_links($category, $before, $after, $between, $show_images, $orderby, $show_description, true, $limit, $show_updated); 
    593 } 
    594  
    595 /** 
    596387 * Gets the auto_toggle setting. 
    597388 * 
    598389 * @since 0.71 
     
    880671} 
    881672 
    882673/** 
    883  * Gets the links associated with category. 
    884  * 
    885  * @see get_links() for argument information that can be used in $args 
    886  * @since 1.0.1 
    887  * @deprecated 2.1 
    888  * @deprecated Use wp_list_bookmarks() 
    889  * @see wp_list_bookmarks() 
    890  * 
    891  * @param string $args a query string 
    892  * @return null|string 
    893  */ 
    894 function wp_get_links($args = '') { 
    895         _deprecated_function( __FUNCTION__, '2.1', 'wp_list_bookmarks()' ); 
    896  
    897         if ( strpos( $args, '=' ) === false ) { 
    898                 $cat_id = $args; 
    899                 $args = add_query_arg( 'category', $cat_id, $args ); 
    900         } 
    901  
    902         $defaults = array( 
    903                 'after' => '<br />', 
    904                 'before' => '', 
    905                 'between' => ' ', 
    906                 'categorize' => 0, 
    907                 'category' => '', 
    908                 'echo' => true, 
    909                 'limit' => -1, 
    910                 'orderby' => 'name', 
    911                 'show_description' => true, 
    912                 'show_images' => true, 
    913                 'show_rating' => false, 
    914                 'show_updated' => true, 
    915                 'title_li' => '', 
    916         ); 
    917  
    918         $r = wp_parse_args( $args, $defaults ); 
    919  
    920         return wp_list_bookmarks($r); 
    921 } 
    922  
    923 /** 
    924  * Gets the links associated with category by id. 
    925  * 
    926  * @since 0.71 
    927  * @deprecated 2.1 
    928  * @deprecated Use get_bookmarks() 
    929  * @see get_bookmarks() 
    930  * 
    931  * @param int $category The category to use. If no category supplied uses all 
    932  * @param string $before the html to output before the link 
    933  * @param string $after the html to output after the link 
    934  * @param string $between the html to output between the link/image and its description. 
    935  *              Not used if no image or show_images == true 
    936  * @param bool $show_images whether to show images (if defined). 
    937  * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url', 
    938  *              'description', or 'rating'. Or maybe owner. If you start the name with an 
    939  *              underscore the order will be reversed. You can also specify 'rand' as the order 
    940  *              which will return links in a random order. 
    941  * @param bool $show_description whether to show the description if show_images=false/not defined. 
    942  * @param bool $show_rating show rating stars/chars 
    943  * @param int $limit Limit to X entries. If not specified, all entries are shown. 
    944  * @param int $show_updated whether to show last updated timestamp 
    945  * @param bool $echo whether to echo the results, or return them instead 
    946  * @return null|string 
    947  */ 
    948 function get_links($category = -1, $before = '', $after = '<br />', $between = ' ', $show_images = true, $orderby = 'name', 
    949                         $show_description = true, $show_rating = false, $limit = -1, $show_updated = 1, $echo = true) { 
    950         _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); 
    951  
    952         $order = 'ASC'; 
    953         if ( substr($orderby, 0, 1) == '_' ) { 
    954                 $order = 'DESC'; 
    955                 $orderby = substr($orderby, 1); 
    956         } 
    957  
    958         if ( $category == -1 ) //get_bookmarks uses '' to signify all categories 
    959                 $category = ''; 
    960  
    961         $results = get_bookmarks(array('category' => $category, 'orderby' => $orderby, 'order' => $order, 'show_updated' => $show_updated, 'limit' => $limit)); 
    962  
    963         if ( !$results ) 
    964                 return; 
    965  
    966         $output = ''; 
    967  
    968         foreach ( (array) $results as $row ) { 
    969                 if ( !isset($row->recently_updated) ) 
    970                         $row->recently_updated = false; 
    971                 $output .= $before; 
    972                 if ( $show_updated && $row->recently_updated ) 
    973                         $output .= get_option('links_recently_updated_prepend'); 
    974                 $the_link = '#'; 
    975                 if ( !empty($row->link_url) ) 
    976                         $the_link = esc_url($row->link_url); 
    977                 $rel = $row->link_rel; 
    978                 if ( '' != $rel ) 
    979                         $rel = ' rel="' . $rel . '"'; 
    980  
    981                 $desc = esc_attr(sanitize_bookmark_field('link_description', $row->link_description, $row->link_id, 'display')); 
    982                 $name = esc_attr(sanitize_bookmark_field('link_name', $row->link_name, $row->link_id, 'display')); 
    983                 $title = $desc; 
    984  
    985                 if ( $show_updated ) 
    986                         if (substr($row->link_updated_f, 0, 2) != '00') 
    987                                 $title .= ' ('.__('Last updated') . ' ' . date(get_option('links_updated_date_format'), $row->link_updated_f + (get_option('gmt_offset') * 3600)) . ')'; 
    988  
    989                 if ( '' != $title ) 
    990                         $title = ' title="' . $title . '"'; 
    991  
    992                 $alt = ' alt="' . $name . '"'; 
    993  
    994                 $target = $row->link_target; 
    995                 if ( '' != $target ) 
    996                         $target = ' target="' . $target . '"'; 
    997  
    998                 $output .= '<a href="' . $the_link . '"' . $rel . $title . $target. '>'; 
    999  
    1000                 if ( $row->link_image != null && $show_images ) { 
    1001                         if ( strpos($row->link_image, 'http') !== false ) 
    1002                                 $output .= "<img src=\"$row->link_image\" $alt $title />"; 
    1003                         else // If it's a relative path 
    1004                                 $output .= "<img src=\"" . get_option('siteurl') . "$row->link_image\" $alt $title />"; 
    1005                 } else { 
    1006                         $output .= $name; 
    1007                 } 
    1008  
    1009                 $output .= '</a>'; 
    1010  
    1011                 if ( $show_updated && $row->recently_updated ) 
    1012                         $output .= get_option('links_recently_updated_append'); 
    1013  
    1014                 if ( $show_description && '' != $desc ) 
    1015                         $output .= $between . $desc; 
    1016  
    1017                 if ($show_rating) { 
    1018                         $output .= $between . get_linkrating($row); 
    1019                 } 
    1020  
    1021                 $output .= "$after\n"; 
    1022         } // end while 
    1023  
    1024         if ( !$echo ) 
    1025                 return $output; 
    1026         echo $output; 
    1027 } 
    1028  
    1029 /** 
    1030  * Output entire list of links by category. 
    1031  * 
    1032  * Output a list of all links, listed by category, using the settings in 
    1033  * $wpdb->linkcategories and output it as a nested HTML unordered list. 
    1034  * 
    1035  * @since 1.0.1 
    1036  * @deprecated 2.1 
    1037  * @deprecated Use wp_list_bookmarks() 
    1038  * @see wp_list_bookmarks() 
    1039  * 
    1040  * @param string $order Sort link categories by 'name' or 'id' 
    1041  */ 
    1042 function get_links_list($order = 'name') { 
    1043         _deprecated_function( __FUNCTION__, '2.1', 'wp_list_bookmarks()' ); 
    1044  
    1045         $order = strtolower($order); 
    1046  
    1047         // Handle link category sorting 
    1048         $direction = 'ASC'; 
    1049         if ( '_' == substr($order,0,1) ) { 
    1050                 $direction = 'DESC'; 
    1051                 $order = substr($order,1); 
    1052         } 
    1053  
    1054         if ( !isset($direction) ) 
    1055                 $direction = ''; 
    1056  
    1057         $cats = get_categories(array('type' => 'link', 'orderby' => $order, 'order' => $direction, 'hierarchical' => 0)); 
    1058  
    1059         // Display each category 
    1060         if ( $cats ) { 
    1061                 foreach ( (array) $cats as $cat ) { 
    1062                         // Handle each category. 
    1063  
    1064                         // Display the category name 
    1065                         echo '  <li id="linkcat-' . $cat->term_id . '" class="linkcat"><h2>' . apply_filters('link_category', $cat->name ) . "</h2>\n\t<ul>\n"; 
    1066                         // Call get_links() with all the appropriate params 
    1067                         get_links($cat->term_id, '<li>', "</li>", "\n", true, 'name', false); 
    1068  
    1069                         // Close the last category 
    1070                         echo "\n\t</ul>\n</li>\n"; 
    1071                 } 
    1072         } 
    1073 } 
    1074  
    1075 /** 
    1076  * Show the link to the links popup and the number of links. 
    1077  * 
    1078  * @since 0.71 
    1079  * @deprecated 2.1 
    1080  * @deprecated {@internal Use function instead is unknown}} 
    1081  * 
    1082  * @param string $text the text of the link 
    1083  * @param int $width the width of the popup window 
    1084  * @param int $height the height of the popup window 
    1085  * @param string $file the page to open in the popup window 
    1086  * @param bool $count the number of links in the db 
    1087  */ 
    1088 function links_popup_script($text = 'Links', $width=400, $height=400, $file='links.all.php', $count = true) { 
    1089         _deprecated_function( __FUNCTION__, '2.1' ); 
    1090  
    1091         if ( $count ) 
    1092                 $counts = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->links"); 
    1093  
    1094         $javascript = "<a href=\"#\" onclick=\"javascript:window.open('$file?popup=1', '_blank', 'width=$width,height=$height,scrollbars=yes,status=no'); return false\">"; 
    1095         $javascript .= $text; 
    1096  
    1097         if ( $count ) 
    1098                 $javascript .= " ($counts)"; 
    1099  
    1100         $javascript .= "</a>\n\n"; 
    1101                 echo $javascript; 
    1102 } 
    1103  
    1104 /** 
    1105  * @since 1.0.1 
    1106  * @deprecated 2.1 
    1107  * @deprecated Use sanitize_bookmark_field() 
    1108  * @see sanitize_bookmark_field() 
    1109  * 
    1110  * @param object $link 
    1111  * @return unknown 
    1112  */ 
    1113 function get_linkrating($link) { 
    1114         _deprecated_function( __FUNCTION__, '2.1', 'sanitize_bookmark_field()' ); 
    1115         return sanitize_bookmark_field('link_rating', $link->link_rating, $link->link_id, 'display'); 
    1116 } 
    1117  
    1118 /** 
    1119  * Gets the name of category by id. 
    1120  * 
    1121  * @since 0.71 
    1122  * @deprecated 2.1 
    1123  * @deprecated Use get_category() 
    1124  * @see get_category() 
    1125  * 
    1126  * @param int $id The category to get. If no category supplied uses 0 
    1127  * @return string 
    1128  */ 
    1129 function get_linkcatname($id = 0) { 
    1130         _deprecated_function( __FUNCTION__, '2.1', 'get_category()' ); 
    1131  
    1132         $id = (int) $id; 
    1133  
    1134         if ( empty($id) ) 
    1135                 return ''; 
    1136  
    1137         $cats = wp_get_link_cats($id); 
    1138  
    1139         if ( empty($cats) || ! is_array($cats) ) 
    1140                 return ''; 
    1141  
    1142         $cat_id = (int) $cats[0]; // Take the first cat. 
    1143  
    1144         $cat = get_category($cat_id); 
    1145         return $cat->name; 
    1146 } 
    1147  
    1148 /** 
    1149674 * Print RSS comment feed link. 
    1150675 * 
    1151676 * @since 1.0.1 
     
    20351560} 
    20361561 
    20371562/** 
    2038  * Retrieve bookmark data based on ID. 
    2039  * 
    2040  * @since 2.0.0 
    2041  * @deprecated 2.1.0 
    2042  * @deprecated Use get_bookmark() 
    2043  * @see get_bookmark() 
    2044  * 
    2045  * @param int $bookmark_id ID of link 
    2046  * @param string $output OBJECT, ARRAY_N, or ARRAY_A 
    2047  * @return object|array 
    2048  */ 
    2049 function get_link($bookmark_id, $output = OBJECT, $filter = 'raw') { 
    2050         _deprecated_function( __FUNCTION__, '2.1', 'get_bookmark()' ); 
    2051         return get_bookmark($bookmark_id, $output, $filter); 
    2052 } 
    2053  
    2054 /** 
    20551563 * Performs esc_url() for database or redirect usage. 
    20561564 * 
    20571565 * @since 2.3.1 
  • wp-includes/ms-functions.php

     
    263263        if ( $reassign != '' ) { 
    264264                $reassign = (int) $reassign; 
    265265                $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_author = %d WHERE post_author = %d", $reassign, $user_id) ); 
    266                 $wpdb->query( $wpdb->prepare("UPDATE $wpdb->links SET link_owner = %d WHERE link_owner = %d", $reassign, $user_id) ); 
     266                do_action( 'reassign_user_data', $user_id, $reassign ); 
    267267        } 
    268268 
    269269        restore_current_blog(); 
  • wp-includes/category-template.php

     
    312312 
    313313        $defaults['selected'] = ( is_category() ) ? get_query_var( 'cat' ) : 0; 
    314314 
    315         // Back compat. 
    316         if ( isset( $args['type'] ) && 'link' == $args['type'] ) { 
    317                 _deprecated_argument( __FUNCTION__, '3.0', '' ); 
    318                 $args['taxonomy'] = 'link_category'; 
    319         } 
    320  
     315        $args = apply_filters( 'dropdown_categories_args', $args ); 
     316         
    321317        $r = wp_parse_args( $args, $defaults ); 
    322318 
    323319        if ( !isset( $r['pad_counts'] ) && $r['show_count'] && $r['hierarchical'] ) { 
  • wp-content/plugins/link-manager/bookmark-template.php

     
     1<?php 
     2/** 
     3 * Bookmark Template Functions for usage in Themes 
     4 * 
     5 * @package Link Manager 
     6 * @subpackage Template 
     7 */ 
     8 
     9/** 
     10 * The formatted output of a list of bookmarks. 
     11 * 
     12 * The $bookmarks array must contain bookmark objects and will be iterated over 
     13 * to retrieve the bookmark to be used in the output. 
     14 * 
     15 * The output is formatted as HTML with no way to change that format. However, 
     16 * what is between, before, and after can be changed. The link itself will be 
     17 * HTML. 
     18 * 
     19 * This function is used internally by wp_list_bookmarks() and should not be 
     20 * used by themes. 
     21 * 
     22 * The defaults for overwriting are: 
     23 * 'show_updated' - Default is 0 (integer). Will show the time of when the 
     24 *              bookmark was last updated. 
     25 * 'show_description' - Default is 0 (integer). Whether to show the description 
     26 *              of the bookmark. 
     27 * 'show_images' - Default is 1 (integer). Whether to show link image if 
     28 *              available. 
     29 * 'show_name' - Default is 0 (integer). Whether to show link name if 
     30 *              available. 
     31 * 'before' - Default is '<li>' (string). The html or text to prepend to each 
     32 *              bookmarks. 
     33 * 'after' - Default is '</li>' (string). The html or text to append to each 
     34 *              bookmarks. 
     35 * 'link_before' - Default is '' (string). The html or text to prepend to each 
     36 *              bookmarks inside the <a> tag. 
     37 * 'link_after' - Default is '' (string). The html or text to append to each 
     38 *              bookmarks inside the <a> tag. 
     39 * 'between' - Default is '\n' (string). The string for use in between the link, 
     40 *              description, and image. 
     41 * 'show_rating' - Default is 0 (integer). Whether to show the link rating. 
     42 * 
     43 * @since WP 2.1.0 
     44 * @access private 
     45 * 
     46 * @param array $bookmarks List of bookmarks to traverse 
     47 * @param string|array $args Optional. Overwrite the defaults. 
     48 * @return string Formatted output in HTML 
     49 */ 
     50function _walk_bookmarks( $bookmarks, $args = '' ) { 
     51        $defaults = array( 
     52                'show_updated' => 0, 'show_description' => 0, 
     53                'show_images' => 1, 'show_name' => 0, 
     54                'before' => '<li>', 'after' => '</li>', 'between' => "\n", 
     55                'show_rating' => 0, 'link_before' => '', 'link_after' => '' 
     56        ); 
     57 
     58        $r = wp_parse_args( $args, $defaults ); 
     59        extract( $r, EXTR_SKIP ); 
     60 
     61        $output = ''; // Blank string to start with. 
     62 
     63        foreach ( (array) $bookmarks as $bookmark ) { 
     64                if ( !isset( $bookmark->recently_updated ) ) 
     65                        $bookmark->recently_updated = false; 
     66                $output .= $before; 
     67                if ( $show_updated && $bookmark->recently_updated ) 
     68                        $output .= get_option( 'links_recently_updated_prepend' ); 
     69 
     70                $the_link = '#'; 
     71                if ( !empty( $bookmark->link_url ) ) 
     72                        $the_link = esc_url( $bookmark->link_url ); 
     73 
     74                $desc = esc_attr(sanitize_bookmark_field( 'link_description', $bookmark->link_description, $bookmark->link_id, 'display' )); 
     75                $name = esc_attr(sanitize_bookmark_field( 'link_name', $bookmark->link_name, $bookmark->link_id, 'display' )); 
     76                $title = $desc; 
     77 
     78                if ( $show_updated ) 
     79                        if ( '00' != substr( $bookmark->link_updated_f, 0, 2) ) { 
     80                                $title .= ' ( '; 
     81                                $title .= sprintf(__( 'Last updated: %s' ), date(get_option( 'links_updated_date_format' ), $bookmark->link_updated_f + (get_option( 'gmt_offset' ) * 3600))); 
     82                                $title .= ' )'; 
     83                        } 
     84 
     85                $alt = ' alt="' . $name . ( $show_description ? ' ' . $title : '' ) . '"'; 
     86 
     87                if ( '' != $title ) 
     88                        $title = ' title="' . $title . '"'; 
     89 
     90                $rel = $bookmark->link_rel; 
     91                if ( '' != $rel ) 
     92                        $rel = ' rel="' . esc_attr( $rel ) . '"'; 
     93 
     94                $target = $bookmark->link_target; 
     95                if ( '' != $target ) 
     96                        $target = ' target="' . $target . '"'; 
     97 
     98                $output .= '<a href="' . $the_link . '"' . $rel . $title . $target . '>'; 
     99 
     100                $output .= $link_before; 
     101 
     102                if ( $bookmark->link_image != null && $show_images ) { 
     103                        if ( strpos( $bookmark->link_image, 'http' ) === 0 ) 
     104                                $output .= "<img src=\"$bookmark->link_image\" $alt $title />"; 
     105                        else // If it's a relative path 
     106                                $output .= "<img src=\"" . get_option( 'siteurl' ) . "$bookmark->link_image\" $alt $title />"; 
     107 
     108                        if ( $show_name ) 
     109                                $output .= " $name"; 
     110                } else { 
     111                        $output .= $name; 
     112                } 
     113 
     114                $output .= $link_after; 
     115 
     116                $output .= '</a>'; 
     117 
     118                if ( $show_updated && $bookmark->recently_updated ) 
     119                        $output .= get_option( 'links_recently_updated_append' ); 
     120 
     121                if ( $show_description && '' != $desc ) 
     122                        $output .= $between . $desc; 
     123 
     124                if ( $show_rating ) 
     125                        $output .= $between . sanitize_bookmark_field( 'link_rating', $bookmark->link_rating, $bookmark->link_id, 'display' ); 
     126 
     127                $output .= "$after\n"; 
     128        } // end while 
     129 
     130        return $output; 
     131} 
     132 
     133/** 
     134 * Retrieve or echo all of the bookmarks. 
     135 * 
     136 * List of default arguments are as follows: 
     137 * 'orderby' - Default is 'name' (string). How to order the links by. String is 
     138 *              based off of the bookmark scheme. 
     139 * 'order' - Default is 'ASC' (string). Either 'ASC' or 'DESC'. Orders in either 
     140 *              ascending or descending order. 
     141 * 'limit' - Default is -1 (integer) or show all. The amount of bookmarks to 
     142 *              display. 
     143 * 'category' - Default is empty string (string). Include the links in what 
     144 *              category ID(s). 
     145 * 'category_name' - Default is empty string (string). Get links by category 
     146 *              name. 
     147 * 'hide_invisible' - Default is 1 (integer). Whether to show (default) or hide 
     148 *              links marked as 'invisible'. 
     149 * 'show_updated' - Default is 0 (integer). Will show the time of when the 
     150 *              bookmark was last updated. 
     151 * 'echo' - Default is 1 (integer). Whether to echo (default) or return the 
     152 *              formatted bookmarks. 
     153 * 'categorize' - Default is 1 (integer). Whether to show links listed by 
     154 *              category (default) or show links in one column. 
     155 * 'show_description' - Default is 0 (integer). Whether to show the description 
     156 *              of the bookmark. 
     157 * 
     158 * These options define how the Category name will appear before the category 
     159 * links are displayed, if 'categorize' is 1. If 'categorize' is 0, then it will 
     160 * display for only the 'title_li' string and only if 'title_li' is not empty. 
     161 * 'title_li' - Default is 'Bookmarks' (translatable string). What to show 
     162 *              before the links appear. 
     163 * 'title_before' - Default is '<h2>' (string). The HTML or text to show before 
     164 *              the 'title_li' string. 
     165 * 'title_after' - Default is '</h2>' (string). The HTML or text to show after 
     166 *              the 'title_li' string. 
     167 * 'class' - Default is 'linkcat' (string). The CSS class to use for the 
     168 *              'title_li'. 
     169 * 
     170 * 'category_before' - Default is '<li id="%id" class="%class">'. String must 
     171 *              contain '%id' and '%class' to get 
     172 * the id of the category and the 'class' argument. These are used for 
     173 *              formatting in themes. 
     174 * Argument will be displayed before the 'title_before' argument. 
     175 * 'category_after' - Default is '</li>' (string). The HTML or text that will 
     176 *              appear after the list of links. 
     177 * 
     178 * These are only used if 'categorize' is set to 1 or true. 
     179 * 'category_orderby' - Default is 'name'. How to order the bookmark category 
     180 *              based on term scheme. 
     181 * 'category_order' - Default is 'ASC'. Set the order by either ASC (ascending) 
     182 *              or DESC (descending). 
     183 * 
     184 * @see _walk_bookmarks() For other arguments that can be set in this function 
     185 *              and passed to _walk_bookmarks(). 
     186 * @see get_bookmarks() For other arguments that can be set in this function and 
     187 *              passed to get_bookmarks(). 
     188 * @link http://codex.wordpress.org/Template_Tags/wp_list_bookmarks 
     189 * 
     190 * @since WP 2.1.0 
     191 * @uses _walk_bookmarks() Used to iterate over all of the bookmarks and return 
     192 *              the html 
     193 * @uses get_terms() Gets all of the categories that are for links. 
     194 * 
     195 * @param string|array $args Optional. Overwrite the defaults of the function 
     196 * @return string|null Will only return if echo option is set to not echo. 
     197 *              Default is not return anything. 
     198 */ 
     199function wp_list_bookmarks( $args = '' ) { 
     200        $defaults = array( 
     201                'orderby' => 'name', 'order' => 'ASC', 
     202                'limit' => -1, 'category' => '', 'exclude_category' => '', 
     203                'category_name' => '', 'hide_invisible' => 1, 
     204                'show_updated' => 0, 'echo' => 1, 
     205                'categorize' => 1, 'title_li' => __( 'Bookmarks' ), 
     206                'title_before' => '<h2>', 'title_after' => '</h2>', 
     207                'category_orderby' => 'name', 'category_order' => 'ASC', 
     208                'class' => 'linkcat', 'category_before' => '<li id="%id" class="%class">', 
     209                'category_after' => '</li>' 
     210        ); 
     211 
     212        $r = wp_parse_args( $args, $defaults ); 
     213        extract( $r, EXTR_SKIP ); 
     214 
     215        $output = ''; 
     216 
     217        if ( $categorize ) { 
     218                //Split the bookmarks into ul's for each category 
     219                $cats = get_terms( 'link_category', array( 'name__like' => $category_name, 'include' => $category, 'exclude' => $exclude_category, 'orderby' => $category_orderby, 'order' => $category_order, 'hierarchical' => 0)); 
     220 
     221                foreach ( (array) $cats as $cat ) { 
     222                        $params = array_merge( $r, array( 'category'=>$cat->term_id ) ); 
     223                        $bookmarks = get_bookmarks( $params ); 
     224                        if ( empty( $bookmarks ) ) 
     225                                continue; 
     226                        $output .= str_replace(array( '%id', '%class' ), array("linkcat-$cat->term_id", $class ), $category_before ); 
     227                        $catname = apply_filters( "link_category", $cat->name ); 
     228                        $output .= "$title_before$catname$title_after\n\t<ul class='xoxo blogroll'>\n"; 
     229                        $output .= _walk_bookmarks( $bookmarks, $r ); 
     230                        $output .= "\n\t</ul>\n$category_after\n"; 
     231                } 
     232        } else { 
     233                //output one single list using title_li for the title 
     234                $bookmarks = get_bookmarks( $r ); 
     235 
     236                if ( !empty( $bookmarks ) ) { 
     237                        if ( !empty( $title_li ) ){ 
     238                                $output .= str_replace(array( '%id', '%class' ), array("linkcat-$category", $class ), $category_before ); 
     239                                $output .= "$title_before$title_li$title_after\n\t<ul class='xoxo blogroll'>\n"; 
     240                                $output .= _walk_bookmarks( $bookmarks, $r ); 
     241                                $output .= "\n\t</ul>\n$category_after\n"; 
     242                        } else { 
     243                                $output .= _walk_bookmarks( $bookmarks, $r ); 
     244                        } 
     245                } 
     246        } 
     247 
     248        $output = apply_filters( 'wp_list_bookmarks', $output ); 
     249 
     250        if ( !$echo ) 
     251                return $output; 
     252        echo $output; 
     253} 
  • wp-content/plugins/link-manager/deprecated.php

     
     1<?php 
     2/** 
     3 * Gets the links associated with category $cat_name. 
     4 * 
     5 * @since WP 0.71 
     6 * @deprecated WP 2.1 
     7 * @deprecated WP Use get_bookmarks() 
     8 * @see get_bookmarks() 
     9 * 
     10 * @param string $cat_name Optional. The category name to use. If no match is found uses all. 
     11 * @param string $before Optional. The html to output before the link. 
     12 * @param string $after Optional. The html to output after the link. 
     13 * @param string $between Optional. The html to output between the link/image and it's description. Not used if no image or $show_images is true. 
     14 * @param bool $show_images Optional. Whether to show images (if defined). 
     15 * @param string $orderby Optional. The order to output the links. E.g. 'id', 'name', 'url', 'description' or 'rating'. Or maybe owner. 
     16 *              If you start the name with an underscore the order will be reversed. You can also specify 'rand' as the order which will return links in a 
     17 *              random order. 
     18 * @param bool $show_description Optional. Whether to show the description if show_images=false/not defined. 
     19 * @param bool $show_rating Optional. Show rating stars/chars. 
     20 * @param int $limit            Optional. Limit to X entries. If not specified, all entries are shown. 
     21 * @param int $show_updated Optional. Whether to show last updated timestamp 
     22 */ 
     23function get_linksbyname($cat_name = "noname", $before = '', $after = '<br />', $between = " ", $show_images = true, $orderby = 'id', 
     24                                                 $show_description = true, $show_rating = false, 
     25                                                 $limit = -1, $show_updated = 0) { 
     26        _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); 
     27 
     28        $cat_id = -1; 
     29        $cat = get_term_by('name', $cat_name, 'link_category'); 
     30        if ( $cat ) 
     31                $cat_id = $cat->term_id; 
     32 
     33        get_links($cat_id, $before, $after, $between, $show_images, $orderby, $show_description, $show_rating, $limit, $show_updated); 
     34} 
     35 
     36/** 
     37 * Gets the links associated with the named category. 
     38 * 
     39 * @since WP 1.0.1 
     40 * @deprecated WP 2.1 
     41 * @deprecated WP Use wp_list_bookmarks() 
     42 * @see wp_list_bookmarks() 
     43 * 
     44 * @param string $category The category to use. 
     45 * @param string $args 
     46 * @return bool|null 
     47 */ 
     48function wp_get_linksbyname($category, $args = '') { 
     49        _deprecated_function(__FUNCTION__, '2.1', 'wp_list_bookmarks()'); 
     50 
     51        $defaults = array( 
     52                'after' => '<br />', 
     53                'before' => '', 
     54                'categorize' => 0, 
     55                'category_after' => '', 
     56                'category_before' => '', 
     57                'category_name' => $category, 
     58                'show_description' => 1, 
     59                'title_li' => '', 
     60        ); 
     61 
     62        $r = wp_parse_args( $args, $defaults ); 
     63 
     64        return wp_list_bookmarks($r); 
     65} 
     66 
     67/** 
     68 * Gets an array of link objects associated with category $cat_name. 
     69 * 
     70 * <code> 
     71 *      $links = get_linkobjectsbyname('fred'); 
     72 *      foreach ($links as $link) { 
     73 *              echo '<li>'.$link->link_name.'</li>'; 
     74 *      } 
     75 * </code> 
     76 * 
     77 * @since WP 1.0.1 
     78 * @deprecated WP 2.1 
     79 * @deprecated WP Use get_bookmarks() 
     80 * @see get_bookmarks() 
     81 * 
     82 * @param string $cat_name The category name to use. If no match is found uses all. 
     83 * @param string $orderby The order to output the links. E.g. 'id', 'name', 'url', 'description', or 'rating'. 
     84 *              Or maybe owner. If you start the name with an underscore the order will be reversed. You can also 
     85 *              specify 'rand' as the order which will return links in a random order. 
     86 * @param int $limit Limit to X entries. If not specified, all entries are shown. 
     87 * @return unknown 
     88 */ 
     89function get_linkobjectsbyname($cat_name = "noname" , $orderby = 'name', $limit = -1) { 
     90        _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); 
     91 
     92        $cat_id = -1; 
     93        $cat = get_term_by('name', $cat_name, 'link_category'); 
     94        if ( $cat ) 
     95                $cat_id = $cat->term_id; 
     96 
     97        return get_linkobjects($cat_id, $orderby, $limit); 
     98} 
     99 
     100/** 
     101 * Gets an array of link objects associated with category n. 
     102 * 
     103 * Usage: 
     104 * <code> 
     105 *      $links = get_linkobjects(1); 
     106 *      if ($links) { 
     107 *              foreach ($links as $link) { 
     108 *                      echo '<li>'.$link->link_name.'<br />'.$link->link_description.'</li>'; 
     109 *              } 
     110 *      } 
     111 * </code> 
     112 * 
     113 * Fields are: 
     114 * <ol> 
     115 *      <li>link_id</li> 
     116 *      <li>link_url</li> 
     117 *      <li>link_name</li> 
     118 *      <li>link_image</li> 
     119 *      <li>link_target</li> 
     120 *      <li>link_category</li> 
     121 *      <li>link_description</li> 
     122 *      <li>link_visible</li> 
     123 *      <li>link_owner</li> 
     124 *      <li>link_rating</li> 
     125 *      <li>link_updated</li> 
     126 *      <li>link_rel</li> 
     127 *      <li>link_notes</li> 
     128 * </ol> 
     129 * 
     130 * @since WP 1.0.1 
     131 * @deprecated WP 2.1 
     132 * @deprecated WP Use get_bookmarks() 
     133 * @see get_bookmarks() 
     134 * 
     135 * @param int $category The category to use. If no category supplied uses all 
     136 * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url', 
     137 *              'description', or 'rating'. Or maybe owner. If you start the name with an 
     138 *              underscore the order will be reversed. You can also specify 'rand' as the 
     139 *              order which will return links in a random order. 
     140 * @param int $limit Limit to X entries. If not specified, all entries are shown. 
     141 * @return unknown 
     142 */ 
     143function get_linkobjects($category = 0, $orderby = 'name', $limit = 0) { 
     144        _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); 
     145 
     146        $links = get_bookmarks( array( 'category' => $category, 'orderby' => $orderby, 'limit' => $limit ) ) ; 
     147 
     148        $links_array = array(); 
     149        foreach ($links as $link) 
     150                $links_array[] = $link; 
     151 
     152        return $links_array; 
     153} 
     154 
     155/** 
     156 * Gets the links associated with category 'cat_name' and display rating stars/chars. 
     157 * 
     158 * @since WP 0.71 
     159 * @deprecated WP 2.1 
     160 * @deprecated WP Use get_bookmarks() 
     161 * @see get_bookmarks() 
     162 * 
     163 * @param string $cat_name The category name to use. If no match is found uses all 
     164 * @param string $before The html to output before the link 
     165 * @param string $after The html to output after the link 
     166 * @param string $between The html to output between the link/image and it's description. Not used if no image or show_images is true 
     167 * @param bool $show_images Whether to show images (if defined). 
     168 * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url', 
     169 *              'description', or 'rating'. Or maybe owner. If you start the name with an 
     170 *              underscore the order will be reversed. You can also specify 'rand' as the 
     171 *              order which will return links in a random order. 
     172 * @param bool $show_description Whether to show the description if show_images=false/not defined 
     173 * @param int $limit Limit to X entries. If not specified, all entries are shown. 
     174 * @param int $show_updated Whether to show last updated timestamp 
     175 */ 
     176function get_linksbyname_withrating($cat_name = "noname", $before = '', $after = '<br />', $between = " ", 
     177                                                                        $show_images = true, $orderby = 'id', $show_description = true, $limit = -1, $show_updated = 0) { 
     178        _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); 
     179 
     180        get_linksbyname($cat_name, $before, $after, $between, $show_images, $orderby, $show_description, true, $limit, $show_updated); 
     181} 
     182 
     183/** 
     184 * Gets the links associated with category n and display rating stars/chars. 
     185 * 
     186 * @since WP 0.71 
     187 * @deprecated WP 2.1 
     188 * @deprecated WP Use get_bookmarks() 
     189 * @see get_bookmarks() 
     190 * 
     191 * @param int $category The category to use. If no category supplied uses all 
     192 * @param string $before The html to output before the link 
     193 * @param string $after The html to output after the link 
     194 * @param string $between The html to output between the link/image and it's description. Not used if no image or show_images == true 
     195 * @param bool $show_images Whether to show images (if defined). 
     196 * @param string $orderby The order to output the links. E.g. 'id', 'name', 'url', 
     197 *              'description', or 'rating'. Or maybe owner. If you start the name with an 
     198 *              underscore the order will be reversed. You can also specify 'rand' as the 
     199 *              order which will return links in a random order. 
     200 * @param bool $show_description Whether to show the description if show_images=false/not defined. 
     201 * @param string $limit Limit to X entries. If not specified, all entries are shown. 
     202 * @param int $show_updated Whether to show last updated timestamp 
     203 */ 
     204function get_links_withrating($category = -1, $before = '', $after = '<br />', $between = " ", $show_images = true, 
     205                                                          $orderby = 'id', $show_description = true, $limit = -1, $show_updated = 0) { 
     206        _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); 
     207 
     208        get_links($category, $before, $after, $between, $show_images, $orderby, $show_description, true, $limit, $show_updated); 
     209} 
     210 
     211/** 
     212 * Gets the links associated with category. 
     213 * 
     214 * @see get_links() for argument information that can be used in $args 
     215 * @since WP 1.0.1 
     216 * @deprecated WP 2.1 
     217 * @deprecated WP Use wp_list_bookmarks() 
     218 * @see wp_list_bookmarks() 
     219 * 
     220 * @param string $args a query string 
     221 * @return null|string 
     222 */ 
     223function wp_get_links($args = '') { 
     224        _deprecated_function( __FUNCTION__, '2.1', 'wp_list_bookmarks()' ); 
     225 
     226        if ( strpos( $args, '=' ) === false ) { 
     227                $cat_id = $args; 
     228                $args = add_query_arg( 'category', $cat_id, $args ); 
     229        } 
     230 
     231        $defaults = array( 
     232                'after' => '<br />', 
     233                'before' => '', 
     234                'between' => ' ', 
     235                'categorize' => 0, 
     236                'category' => '', 
     237                'echo' => true, 
     238                'limit' => -1, 
     239                'orderby' => 'name', 
     240                'show_description' => true, 
     241                'show_images' => true, 
     242                'show_rating' => false, 
     243                'show_updated' => true, 
     244                'title_li' => '', 
     245        ); 
     246 
     247        $r = wp_parse_args( $args, $defaults ); 
     248 
     249        return wp_list_bookmarks($r); 
     250} 
     251 
     252/** 
     253 * Gets the links associated with category by id. 
     254 * 
     255 * @since WP 0.71 
     256 * @deprecated WP 2.1 
     257 * @deprecated WP Use get_bookmarks() 
     258 * @see get_bookmarks() 
     259 * 
     260 * @param int $category The category to use. If no category supplied uses all 
     261 * @param string $before the html to output before the link 
     262 * @param string $after the html to output after the link 
     263 * @param string $between the html to output between the link/image and its description. 
     264 *              Not used if no image or show_images == true 
     265 * @param bool $show_images whether to show images (if defined). 
     266 * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url', 
     267 *              'description', or 'rating'. Or maybe owner. If you start the name with an 
     268 *              underscore the order will be reversed. You can also specify 'rand' as the order 
     269 *              which will return links in a random order. 
     270 * @param bool $show_description whether to show the description if show_images=false/not defined. 
     271 * @param bool $show_rating show rating stars/chars 
     272 * @param int $limit Limit to X entries. If not specified, all entries are shown. 
     273 * @param int $show_updated whether to show last updated timestamp 
     274 * @param bool $echo whether to echo the results, or return them instead 
     275 * @return null|string 
     276 */ 
     277function get_links($category = -1, $before = '', $after = '<br />', $between = ' ', $show_images = true, $orderby = 'name', 
     278                        $show_description = true, $show_rating = false, $limit = -1, $show_updated = 1, $echo = true) { 
     279        _deprecated_function( __FUNCTION__, '2.1', 'get_bookmarks()' ); 
     280 
     281        $order = 'ASC'; 
     282        if ( substr($orderby, 0, 1) == '_' ) { 
     283                $order = 'DESC'; 
     284                $orderby = substr($orderby, 1); 
     285        } 
     286 
     287        if ( $category == -1 ) //get_bookmarks uses '' to signify all categories 
     288                $category = ''; 
     289 
     290        $results = get_bookmarks(array('category' => $category, 'orderby' => $orderby, 'order' => $order, 'show_updated' => $show_updated, 'limit' => $limit)); 
     291 
     292        if ( !$results ) 
     293                return; 
     294 
     295        $output = ''; 
     296 
     297        foreach ( (array) $results as $row ) { 
     298                if ( !isset($row->recently_updated) ) 
     299                        $row->recently_updated = false; 
     300                $output .= $before; 
     301                if ( $show_updated && $row->recently_updated ) 
     302                        $output .= get_option('links_recently_updated_prepend'); 
     303                $the_link = '#'; 
     304                if ( !empty($row->link_url) ) 
     305                        $the_link = esc_url($row->link_url); 
     306                $rel = $row->link_rel; 
     307                if ( '' != $rel ) 
     308                        $rel = ' rel="' . $rel . '"'; 
     309 
     310                $desc = esc_attr(sanitize_bookmark_field('link_description', $row->link_description, $row->link_id, 'display')); 
     311                $name = esc_attr(sanitize_bookmark_field('link_name', $row->link_name, $row->link_id, 'display')); 
     312                $title = $desc; 
     313 
     314                if ( $show_updated ) 
     315                        if (substr($row->link_updated_f, 0, 2) != '00') 
     316                                $title .= ' ('.__('Last updated') . ' ' . date(get_option('links_updated_date_format'), $row->link_updated_f + (get_option('gmt_offset') * 3600)) . ')'; 
     317 
     318                if ( '' != $title ) 
     319                        $title = ' title="' . $title . '"'; 
     320 
     321                $alt = ' alt="' . $name . '"'; 
     322 
     323                $target = $row->link_target; 
     324                if ( '' != $target ) 
     325                        $target = ' target="' . $target . '"'; 
     326 
     327                $output .= '<a href="' . $the_link . '"' . $rel . $title . $target. '>'; 
     328 
     329                if ( $row->link_image != null && $show_images ) { 
     330                        if ( strpos($row->link_image, 'http') !== false ) 
     331                                $output .= "<img src=\"$row->link_image\" $alt $title />"; 
     332                        else // If it's a relative path 
     333                                $output .= "<img src=\"" . get_option('siteurl') . "$row->link_image\" $alt $title />"; 
     334                } else { 
     335                        $output .= $name; 
     336                } 
     337 
     338                $output .= '</a>'; 
     339 
     340                if ( $show_updated && $row->recently_updated ) 
     341                        $output .= get_option('links_recently_updated_append'); 
     342 
     343                if ( $show_description && '' != $desc ) 
     344                        $output .= $between . $desc; 
     345 
     346                if ($show_rating) { 
     347                        $output .= $between . get_linkrating($row); 
     348                } 
     349 
     350                $output .= "$after\n"; 
     351        } // end while 
     352 
     353        if ( !$echo ) 
     354                return $output; 
     355        echo $output; 
     356} 
     357 
     358/** 
     359 * Output entire list of links by category. 
     360 * 
     361 * Output a list of all links, listed by category, using the settings in 
     362 * $wpdb->linkcategories and output it as a nested HTML unordered list. 
     363 * 
     364 * @since WP 1.0.1 
     365 * @deprecated WP 2.1 
     366 * @deprecated WP Use wp_list_bookmarks() 
     367 * @see wp_list_bookmarks() 
     368 * 
     369 * @param string $order Sort link categories by 'name' or 'id' 
     370 */ 
     371function get_links_list($order = 'name') { 
     372        _deprecated_function( __FUNCTION__, '2.1', 'wp_list_bookmarks()' ); 
     373 
     374        $order = strtolower($order); 
     375 
     376        // Handle link category sorting 
     377        $direction = 'ASC'; 
     378        if ( '_' == substr($order,0,1) ) { 
     379                $direction = 'DESC'; 
     380                $order = substr($order,1); 
     381        } 
     382 
     383        if ( !isset($direction) ) 
     384                $direction = ''; 
     385 
     386        $cats = get_categories(array('type' => 'link', 'orderby' => $order, 'order' => $direction, 'hierarchical' => 0)); 
     387 
     388        // Display each category 
     389        if ( $cats ) { 
     390                foreach ( (array) $cats as $cat ) { 
     391                        // Handle each category. 
     392 
     393                        // Display the category name 
     394                        echo '  <li id="linkcat-' . $cat->term_id . '" class="linkcat"><h2>' . apply_filters('link_category', $cat->name ) . "</h2>\n\t<ul>\n"; 
     395                        // Call get_links() with all the appropriate params 
     396                        get_links($cat->term_id, '<li>', "</li>", "\n", true, 'name', false); 
     397 
     398                        // Close the last category 
     399                        echo "\n\t</ul>\n</li>\n"; 
     400                } 
     401        } 
     402} 
     403 
     404/** 
     405 * Show the link to the links popup and the number of links. 
     406 * 
     407 * @since WP 0.71 
     408 * @deprecated WP 2.1 
     409 * @deprecated WP {@internal Use function instead is unknown}} 
     410 * 
     411 * @param string $text the text of the link 
     412 * @param int $width the width of the popup window 
     413 * @param int $height the height of the popup window 
     414 * @param string $file the page to open in the popup window 
     415 * @param bool $count the number of links in the db 
     416 */ 
     417function links_popup_script($text = 'Links', $width=400, $height=400, $file='links.all.php', $count = true) { 
     418        _deprecated_function( __FUNCTION__, '2.1' ); 
     419 
     420        if ( $count ) 
     421                $counts = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->links"); 
     422 
     423        $javascript = "<a href=\"#\" onclick=\"javascript:window.open('$file?popup=1', '_blank', 'width=$width,height=$height,scrollbars=yes,status=no'); return false\">"; 
     424        $javascript .= $text; 
     425 
     426        if ( $count ) 
     427                $javascript .= " ($counts)"; 
     428 
     429        $javascript .= "</a>\n\n"; 
     430                echo $javascript; 
     431} 
     432 
     433/** 
     434 * @since WP 1.0.1 
     435 * @deprecated WP 2.1 
     436 * @deprecated WP Use sanitize_bookmark_field() 
     437 * @see sanitize_bookmark_field() 
     438 * 
     439 * @param object $link 
     440 * @return unknown 
     441 */ 
     442function get_linkrating($link) { 
     443        _deprecated_function( __FUNCTION__, '2.1', 'sanitize_bookmark_field()' ); 
     444        return sanitize_bookmark_field('link_rating', $link->link_rating, $link->link_id, 'display'); 
     445} 
     446 
     447/** 
     448 * Gets the name of category by id. 
     449 * 
     450 * @since WP 0.71 
     451 * @deprecated WP 2.1 
     452 * @deprecated WP Use get_category() 
     453 * @see get_category() 
     454 * 
     455 * @param int $id The category to get. If no category supplied uses 0 
     456 * @return string 
     457 */ 
     458function get_linkcatname($id = 0) { 
     459        _deprecated_function( __FUNCTION__, '2.1', 'get_category()' ); 
     460 
     461        $id = (int) $id; 
     462 
     463        if ( empty($id) ) 
     464                return ''; 
     465 
     466        $cats = wp_get_link_cats($id); 
     467 
     468        if ( empty($cats) || ! is_array($cats) ) 
     469                return ''; 
     470 
     471        $cat_id = (int) $cats[0]; // Take the first cat. 
     472 
     473        $cat = get_category($cat_id); 
     474        return $cat->name; 
     475} 
     476 
     477/** 
     478 * Retrieve bookmark data based on ID. 
     479 * 
     480 * @since WP 2.0.0 
     481 * @deprecated WP 2.1.0 
     482 * @deprecated WP Use get_bookmark() 
     483 * @see get_bookmark() 
     484 * 
     485 * @param int $bookmark_id ID of link 
     486 * @param string $output OBJECT, ARRAY_N, or ARRAY_A 
     487 * @return object|array 
     488 */ 
     489function get_link($bookmark_id, $output = OBJECT, $filter = 'raw') { 
     490        _deprecated_function( __FUNCTION__, '2.1', 'get_bookmark()' ); 
     491        return get_bookmark($bookmark_id, $output, $filter); 
     492} 
     493 
     494/** 
     495 * {@internal Missing Short Description}} 
     496 * 
     497 * @since 2.1.0 
     498 * @deprecated 2.6.0 
     499 * @deprecated Use wp_link_category_checklist() 
     500 * @see wp_link_category_checklist() 
     501 * 
     502 * @param unknown_type $default 
     503 */ 
     504function dropdown_link_categories( $default = 0 ) { 
     505        _deprecated_function( __FUNCTION__, '2.6', 'wp_link_category_checklist()' ); 
     506        global $link_id; 
     507        wp_link_category_checklist( $link_id ); 
     508} 
     509 No newline at end of file 
  • wp-content/plugins/link-manager/admin/edit-link-form.php

     
     1<?php 
     2/** 
     3 * Edit links form for inclusion in administration panels. 
     4 * 
     5 * @package Link Manager 
     6 * @subpackage Administration 
     7 */ 
     8 
     9// don't load directly 
     10if ( !defined( 'ABSPATH' ) ) 
     11        die('-1'); 
     12 
     13$main_action = menu_page_url( 'link-manager.php', false ); 
     14 
     15if ( ! empty( $link_id ) ) { 
     16        $heading = sprintf( __( '<a href="%s">Links</a> / Edit Link' ), $main_action ); 
     17        $submit_text = __('Update Link'); 
     18        $form = '<form name="editlink" id="editlink" method="post" action="' . $main_action . '">'; 
     19        $nonce_action = 'update-bookmark_' . $link_id; 
     20} else { 
     21        $heading = sprintf( __( '<a href="%s">Links</a> / Add New Link' ), $main_action ); 
     22        $submit_text = __('Add Link'); 
     23        $form = '<form name="addlink" id="addlink" method="post" action="' . $main_action . '">'; 
     24        $nonce_action = 'add-bookmark'; 
     25} 
     26 
     27add_meta_box( 'linksubmitdiv', __('Save'), 'link_submit_meta_box', 'link', 'side', 'core' ); 
     28add_meta_box( 'linkcategorydiv', __('Categories'), 'link_categories_meta_box', null, 'normal', 'core' ); 
     29add_meta_box( 'linktargetdiv', __('Target'), 'link_target_meta_box', null, 'normal', 'core' ); 
     30add_meta_box( 'linkxfndiv', __('Link Relationship (XFN)'), 'link_xfn_meta_box', null, 'normal', 'core' ); 
     31add_meta_box( 'linkadvanceddiv', __('Advanced'), 'link_advanced_meta_box', null, 'normal', 'core' ); 
     32 
     33do_action( 'add_meta_boxes', 'link', $link ); 
     34do_action( 'add_meta_boxes_link', $link ); 
     35 
     36do_action( 'do_meta_boxes', 'link', 'normal', $link ); 
     37do_action( 'do_meta_boxes', 'link', 'advanced', $link ); 
     38do_action( 'do_meta_boxes', 'link', 'side', $link ); 
     39 
     40?> 
     41 
     42<div class="wrap"> 
     43<?php screen_icon(); ?> 
     44<h2><?php echo esc_html( $title ); ?>  <a href="<?php menu_page_url( 'link-add.php' ) ?>" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'link' ) ?></a></h2> 
     45 
     46<?php if ( isset( $_GET['added'] ) ) : ?> 
     47<div id="message" class="updated"><p><?php _e( 'Link added.' ); ?></p></div> 
     48<?php endif; ?> 
     49 
     50<?php 
     51if ( !empty( $form ) ) 
     52        echo $form; 
     53if ( !empty( $link_added ) ) 
     54        echo $link_added; 
     55 
     56wp_nonce_field( $nonce_action ); 
     57wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); 
     58wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?> 
     59 
     60<div id="poststuff"> 
     61 
     62<div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? '1' : '2'; ?>"> 
     63<div id="post-body-content"> 
     64<div id="namediv" class="stuffbox"> 
     65<h3><label for="link_name"><?php _ex('Name', 'link name') ?></label></h3> 
     66<div class="inside"> 
     67        <input type="text" name="link_name" size="30" value="<?php echo esc_attr( $link->link_name ); ?>" id="link_name" /> 
     68    <p><?php _e( 'Example: Nifty blogging software' ); ?></p> 
     69</div> 
     70</div> 
     71 
     72<div id="addressdiv" class="stuffbox"> 
     73<h3><label for="link_url"><?php _e('Web Address') ?></label></h3> 
     74<div class="inside"> 
     75        <input type="text" name="link_url" size="30" class="code" value="<?php echo esc_attr( $link->link_url ); ?>" id="link_url" /> 
     76    <p><?php _e( 'Example: <code>http://wordpress.org/</code> &#8212; don&#8217;t forget the <code>http://</code>' ); ?></p> 
     77</div> 
     78</div> 
     79 
     80<div id="descriptiondiv" class="stuffbox"> 
     81<h3><label for="link_description"><?php _e('Description') ?></label></h3> 
     82<div class="inside"> 
     83        <input type="text" name="link_description" size="30" value="<?php echo isset( $link->link_description ) ? esc_attr( $link->link_description ) : ''; ?>" id="link_description" /> 
     84    <p><?php _e( 'This will be shown when someone hovers over the link in the blogroll, or optionally below the link.' ); ?></p> 
     85</div> 
     86</div> 
     87</div><!-- /post-body-content --> 
     88 
     89<div id="postbox-container-1" class="postbox-container"> 
     90<?php 
     91do_action( 'submitlink_box' ); 
     92$side_meta_boxes = do_meta_boxes( 'link', 'side', $link ); 
     93 
     94?> 
     95</div> 
     96<div id="postbox-container-2" class="postbox-container"> 
     97<?php 
     98 
     99do_meta_boxes( null, 'normal', $link ); 
     100do_meta_boxes( null, 'advanced', $link ); 
     101 
     102?> 
     103</div> 
     104<?php 
     105 
     106if ( $link_id ) : ?> 
     107<input type="hidden" name="action" value="save" /> 
     108<input type="hidden" name="link_id" value="<?php echo (int) $link_id; ?>" /> 
     109<input type="hidden" name="order_by" value="<?php echo esc_attr( $order_by ); ?>" /> 
     110<input type="hidden" name="cat_id" value="<?php echo (int) $cat_id ?>" /> 
     111<?php else: ?> 
     112<input type="hidden" name="action" value="add" /> 
     113<?php endif; ?> 
     114 
     115</div> 
     116</div> 
     117 
     118</form> 
     119</div> 
     120 No newline at end of file 
  • wp-content/plugins/link-manager/admin/meta-boxes.php

     
     1<?php 
     2// -- Link related Meta Boxes 
     3 
     4/** 
     5 * Display link create form fields. 
     6 * 
     7 * @since WP 2.7.0 
     8 * 
     9 * @param object $link 
     10 */ 
     11function link_submit_meta_box( $link ) { 
     12?> 
     13<div class="submitbox" id="submitlink"> 
     14 
     15<div id="minor-publishing"> 
     16 
     17<?php // Hidden submit button early on so that the browser chooses the right button when form is submitted with Return key ?> 
     18<div style="display:none;"> 
     19<?php submit_button( __( 'Save' ), 'button', 'save', false ); ?> 
     20</div> 
     21 
     22<div id="minor-publishing-actions"> 
     23<div id="preview-action"> 
     24<?php if ( !empty($link->link_id) ) { ?> 
     25        <a class="preview button" href="<?php echo $link->link_url; ?>" target="_blank"><?php _e('Visit Link'); ?></a> 
     26<?php } ?> 
     27</div> 
     28<div class="clear"></div> 
     29</div> 
     30 
     31<div id="misc-publishing-actions"> 
     32<div class="misc-pub-section"> 
     33        <label for="link_private" class="selectit"><input id="link_private" name="link_visible" type="checkbox" value="N" <?php checked($link->link_visible, 'N'); ?> /> <?php _e('Keep this link private') ?></label> 
     34</div> 
     35</div> 
     36 
     37</div> 
     38 
     39<div id="major-publishing-actions"> 
     40<?php do_action('post_submitbox_start'); ?> 
     41<div id="delete-action"> 
     42<?php 
     43if ( !empty($_GET['action']) && 'edit' == $_GET['action'] && current_user_can('manage_links') ) { ?> 
     44        <a class="submitdelete deletion" href="<?php echo wp_nonce_url("link.php?action=delete&amp;link_id=$link->link_id", 'delete-bookmark_' . $link->link_id); ?>" onclick="if ( confirm('<?php echo 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;"><?php _e('Delete'); ?></a> 
     45<?php } ?> 
     46</div> 
     47 
     48<div id="publishing-action"> 
     49<?php if ( !empty($link->link_id) ) { ?> 
     50        <input name="save" type="submit" class="button-primary" id="publish" accesskey="p" value="<?php esc_attr_e('Update Link') ?>" /> 
     51<?php } else { ?> 
     52        <input name="save" type="submit" class="button-primary" id="publish" accesskey="p" value="<?php esc_attr_e('Add Link') ?>" /> 
     53<?php } ?> 
     54</div> 
     55<div class="clear"></div> 
     56</div> 
     57<?php do_action('submitlink_box'); ?> 
     58<div class="clear"></div> 
     59</div> 
     60<?php 
     61} 
     62 
     63/** 
     64 * Display link categories form fields. 
     65 * 
     66 * @since WP 2.6.0 
     67 * 
     68 * @param object $link 
     69 */ 
     70function link_categories_meta_box($link) { 
     71?> 
     72<div id="taxonomy-linkcategory" class="categorydiv"> 
     73        <ul id="category-tabs" class="category-tabs"> 
     74                <li class="tabs"><a href="#categories-all"><?php _e( 'All Categories' ); ?></a></li> 
     75                <li class="hide-if-no-js"><a href="#categories-pop"><?php _e( 'Most Used' ); ?></a></li> 
     76        </ul> 
     77 
     78        <div id="categories-all" class="tabs-panel"> 
     79                <ul id="categorychecklist" class="list:category categorychecklist form-no-clear"> 
     80                        <?php 
     81                        if ( isset($link->link_id) ) 
     82                                wp_link_category_checklist($link->link_id); 
     83                        else 
     84                                wp_link_category_checklist(); 
     85                        ?> 
     86                </ul> 
     87        </div> 
     88 
     89        <div id="categories-pop" class="tabs-panel" style="display: none;"> 
     90                <ul id="categorychecklist-pop" class="categorychecklist form-no-clear"> 
     91                        <?php wp_popular_terms_checklist('link_category'); ?> 
     92                </ul> 
     93        </div> 
     94 
     95        <div id="category-adder" class="wp-hidden-children"> 
     96                <h4><a id="category-add-toggle" href="#category-add"><?php _e( '+ Add New Category' ); ?></a></h4> 
     97                <p id="link-category-add" class="wp-hidden-child"> 
     98                        <label class="screen-reader-text" for="newcat"><?php _e( '+ Add New Category' ); ?></label> 
     99                        <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php esc_attr_e( 'New category name' ); ?>" aria-required="true" /> 
     100                        <input type="button" id="link-category-add-submit" class="add:categorychecklist:linkcategorydiv button" value="<?php esc_attr_e( 'Add' ); ?>" /> 
     101                        <?php wp_nonce_field( 'add-link-category', '_ajax_nonce', false ); ?> 
     102                        <span id="category-ajax-response"></span> 
     103                </p> 
     104        </div> 
     105</div> 
     106<?php 
     107} 
     108 
     109/** 
     110 * Display form fields for changing link target. 
     111 * 
     112 * @since WP 2.6.0 
     113 * 
     114 * @param object $link 
     115 */ 
     116function link_target_meta_box($link) { ?> 
     117<fieldset><legend class="screen-reader-text"><span><?php _e('Target') ?></span></legend> 
     118<p><label for="link_target_blank" class="selectit"> 
     119<input id="link_target_blank" type="radio" name="link_target" value="_blank" <?php echo ( isset( $link->link_target ) && ($link->link_target == '_blank') ? 'checked="checked"' : ''); ?> /> 
     120<?php _e('<code>_blank</code> &mdash; new window or tab.'); ?></label></p> 
     121<p><label for="link_target_top" class="selectit"> 
     122<input id="link_target_top" type="radio" name="link_target" value="_top" <?php echo ( isset( $link->link_target ) && ($link->link_target == '_top') ? 'checked="checked"' : ''); ?> /> 
     123<?php _e('<code>_top</code> &mdash; current window or tab, with no frames.'); ?></label></p> 
     124<p><label for="link_target_none" class="selectit"> 
     125<input id="link_target_none" type="radio" name="link_target" value="" <?php echo ( isset( $link->link_target ) && ($link->link_target == '') ? 'checked="checked"' : ''); ?> /> 
     126<?php _e('<code>_none</code> &mdash; same window or tab.'); ?></label></p> 
     127</fieldset> 
     128<p><?php _e('Choose the target frame for your link.'); ?></p> 
     129<?php 
     130} 
     131 
     132/** 
     133 * Display checked checkboxes attribute for xfn microformat options. 
     134 * 
     135 * @since WP 1.0.1 
     136 * 
     137 * @param string $class 
     138 * @param string $value 
     139 * @param mixed $deprecated Never used. 
     140 */ 
     141function xfn_check( $class, $value = '', $deprecated = '' ) { 
     142        global $link; 
     143 
     144        if ( !empty( $deprecated ) ) 
     145                _deprecated_argument( __FUNCTION__, '0.0' ); // Never implemented 
     146 
     147        $link_rel = isset( $link->link_rel ) ? $link->link_rel : ''; // In PHP 5.3: $link_rel = $link->link_rel ?: ''; 
     148        $rels = preg_split('/\s+/', $link_rel); 
     149         
     150        if ('' != $value && in_array($value, $rels) ) { 
     151                echo ' checked="checked"'; 
     152        } 
     153 
     154        if ('' == $value) { 
     155                if ('family' == $class && strpos($link_rel, 'child') === false && strpos($link_rel, 'parent') === false && strpos($link_rel, 'sibling') === false && strpos($link_rel, 'spouse') === false && strpos($link_rel, 'kin') === false) echo ' checked="checked"'; 
     156                if ('friendship' == $class && strpos($link_rel, 'friend') === false && strpos($link_rel, 'acquaintance') === false && strpos($link_rel, 'contact') === false) echo ' checked="checked"'; 
     157                if ('geographical' == $class && strpos($link_rel, 'co-resident') === false && strpos($link_rel, 'neighbor') === false) echo ' checked="checked"'; 
     158                if ('identity' == $class && in_array('me', $rels) ) echo ' checked="checked"'; 
     159        } 
     160} 
     161 
     162/** 
     163 * Display xfn form fields. 
     164 * 
     165 * @since WP 2.6.0 
     166 * 
     167 * @param object $link 
     168 */ 
     169function link_xfn_meta_box($link) { 
     170?> 
     171<table class="links-table" cellspacing="0"> 
     172        <tr> 
     173                <th scope="row"><label for="link_rel"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('rel:') ?></label></th> 
     174                <td><input type="text" name="link_rel" id="link_rel" value="<?php echo ( isset( $link->link_rel ) ? esc_attr($link->link_rel) : ''); ?>" /></td> 
     175        </tr> 
     176        <tr> 
     177                <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('identity') ?></th> 
     178                <td><fieldset><legend class="screen-reader-text"><span><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('identity') ?></span></legend> 
     179                        <label for="me"> 
     180                        <input type="checkbox" name="identity" value="me" id="me" <?php xfn_check('identity', 'me'); ?> /> 
     181                        <?php _e('another web address of mine') ?></label> 
     182                </fieldset></td> 
     183        </tr> 
     184        <tr> 
     185                <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friendship') ?></th> 
     186                <td><fieldset><legend class="screen-reader-text"><span><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friendship') ?></span></legend> 
     187                        <label for="contact"> 
     188                        <input class="valinp" type="radio" name="friendship" value="contact" id="contact" <?php xfn_check('friendship', 'contact'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('contact') ?> 
     189                        </label> 
     190                        <label for="acquaintance"> 
     191                        <input class="valinp" type="radio" name="friendship" value="acquaintance" id="acquaintance" <?php xfn_check('friendship', 'acquaintance'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('acquaintance') ?> 
     192                        </label> 
     193                        <label for="friend"> 
     194                        <input class="valinp" type="radio" name="friendship" value="friend" id="friend" <?php xfn_check('friendship', 'friend'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friend') ?> 
     195                        </label> 
     196                        <label for="friendship"> 
     197                        <input name="friendship" type="radio" class="valinp" value="" id="friendship" <?php xfn_check('friendship'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?> 
     198                        </label> 
     199                </fieldset></td> 
     200        </tr> 
     201        <tr> 
     202                <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('physical') ?> </th> 
     203                <td><fieldset><legend class="screen-reader-text"><span><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('physical') ?></span></legend> 
     204                        <label for="met"> 
     205                        <input class="valinp" type="checkbox" name="physical" value="met" id="met" <?php xfn_check('physical', 'met'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('met') ?> 
     206                        </label> 
     207                </fieldset></td> 
     208        </tr> 
     209        <tr> 
     210                <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('professional') ?> </th> 
     211                <td><fieldset><legend class="screen-reader-text"><span><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('professional') ?></span></legend> 
     212                        <label for="co-worker"> 
     213                        <input class="valinp" type="checkbox" name="professional" value="co-worker" id="co-worker" <?php xfn_check('professional', 'co-worker'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('co-worker') ?> 
     214                        </label> 
     215                        <label for="colleague"> 
     216                        <input class="valinp" type="checkbox" name="professional" value="colleague" id="colleague" <?php xfn_check('professional', 'colleague'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('colleague') ?> 
     217                        </label> 
     218                </fieldset></td> 
     219        </tr> 
     220        <tr> 
     221                <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('geographical') ?></th> 
     222                <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('geographical') ?> </span></legend> 
     223                        <label for="co-resident"> 
     224                        <input class="valinp" type="radio" name="geographical" value="co-resident" id="co-resident" <?php xfn_check('geographical', 'co-resident'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('co-resident') ?> 
     225                        </label> 
     226                        <label for="neighbor"> 
     227                        <input class="valinp" type="radio" name="geographical" value="neighbor" id="neighbor" <?php xfn_check('geographical', 'neighbor'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('neighbor') ?> 
     228                        </label> 
     229                        <label for="geographical"> 
     230                        <input class="valinp" type="radio" name="geographical" value="" id="geographical" <?php xfn_check('geographical'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?> 
     231                        </label> 
     232                </fieldset></td> 
     233        </tr> 
     234        <tr> 
     235                <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('family') ?></th> 
     236                <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('family') ?> </span></legend> 
     237                        <label for="child"> 
     238                        <input class="valinp" type="radio" name="family" value="child" id="child" <?php xfn_check('family', 'child'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('child') ?> 
     239                        </label> 
     240                        <label for="kin"> 
     241                        <input class="valinp" type="radio" name="family" value="kin" id="kin" <?php xfn_check('family', 'kin'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('kin') ?> 
     242                        </label> 
     243                        <label for="parent"> 
     244                        <input class="valinp" type="radio" name="family" value="parent" id="parent" <?php xfn_check('family', 'parent'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('parent') ?> 
     245                        </label> 
     246                        <label for="sibling"> 
     247                        <input class="valinp" type="radio" name="family" value="sibling" id="sibling" <?php xfn_check('family', 'sibling'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('sibling') ?> 
     248                        </label> 
     249                        <label for="spouse"> 
     250                        <input class="valinp" type="radio" name="family" value="spouse" id="spouse" <?php xfn_check('family', 'spouse'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('spouse') ?> 
     251                        </label> 
     252                        <label for="family"> 
     253                        <input class="valinp" type="radio" name="family" value="" id="family" <?php xfn_check('family'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?> 
     254                        </label> 
     255                </fieldset></td> 
     256        </tr> 
     257        <tr> 
     258                <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('romantic') ?></th> 
     259                <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('romantic') ?> </span></legend> 
     260                        <label for="muse"> 
     261                        <input class="valinp" type="checkbox" name="romantic" value="muse" id="muse" <?php xfn_check('romantic', 'muse'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('muse') ?> 
     262                        </label> 
     263                        <label for="crush"> 
     264                        <input class="valinp" type="checkbox" name="romantic" value="crush" id="crush" <?php xfn_check('romantic', 'crush'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('crush') ?> 
     265                        </label> 
     266                        <label for="date"> 
     267                        <input class="valinp" type="checkbox" name="romantic" value="date" id="date" <?php xfn_check('romantic', 'date'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('date') ?> 
     268                        </label> 
     269                        <label for="romantic"> 
     270                        <input class="valinp" type="checkbox" name="romantic" value="sweetheart" id="romantic" <?php xfn_check('romantic', 'sweetheart'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('sweetheart') ?> 
     271                        </label> 
     272                </fieldset></td> 
     273        </tr> 
     274 
     275</table> 
     276<p><?php _e('If the link is to a person, you can specify your relationship with them using the above form. If you would like to learn more about the idea check out <a href="http://gmpg.org/xfn/">XFN</a>.'); ?></p> 
     277<?php 
     278} 
     279 
     280/** 
     281 * Display advanced link options form fields. 
     282 * 
     283 * @since WP 2.6.0 
     284 * 
     285 * @param object $link 
     286 */ 
     287function link_advanced_meta_box($link) { 
     288?> 
     289<table class="links-table" cellpadding="0"> 
     290        <tr> 
     291                <th scope="row"><label for="link_image"><?php _e('Image Address') ?></label></th> 
     292                <td><input type="text" name="link_image" class="code" id="link_image" value="<?php echo ( isset( $link->link_image ) ? esc_attr($link->link_image) : ''); ?>" /></td> 
     293        </tr> 
     294        <tr> 
     295                <th scope="row"><label for="rss_uri"><?php _e('RSS Address') ?></label></th> 
     296                <td><input name="link_rss" class="code" type="text" id="rss_uri" value="<?php echo ( isset( $link->link_rss ) ? esc_attr($link->link_rss) : ''); ?>" /></td> 
     297        </tr> 
     298        <tr> 
     299                <th scope="row"><label for="link_notes"><?php _e('Notes') ?></label></th> 
     300                <td><textarea name="link_notes" id="link_notes" rows="10"><?php echo ( isset( $link->link_notes ) ? $link->link_notes : ''); // textarea_escaped ?></textarea></td> 
     301        </tr> 
     302        <tr> 
     303                <th scope="row"><label for="link_rating"><?php _e('Rating') ?></label></th> 
     304                <td><select name="link_rating" id="link_rating" size="1"> 
     305                <?php 
     306                        for ( $r = 0; $r <= 10; $r++ ) { 
     307                                echo '<option value="' . $r . '"'; 
     308                                if ( isset($link->link_rating) && $link->link_rating == $r ) 
     309                                        echo ' selected="selected"'; 
     310                                echo('>' . $r . '</option>'); 
     311                        } 
     312                ?></select>&nbsp;<?php _e('(Leave at 0 for no rating.)') ?> 
     313                </td> 
     314        </tr> 
     315</table> 
     316<?php 
     317} 
     318 No newline at end of file 
  • wp-content/plugins/link-manager/admin/class-wp-links-list-table.php

     
     1<?php 
     2/** 
     3 * Links Manager List Table class. 
     4 * 
     5 * @package WordPress 
     6 * @subpackage List_Table 
     7 * @since 3.1.0 
     8 * @access private 
     9 */ 
     10class WP_Links_List_Table extends WP_List_Table { 
     11 
     12        function __construct() { 
     13                parent::__construct( array( 
     14                        'plural' => 'bookmarks', 
     15                ) ); 
     16        } 
     17 
     18        function ajax_user_can() { 
     19                return current_user_can( 'manage_links' ); 
     20        } 
     21 
     22        function prepare_items() { 
     23                global $cat_id, $s, $orderby, $order; 
     24 
     25                wp_reset_vars( array( 'action', 'cat_id', 'linkurl', 'name', 'image', 'description', 'visible', 'target', 'category', 'link_id', 'submit', 'orderby', 'order', 'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]', 's' ) ); 
     26 
     27                $args = array( 'hide_invisible' => 0, 'hide_empty' => 0 ); 
     28 
     29                if ( 'all' != $cat_id ) 
     30                        $args['category'] = $cat_id; 
     31                if ( !empty( $s ) ) 
     32                        $args['search'] = $s; 
     33                if ( !empty( $orderby ) ) 
     34                        $args['orderby'] = $orderby; 
     35                if ( !empty( $order ) ) 
     36                        $args['order'] = $order; 
     37 
     38                $this->items = get_bookmarks( $args ); 
     39        } 
     40 
     41        function no_items() { 
     42                _e( 'No links found.' ); 
     43        } 
     44 
     45        function get_bulk_actions() { 
     46                $actions = array(); 
     47                $actions['delete'] = __( 'Delete' ); 
     48 
     49                return $actions; 
     50        } 
     51 
     52        function extra_tablenav( $which ) { 
     53                global $cat_id; 
     54 
     55                if ( 'top' != $which ) 
     56                        return; 
     57?> 
     58                <div class="alignleft actions"> 
     59<?php 
     60                        $dropdown_options = array( 
     61                                'selected' => $cat_id, 
     62                                'name' => 'cat_id', 
     63                                'taxonomy' => 'link_category', 
     64                                'show_option_all' => __( 'View all categories' ), 
     65                                'hide_empty' => true, 
     66                                'hierarchical' => 1, 
     67                                'show_count' => 0, 
     68                                'orderby' => 'name', 
     69                        ); 
     70                        wp_dropdown_categories( $dropdown_options ); 
     71                        submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) ); 
     72?> 
     73                </div> 
     74<?php 
     75        } 
     76 
     77        function get_columns() { 
     78                return array( 
     79                        'cb'         => '<input type="checkbox" />', 
     80                        'name'       => _x( 'Name', 'link name' ), 
     81                        'url'        => __( 'URL' ), 
     82                        'categories' => __( 'Categories' ), 
     83                        'rel'        => __( 'Relationship' ), 
     84                        'visible'    => __( 'Visible' ), 
     85                        'rating'     => __( 'Rating' ) 
     86                ); 
     87        } 
     88 
     89        function get_sortable_columns() { 
     90                return array( 
     91                        'name'    => 'name', 
     92                        'url'     => 'url', 
     93                        'visible' => 'visible', 
     94                        'rating'  => 'rating' 
     95                ); 
     96        } 
     97 
     98        function display_rows() { 
     99                global $cat_id; 
     100 
     101                $alt = 0; 
     102 
     103                foreach ( $this->items as $link ) { 
     104                        $link = sanitize_bookmark( $link ); 
     105                        $link->link_name = esc_attr( $link->link_name ); 
     106                        $link->link_category = wp_get_link_cats( $link->link_id ); 
     107 
     108                        $short_url = url_shorten( $link->link_url ); 
     109 
     110                        $visible = ( $link->link_visible == 'Y' ) ? __( 'Yes' ) : __( 'No' ); 
     111                        $rating  = $link->link_rating; 
     112                        $style = ( $alt++ % 2 ) ? '' : ' class="alternate"'; 
     113 
     114                        $edit_link = get_edit_bookmark_link( $link ); 
     115?> 
     116                <tr id="link-<?php echo $link->link_id; ?>" valign="middle" <?php echo $style; ?>> 
     117<?php 
     118 
     119                        list( $columns, $hidden ) = $this->get_column_info(); 
     120 
     121                        foreach ( $columns as $column_name => $column_display_name ) { 
     122                                $class = "class='column-$column_name'"; 
     123 
     124                                $style = ''; 
     125                                if ( in_array( $column_name, $hidden ) ) 
     126                                        $style = ' style="display:none;"'; 
     127 
     128                                $attributes = $class . $style; 
     129 
     130                                switch ( $column_name ) { 
     131                                        case 'cb': ?> 
     132                                                <th scope="row" class="check-column"> 
     133                                                        <label class="screen-reader-text" for="cb-select-<?php echo $link->link_id; ?>"><?php echo sprintf( __( 'Select %s' ), $link->link_name ); ?></label> 
     134                                                        <input type="checkbox" name="linkcheck[]" id="cb-select-<?php echo $link->link_id; ?>" value="<?php echo esc_attr( $link->link_id ); ?>" /> 
     135                                                </th> 
     136                                                <?php 
     137                                                break; 
     138 
     139                                        case 'name': 
     140                                                echo "<td $attributes><strong><a class='row-title' href='$edit_link' title='" . esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $link->link_name ) ) . "'>$link->link_name</a></strong><br />"; 
     141 
     142                                                $menu_page_url = menu_page_url( 'link-manager.php', false ); 
     143                                                $delete_url = add_query_arg( array( 'action' => 'delete', 'link_id' => $link->link_id ), $menu_page_url ); 
     144                                                 
     145                                                $actions = array(); 
     146                                                $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>'; 
     147                                                $actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url( $delete_url, '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>"; 
     148                                                echo $this->row_actions( $actions ); 
     149 
     150                                                echo '</td>'; 
     151                                                break; 
     152                                        case 'url': 
     153                                                echo "<td $attributes><a href='$link->link_url' title='". esc_attr( sprintf( __( 'Visit %s' ), $link->link_name ) )."'>$short_url</a></td>"; 
     154                                                break; 
     155                                        case 'categories': 
     156                                                ?><td <?php echo $attributes ?>><?php 
     157                                                $cat_names = array(); 
     158                                                foreach ( $link->link_category as $category ) { 
     159                                                        $cat = get_term( $category, 'link_category', OBJECT, 'display' ); 
     160                                                        if ( is_wp_error( $cat ) ) 
     161                                                                echo $cat->get_error_message(); 
     162                                                        $cat_name = $cat->name; 
     163                                                        if ( $cat_id != $category ) 
     164                                                                $cat_name = "<a href='link-manager.php?cat_id=$category'>$cat_name</a>"; 
     165                                                        $cat_names[] = $cat_name; 
     166                                                } 
     167                                                echo implode( ', ', $cat_names ); 
     168                                                ?></td><?php 
     169                                                break; 
     170                                        case 'rel': 
     171                                                ?><td <?php echo $attributes ?>><?php echo empty( $link->link_rel ) ? '<br />' : $link->link_rel; ?></td><?php 
     172                                                break; 
     173                                        case 'visible': 
     174                                                ?><td <?php echo $attributes ?>><?php echo $visible; ?></td><?php 
     175                                                break; 
     176                                        case 'rating': 
     177                                                ?><td <?php echo $attributes ?>><?php echo $rating; ?></td><?php 
     178                                                break; 
     179                                        default: 
     180                                                ?> 
     181                                                <td <?php echo $attributes ?>><?php do_action( 'manage_link_custom_column', $column_name, $link->link_id ); ?></td> 
     182                                                <?php 
     183                                                break; 
     184                                } 
     185                        } 
     186?> 
     187                </tr> 
     188<?php 
     189                } 
     190        } 
     191} 
  • wp-content/plugins/link-manager/admin/link-manager.php

     
     1<?php 
     2/** 
     3 * Link Management Administration Screen. 
     4 * 
     5 * @package Link Manager 
     6 * @subpackage Administration 
     7 */ 
     8 
     9?> 
     10<div class="wrap nosubsub"> 
     11<?php screen_icon(); ?> 
     12<h2><?php _e( 'Links' ) ?> <a href="<?php menu_page_url( 'link-add.php' ) ?>" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'link' ); ?></a> <?php 
     13if ( !empty($_REQUEST['s']) ) 
     14        printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( stripslashes( $_REQUEST['s'] ) ) ); ?> 
     15</h2> 
     16 
     17<?php 
     18if ( isset( $_REQUEST['deleted'] ) ) { 
     19        echo '<div id="message" class="updated"><p>'; 
     20        $deleted = (int) $_REQUEST['deleted']; 
     21        printf( _n( '%s link deleted.', '%s links deleted', $deleted ), $deleted ); 
     22        echo '</p></div>'; 
     23        $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'deleted' ), $_SERVER['REQUEST_URI'] ); 
     24} 
     25?> 
     26 
     27<form id="posts-filter" action="<?php menu_page_url( 'link-manager.php' ) ?>" method="post"> 
     28 
     29<?php  
     30$wp_list_table->search_box( __( 'Search Links' ), 'link' ); 
     31$wp_list_table->display();  
     32?> 
     33 
     34<div id="ajax-response"></div> 
     35</form> 
     36 
     37</div> 
     38 No newline at end of file 
  • wp-content/plugins/link-manager/widget.php

     
     1<?php 
     2/** 
     3 * Links widget class 
     4 * 
     5 * @since WP 2.8.0 
     6 */ 
     7class WP_Widget_Links extends WP_Widget { 
     8 
     9        function __construct() { 
     10                $widget_ops = array( 'description' => __( "Your blogroll" ) ); 
     11                parent::__construct( 'links', __( 'Links' ), $widget_ops ); 
     12        } 
     13 
     14        function widget( $args, $instance ) { 
     15                extract( $args, EXTR_SKIP ); 
     16                 
     17                $show_description = isset( $instance['description'] ) ? $instance['description'] : false; 
     18                $show_name = isset( $instance['name'] ) ? $instance['name'] : false; 
     19                $show_rating = isset( $instance['rating'] ) ? $instance['rating'] : false; 
     20                $show_images = isset( $instance['images'] ) ? $instance['images'] : true; 
     21                $category = isset( $instance['category'] ) ? $instance['category'] : false; 
     22                $orderby = isset( $instance['orderby'] ) ? $instance['orderby'] : 'name'; 
     23                $order = $orderby == 'rating' ? 'DESC' : 'ASC'; 
     24                $limit = isset( $instance['limit'] ) ? $instance['limit'] : -1; 
     25 
     26                $before_widget = preg_replace( '/id="[^"]*"/','id="%id"', $before_widget ); 
     27                wp_list_bookmarks( apply_filters( 'widget_links_args', array( 
     28                        'title_before' => $before_title, 'title_after' => $after_title, 
     29                        'category_before' => $before_widget, 'category_after' => $after_widget, 
     30                        'show_images' => $show_images, 'show_description' => $show_description, 
     31                        'show_name' => $show_name, 'show_rating' => $show_rating, 
     32                        'category' => $category, 'class' => 'linkcat widget', 
     33                        'orderby' => $orderby, 'order' => $order, 
     34                        'limit' => $limit, 
     35                ) ) ); 
     36        } 
     37 
     38        function update( $new_instance, $old_instance ) { 
     39                $new_instance = (array) $new_instance; 
     40                $instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0 ); 
     41                foreach ( $instance as $field => $val ) { 
     42                        if ( isset( $new_instance[$field] ) ) 
     43                                $instance[$field] = 1; 
     44                } 
     45 
     46                $instance['orderby'] = 'name'; 
     47                if ( in_array( $new_instance['orderby'], array( 'name', 'rating', 'id', 'rand' ) ) ) 
     48                        $instance['orderby'] = $new_instance['orderby']; 
     49 
     50                $instance['category'] = intval( $new_instance['category'] ); 
     51                $instance['limit'] = ! empty( $new_instance['limit'] ) ? intval( $new_instance['limit'] ) : -1; 
     52 
     53                return $instance; 
     54        } 
     55 
     56        function form( $instance ) { 
     57 
     58                //Defaults 
     59                $instance = wp_parse_args( (array) $instance, array( 'images' => true, 'name' => true, 'description' => false, 'rating' => false, 'category' => false, 'orderby' => 'name', 'limit' => -1 ) ); 
     60                $link_cats = get_terms( 'link_category' ); 
     61                if ( ! $limit = intval( $instance['limit'] ) ) 
     62                        $limit = -1; 
     63?> 
     64                <p> 
     65                <label for="<?php echo $this->get_field_id( 'category' ); ?>"><?php _e( 'Select Link Category:' ); ?></label> 
     66                <select class="widefat" id="<?php echo $this->get_field_id( 'category' ); ?>" name="<?php echo $this->get_field_name( 'category' ); ?>"> 
     67                <option value=""><?php _ex( 'All Links', 'links widget' ); ?></option> 
     68                <?php 
     69                foreach ( $link_cats as $link_cat ) { 
     70                        echo '<option value="' . intval( $link_cat->term_id ) . '"' 
     71                                . ( $link_cat->term_id == $instance['category'] ? ' selected="selected"' : '' ) 
     72                                . '>' . $link_cat->name . "</option>\n"; 
     73                } 
     74                ?> 
     75                </select> 
     76                <label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><?php _e( 'Sort by:' ); ?></label> 
     77                <select name="<?php echo $this->get_field_name( 'orderby' ); ?>" id="<?php echo $this->get_field_id( 'orderby' ); ?>" class="widefat"> 
     78                        <option value="name"<?php selected( $instance['orderby'], 'name' ); ?>><?php _e( 'Link title' ); ?></option> 
     79                        <option value="rating"<?php selected( $instance['orderby'], 'rating' ); ?>><?php _e( 'Link rating' ); ?></option> 
     80                        <option value="id"<?php selected( $instance['orderby'], 'id' ); ?>><?php _e( 'Link ID' ); ?></option> 
     81                        <option value="rand"<?php selected( $instance['orderby'], 'rand' ); ?>><?php _e( 'Random' ); ?></option> 
     82                </select> 
     83                </p> 
     84                <p> 
     85                <input class="checkbox" type="checkbox" <?php checked( $instance['images'], true ) ?> id="<?php echo $this->get_field_id( 'images' ); ?>" name="<?php echo $this->get_field_name( 'images' ); ?>" /> 
     86                <label for="<?php echo $this->get_field_id( 'images' ); ?>"><?php _e( 'Show Link Image' ); ?></label><br /> 
     87                <input class="checkbox" type="checkbox" <?php checked( $instance['name'], true ) ?> id="<?php echo $this->get_field_id( 'name' ); ?>" name="<?php echo $this->get_field_name( 'name' ); ?>" /> 
     88                <label for="<?php echo $this->get_field_id( 'name' ); ?>"><?php _e( 'Show Link Name' ); ?></label><br /> 
     89                <input class="checkbox" type="checkbox" <?php checked( $instance['description'], true ) ?> id="<?php echo $this->get_field_id( 'description' ); ?>" name="<?php echo $this->get_field_name( 'description' ); ?>" /> 
     90                <label for="<?php echo $this->get_field_id( 'description' ); ?>"><?php _e( 'Show Link Description' ); ?></label><br /> 
     91                <input class="checkbox" type="checkbox" <?php checked( $instance['rating'], true ) ?> id="<?php echo $this->get_field_id( 'rating' ); ?>" name="<?php echo $this->get_field_name( 'rating' ); ?>" /> 
     92                <label for="<?php echo $this->get_field_id( 'rating' ); ?>"><?php _e( 'Show Link Rating' ); ?></label> 
     93                </p> 
     94                <p> 
     95                <label for="<?php echo $this->get_field_id( 'limit' ); ?>"><?php _e( 'Number of links to show:' ); ?></label> 
     96                <input id="<?php echo $this->get_field_id( 'limit' ); ?>" name="<?php echo $this->get_field_name( 'limit' ); ?>" type="text" value="<?php echo $limit == -1 ? '' : intval( $limit ); ?>" size="3" /> 
     97                </p> 
     98<?php 
     99        } 
     100} 
     101 No newline at end of file 
  • wp-content/plugins/link-manager/link-manager.php

     
     1<?php 
     2/* 
     3Plugin Name: Link Manager 
     4Description: Manages links 
     5Author: Scott Taylor 
     6Version: 1.0 
     7Author URI: http://scotty-t.com/ 
     8*/ 
     9 
     10define( 'LINK_MANAGER_URL', WP_PLUGIN_URL . '/link-manager' ); 
     11define( 'LINK_MANAGER_DIR', WP_PLUGIN_DIR . '/link-manager' ); 
     12 
     13require( LINK_MANAGER_DIR . '/functions.php' ); 
     14require( LINK_MANAGER_DIR . '/deprecated.php' ); 
     15require( LINK_MANAGER_DIR . '/bookmark.php' ); 
     16require( LINK_MANAGER_DIR . '/bookmark-template.php' ); 
     17require( LINK_MANAGER_DIR . '/widget.php' ); 
     18 
     19register_activation_hook( __FILE__, array( 'LinkManagerPlugin', 'install_defaults' ) ); 
     20 
     21class LinkManagerPlugin { 
     22        var $reset_vars; 
     23        var $wp_list_table; 
     24         
     25        private static $instance; 
     26        public static function get_instance() { 
     27                if ( !isset( self::$instance ) ) 
     28                        self::$instance = new LinkManagerPlugin(); 
     29                 
     30                return self::$instance; 
     31        } 
     32         
     33        private function __construct() { 
     34                $this->reset_vars =  array(  
     35                        'action', 'cat_id', 'linkurl', 'name', 'image', 'description',  
     36                        'visible', 'target', 'category', 'link_id', 'submit', 'order_by',  
     37                        'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]'  
     38                ); 
     39                 
     40                add_action( 'init',     array( $this, 'create_taxonomy' ), 0 ); 
     41                add_action( 'widgets_init',     array( $this, 'widgets_init' ), 1 ); 
     42                add_action( '_admin_menu', array( $this, 'menu_compat' ) ); 
     43                add_action( 'admin_menu', array( $this, 'menu' ) ); 
     44                add_action( 'admin_bar_menu', array( $this, 'admin_bar_menu' ), 71 ); 
     45                add_action( 'admin_head', array( $this, 'menu_css' ) ); 
     46                 
     47                add_filter( 'whitelist_options', array( $this, 'whitelist_options' ) ); 
     48                add_filter( 'terms_list_table_coumns', array( $this, 'terms_list_table_coumns' ) ); 
     49                add_filter( 'dropdown_categories_args', array( $this, 'dropdown_categories_args' ) ); 
     50                add_filter( 'get_categories_taxonomy', array( $this, 'get_categories_taxonomy' ), 10, 2 ); 
     51                add_filter( 'sanitize_option_default_link_category', array( $this, 'sanitize_default_link_category' ) ); 
     52                 
     53                add_action( 'wpmu_delete_user', array( $this, 'wpmu_delete_user' ) ); 
     54                add_action( 'delete_user', array( $this, 'delete_user' ) ); 
     55                add_action( 'reassign_user_data', array( $this, 'reassign_user_data' ), 10, 2 ); 
     56                 
     57                add_action( 'edit_link_category_help', array( $this, 'edit_link_category_help' ) ); 
     58                add_action( 'install_defaults', array( $this, 'install_defaults' ) ); 
     59                 
     60                add_action( 'admin_init', array( $this, 'add_settings_field' ) ); 
     61                 
     62                /** 
     63                 * AJAX Actions 
     64                 *   
     65                 */ 
     66                add_action( 'wp_ajax_add-link-category', array( $this, 'ajax_add_link_category' ), 1 ); 
     67                add_action( 'wp_ajax_delete-link', array( $this, 'ajax_delete_link' ), 1 ); 
     68                 
     69                /** 
     70                 * These switch the order of the actions, but I seriously doubt they are used at all 
     71                 * By hooking into these, we remove link_category-specific backcompat checks in admin code 
     72                 *   
     73                 */ 
     74                add_action( 'load-edit-tags.php', array( $this, 'backcompat_load_taxnow' ) ); 
     75                add_action( 'link_category_pre_add_form', array( $this, 'link_category_pre_add_form' ), 10, 2 ); 
     76                add_action( 'link_category_add_form', array( $this, 'link_category_add_form' ), 10, 2 ); 
     77                add_action( 'link_category_pre_edit_form', array( $this, 'link_category_pre_edit_form' ), 10, 2 ); 
     78                add_action( 'link_category_edit_form_fields', array( $this, 'link_category_edit_form_fields' ), 10, 2 ); 
     79                add_action( 'link_category_edit_form', array( $this, 'link_category_edit_form' ), 10, 2 ); 
     80        } 
     81         
     82        function menu_css() { 
     83        ?> 
     84<style type="text/css"> 
     85.toplevel_page_link-manager div.wp-menu-image {background-image: url('/wp-admin/images/menu.png?ver=20120201');} 
     86#adminmenu .toplevel_page_link-manager div.wp-menu-image { 
     87        background-position: -89px -33px; 
     88} 
     89 
     90#adminmenu .toplevel_page_link-manager:hover div.wp-menu-image, 
     91#adminmenu .toplevel_page_link-manager.wp-has-current-submenu div.wp-menu-image, 
     92#adminmenu .toplevel_page_link-manager.current div.wp-menu-image { 
     93        background-position: -89px -1px; 
     94} 
     95</style> 
     96        <?php 
     97        } 
     98         
     99        function create_taxonomy() { 
     100                register_taxonomy( 'link_category', 'link', array( 
     101                        'hierarchical' => false, 
     102                        'labels'        => array( 
     103                                'name'  => __( 'Link Categories' ), 
     104                                'singular_name' => __( 'Link Category' ), 
     105                                'search_items'  => __( 'Search Link Categories' ), 
     106                                'popular_items' => null, 
     107                                'all_items'             => __( 'All Link Categories' ), 
     108                                'edit_item'             => __( 'Edit Link Category' ), 
     109                                'update_item'   => __( 'Update Link Category' ), 
     110                                'add_new_item'  => __( 'Add New Link Category' ), 
     111                                'new_item_name' => __( 'New Link Category Name' ), 
     112                                'separate_items_with_commas' => null, 
     113                                'add_or_remove_items' => null, 
     114                                'choose_from_most_used' => null, 
     115                        ), 
     116                        'query_var' => false, 
     117                        'rewrite'       => false, 
     118                        'public'        => false, 
     119                        'show_ui'       => false, 
     120                        '_builtin'      => true, 
     121                ) ); 
     122        } 
     123         
     124        function add_settings_field() { 
     125                add_settings_field(  
     126                        'default_link_category',  
     127                        __( 'Default Link Category' ),  
     128                        'wp_dropdown_categories',  
     129                        'writing',  
     130                        'default',  
     131                        array(  
     132                                'hide_empty'    => 0,  
     133                                'name'                  => 'default_link_category',  
     134                                'orderby'               => 'name',  
     135                                'selected'              => get_option( 'default_link_category' ),  
     136                                'hierarchical'  => true,  
     137                                'taxonomy'              => 'link_category' 
     138                        ) 
     139                ); 
     140        } 
     141         
     142        /** 
     143         * Register Links widget on startup. 
     144         * 
     145         */ 
     146        function widgets_init() { 
     147                register_widget( 'WP_Widget_Links' ); 
     148        } 
     149         
     150        function menu_compat() { 
     151                global $compat; 
     152                $compat['link-manager'] = 'links'; 
     153        } 
     154         
     155        function menu() { 
     156                $links_page = add_menu_page( __( 'Links' ), __( 'Links' ), 'manage_links', 'link-manager.php', array( $this, 'admin_page' ), admin_url( 'wp-includes/images/blank.gif' ), 15 ); 
     157                add_action( "load-{$links_page}", array( $this, 'load_admin_page' ) ); 
     158                 
     159                $all_links_page = add_links_page( _x( 'All Links', 'admin menu' ), _x( 'All Links', 'admin menu' ), 'manage_links', 'link-manager.php', array( $this, 'admin_page' ) ); 
     160                if ( $links_page !== $all_links_page ) 
     161                        add_action( "load-{$all_links_page}", array( $this, 'load_admin_page' ) ); 
     162                         
     163                /* translators: add new links */ 
     164                $add_new_page = add_links_page( _x( 'Add New', 'link' ), _x( 'Add New', 'link' ), 'manage_links', 'link-add.php', array( $this, 'add_new_page' ) ); 
     165                add_action( "load-{$add_new_page}", array( $this, 'load_add_new_page' ) ); 
     166                 
     167                add_links_page( __( 'Link Categories' ), __( 'Link Categories' ), 'manage_categories', 'edit-tags.php?taxonomy=link_category' ); 
     168        } 
     169         
     170        function check_permissions() { 
     171                if ( ! current_user_can( 'manage_links' ) ) 
     172                        wp_die( __( 'You do not have sufficient permissions to edit the links for this site.' ) );       
     173        } 
     174         
     175        function load_admin_page() { 
     176                $this->check_permissions(); 
     177                wp_reset_vars( $this->reset_vars ); 
     178                foreach ( $this->reset_vars as $_var ) 
     179                        $$_var = $GLOBALS[$_var]; 
     180                 
     181                if ( ! empty( $_POST['linkcheck'] ) ) 
     182                        $action = 'deletebookmarks'; 
     183                if ( ! empty( $_POST['move'] ) ) 
     184                        $action = 'move'; 
     185                if ( ! empty( $_POST['linkcheck'] ) ) 
     186                        $linkcheck = $_POST['linkcheck']; 
     187 
     188                $redirect_to = menu_page_url( 'link-manager.php', false ); 
     189                 
     190                switch ( $action ) { 
     191                        case 'deletebookmarks' : 
     192                                check_admin_referer( 'bulk-bookmarks' ); 
     193 
     194                                //for each link id (in $linkcheck[]) change category to selected value 
     195                                if ( empty( $linkcheck ) ) { 
     196                                        wp_redirect( $redirect_to ); 
     197                                        exit; 
     198                                } 
     199 
     200                                $deleted = 0; 
     201                                foreach ( $linkcheck as $link_id ) { 
     202                                        $link_id = (int) $link_id; 
     203 
     204                                        if ( wp_delete_link( $link_id ) ) 
     205                                                $deleted++; 
     206                                } 
     207 
     208                                $redirect_to = add_query_arg( 'deleted', $deleted, $redirect_to ); 
     209                                wp_redirect( $redirect_to ); 
     210                                exit; 
     211                                break; 
     212 
     213                        case 'move' : 
     214                                check_admin_referer( 'bulk-bookmarks' ); 
     215 
     216                                //for each link id (in $linkcheck[]) change category to selected value 
     217                                if ( empty( $linkcheck ) ) { 
     218                                        wp_redirect( $redirect_to ); 
     219                                        exit; 
     220                                } 
     221                                $all_links = join( ',', $linkcheck ); 
     222                                // should now have an array of links we can change 
     223                                //$q = $wpdb->query("update $wpdb->links SET link_category='$category' WHERE link_id IN ($all_links)"); 
     224 
     225                                wp_redirect( $redirect_to ); 
     226                                exit; 
     227                                break; 
     228 
     229                        case 'add' : 
     230                                check_admin_referer( 'add-bookmark' ); 
     231 
     232                                $redir = wp_get_referer(); 
     233                                if ( add_link() ) 
     234                                        $redir = add_query_arg( 'added', 'true', $redir ); 
     235 
     236                                wp_redirect( $redir ); 
     237                                exit; 
     238                                break; 
     239 
     240                        case 'save' : 
     241                                $link_id = (int) $link_id; 
     242                                check_admin_referer( 'update-bookmark_' . $link_id ); 
     243 
     244                                edit_link( $link_id ); 
     245 
     246                                wp_redirect( $redirect_to ); 
     247                                exit; 
     248                                break; 
     249 
     250                        case 'delete' : 
     251                                $link_id = (int) $link_id; 
     252                                check_admin_referer( 'delete-bookmark_' . $link_id ); 
     253 
     254                                wp_delete_link( $link_id ); 
     255 
     256                                wp_redirect( $redirect_to ); 
     257                                exit; 
     258                                break; 
     259 
     260                        case 'edit' : 
     261                                wp_enqueue_script( 'link' ); 
     262                                wp_enqueue_script( 'xfn' ); 
     263 
     264                                if ( wp_is_mobile() ) 
     265                                        wp_enqueue_script( 'jquery-touch-punch' ); 
     266 
     267 
     268                                $link_id = (int) $link_id; 
     269 
     270                                if ( !$link = get_link_to_edit( $link_id ) ) 
     271                                        wp_die( __( 'Link not found.' ) ); 
     272 
     273                                add_screen_option( 'layout_columns', array( 'max' => 2, 'default' => 2 ) ); 
     274 
     275                                get_current_screen()->add_help_tab( array( 
     276                                        'id'      => 'overview', 
     277                                        'title'   => __('Overview'), 
     278                                        'content' => 
     279                                        '<p>' . __( 'You can add or edit links on this screen by entering information in each of the boxes. Only the link&#8217;s web address and name (the text you want to display on your site as the link) are required fields.' ) . '</p>' . 
     280                                        '<p>' . __( 'The boxes for link name, web address, and description have fixed positions, while the others may be repositioned using drag and drop. You can also hide boxes you don&#8217;t use in the Screen Options tab, or minimize boxes by clicking on the title bar of the box.' ) . '</p>' . 
     281                                        '<p>' . __( 'XFN stands for <a href="http://gmpg.org/xfn/" target="_blank">XHTML Friends Network</a>, which is optional. WordPress allows the generation of XFN attributes to show how you are related to the authors/owners of the site to which you are linking.' ) . '</p>' 
     282                                ) ); 
     283 
     284                                get_current_screen()->set_help_sidebar( 
     285                                        '<p><strong>' . __( 'For more information:' ) . '</strong></p>' . 
     286                                        '<p>' . __( '<a href="http://codex.wordpress.org/Links_Add_New_Screen" target="_blank">Documentation on Creating Links</a>' ) . '</p>' . 
     287                                        '<p>' . __( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>' 
     288                                ); 
     289                                 
     290                                break; 
     291 
     292                        default : 
     293                                require( LINK_MANAGER_DIR . '/admin/class-wp-links-list-table.php' ); 
     294                                $this->wp_list_table = new WP_Links_List_Table(); 
     295 
     296                                // Handle bulk deletes 
     297                                $doaction = $this->wp_list_table->current_action(); 
     298 
     299                                if ( $doaction && isset( $_REQUEST['linkcheck'] ) ) { 
     300                                        check_admin_referer( 'bulk-bookmarks' ); 
     301 
     302                                        if ( 'delete' == $doaction ) { 
     303                                                $bulklinks = (array) $_REQUEST['linkcheck']; 
     304                                                foreach ( $bulklinks as $link_id ) { 
     305                                                        $link_id = (int) $link_id; 
     306 
     307                                                        wp_delete_link( $link_id ); 
     308                                                } 
     309 
     310                                                wp_redirect( add_query_arg( 'deleted', count( $bulklinks ), menu_page_url( 'link-manager.php', false ) ) ); 
     311                                                exit; 
     312                                        } 
     313                                } elseif ( ! empty( $_GET['_wp_http_referer'] ) ) { 
     314                                        wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), stripslashes( $_SERVER['REQUEST_URI'] ) ) ); 
     315                                        exit; 
     316                                } 
     317                                 
     318                                get_current_screen()->add_help_tab( array( 
     319                                'id'            => 'overview', 
     320                                'title'         => __('Overview'), 
     321                                'content'       => 
     322                                        '<p>' . sprintf(__('You can add links here to be displayed on your site, usually using <a href="%s">Widgets</a>. By default, links to several sites in the WordPress community are included as examples.'), 'widgets.php') . '</p>' . 
     323                                        '<p>' . __('Links may be separated into Link Categories; these are different than the categories used on your posts.') . '</p>' . 
     324                                        '<p>' . __('You can customize the display of this screen using the Screen Options tab and/or the dropdown filters above the links table.') . '</p>' 
     325                                ) ); 
     326                                get_current_screen()->add_help_tab( array( 
     327                                'id'            => 'deleting-links', 
     328                                'title'         => __('Deleting Links'), 
     329                                'content'       => 
     330                                        '<p>' . __('If you delete a link, it will be removed permanently, as Links do not have a Trash function yet.') . '</p>' 
     331                                ) ); 
     332 
     333                                get_current_screen()->set_help_sidebar( 
     334                                        '<p><strong>' . __('For more information:') . '</strong></p>' . 
     335                                        '<p>' . __('<a href="http://codex.wordpress.org/Links_Screen" target="_blank">Documentation on Managing Links</a>') . '</p>' . 
     336                                        '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>' 
     337                                ); 
     338                                break; 
     339                } 
     340        } 
     341         
     342        function admin_page() { 
     343                global $link; 
     344                wp_reset_vars( $this->reset_vars ); 
     345                foreach ( $this->reset_vars as $_var ) 
     346                        $$_var = $GLOBALS[$_var]; 
     347                 
     348                $title = __( 'Links' ); 
     349                if ( 'edit' === $action ) { 
     350                        $link = get_link_to_edit( $link_id ); 
     351                        require( LINK_MANAGER_DIR . '/admin/meta-boxes.php' ); 
     352                        include( LINK_MANAGER_DIR . '/admin/edit-link-form.php' ); 
     353                } else { 
     354                        $wp_list_table =& $this->wp_list_table; 
     355                        $wp_list_table->prepare_items(); 
     356                        include( LINK_MANAGER_DIR . '/admin/link-manager.php' ); 
     357                } 
     358        } 
     359         
     360        function add_new_page() { 
     361                global $link; 
     362                 
     363                $this->check_permissions(); 
     364                wp_reset_vars( $this->reset_vars ); 
     365                foreach ( $this->reset_vars as $_var ) 
     366                        $$_var = $GLOBALS[$_var]; 
     367                 
     368                $title = __( 'Add New Link' ); 
     369                $link = get_default_link_to_edit(); 
     370                require( LINK_MANAGER_DIR . '/admin/meta-boxes.php' ); 
     371                include( LINK_MANAGER_DIR . '/admin/edit-link-form.php' ); 
     372        } 
     373         
     374        function load_add_new_page() { 
     375                wp_enqueue_script( 'link' ); 
     376                wp_enqueue_script( 'xfn' ); 
     377 
     378                if ( wp_is_mobile() ) 
     379                        wp_enqueue_script( 'jquery-touch-punch' ); 
     380        } 
     381         
     382        function admin_bar_menu() { 
     383                global $wp_admin_bar; 
     384                if ( current_user_can( 'manage_links' ) ) { 
     385                        $wp_admin_bar->add_menu( array( 
     386                                'parent'    => 'new-content', 
     387                                'id'        => 'new-link', 
     388                                'title'     => _x( 'Link', 'add new from admin bar' ), 
     389                                'href'      => admin_url( 'link-add.php' ) 
     390                        ) );                     
     391                } 
     392        } 
     393         
     394        function whitelist_options( $options ) { 
     395                $options['writing'][] = 'default_link_category'; 
     396                return $options; 
     397        } 
     398         
     399        function terms_list_table_coumns( $columns ) { 
     400                global $taxonomy; 
     401                if ( 'link_category' === $taxonomy ) 
     402                        $columns['links'] = __( 'Links' ); 
     403                 
     404                return $columns; 
     405        } 
     406         
     407        function dropdown_categories_args( $args ) { 
     408                // Back compat. 
     409                if ( isset( $args['type'] ) && 'link' == $args['type'] ) { 
     410                        _deprecated_argument( 'wp_dropdown_categories', '3.0', '' ); 
     411                        $args['taxonomy'] = 'link_category'; 
     412                } 
     413                return $args; 
     414        } 
     415         
     416        function get_categories_taxonomy( $taxonomy, $args ) { 
     417                // Back compat 
     418                if ( isset( $args['type'] ) && 'link' == $args['type'] ) { 
     419                        _deprecated_argument( 'get_categories', '3.0', '' ); 
     420                        $args['taxonomy'] = 'link_category'; 
     421                } 
     422                return $args['taxonomy']; 
     423        } 
     424         
     425        function sanitize_default_link_category( $value ) { 
     426                $value = absint( $value ); 
     427                return $value; 
     428        } 
     429         
     430        function wpmu_delete_user( $id ) { 
     431                global $wpdb; 
     432                $blogs = get_blogs_of_user( $id ); 
     433 
     434                if ( ! empty( $blogs ) ) { 
     435                        foreach ( $blogs as $blog ) { 
     436                                switch_to_blog( $blog->userblog_id ); 
     437                                // Clean links 
     438                                $link_ids = $wpdb->get_col( $wpdb->prepare( "SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id ) ); 
     439 
     440                                if ( $link_ids ) 
     441                                        foreach ( $link_ids as $link_id ) 
     442                                                wp_delete_link( $link_id ); 
     443                        } 
     444                } 
     445        } 
     446         
     447        function delete_user( $id ) { 
     448                global $wpdb; 
     449                // Clean links 
     450                $link_ids = $wpdb->get_col( $wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id) ); 
     451 
     452                if ( $link_ids ) { 
     453                        foreach ( $link_ids as $link_id ) 
     454                                wp_delete_link( $link_id ); 
     455                } 
     456        } 
     457         
     458        function reassign_user_data( $id, $reassign ) { 
     459                global $wpdb; 
     460                $wpdb->update( $wpdb->links, array( 'link_owner' => $reassign ), array( 'link_owner' => $id ) ); 
     461        } 
     462 
     463        function edit_link_category_help() { 
     464                $help = '<p>' . __( 'You can create groups of links by using Link Categories. Link Category names must be unique and Link Categories are separate from the categories you use for posts.' ) . '</p>'; 
     465                $help .= '<p>' . __( 'You can delete Link Categories in the Bulk Action pull-down, but that action does not delete the links within the category. Instead, it moves them to the default Link Category.' ) . '</p>'; 
     466                 
     467                get_current_screen()->add_help_tab( array( 
     468                        'id'      => 'overview', 
     469                        'title'   => __('Overview'), 
     470                        'content' => $help, 
     471                ) ); 
     472                 
     473                $help = '<p><strong>' . __( 'For more information:' ) . '</strong></p>'; 
     474                $help .= '<p>' . __( '<a href="http://codex.wordpress.org/Links_Link_Categories_Screen" target="_blank">Documentation on Link Categories</a>' ) . '</p>'; 
     475                $help .= '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'; 
     476 
     477                get_current_screen()->set_help_sidebar( $help ); 
     478        } 
     479         
     480        /** 
     481        * Ajax Actions 
     482        *   
     483        */ 
     484        function ajax_add_link_category( $action ) { 
     485                if ( empty( $action ) ) 
     486                        $action = 'add-link-category'; 
     487                check_ajax_referer( $action ); 
     488                if ( !current_user_can( 'manage_categories' ) ) 
     489                        wp_die( -1 ); 
     490                $names = explode( ',', $_POST['newcat'] ); 
     491                $x = new WP_Ajax_Response(); 
     492                foreach ( $names as $cat_name ) { 
     493                        $cat_name = trim( $cat_name ); 
     494                        $slug = sanitize_title( $cat_name ); 
     495                        if ( '' === $slug ) 
     496                                continue; 
     497                        if ( !$cat_id = term_exists( $cat_name, 'link_category' ) ) 
     498                                $cat_id = wp_insert_term( $cat_name, 'link_category' ); 
     499                        if ( is_wp_error( $cat_id ) ) 
     500                                continue; 
     501                        else if ( is_array( $cat_id ) ) 
     502                                $cat_id = $cat_id['term_id']; 
     503                        $cat_name = esc_html( stripslashes( $cat_name ) ); 
     504                        $x->add( array( 
     505                                'what' => 'link-category', 
     506                                'id' => $cat_id, 
     507                                'data' => "<li id='link-category-$cat_id'><label for='in-link-category-$cat_id' class='selectit'><input value='" . esc_attr( $cat_id ) . "' type='checkbox' checked='checked' name='link_category[]' id='in-link-category-$cat_id'/> $cat_name</label></li>", 
     508                                'position' => -1 
     509                        ) ); 
     510                } 
     511                $x->send(); 
     512        } 
     513 
     514        function ajax_delete_link() { 
     515                $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; 
     516 
     517                check_ajax_referer( "delete-bookmark_$id" ); 
     518                if ( !current_user_can( 'manage_links' ) ) 
     519                        wp_die( -1 ); 
     520 
     521                $link = get_bookmark( $id ); 
     522                if ( !$link || is_wp_error( $link ) ) 
     523                        wp_die( 1 ); 
     524 
     525                if ( wp_delete_link( $id ) ) 
     526                        wp_die( 1 ); 
     527                else 
     528                        wp_die( 0 ); 
     529        } 
     530         
     531        function install_defaults() { 
     532                global $wpdb; 
     533                 
     534                if ( get_option( 'default_links_added' ) ) 
     535                        return; 
     536                 
     537                // Default link category 
     538                $cat_name = __( 'Blogroll' ); 
     539                /* translators: Default link category slug */ 
     540                $cat_slug = sanitize_title( _x( 'Blogroll', 'Default link category slug' ) ); 
     541 
     542                if ( global_terms_enabled() ) { 
     543                        $blogroll_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM {$wpdb->sitecategories} WHERE category_nicename = %s", $cat_slug ) ); 
     544                        if ( $blogroll_id == null ) { 
     545                                $wpdb->insert( $wpdb->sitecategories, array( 'cat_ID' => 0, 'cat_name' => $cat_name, 'category_nicename' => $cat_slug, 'last_updated' => current_time( 'mysql', true ) ) ); 
     546                                $blogroll_id = $wpdb->insert_id; 
     547                        } 
     548                        update_option( 'default_link_category', $blogroll_id ); 
     549                } 
     550 
     551                if ( empty( $blogroll_id ) ) 
     552                        $blogroll_id = $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM {$wpdb->terms} WHERE name = %s AND slug = %s", $cat_name, $cat_slug ) ); 
     553                         
     554                if ( empty( $blogroll_id ) ) { 
     555                        $wpdb->insert( $wpdb->terms, array( 'name' => $cat_name, 'slug' => $cat_slug, 'term_group' => 0 ) );     
     556                        $blogroll_id = $wpdb->insert_id; 
     557                } 
     558                 
     559                $wpdb->insert( $wpdb->term_taxonomy, array( 'term_id' => $blogroll_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 7 ) ); 
     560                $blogroll_tt_id = $wpdb->insert_id; 
     561 
     562                // Now drop in some default links 
     563                $default_links = array(); 
     564                $default_links[] = array(        
     565                        'link_url'      => __( 'http://codex.wordpress.org/' ), 
     566                        'link_name' => __( 'Documentation' ), 
     567                        'link_rss'      => '', 
     568                        'link_notes'=> '' 
     569                ); 
     570 
     571                $default_links[] = array(        
     572                        'link_url'      => __( 'http://wordpress.org/news/' ), 
     573                        'link_name' => __( 'WordPress Blog' ), 
     574                        'link_rss'      => __( 'http://wordpress.org/news/feed/' ), 
     575                        'link_notes'=> '' 
     576                ); 
     577 
     578                $default_links[] = array(        
     579                        'link_url'      => __( 'http://wordpress.org/support/' ), 
     580                        'link_name' => _x( 'Support Forums', 'default link' ), 
     581                        'link_rss'      => '', 
     582                        'link_notes'=>'' 
     583                ); 
     584 
     585                $default_links[] = array(        
     586                        'link_url'      => 'http://wordpress.org/extend/plugins/', 
     587                        'link_name' => _x( 'Plugins', 'Default link to wordpress.org/extend/plugins/' ), 
     588                        'link_rss'      => '', 
     589                        'link_notes'=>'' 
     590                ); 
     591 
     592                $default_links[] = array(        
     593                        'link_url'      => 'http://wordpress.org/extend/themes/', 
     594                        'link_name' => _x( 'Themes', 'Default link to wordpress.org/extend/themes/' ), 
     595                        'link_rss'      => '', 
     596                        'link_notes'=>'' 
     597                ); 
     598 
     599                $default_links[] = array(        
     600                        'link_url'      => __( 'http://wordpress.org/support/forum/requests-and-feedback' ), 
     601                        'link_name' => __( 'Feedback' ), 
     602                        'link_rss'      => '', 
     603                        'link_notes'=>'' 
     604                ); 
     605 
     606                $default_links[] = array(        
     607                        'link_url'      => __( 'http://planet.wordpress.org/' ), 
     608                        'link_name' => __( 'WordPress Planet' ), 
     609                        'link_rss'      => '', 
     610                        'link_notes'=>'' 
     611                ); 
     612 
     613                foreach ( $default_links as $link ) { 
     614                        $wpdb->insert( $wpdb->links, $link ); 
     615                        $wpdb->insert( $wpdb->term_relationships, array( 'term_taxonomy_id' => $blogroll_tt_id, 'object_id' => $wpdb->insert_id ) ); 
     616                } 
     617                 
     618                update_option( 'default_links_added', 1 ); 
     619        } 
     620         
     621        /** 
     622         * Back-compat actions 
     623         *  
     624         */ 
     625        function backcompat_load_taxnow() { 
     626                global $taxnow; 
     627                if ( 'link_category' === $taxnow ) 
     628                        do_action( 'load-edit-link-categories.php' ); 
     629        } 
     630 
     631        function link_category_pre_add_form( $taxonomy ) { 
     632                do_action( 'add_link_category_form_pre', (object) array( 'parent' => 0 ) ); 
     633        } 
     634         
     635        function link_category_add_form( $taxonomy ) { 
     636                do_action( 'edit_link_category_form', (object) array( 'parent' => 0 ) ); 
     637        } 
     638                 
     639        function link_category_pre_edit_form( $tag, $taxonomy ) { 
     640                do_action( 'edit_link_category_form_pre', $tag ); 
     641        } 
     642         
     643        function link_category_edit_form_fields( $tag, $taxonomy ) { 
     644                do_action( 'edit_link_category_form_fields', $tag ); 
     645        } 
     646         
     647        function link_category_edit_form( $tag, $taxonomy ) { 
     648                do_action( 'edit_link_category_form', $tag ); 
     649        } 
     650} 
     651LinkManagerPlugin::get_instance(); 
     652 No newline at end of file 
  • wp-content/plugins/link-manager/bookmark.php

     
     1<?php 
     2/** 
     3 * Link/Bookmark API 
     4 * 
     5 * @package Link Manager 
     6 * @subpackage Bookmark 
     7 */ 
     8 
     9/** 
     10 * Retrieve Bookmark data 
     11 * 
     12 * @since WP 2.1.0 
     13 * @uses $wpdb Database Object 
     14 * 
     15 * @param mixed $bookmark 
     16 * @param string $output Optional. Either OBJECT, ARRAY_N, or ARRAY_A constant 
     17 * @param string $filter Optional, default is 'raw'. 
     18 * @return array|object Type returned depends on $output value. 
     19 */ 
     20function get_bookmark( $bookmark, $output = OBJECT, $filter = 'raw' ) { 
     21        global $wpdb; 
     22 
     23        if ( empty( $bookmark ) ) { 
     24                if ( isset( $GLOBALS['link']) ) 
     25                        $_bookmark = & $GLOBALS['link']; 
     26                else 
     27                        $_bookmark = null; 
     28        } elseif ( is_object( $bookmark ) ) { 
     29                wp_cache_add( $bookmark->link_id, $bookmark, 'bookmark' ); 
     30                $_bookmark = $bookmark; 
     31        } else { 
     32                if ( isset( $GLOBALS['link']) && ( $GLOBALS['link']->link_id == $bookmark ) ) { 
     33                        $_bookmark = & $GLOBALS['link']; 
     34                } elseif ( ! $_bookmark = wp_cache_get( $bookmark, 'bookmark' ) ) { 
     35                        $_bookmark = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->links WHERE link_id = %d LIMIT 1", $bookmark ) ); 
     36                        $_bookmark->link_category = array_unique( wp_get_object_terms( $_bookmark->link_id, 'link_category', array( 'fields' => 'ids' ) ) ); 
     37                        wp_cache_add( $_bookmark->link_id, $_bookmark, 'bookmark' ); 
     38                } 
     39        } 
     40 
     41        $_bookmark = sanitize_bookmark( $_bookmark, $filter ); 
     42 
     43        if ( $output == OBJECT ) { 
     44                return $_bookmark; 
     45        } elseif ( $output == ARRAY_A ) { 
     46                return get_object_vars( $_bookmark ); 
     47        } elseif ( $output == ARRAY_N ) { 
     48                return array_values(get_object_vars( $_bookmark ) ); 
     49        } else { 
     50                return $_bookmark; 
     51        } 
     52} 
     53 
     54/** 
     55 * Retrieve single bookmark data item or field. 
     56 * 
     57 * @since WP 2.3.0 
     58 * @uses get_bookmark() Gets bookmark object using $bookmark as ID 
     59 * @uses sanitize_bookmark_field() Sanitizes Bookmark field based on $context. 
     60 * 
     61 * @param string $field The name of the data field to return 
     62 * @param int $bookmark The bookmark ID to get field 
     63 * @param string $context Optional. The context of how the field will be used. 
     64 * @return string 
     65 */ 
     66function get_bookmark_field( $field, $bookmark, $context = 'display' ) { 
     67        $bookmark = (int) $bookmark; 
     68        $bookmark = get_bookmark( $bookmark ); 
     69 
     70        if ( is_wp_error( $bookmark ) ) 
     71                return $bookmark; 
     72 
     73        if ( !is_object( $bookmark ) ) 
     74                return ''; 
     75 
     76        if ( !isset( $bookmark->$field ) ) 
     77                return ''; 
     78 
     79        return sanitize_bookmark_field( $field, $bookmark->$field, $bookmark->link_id, $context ); 
     80} 
     81 
     82/** 
     83 * Retrieves the list of bookmarks 
     84 * 
     85 * Attempts to retrieve from the cache first based on MD5 hash of arguments. If 
     86 * that fails, then the query will be built from the arguments and executed. The 
     87 * results will be stored to the cache. 
     88 * 
     89 * List of default arguments are as follows: 
     90 * 'orderby' - Default is 'name' (string). How to order the links by. String is 
     91 *              based off of the bookmark scheme. 
     92 * 'order' - Default is 'ASC' (string). Either 'ASC' or 'DESC'. Orders in either 
     93 *              ascending or descending order. 
     94 * 'limit' - Default is -1 (integer) or show all. The amount of bookmarks to 
     95 *              display. 
     96 * 'category' - Default is empty string (string). Include the links in what 
     97 *              category ID(s ). 
     98 * 'category_name' - Default is empty string (string). Get links by category 
     99 *              name. 
     100 * 'hide_invisible' - Default is 1 (integer). Whether to show (default) or hide 
     101 *              links marked as 'invisible'. 
     102 * 'show_updated' - Default is 0 (integer). Will show the time of when the 
     103 *              bookmark was last updated. 
     104 * 'include' - Default is empty string (string). Include bookmark ID(s ) 
     105 *              separated by commas. 
     106 * 'exclude' - Default is empty string (string). Exclude bookmark ID(s ) 
     107 *              separated by commas. 
     108 * 
     109 * @since WP 2.1.0 
     110 * @uses $wpdb Database Object 
     111 * @link http://codex.wordpress.org/Template_Tags/get_bookmarks 
     112 * 
     113 * @param string|array $args List of arguments to overwrite the defaults 
     114 * @return array List of bookmark row objects 
     115 */ 
     116function get_bookmarks( $args = '' ) { 
     117        global $wpdb; 
     118 
     119        $defaults = array( 
     120                'orderby' => 'name', 'order' => 'ASC', 
     121                'limit' => -1, 'category' => '', 
     122                'category_name' => '', 'hide_invisible' => 1, 
     123                'show_updated' => 0, 'include' => '', 
     124                'exclude' => '', 'search' => '' 
     125        ); 
     126 
     127        $r = wp_parse_args( $args, $defaults ); 
     128        extract( $r, EXTR_SKIP ); 
     129 
     130        $cache = array(); 
     131        $key = md5( serialize( $r ) ); 
     132        if ( $cache = wp_cache_get( 'get_bookmarks', 'bookmark' ) ) { 
     133                if ( is_array( $cache ) && isset( $cache[ $key ] ) ) 
     134                        return apply_filters( 'get_bookmarks', $cache[ $key ], $r ); 
     135        } 
     136 
     137        if ( !is_array( $cache ) ) 
     138                $cache = array(); 
     139 
     140        $inclusions = ''; 
     141        if ( !empty( $include ) ) { 
     142                $exclude = '';  //ignore exclude, category, and category_name params if using include 
     143                $category = ''; 
     144                $category_name = ''; 
     145                $inclinks = preg_split( '/[\s,]+/',$include ); 
     146                if ( count( $inclinks ) ) { 
     147                        foreach ( $inclinks as $inclink ) { 
     148                                if (empty( $inclusions ) ) 
     149                                        $inclusions = ' AND ( link_id = ' . intval( $inclink ) . ' '; 
     150                                else 
     151                                        $inclusions .= ' OR link_id = ' . intval( $inclink ) . ' '; 
     152                        } 
     153                } 
     154        } 
     155        if (!empty( $inclusions ) ) 
     156                $inclusions .= ' )'; 
     157 
     158        $exclusions = ''; 
     159        if ( !empty( $exclude ) ) { 
     160                $exlinks = preg_split( '/[\s,]+/',$exclude ); 
     161                if ( count( $exlinks ) ) { 
     162                        foreach ( $exlinks as $exlink ) { 
     163                                if (empty( $exclusions ) ) 
     164                                        $exclusions = ' AND ( link_id <> ' . intval( $exlink ) . ' '; 
     165                                else 
     166                                        $exclusions .= ' AND link_id <> ' . intval( $exlink ) . ' '; 
     167                        } 
     168                } 
     169        } 
     170        if (!empty( $exclusions ) ) 
     171                $exclusions .= ' )'; 
     172 
     173        if ( !empty( $category_name ) ) { 
     174                if ( $category = get_term_by( 'name', $category_name, 'link_category' ) ) { 
     175                        $category = $category->term_id; 
     176                } else { 
     177                        $cache[ $key ] = array(); 
     178                        wp_cache_set( 'get_bookmarks', $cache, 'bookmark' ); 
     179                        return apply_filters( 'get_bookmarks', array(), $r ); 
     180                } 
     181        } 
     182 
     183        if ( ! empty( $search ) ) { 
     184                $search = like_escape( $search ); 
     185                $search = " AND ( (link_url LIKE '%$search%' ) OR (link_name LIKE '%$search%' ) OR (link_description LIKE '%$search%' ) ) "; 
     186        } 
     187 
     188        $category_query = ''; 
     189        $join = ''; 
     190        if ( !empty( $category ) ) { 
     191                $incategories = preg_split( '/[\s,]+/',$category ); 
     192                if ( count( $incategories ) ) { 
     193                        foreach ( $incategories as $incat ) { 
     194                                if (empty( $category_query ) ) 
     195                                        $category_query = ' AND ( tt.term_id = ' . intval( $incat ) . ' '; 
     196                                else 
     197                                        $category_query .= ' OR tt.term_id = ' . intval( $incat ) . ' '; 
     198                        } 
     199                } 
     200        } 
     201        if (!empty( $category_query ) ) { 
     202                $category_query .= " ) AND taxonomy = 'link_category'"; 
     203                $join = " INNER JOIN $wpdb->term_relationships AS tr ON ( $wpdb->links.link_id = tr.object_id) INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_taxonomy_id = tr.term_taxonomy_id"; 
     204        } 
     205 
     206        if ( $show_updated && get_option( 'links_recently_updated_time' ) ) { 
     207                $recently_updated_test = ", IF (DATE_ADD(link_updated, INTERVAL " . get_option( 'links_recently_updated_time' ) . " MINUTe ) >= NOW(), 1,0) as recently_updated "; 
     208        } else { 
     209                $recently_updated_test = ''; 
     210        } 
     211 
     212        $get_updated = ( $show_updated ) ? ', UNIX_TIMESTAMP(link_updated) AS link_updated_f ' : ''; 
     213 
     214        $orderby = strtolower( $orderby ); 
     215        $length = ''; 
     216        switch ( $orderby ) { 
     217                case 'length': 
     218                        $length = ", CHAR_LENGTH(link_name ) AS length"; 
     219                        break; 
     220                case 'rand': 
     221                        $orderby = 'rand()'; 
     222                        break; 
     223                case 'link_id': 
     224                        $orderby = "$wpdb->links.link_id"; 
     225                        break; 
     226                default: 
     227                        $orderparams = array(); 
     228                        foreach ( explode( ',', $orderby ) as $ordparam ) { 
     229                                $ordparam = trim( $ordparam ); 
     230                                $keys = array( 'link_id', 'link_name', 'link_url', 'link_visible', 'link_rating', 'link_owner', 'link_updated', 'link_notes' ); 
     231                                if ( in_array( 'link_' . $ordparam, $keys ) ) 
     232                                        $orderparams[] = 'link_' . $ordparam; 
     233                                elseif ( in_array( $ordparam, $keys ) ) 
     234                                        $orderparams[] = $ordparam; 
     235                        } 
     236                        $orderby = implode( ',', $orderparams ); 
     237        } 
     238 
     239        if ( empty( $orderby ) ) 
     240                $orderby = 'link_name'; 
     241 
     242        $order = strtoupper( $order ); 
     243        if ( '' !== $order && !in_array( $order, array( 'ASC', 'DESC' ) ) ) 
     244                $order = 'ASC'; 
     245 
     246        $visible = ''; 
     247        if ( $hide_invisible ) 
     248                $visible = "AND link_visible = 'Y'"; 
     249 
     250        $query = "SELECT * $length $recently_updated_test $get_updated FROM $wpdb->links $join WHERE 1=1 $visible $category_query"; 
     251        $query .= " $exclusions $inclusions $search"; 
     252        $query .= " ORDER BY $orderby $order"; 
     253        if ( $limit != -1) 
     254                $query .= " LIMIT $limit"; 
     255 
     256        $results = $wpdb->get_results( $query ); 
     257 
     258        $cache[ $key ] = $results; 
     259        wp_cache_set( 'get_bookmarks', $cache, 'bookmark' ); 
     260 
     261        return apply_filters( 'get_bookmarks', $results, $r ); 
     262} 
     263 
     264/** 
     265 * Sanitizes all bookmark fields 
     266 * 
     267 * @since WP 2.3.0 
     268 * 
     269 * @param object|array $bookmark Bookmark row 
     270 * @param string $context Optional, default is 'display'. How to filter the 
     271 *              fields 
     272 * @return object|array Same type as $bookmark but with fields sanitized. 
     273 */ 
     274function sanitize_bookmark( $bookmark, $context = 'display' ) { 
     275        $fields = array( 'link_id', 'link_url', 'link_name', 'link_image', 'link_target', 'link_category', 
     276                'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_updated', 
     277                'link_rel', 'link_notes', 'link_rss', ); 
     278 
     279        if ( is_object( $bookmark ) ) { 
     280                $do_object = true; 
     281                $link_id = $bookmark->link_id; 
     282        } else { 
     283                $do_object = false; 
     284                $link_id = $bookmark['link_id']; 
     285        } 
     286 
     287        foreach ( $fields as $field ) { 
     288                if ( $do_object ) { 
     289                        if ( isset( $bookmark->$field ) ) 
     290                                $bookmark->$field = sanitize_bookmark_field( $field, $bookmark->$field, $link_id, $context ); 
     291                } else { 
     292                        if ( isset( $bookmark[$field]) ) 
     293                                $bookmark[$field] = sanitize_bookmark_field( $field, $bookmark[$field], $link_id, $context ); 
     294                } 
     295        } 
     296 
     297        return $bookmark; 
     298} 
     299 
     300/** 
     301 * Sanitizes a bookmark field 
     302 * 
     303 * Sanitizes the bookmark fields based on what the field name is. If the field 
     304 * has a strict value set, then it will be tested for that, else a more generic 
     305 * filtering is applied. After the more strict filter is applied, if the 
     306 * $context is 'raw' then the value is immediately return. 
     307 * 
     308 * Hooks exist for the more generic cases. With the 'edit' context, the 
     309 * 'edit_$field' filter will be called and passed the $value and $bookmark_id 
     310 * respectively. With the 'db' context, the 'pre_$field' filter is called and 
     311 * passed the value. The 'display' context is the final context and has the 
     312 * $field has the filter name and is passed the $value, $bookmark_id, and 
     313 * $context respectively. 
     314 * 
     315 * @since WP 2.3.0 
     316 * 
     317 * @param string $field The bookmark field 
     318 * @param mixed $value The bookmark field value 
     319 * @param int $bookmark_id Bookmark ID 
     320 * @param string $context How to filter the field value. Either 'raw', 'edit', 
     321 *              'attribute', 'js', 'db', or 'display' 
     322 * @return mixed The filtered value 
     323 */ 
     324function sanitize_bookmark_field( $field, $value, $bookmark_id, $context ) { 
     325        switch ( $field ) { 
     326        case 'link_id' : // ints 
     327        case 'link_rating' : 
     328                $value = (int) $value; 
     329                break; 
     330        case 'link_category' : // array( ints ) 
     331                $value = array_map( 'absint', (array) $value ); 
     332                // We return here so that the categories aren't filtered. 
     333                // The 'link_category' filter is for the name of a link category, not an array of a link's link categories 
     334                return $value; 
     335                break; 
     336        case 'link_visible' : // bool stored as Y|N 
     337                $value = preg_replace( '/[^YNyn]/', '', $value ); 
     338                break; 
     339        case 'link_target' : // "enum" 
     340                $targets = array( '_top', '_blank' ); 
     341                if ( ! in_array( $value, $targets ) ) 
     342                        $value = ''; 
     343                break; 
     344        } 
     345 
     346        if ( 'raw' == $context ) 
     347                return $value; 
     348 
     349        if ( 'edit' == $context ) { 
     350                $value = apply_filters( "edit_$field", $value, $bookmark_id ); 
     351 
     352                if ( 'link_notes' == $field ) { 
     353                        $value = esc_html( $value ); // textarea_escaped 
     354                } else { 
     355                        $value = esc_attr( $value ); 
     356                } 
     357        } else if ( 'db' == $context ) { 
     358                $value = apply_filters( "pre_$field", $value ); 
     359        } else { 
     360                // Use display filters by default. 
     361                $value = apply_filters( $field, $value, $bookmark_id, $context ); 
     362 
     363                if ( 'attribute' == $context ) 
     364                        $value = esc_attr( $value ); 
     365                else if ( 'js' == $context ) 
     366                        $value = esc_js( $value ); 
     367        } 
     368 
     369        return $value; 
     370} 
     371 
     372/** 
     373 * Deletes bookmark cache 
     374 * 
     375 * @since WP 2.7.0 
     376 * @uses wp_cache_delete() Deletes the contents of 'get_bookmarks' 
     377 */ 
     378function clean_bookmark_cache( $bookmark_id ) { 
     379        wp_cache_delete( $bookmark_id, 'bookmark' ); 
     380        wp_cache_delete( 'get_bookmarks', 'bookmark' ); 
     381        clean_object_term_cache( $bookmark_id, 'link' ); 
     382} 
  • wp-content/plugins/link-manager/functions.php

     
     1<?php 
     2/** 
     3 * Add sub menu page to the links main menu. 
     4 * 
     5 * This function takes a capability which will be used to determine whether 
     6 * or not a page is included in the menu. 
     7 * 
     8 * The function which is hooked in to handle the output of the page must check 
     9 * that the user has the required capability as well. 
     10 * 
     11 * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected 
     12 * @param string $menu_title The text to be used for the menu 
     13 * @param string $capability The capability required for this menu to be displayed to the user. 
     14 * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) 
     15 * @param callback $function The function to be called to output the content for this page. 
     16 * 
     17 * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. 
     18 */ 
     19function add_links_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { 
     20        return add_submenu_page( 'link-manager.php', $page_title, $menu_title, $capability, $menu_slug, $function ); 
     21} 
     22 
     23/** 
     24 * Display edit bookmark (literally a URL external to blog) link anchor content. 
     25 * 
     26 * @since 2.7.0 
     27 * 
     28 * @param string $link Optional. Anchor text. 
     29 * @param string $before Optional. Display before edit link. 
     30 * @param string $after Optional. Display after edit link. 
     31 * @param int $bookmark Optional. Bookmark ID. 
     32 */ 
     33function edit_bookmark_link( $link = '', $before = '', $after = '', $bookmark = null ) { 
     34        $bookmark = get_bookmark( $bookmark ); 
     35 
     36        if ( !current_user_can('manage_links') ) 
     37                return; 
     38 
     39        if ( empty($link) ) 
     40                $link = __('Edit This'); 
     41 
     42        $link = '<a href="' . get_edit_bookmark_link( $bookmark ) . '" title="' . esc_attr__( 'Edit Link' ) . '">' . $link . '</a>'; 
     43        echo $before . apply_filters( 'edit_bookmark_link', $link, $bookmark->link_id ) . $after; 
     44} 
     45 
     46/** 
     47 * Display edit bookmark (literally a URL external to blog) link. 
     48 * 
     49 * @since 2.7.0 
     50 * 
     51 * @param int $link Optional. Bookmark ID. 
     52 * @return string 
     53 */ 
     54function get_edit_bookmark_link( $link = 0 ) { 
     55        $link = get_bookmark( $link ); 
     56 
     57        if ( !current_user_can('manage_links') ) 
     58                return; 
     59 
     60        $menu_page_url = menu_page_url( 'link-manager.php', false ); 
     61        $location = add_query_arg( array( 'action' => 'edit', 'link_id' => $link->link_id ), $menu_page_url ); 
     62        return apply_filters( 'get_edit_bookmark_link', $location, $link->link_id ); 
     63} 
     64 
     65/** 
     66 * Add a link to using values provided in $_POST. 
     67 * 
     68 * @since WP 2.0.0 
     69 * 
     70 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success. 
     71 */ 
     72function add_link() { 
     73        return edit_link(); 
     74} 
     75 
     76/** 
     77 * Update or insert a link using values provided in $_POST. 
     78 * 
     79 * @since WP 2.0.0 
     80 * 
     81 * @param int $link_id Optional. ID of the link to edit. 
     82 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success. 
     83 */ 
     84function edit_link( $link_id = 0 ) { 
     85        if ( !current_user_can( 'manage_links' ) ) 
     86                wp_die( __( 'Cheatin&#8217; uh?' ) ); 
     87 
     88        $_POST['link_url'] = esc_html( $_POST['link_url'] ); 
     89        $_POST['link_url'] = esc_url($_POST['link_url']); 
     90        $_POST['link_name'] = esc_html( $_POST['link_name'] ); 
     91        $_POST['link_image'] = esc_html( $_POST['link_image'] ); 
     92        $_POST['link_rss'] = esc_url( $_POST['link_rss'] ); 
     93        if ( !isset($_POST['link_visible']) || 'N' != $_POST['link_visible'] ) 
     94                $_POST['link_visible'] = 'Y'; 
     95 
     96        if ( !empty( $link_id ) ) { 
     97                $_POST['link_id'] = $link_id; 
     98                return wp_update_link( $_POST ); 
     99        } else { 
     100                return wp_insert_link( $_POST ); 
     101        } 
     102} 
     103 
     104/** 
     105 * Retrieve the default link for editing. 
     106 * 
     107 * @since WP 2.0.0 
     108 * 
     109 * @return object Default link 
     110 */ 
     111function get_default_link_to_edit() { 
     112        $link = new stdClass; 
     113        if ( isset( $_GET['linkurl'] ) ) 
     114                $link->link_url = esc_url( $_GET['linkurl'] ); 
     115        else 
     116                $link->link_url = ''; 
     117 
     118        if ( isset( $_GET['name'] ) ) 
     119                $link->link_name = esc_attr( $_GET['name'] ); 
     120        else 
     121                $link->link_name = ''; 
     122 
     123        $link->link_visible = 'Y'; 
     124 
     125        return $link; 
     126} 
     127 
     128/** 
     129 * Delete link specified from database 
     130 * 
     131 * @since WP 2.0.0 
     132 * 
     133 * @param int $link_id ID of the link to delete 
     134 * @return bool True 
     135 */ 
     136function wp_delete_link( $link_id ) { 
     137        global $wpdb; 
     138 
     139        do_action( 'delete_link', $link_id ); 
     140 
     141        wp_delete_object_term_relationships( $link_id, 'link_category' ); 
     142 
     143        $wpdb->delete( $wpdb->links, array( 'link_id' => $link_id ) ); 
     144 
     145        do_action( 'deleted_link', $link_id ); 
     146 
     147        clean_bookmark_cache( $link_id ); 
     148 
     149        return true; 
     150} 
     151 
     152/** 
     153 * Retrieves the link categories associated with the link specified. 
     154 * 
     155 * @since WP 2.1.0 
     156 * 
     157 * @param int $link_id Link ID to look up 
     158 * @return array The requested link's categories 
     159 */ 
     160function wp_get_link_cats( $link_id = 0 ) { 
     161 
     162        $cats = wp_get_object_terms( $link_id, 'link_category', array( 'fields' => 'ids' ) ); 
     163 
     164        return array_unique( $cats ); 
     165} 
     166 
     167/** 
     168 * Retrieve link data based on ID. 
     169 * 
     170 * @since WP 2.0.0 
     171 * 
     172 * @param int $link_id ID of link to retrieve 
     173 * @return object Link for editing 
     174 */ 
     175function get_link_to_edit( $link_id ) { 
     176        return get_bookmark( $link_id, OBJECT, 'edit' ); 
     177} 
     178 
     179/** 
     180 * This function inserts/updates links into/in the database. 
     181 * 
     182 * @since WP 2.0.0 
     183 * 
     184 * @param array $linkdata Elements that make up the link to insert. 
     185 * @param bool $wp_error Optional. If true return WP_Error object on failure. 
     186 * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success. 
     187 */ 
     188function wp_insert_link( $linkdata, $wp_error = false ) { 
     189        global $wpdb; 
     190 
     191        $defaults = array( 'link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0 ); 
     192 
     193        $linkdata = wp_parse_args( $linkdata, $defaults ); 
     194        $linkdata = sanitize_bookmark( $linkdata, 'db' ); 
     195 
     196        extract( stripslashes_deep( $linkdata ), EXTR_SKIP ); 
     197 
     198        $update = false; 
     199 
     200        if ( !empty( $link_id ) ) 
     201                $update = true; 
     202 
     203        if ( trim( $link_name ) == '' ) { 
     204                if ( trim( $link_url ) != '' ) { 
     205                        $link_name = $link_url; 
     206                } else { 
     207                        return 0; 
     208                } 
     209        } 
     210 
     211        if ( trim( $link_url ) == '' ) 
     212                return 0; 
     213 
     214        if ( empty( $link_rating ) ) 
     215                $link_rating = 0; 
     216 
     217        if ( empty( $link_image ) ) 
     218                $link_image = ''; 
     219 
     220        if ( empty( $link_target ) ) 
     221                $link_target = ''; 
     222 
     223        if ( empty( $link_visible ) ) 
     224                $link_visible = 'Y'; 
     225 
     226        if ( empty( $link_owner ) ) 
     227                $link_owner = get_current_user_id(); 
     228 
     229        if ( empty( $link_notes ) ) 
     230                $link_notes = ''; 
     231 
     232        if ( empty( $link_description ) ) 
     233                $link_description = ''; 
     234 
     235        if ( empty( $link_rss ) ) 
     236                $link_rss = ''; 
     237 
     238        if ( empty( $link_rel ) ) 
     239                $link_rel = ''; 
     240 
     241        // Make sure we set a valid category 
     242        if ( ! isset( $link_category ) || 0 == count( $link_category ) || !is_array( $link_category ) ) { 
     243                $link_category = array( get_option( 'default_link_category' ) ); 
     244        } 
     245 
     246        if ( $update ) { 
     247                if ( false === $wpdb->update( $wpdb->links, compact( 'link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss' ), compact( 'link_id' ) ) ) { 
     248                        if ( $wp_error ) 
     249                                return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), $wpdb->last_error ); 
     250                        else 
     251                                return 0; 
     252                } 
     253        } else { 
     254                if ( false === $wpdb->insert( $wpdb->links, compact( 'link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss' ) ) ) { 
     255                        if ( $wp_error ) 
     256                                return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), $wpdb->last_error ); 
     257                        else 
     258                                return 0; 
     259                } 
     260                $link_id = (int) $wpdb->insert_id; 
     261        } 
     262 
     263        wp_set_link_cats( $link_id, $link_category ); 
     264 
     265        if ( $update ) 
     266                do_action( 'edit_link', $link_id ); 
     267        else 
     268                do_action( 'add_link', $link_id ); 
     269 
     270        clean_bookmark_cache( $link_id ); 
     271 
     272        return $link_id; 
     273} 
     274 
     275/** 
     276 * Update link with the specified link categories. 
     277 * 
     278 * @since WP 2.1.0 
     279 * 
     280 * @param int $link_id ID of link to update 
     281 * @param array $link_categories Array of categories to 
     282 */ 
     283function wp_set_link_cats( $link_id = 0, $link_categories = array() ) { 
     284        // If $link_categories isn't already an array, make it one: 
     285        if ( !is_array( $link_categories ) || 0 == count( $link_categories ) ) 
     286                $link_categories = array( get_option( 'default_link_category' ) ); 
     287 
     288        $link_categories = array_map( 'intval', $link_categories ); 
     289        $link_categories = array_unique( $link_categories ); 
     290 
     291        wp_set_object_terms( $link_id, $link_categories, 'link_category' ); 
     292 
     293        clean_bookmark_cache( $link_id ); 
     294} 
     295 
     296/** 
     297 * Update a link in the database. 
     298 * 
     299 * @since WP 2.0.0 
     300 * 
     301 * @param array $linkdata Link data to update. 
     302 * @return int|WP_Error Value 0 or WP_Error on failure. The updated link ID on success. 
     303 */ 
     304function wp_update_link( $linkdata ) { 
     305        $link_id = (int) $linkdata['link_id']; 
     306 
     307        $link = get_bookmark( $link_id, ARRAY_A ); 
     308 
     309        // Escape data pulled from DB. 
     310        $link = add_magic_quotes( $link ); 
     311 
     312        // Passed link category list overwrites existing category list if not empty. 
     313        if ( isset( $linkdata['link_category'] ) && is_array( $linkdata['link_category'] ) 
     314                         && 0 != count( $linkdata['link_category'] ) ) 
     315                $link_cats = $linkdata['link_category']; 
     316        else 
     317                $link_cats = $link['link_category']; 
     318 
     319        // Merge old and new fields with new fields overwriting old ones. 
     320        $linkdata = array_merge( $link, $linkdata ); 
     321        $linkdata['link_category'] = $link_cats; 
     322 
     323        return wp_insert_link( $linkdata ); 
     324} 
     325 
     326 
     327/** 
     328 * {@internal Missing Short Description}} 
     329 * 
     330 * @since 2.5.1 
     331 * 
     332 * @param unknown_type $link_id 
     333 */ 
     334function wp_link_category_checklist( $link_id = 0 ) { 
     335        $default = 1; 
     336 
     337        if ( $link_id ) { 
     338                $checked_categories = wp_get_link_cats( $link_id ); 
     339                // No selected categories, strange 
     340                if ( ! count( $checked_categories ) ) 
     341                        $checked_categories[] = $default; 
     342        } else { 
     343                $checked_categories[] = $default; 
     344        } 
     345 
     346        $categories = get_terms( 'link_category', array( 'orderby' => 'name', 'hide_empty' => 0 ) ); 
     347 
     348        if ( empty( $categories ) ) 
     349                return; 
     350 
     351        foreach ( $categories as $category ) { 
     352                $cat_id = $category->term_id; 
     353                $name = esc_html( apply_filters( 'the_category', $category->name ) ); 
     354                $checked = in_array( $cat_id, $checked_categories ) ? ' checked="checked"' : ''; 
     355                echo '<li id="link-category-', $cat_id, '"><label for="in-link-category-', $cat_id, '" class="selectit"><input value="', $cat_id, '" type="checkbox" name="link_category[]" id="in-link-category-', $cat_id, '"', $checked, '/> ', $name, "</label></li>"; 
     356        } 
     357} 
     358 No newline at end of file 
  • wp-settings.php

     
    125125require( ABSPATH . WPINC . '/comment-template.php' ); 
    126126require( ABSPATH . WPINC . '/rewrite.php' ); 
    127127require( ABSPATH . WPINC . '/feed.php' ); 
    128 require( ABSPATH . WPINC . '/bookmark.php' ); 
    129 require( ABSPATH . WPINC . '/bookmark-template.php' ); 
    130128require( ABSPATH . WPINC . '/kses.php' ); 
    131129require( ABSPATH . WPINC . '/cron.php' ); 
    132130require( ABSPATH . WPINC . '/deprecated.php' ); 
  • wp-admin/users.php

     
    212212        ?> 
    213213        </ul> 
    214214<?php if ( $go_delete ) : ?> 
    215         <fieldset><p><legend><?php echo _n( 'What should be done with posts and links owned by this user?', 'What should be done with posts and links owned by these users?', $go_delete ); ?></legend></p> 
     215        <fieldset><p><legend><?php echo _n( 'What should be done with posts owned by this user?', 'What should be done with posts owned by these users?', $go_delete ); ?></legend></p> 
    216216        <ul style="list-style:none;"> 
    217217                <li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" checked="checked" /> 
    218                 <?php _e('Delete all posts and links.'); ?></label></li> 
     218                <?php _e('Delete all posts.'); ?></label></li> 
    219219                <li><input type="radio" id="delete_option1" name="delete_option" value="reassign" /> 
    220                 <?php echo '<label for="delete_option1">'.__('Attribute all posts and links to:').'</label>'; 
     220                <?php echo '<label for="delete_option1">'.__('Attribute all posts to:').'</label>'; 
    221221                wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?></li> 
    222222        </ul></fieldset> 
    223223        <input type="hidden" name="action" value="dodelete" /> 
  • wp-admin/admin-ajax.php

     
    4242); 
    4343 
    4444$core_actions_post = array( 
    45         'oembed-cache', 'image-editor', 'delete-comment', 'delete-tag', 'delete-link', 
     45        'oembed-cache', 'image-editor', 'delete-comment', 'delete-tag', 
    4646        'delete-meta', 'delete-post', 'trash-post', 'untrash-post', 'delete-page', 'dim-comment', 
    47         'add-link-category', 'add-tag', 'get-tagcloud', 'get-comments', 'replyto-comment', 
     47        'add-tag', 'get-tagcloud', 'get-comments', 'replyto-comment', 
    4848        'edit-comment', 'add-menu-item', 'add-meta', 'add-user', 'autosave', 'closed-postboxes', 
    4949        'hidden-columns', 'update-welcome-panel', 'menu-get-metabox', 'wp-link-ajax', 
    5050        'menu-locations-save', 'menu-quick-search', 'meta-box-order', 'get-permalink', 
  • wp-admin/includes/plugin.php

     
    12101210} 
    12111211 
    12121212/** 
    1213  * Add sub menu page to the links main menu. 
    1214  * 
    1215  * This function takes a capability which will be used to determine whether 
    1216  * or not a page is included in the menu. 
    1217  * 
    1218  * The function which is hooked in to handle the output of the page must check 
    1219  * that the user has the required capability as well. 
    1220  * 
    1221  * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected 
    1222  * @param string $menu_title The text to be used for the menu 
    1223  * @param string $capability The capability required for this menu to be displayed to the user. 
    1224  * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) 
    1225  * @param callback $function The function to be called to output the content for this page. 
    1226  * 
    1227  * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. 
    1228  */ 
    1229 function add_links_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { 
    1230         return add_submenu_page( 'link-manager.php', $page_title, $menu_title, $capability, $menu_slug, $function ); 
    1231 } 
    1232  
    1233 /** 
    12341213 * Add sub menu page to the pages main menu. 
    12351214 * 
    12361215 * This function takes a capability which will be used to determine whether 
  • wp-admin/includes/list-table.php

     
    2525                'WP_Users_List_Table' => 'users', 
    2626                'WP_Comments_List_Table' => 'comments', 
    2727                'WP_Post_Comments_List_Table' => 'comments', 
    28                 'WP_Links_List_Table' => 'links', 
    2928                'WP_Plugin_Install_List_Table' => 'plugin-install', 
    3029                'WP_Themes_List_Table' => 'themes', 
    3130                'WP_Theme_Install_List_Table' => array( 'themes', 'theme-install' ), 
  • wp-admin/includes/bookmark.php

     
    1 <?php 
    2 /** 
    3  * WordPress Bookmark Administration API 
    4  * 
    5  * @package WordPress 
    6  * @subpackage Administration 
    7  */ 
    8  
    9 /** 
    10  * Add a link to using values provided in $_POST. 
    11  * 
    12  * @since 2.0.0 
    13  * 
    14  * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success. 
    15  */ 
    16 function add_link() { 
    17         return edit_link(); 
    18 } 
    19  
    20 /** 
    21  * Update or insert a link using values provided in $_POST. 
    22  * 
    23  * @since 2.0.0 
    24  * 
    25  * @param int $link_id Optional. ID of the link to edit. 
    26  * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success. 
    27  */ 
    28 function edit_link( $link_id = 0 ) { 
    29         if ( !current_user_can( 'manage_links' ) ) 
    30                 wp_die( __( 'Cheatin&#8217; uh?' ) ); 
    31  
    32         $_POST['link_url'] = esc_html( $_POST['link_url'] ); 
    33         $_POST['link_url'] = esc_url($_POST['link_url']); 
    34         $_POST['link_name'] = esc_html( $_POST['link_name'] ); 
    35         $_POST['link_image'] = esc_html( $_POST['link_image'] ); 
    36         $_POST['link_rss'] = esc_url($_POST['link_rss']); 
    37         if ( !isset($_POST['link_visible']) || 'N' != $_POST['link_visible'] ) 
    38                 $_POST['link_visible'] = 'Y'; 
    39  
    40         if ( !empty( $link_id ) ) { 
    41                 $_POST['link_id'] = $link_id; 
    42                 return wp_update_link( $_POST ); 
    43         } else { 
    44                 return wp_insert_link( $_POST ); 
    45         } 
    46 } 
    47  
    48 /** 
    49  * Retrieve the default link for editing. 
    50  * 
    51  * @since 2.0.0 
    52  * 
    53  * @return object Default link 
    54  */ 
    55 function get_default_link_to_edit() { 
    56         $link = new stdClass; 
    57         if ( isset( $_GET['linkurl'] ) ) 
    58                 $link->link_url = esc_url( $_GET['linkurl'] ); 
    59         else 
    60                 $link->link_url = ''; 
    61  
    62         if ( isset( $_GET['name'] ) ) 
    63                 $link->link_name = esc_attr( $_GET['name'] ); 
    64         else 
    65                 $link->link_name = ''; 
    66  
    67         $link->link_visible = 'Y'; 
    68  
    69         return $link; 
    70 } 
    71  
    72 /** 
    73  * Delete link specified from database 
    74  * 
    75  * @since 2.0.0 
    76  * 
    77  * @param int $link_id ID of the link to delete 
    78  * @return bool True 
    79  */ 
    80 function wp_delete_link( $link_id ) { 
    81         global $wpdb; 
    82  
    83         do_action( 'delete_link', $link_id ); 
    84  
    85         wp_delete_object_term_relationships( $link_id, 'link_category' ); 
    86  
    87         $wpdb->delete( $wpdb->links, array( 'link_id' => $link_id ) ); 
    88  
    89         do_action( 'deleted_link', $link_id ); 
    90  
    91         clean_bookmark_cache( $link_id ); 
    92  
    93         return true; 
    94 } 
    95  
    96 /** 
    97  * Retrieves the link categories associated with the link specified. 
    98  * 
    99  * @since 2.1.0 
    100  * 
    101  * @param int $link_id Link ID to look up 
    102  * @return array The requested link's categories 
    103  */ 
    104 function wp_get_link_cats( $link_id = 0 ) { 
    105  
    106         $cats = wp_get_object_terms( $link_id, 'link_category', array('fields' => 'ids') ); 
    107  
    108         return array_unique( $cats ); 
    109 } 
    110  
    111 /** 
    112  * Retrieve link data based on ID. 
    113  * 
    114  * @since 2.0.0 
    115  * 
    116  * @param int $link_id ID of link to retrieve 
    117  * @return object Link for editing 
    118  */ 
    119 function get_link_to_edit( $link_id ) { 
    120         return get_bookmark( $link_id, OBJECT, 'edit' ); 
    121 } 
    122  
    123 /** 
    124  * This function inserts/updates links into/in the database. 
    125  * 
    126  * @since 2.0.0 
    127  * 
    128  * @param array $linkdata Elements that make up the link to insert. 
    129  * @param bool $wp_error Optional. If true return WP_Error object on failure. 
    130  * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success. 
    131  */ 
    132 function wp_insert_link( $linkdata, $wp_error = false ) { 
    133         global $wpdb; 
    134  
    135         $defaults = array( 'link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0 ); 
    136  
    137         $linkdata = wp_parse_args( $linkdata, $defaults ); 
    138         $linkdata = sanitize_bookmark( $linkdata, 'db' ); 
    139  
    140         extract( stripslashes_deep( $linkdata ), EXTR_SKIP ); 
    141  
    142         $update = false; 
    143  
    144         if ( !empty( $link_id ) ) 
    145                 $update = true; 
    146  
    147         if ( trim( $link_name ) == '' ) { 
    148                 if ( trim( $link_url ) != '' ) { 
    149                         $link_name = $link_url; 
    150                 } else { 
    151                         return 0; 
    152                 } 
    153         } 
    154  
    155         if ( trim( $link_url ) == '' ) 
    156                 return 0; 
    157  
    158         if ( empty( $link_rating ) ) 
    159                 $link_rating = 0; 
    160  
    161         if ( empty( $link_image ) ) 
    162                 $link_image = ''; 
    163  
    164         if ( empty( $link_target ) ) 
    165                 $link_target = ''; 
    166  
    167         if ( empty( $link_visible ) ) 
    168                 $link_visible = 'Y'; 
    169  
    170         if ( empty( $link_owner ) ) 
    171                 $link_owner = get_current_user_id(); 
    172  
    173         if ( empty( $link_notes ) ) 
    174                 $link_notes = ''; 
    175  
    176         if ( empty( $link_description ) ) 
    177                 $link_description = ''; 
    178  
    179         if ( empty( $link_rss ) ) 
    180                 $link_rss = ''; 
    181  
    182         if ( empty( $link_rel ) ) 
    183                 $link_rel = ''; 
    184  
    185         // Make sure we set a valid category 
    186         if ( ! isset( $link_category ) || 0 == count( $link_category ) || !is_array( $link_category ) ) { 
    187                 $link_category = array( get_option( 'default_link_category' ) ); 
    188         } 
    189  
    190         if ( $update ) { 
    191                 if ( false === $wpdb->update( $wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id') ) ) { 
    192                         if ( $wp_error ) 
    193                                 return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), $wpdb->last_error ); 
    194                         else 
    195                                 return 0; 
    196                 } 
    197         } else { 
    198                 if ( false === $wpdb->insert( $wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss') ) ) { 
    199                         if ( $wp_error ) 
    200                                 return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), $wpdb->last_error ); 
    201                         else 
    202                                 return 0; 
    203                 } 
    204                 $link_id = (int) $wpdb->insert_id; 
    205         } 
    206  
    207         wp_set_link_cats( $link_id, $link_category ); 
    208  
    209         if ( $update ) 
    210                 do_action( 'edit_link', $link_id ); 
    211         else 
    212                 do_action( 'add_link', $link_id ); 
    213  
    214         clean_bookmark_cache( $link_id ); 
    215  
    216         return $link_id; 
    217 } 
    218  
    219 /** 
    220  * Update link with the specified link categories. 
    221  * 
    222  * @since 2.1.0 
    223  * 
    224  * @param int $link_id ID of link to update 
    225  * @param array $link_categories Array of categories to 
    226  */ 
    227 function wp_set_link_cats( $link_id = 0, $link_categories = array() ) { 
    228         // If $link_categories isn't already an array, make it one: 
    229         if ( !is_array( $link_categories ) || 0 == count( $link_categories ) ) 
    230                 $link_categories = array( get_option( 'default_link_category' ) ); 
    231  
    232         $link_categories = array_map( 'intval', $link_categories ); 
    233         $link_categories = array_unique( $link_categories ); 
    234  
    235         wp_set_object_terms( $link_id, $link_categories, 'link_category' ); 
    236  
    237         clean_bookmark_cache( $link_id ); 
    238 } 
    239  
    240 /** 
    241  * Update a link in the database. 
    242  * 
    243  * @since 2.0.0 
    244  * 
    245  * @param array $linkdata Link data to update. 
    246  * @return int|WP_Error Value 0 or WP_Error on failure. The updated link ID on success. 
    247  */ 
    248 function wp_update_link( $linkdata ) { 
    249         $link_id = (int) $linkdata['link_id']; 
    250  
    251         $link = get_bookmark( $link_id, ARRAY_A ); 
    252  
    253         // Escape data pulled from DB. 
    254         $link = add_magic_quotes( $link ); 
    255  
    256         // Passed link category list overwrites existing category list if not empty. 
    257         if ( isset( $linkdata['link_category'] ) && is_array( $linkdata['link_category'] ) 
    258                          && 0 != count( $linkdata['link_category'] ) ) 
    259                 $link_cats = $linkdata['link_category']; 
    260         else 
    261                 $link_cats = $link['link_category']; 
    262  
    263         // Merge old and new fields with new fields overwriting old ones. 
    264         $linkdata = array_merge( $link, $linkdata ); 
    265         $linkdata['link_category'] = $link_cats; 
    266  
    267         return wp_insert_link( $linkdata ); 
    268 } 
  • wp-admin/includes/class-wp-links-list-table.php

     
    1 <?php 
    2 /** 
    3  * Links Manager List Table class. 
    4  * 
    5  * @package WordPress 
    6  * @subpackage List_Table 
    7  * @since 3.1.0 
    8  * @access private 
    9  */ 
    10 class WP_Links_List_Table extends WP_List_Table { 
    11  
    12         function __construct() { 
    13                 parent::__construct( array( 
    14                         'plural' => 'bookmarks', 
    15                 ) ); 
    16         } 
    17  
    18         function ajax_user_can() { 
    19                 return current_user_can( 'manage_links' ); 
    20         } 
    21  
    22         function prepare_items() { 
    23                 global $cat_id, $s, $orderby, $order; 
    24  
    25                 wp_reset_vars( array( 'action', 'cat_id', 'linkurl', 'name', 'image', 'description', 'visible', 'target', 'category', 'link_id', 'submit', 'orderby', 'order', 'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]', 's' ) ); 
    26  
    27                 $args = array( 'hide_invisible' => 0, 'hide_empty' => 0 ); 
    28  
    29                 if ( 'all' != $cat_id ) 
    30                         $args['category'] = $cat_id; 
    31                 if ( !empty( $s ) ) 
    32                         $args['search'] = $s; 
    33                 if ( !empty( $orderby ) ) 
    34                         $args['orderby'] = $orderby; 
    35                 if ( !empty( $order ) ) 
    36                         $args['order'] = $order; 
    37  
    38                 $this->items = get_bookmarks( $args ); 
    39         } 
    40  
    41         function no_items() { 
    42                 _e( 'No links found.' ); 
    43         } 
    44  
    45         function get_bulk_actions() { 
    46                 $actions = array(); 
    47                 $actions['delete'] = __( 'Delete' ); 
    48  
    49                 return $actions; 
    50         } 
    51  
    52         function extra_tablenav( $which ) { 
    53                 global $cat_id; 
    54  
    55                 if ( 'top' != $which ) 
    56                         return; 
    57 ?> 
    58                 <div class="alignleft actions"> 
    59 <?php 
    60                         $dropdown_options = array( 
    61                                 'selected' => $cat_id, 
    62                                 'name' => 'cat_id', 
    63                                 'taxonomy' => 'link_category', 
    64                                 'show_option_all' => __( 'View all categories' ), 
    65                                 'hide_empty' => true, 
    66                                 'hierarchical' => 1, 
    67                                 'show_count' => 0, 
    68                                 'orderby' => 'name', 
    69                         ); 
    70                         wp_dropdown_categories( $dropdown_options ); 
    71                         submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) ); 
    72 ?> 
    73                 </div> 
    74 <?php 
    75         } 
    76  
    77         function get_columns() { 
    78                 return array( 
    79                         'cb'         => '<input type="checkbox" />', 
    80                         'name'       => _x( 'Name', 'link name' ), 
    81                         'url'        => __( 'URL' ), 
    82                         'categories' => __( 'Categories' ), 
    83                         'rel'        => __( 'Relationship' ), 
    84                         'visible'    => __( 'Visible' ), 
    85                         'rating'     => __( 'Rating' ) 
    86                 ); 
    87         } 
    88  
    89         function get_sortable_columns() { 
    90                 return array( 
    91                         'name'    => 'name', 
    92                         'url'     => 'url', 
    93                         'visible' => 'visible', 
    94                         'rating'  => 'rating' 
    95                 ); 
    96         } 
    97  
    98         function display_rows() { 
    99                 global $cat_id; 
    100  
    101                 $alt = 0; 
    102  
    103                 foreach ( $this->items as $link ) { 
    104                         $link = sanitize_bookmark( $link ); 
    105                         $link->link_name = esc_attr( $link->link_name ); 
    106                         $link->link_category = wp_get_link_cats( $link->link_id ); 
    107  
    108                         $short_url = url_shorten( $link->link_url ); 
    109  
    110                         $visible = ( $link->link_visible == 'Y' ) ? __( 'Yes' ) : __( 'No' ); 
    111                         $rating  = $link->link_rating; 
    112                         $style = ( $alt++ % 2 ) ? '' : ' class="alternate"'; 
    113  
    114                         $edit_link = get_edit_bookmark_link( $link ); 
    115 ?> 
    116                 <tr id="link-<?php echo $link->link_id; ?>" valign="middle" <?php echo $style; ?>> 
    117 <?php 
    118  
    119                         list( $columns, $hidden ) = $this->get_column_info(); 
    120  
    121                         foreach ( $columns as $column_name => $column_display_name ) { 
    122                                 $class = "class='column-$column_name'"; 
    123  
    124                                 $style = ''; 
    125                                 if ( in_array( $column_name, $hidden ) ) 
    126                                         $style = ' style="display:none;"'; 
    127  
    128                                 $attributes = $class . $style; 
    129  
    130                                 switch ( $column_name ) { 
    131                                         case 'cb': ?> 
    132                                                 <th scope="row" class="check-column"> 
    133                                                         <label class="screen-reader-text" for="cb-select-<?php echo $link->link_id; ?>"><?php echo sprintf( __( 'Select %s' ), $link->link_name ); ?></label> 
    134                                                         <input type="checkbox" name="linkcheck[]" id="cb-select-<?php echo $link->link_id; ?>" value="<?php echo esc_attr( $link->link_id ); ?>" /> 
    135                                                 </th> 
    136                                                 <?php 
    137                                                 break; 
    138  
    139                                         case 'name': 
    140                                                 echo "<td $attributes><strong><a class='row-title' href='$edit_link' title='" . esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $link->link_name ) ) . "'>$link->link_name</a></strong><br />"; 
    141  
    142                                                 $actions = array(); 
    143                                                 $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>'; 
    144                                                 $actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url( "link.php?action=delete&amp;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>"; 
    145                                                 echo $this->row_actions( $actions ); 
    146  
    147                                                 echo '</td>'; 
    148                                                 break; 
    149                                         case 'url': 
    150                                                 echo "<td $attributes><a href='$link->link_url' title='". esc_attr( sprintf( __( 'Visit %s' ), $link->link_name ) )."'>$short_url</a></td>"; 
    151                                                 break; 
    152                                         case 'categories': 
    153                                                 ?><td <?php echo $attributes ?>><?php 
    154                                                 $cat_names = array(); 
    155                                                 foreach ( $link->link_category as $category ) { 
    156                                                         $cat = get_term( $category, 'link_category', OBJECT, 'display' ); 
    157                                                         if ( is_wp_error( $cat ) ) 
    158                                                                 echo $cat->get_error_message(); 
    159                                                         $cat_name = $cat->name; 
    160                                                         if ( $cat_id != $category ) 
    161                                                                 $cat_name = "<a href='link-manager.php?cat_id=$category'>$cat_name</a>"; 
    162                                                         $cat_names[] = $cat_name; 
    163                                                 } 
    164                                                 echo implode( ', ', $cat_names ); 
    165                                                 ?></td><?php 
    166                                                 break; 
    167                                         case 'rel': 
    168                                                 ?><td <?php echo $attributes ?>><?php echo empty( $link->link_rel ) ? '<br />' : $link->link_rel; ?></td><?php 
    169                                                 break; 
    170                                         case 'visible': 
    171                                                 ?><td <?php echo $attributes ?>><?php echo $visible; ?></td><?php 
    172                                                 break; 
    173                                         case 'rating': 
    174                                                 ?><td <?php echo $attributes ?>><?php echo $rating; ?></td><?php 
    175                                                 break; 
    176                                         default: 
    177                                                 ?> 
    178                                                 <td <?php echo $attributes ?>><?php do_action( 'manage_link_custom_column', $column_name, $link->link_id ); ?></td> 
    179                                                 <?php 
    180                                                 break; 
    181                                 } 
    182                         } 
    183 ?> 
    184                 </tr> 
    185 <?php 
    186                 } 
    187         } 
    188 } 
  • wp-admin/includes/class-wp-terms-list-table.php

     
    102102                        'slug'        => __( 'Slug' ), 
    103103                ); 
    104104 
    105                 if ( 'link_category' == $taxonomy ) { 
    106                         $columns['links'] = __( 'Links' ); 
    107                 } else { 
     105                if ( $post_type ) { 
    108106                        $post_type_object = get_post_type_object( $post_type ); 
    109107                        $columns['posts'] = $post_type_object ? $post_type_object->labels->name : __( 'Posts' ); 
    110108                } 
    111109 
     110                $columns = apply_filters( 'terms_list_table_columns', $columns ); 
     111                 
    112112                return $columns; 
    113113        } 
    114114 
  • wp-admin/includes/ajax-actions.php

     
    425425                wp_die( 0 ); 
    426426} 
    427427 
    428 function wp_ajax_delete_link() { 
    429         $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; 
    430  
    431         check_ajax_referer( "delete-bookmark_$id" ); 
    432         if ( !current_user_can( 'manage_links' ) ) 
    433                 wp_die( -1 ); 
    434  
    435         $link = get_bookmark( $id ); 
    436         if ( !$link || is_wp_error( $link ) ) 
    437                 wp_die( 1 ); 
    438  
    439         if ( wp_delete_link( $id ) ) 
    440                 wp_die( 1 ); 
    441         else 
    442                 wp_die( 0 ); 
    443 } 
    444  
    445428function wp_ajax_delete_meta() { 
    446429        $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; 
    447430 
     
    558541        wp_die( 0 ); 
    559542} 
    560543 
    561 function wp_ajax_add_link_category( $action ) { 
    562         if ( empty( $action ) ) 
    563                 $action = 'add-link-category'; 
    564         check_ajax_referer( $action ); 
    565         if ( !current_user_can( 'manage_categories' ) ) 
    566                 wp_die( -1 ); 
    567         $names = explode(',', $_POST['newcat']); 
    568         $x = new WP_Ajax_Response(); 
    569         foreach ( $names as $cat_name ) { 
    570                 $cat_name = trim($cat_name); 
    571                 $slug = sanitize_title($cat_name); 
    572                 if ( '' === $slug ) 
    573                         continue; 
    574                 if ( !$cat_id = term_exists( $cat_name, 'link_category' ) ) 
    575                         $cat_id = wp_insert_term( $cat_name, 'link_category' ); 
    576                 if ( is_wp_error( $cat_id ) ) 
    577                         continue; 
    578                 else if ( is_array( $cat_id ) ) 
    579                         $cat_id = $cat_id['term_id']; 
    580                 $cat_name = esc_html(stripslashes($cat_name)); 
    581                 $x->add( array( 
    582                         'what' => 'link-category', 
    583                         'id' => $cat_id, 
    584                         'data' => "<li id='link-category-$cat_id'><label for='in-link-category-$cat_id' class='selectit'><input value='" . esc_attr($cat_id) . "' type='checkbox' checked='checked' name='link_category[]' id='in-link-category-$cat_id'/> $cat_name</label></li>", 
    585                         'position' => -1 
    586                 ) ); 
    587         } 
    588         $x->send(); 
    589 } 
    590  
    591544function wp_ajax_add_tag() { 
    592545        global $wp_list_table; 
    593546 
  • wp-admin/includes/upgrade.php

     
    123123        $wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $cat_id, 'taxonomy' => 'category', 'description' => '', 'parent' => 0, 'count' => 1)); 
    124124        $cat_tt_id = $wpdb->insert_id; 
    125125 
    126         // Default link category 
    127         $cat_name = __('Blogroll'); 
    128         /* translators: Default link category slug */ 
    129         $cat_slug = sanitize_title(_x('Blogroll', 'Default link category slug')); 
    130  
    131         if ( global_terms_enabled() ) { 
    132                 $blogroll_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM {$wpdb->sitecategories} WHERE category_nicename = %s", $cat_slug ) ); 
    133                 if ( $blogroll_id == null ) { 
    134                         $wpdb->insert( $wpdb->sitecategories, array('cat_ID' => 0, 'cat_name' => $cat_name, 'category_nicename' => $cat_slug, 'last_updated' => current_time('mysql', true)) ); 
    135                         $blogroll_id = $wpdb->insert_id; 
    136                 } 
    137                 update_option('default_link_category', $blogroll_id); 
    138         } else { 
    139                 $blogroll_id = 2; 
    140         } 
    141  
    142         $wpdb->insert( $wpdb->terms, array('term_id' => $blogroll_id, 'name' => $cat_name, 'slug' => $cat_slug, 'term_group' => 0) ); 
    143         $wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $blogroll_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 7)); 
    144         $blogroll_tt_id = $wpdb->insert_id; 
    145  
    146         // Now drop in some default links 
    147         $default_links = array(); 
    148         $default_links[] = array(       'link_url' => __( 'http://codex.wordpress.org/' ), 
    149                                                                 'link_name' => __( 'Documentation' ), 
    150                                                                 'link_rss' => '', 
    151                                                                 'link_notes' => ''); 
    152  
    153         $default_links[] = array(       'link_url' => __( 'http://wordpress.org/news/' ), 
    154                                                                 'link_name' => __( 'WordPress Blog' ), 
    155                                                                 'link_rss' => __( 'http://wordpress.org/news/feed/' ), 
    156                                                                 'link_notes' => ''); 
    157  
    158         $default_links[] = array(       'link_url' => __( 'http://wordpress.org/support/' ), 
    159                                                                 'link_name' => _x( 'Support Forums', 'default link' ), 
    160                                                                 'link_rss' => '', 
    161                                                                 'link_notes' =>''); 
    162  
    163         $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/plugins/', 
    164                                                                 'link_name' => _x( 'Plugins', 'Default link to wordpress.org/extend/plugins/' ), 
    165                                                                 'link_rss' => '', 
    166                                                                 'link_notes' =>''); 
    167  
    168         $default_links[] = array(       'link_url' => 'http://wordpress.org/extend/themes/', 
    169                                                                 'link_name' => _x( 'Themes', 'Default link to wordpress.org/extend/themes/' ), 
    170                                                                 'link_rss' => '', 
    171                                                                 'link_notes' =>''); 
    172  
    173         $default_links[] = array(       'link_url' => __( 'http://wordpress.org/support/forum/requests-and-feedback' ), 
    174                                                                 'link_name' => __( 'Feedback' ), 
    175                                                                 'link_rss' => '', 
    176                                                                 'link_notes' =>''); 
    177  
    178         $default_links[] = array(       'link_url' => __( 'http://planet.wordpress.org/' ), 
    179                                                                 'link_name' => __( 'WordPress Planet' ), 
    180                                                                 'link_rss' => '', 
    181                                                                 'link_notes' =>''); 
    182  
    183         foreach ( $default_links as $link ) { 
    184                 $wpdb->insert( $wpdb->links, $link); 
    185                 $wpdb->insert( $wpdb->term_relationships, array('term_taxonomy_id' => $blogroll_tt_id, 'object_id' => $wpdb->insert_id) ); 
    186         } 
    187  
    188126        // First post 
    189127        $now = date('Y-m-d H:i:s'); 
    190128        $now_gmt = gmdate('Y-m-d H:i:s'); 
     
    303241                if ( !is_super_admin( $user_id ) && $user_id != 1 ) 
    304242                        $wpdb->delete( $wpdb->usermeta, array( 'user_id' => $user_id , 'meta_key' => $wpdb->base_prefix.'1_capabilities' ) ); 
    305243        } 
     244         
     245        do_action( 'install_defaults' ); 
    306246} 
    307247endif; 
    308248 
  • wp-admin/includes/admin.php

     
    1313        load_textdomain( 'default', WP_LANG_DIR . '/admin-' . get_locale() . '.mo' ); 
    1414} 
    1515 
    16 /** WordPress Bookmark Administration API */ 
    17 require_once(ABSPATH . 'wp-admin/includes/bookmark.php'); 
    18  
    1916/** WordPress Comment Administration API */ 
    2017require_once(ABSPATH . 'wp-admin/includes/comment.php'); 
    2118 
  • wp-admin/includes/deprecated.php

     
    7575/** 
    7676 * {@internal Missing Short Description}} 
    7777 * 
    78  * @since 2.1.0 
    79  * @deprecated 2.6.0 
    80  * @deprecated Use wp_link_category_checklist() 
    81  * @see wp_link_category_checklist() 
    82  * 
    83  * @param unknown_type $default 
    84  */ 
    85 function dropdown_link_categories( $default = 0 ) { 
    86         _deprecated_function( __FUNCTION__, '2.6', 'wp_link_category_checklist()' ); 
    87         global $link_id; 
    88         wp_link_category_checklist( $link_id ); 
    89 } 
    90  
    91 /** 
    92  * {@internal Missing Short Description}} 
    93  * 
    9478 * @since 1.2.0 
    9579 * @deprecated 3.0.0 
    9680 * @deprecated Use wp_dropdown_categories() 
  • wp-admin/includes/meta-boxes.php

     
    590590<?php 
    591591} 
    592592 
    593 // -- Link related Meta Boxes 
    594  
    595593/** 
    596  * Display link create form fields. 
    597  * 
    598  * @since 2.7.0 
    599  * 
    600  * @param object $link 
    601  */ 
    602 function link_submit_meta_box($link) { 
    603 ?> 
    604 <div class="submitbox" id="submitlink"> 
    605  
    606 <div id="minor-publishing"> 
    607  
    608 <?php // Hidden submit button early on so that the browser chooses the right button when form is submitted with Return key ?> 
    609 <div style="display:none;"> 
    610 <?php submit_button( __( 'Save' ), 'button', 'save', false ); ?> 
    611 </div> 
    612  
    613 <div id="minor-publishing-actions"> 
    614 <div id="preview-action"> 
    615 <?php if ( !empty($link->link_id) ) { ?> 
    616         <a class="preview button" href="<?php echo $link->link_url; ?>" target="_blank"><?php _e('Visit Link'); ?></a> 
    617 <?php } ?> 
    618 </div> 
    619 <div class="clear"></div> 
    620 </div> 
    621  
    622 <div id="misc-publishing-actions"> 
    623 <div class="misc-pub-section"> 
    624         <label for="link_private" class="selectit"><input id="link_private" name="link_visible" type="checkbox" value="N" <?php checked($link->link_visible, 'N'); ?> /> <?php _e('Keep this link private') ?></label> 
    625 </div> 
    626 </div> 
    627  
    628 </div> 
    629  
    630 <div id="major-publishing-actions"> 
    631 <?php do_action('post_submitbox_start'); ?> 
    632 <div id="delete-action"> 
    633 <?php 
    634 if ( !empty($_GET['action']) && 'edit' == $_GET['action'] && current_user_can('manage_links') ) { ?> 
    635         <a class="submitdelete deletion" href="<?php echo wp_nonce_url("link.php?action=delete&amp;link_id=$link->link_id", 'delete-bookmark_' . $link->link_id); ?>" onclick="if ( confirm('<?php echo 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;"><?php _e('Delete'); ?></a> 
    636 <?php } ?> 
    637 </div> 
    638  
    639 <div id="publishing-action"> 
    640 <?php if ( !empty($link->link_id) ) { ?> 
    641         <input name="save" type="submit" class="button-primary" id="publish" accesskey="p" value="<?php esc_attr_e('Update Link') ?>" /> 
    642 <?php } else { ?> 
    643         <input name="save" type="submit" class="button-primary" id="publish" accesskey="p" value="<?php esc_attr_e('Add Link') ?>" /> 
    644 <?php } ?> 
    645 </div> 
    646 <div class="clear"></div> 
    647 </div> 
    648 <?php do_action('submitlink_box'); ?> 
    649 <div class="clear"></div> 
    650 </div> 
    651 <?php 
    652 } 
    653  
    654 /** 
    655  * Display link categories form fields. 
    656  * 
    657  * @since 2.6.0 
    658  * 
    659  * @param object $link 
    660  */ 
    661 function link_categories_meta_box($link) { 
    662 ?> 
    663 <div id="taxonomy-linkcategory" class="categorydiv"> 
    664         <ul id="category-tabs" class="category-tabs"> 
    665                 <li class="tabs"><a href="#categories-all"><?php _e( 'All Categories' ); ?></a></li> 
    666                 <li class="hide-if-no-js"><a href="#categories-pop"><?php _e( 'Most Used' ); ?></a></li> 
    667         </ul> 
    668  
    669         <div id="categories-all" class="tabs-panel"> 
    670                 <ul id="categorychecklist" class="list:category categorychecklist form-no-clear"> 
    671                         <?php 
    672                         if ( isset($link->link_id) ) 
    673                                 wp_link_category_checklist($link->link_id); 
    674                         else 
    675                                 wp_link_category_checklist(); 
    676                         ?> 
    677                 </ul> 
    678         </div> 
    679  
    680         <div id="categories-pop" class="tabs-panel" style="display: none;"> 
    681                 <ul id="categorychecklist-pop" class="categorychecklist form-no-clear"> 
    682                         <?php wp_popular_terms_checklist('link_category'); ?> 
    683                 </ul> 
    684         </div> 
    685  
    686         <div id="category-adder" class="wp-hidden-children"> 
    687                 <h4><a id="category-add-toggle" href="#category-add"><?php _e( '+ Add New Category' ); ?></a></h4> 
    688                 <p id="link-category-add" class="wp-hidden-child"> 
    689                         <label class="screen-reader-text" for="newcat"><?php _e( '+ Add New Category' ); ?></label> 
    690                         <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php esc_attr_e( 'New category name' ); ?>" aria-required="true" /> 
    691                         <input type="button" id="category-add-submit" class="add:categorychecklist:linkcategorydiv button" value="<?php esc_attr_e( 'Add' ); ?>" /> 
    692                         <?php wp_nonce_field( 'add-link-category', '_ajax_nonce', false ); ?> 
    693                         <span id="category-ajax-response"></span> 
    694                 </p> 
    695         </div> 
    696 </div> 
    697 <?php 
    698 } 
    699  
    700 /** 
    701  * Display form fields for changing link target. 
    702  * 
    703  * @since 2.6.0 
    704  * 
    705  * @param object $link 
    706  */ 
    707 function link_target_meta_box($link) { ?> 
    708 <fieldset><legend class="screen-reader-text"><span><?php _e('Target') ?></span></legend> 
    709 <p><label for="link_target_blank" class="selectit"> 
    710 <input id="link_target_blank" type="radio" name="link_target" value="_blank" <?php echo ( isset( $link->link_target ) && ($link->link_target == '_blank') ? 'checked="checked"' : ''); ?> /> 
    711 <?php _e('<code>_blank</code> &mdash; new window or tab.'); ?></label></p> 
    712 <p><label for="link_target_top" class="selectit"> 
    713 <input id="link_target_top" type="radio" name="link_target" value="_top" <?php echo ( isset( $link->link_target ) && ($link->link_target == '_top') ? 'checked="checked"' : ''); ?> /> 
    714 <?php _e('<code>_top</code> &mdash; current window or tab, with no frames.'); ?></label></p> 
    715 <p><label for="link_target_none" class="selectit"> 
    716 <input id="link_target_none" type="radio" name="link_target" value="" <?php echo ( isset( $link->link_target ) && ($link->link_target == '') ? 'checked="checked"' : ''); ?> /> 
    717 <?php _e('<code>_none</code> &mdash; same window or tab.'); ?></label></p> 
    718 </fieldset> 
    719 <p><?php _e('Choose the target frame for your link.'); ?></p> 
    720 <?php 
    721 } 
    722  
    723 /** 
    724  * Display checked checkboxes attribute for xfn microformat options. 
    725  * 
    726  * @since 1.0.1 
    727  * 
    728  * @param string $class 
    729  * @param string $value 
    730  * @param mixed $deprecated Never used. 
    731  */ 
    732 function xfn_check( $class, $value = '', $deprecated = '' ) { 
    733         global $link; 
    734  
    735         if ( !empty( $deprecated ) ) 
    736                 _deprecated_argument( __FUNCTION__, '0.0' ); // Never implemented 
    737  
    738         $link_rel = isset( $link->link_rel ) ? $link->link_rel : ''; // In PHP 5.3: $link_rel = $link->link_rel ?: ''; 
    739         $rels = preg_split('/\s+/', $link_rel); 
    740  
    741         if ('' != $value && in_array($value, $rels) ) { 
    742                 echo ' checked="checked"'; 
    743         } 
    744  
    745         if ('' == $value) { 
    746                 if ('family' == $class && strpos($link_rel, 'child') === false && strpos($link_rel, 'parent') === false && strpos($link_rel, 'sibling') === false && strpos($link_rel, 'spouse') === false && strpos($link_rel, 'kin') === false) echo ' checked="checked"'; 
    747                 if ('friendship' == $class && strpos($link_rel, 'friend') === false && strpos($link_rel, 'acquaintance') === false && strpos($link_rel, 'contact') === false) echo ' checked="checked"'; 
    748                 if ('geographical' == $class && strpos($link_rel, 'co-resident') === false && strpos($link_rel, 'neighbor') === false) echo ' checked="checked"'; 
    749                 if ('identity' == $class && in_array('me', $rels) ) echo ' checked="checked"'; 
    750         } 
    751 } 
    752  
    753 /** 
    754  * Display xfn form fields. 
    755  * 
    756  * @since 2.6.0 
    757  * 
    758  * @param object $link 
    759  */ 
    760 function link_xfn_meta_box($link) { 
    761 ?> 
    762 <table class="links-table" cellspacing="0"> 
    763         <tr> 
    764                 <th scope="row"><label for="link_rel"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('rel:') ?></label></th> 
    765                 <td><input type="text" name="link_rel" id="link_rel" value="<?php echo ( isset( $link->link_rel ) ? esc_attr($link->link_rel) : ''); ?>" /></td> 
    766         </tr> 
    767         <tr> 
    768                 <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('identity') ?></th> 
    769                 <td><fieldset><legend class="screen-reader-text"><span><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('identity') ?></span></legend> 
    770                         <label for="me"> 
    771                         <input type="checkbox" name="identity" value="me" id="me" <?php xfn_check('identity', 'me'); ?> /> 
    772                         <?php _e('another web address of mine') ?></label> 
    773                 </fieldset></td> 
    774         </tr> 
    775         <tr> 
    776                 <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friendship') ?></th> 
    777                 <td><fieldset><legend class="screen-reader-text"><span><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friendship') ?></span></legend> 
    778                         <label for="contact"> 
    779                         <input class="valinp" type="radio" name="friendship" value="contact" id="contact" <?php xfn_check('friendship', 'contact'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('contact') ?> 
    780                         </label> 
    781                         <label for="acquaintance"> 
    782                         <input class="valinp" type="radio" name="friendship" value="acquaintance" id="acquaintance" <?php xfn_check('friendship', 'acquaintance'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('acquaintance') ?> 
    783                         </label> 
    784                         <label for="friend"> 
    785                         <input class="valinp" type="radio" name="friendship" value="friend" id="friend" <?php xfn_check('friendship', 'friend'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('friend') ?> 
    786                         </label> 
    787                         <label for="friendship"> 
    788                         <input name="friendship" type="radio" class="valinp" value="" id="friendship" <?php xfn_check('friendship'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?> 
    789                         </label> 
    790                 </fieldset></td> 
    791         </tr> 
    792         <tr> 
    793                 <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('physical') ?> </th> 
    794                 <td><fieldset><legend class="screen-reader-text"><span><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('physical') ?></span></legend> 
    795                         <label for="met"> 
    796                         <input class="valinp" type="checkbox" name="physical" value="met" id="met" <?php xfn_check('physical', 'met'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('met') ?> 
    797                         </label> 
    798                 </fieldset></td> 
    799         </tr> 
    800         <tr> 
    801                 <th scope="row"> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('professional') ?> </th> 
    802                 <td><fieldset><legend class="screen-reader-text"><span><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('professional') ?></span></legend> 
    803                         <label for="co-worker"> 
    804                         <input class="valinp" type="checkbox" name="professional" value="co-worker" id="co-worker" <?php xfn_check('professional', 'co-worker'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('co-worker') ?> 
    805                         </label> 
    806                         <label for="colleague"> 
    807                         <input class="valinp" type="checkbox" name="professional" value="colleague" id="colleague" <?php xfn_check('professional', 'colleague'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('colleague') ?> 
    808                         </label> 
    809                 </fieldset></td> 
    810         </tr> 
    811         <tr> 
    812                 <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('geographical') ?></th> 
    813                 <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('geographical') ?> </span></legend> 
    814                         <label for="co-resident"> 
    815                         <input class="valinp" type="radio" name="geographical" value="co-resident" id="co-resident" <?php xfn_check('geographical', 'co-resident'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('co-resident') ?> 
    816                         </label> 
    817                         <label for="neighbor"> 
    818                         <input class="valinp" type="radio" name="geographical" value="neighbor" id="neighbor" <?php xfn_check('geographical', 'neighbor'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('neighbor') ?> 
    819                         </label> 
    820                         <label for="geographical"> 
    821                         <input class="valinp" type="radio" name="geographical" value="" id="geographical" <?php xfn_check('geographical'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?> 
    822                         </label> 
    823                 </fieldset></td> 
    824         </tr> 
    825         <tr> 
    826                 <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('family') ?></th> 
    827                 <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('family') ?> </span></legend> 
    828                         <label for="child"> 
    829                         <input class="valinp" type="radio" name="family" value="child" id="child" <?php xfn_check('family', 'child'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('child') ?> 
    830                         </label> 
    831                         <label for="kin"> 
    832                         <input class="valinp" type="radio" name="family" value="kin" id="kin" <?php xfn_check('family', 'kin'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('kin') ?> 
    833                         </label> 
    834                         <label for="parent"> 
    835                         <input class="valinp" type="radio" name="family" value="parent" id="parent" <?php xfn_check('family', 'parent'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('parent') ?> 
    836                         </label> 
    837                         <label for="sibling"> 
    838                         <input class="valinp" type="radio" name="family" value="sibling" id="sibling" <?php xfn_check('family', 'sibling'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('sibling') ?> 
    839                         </label> 
    840                         <label for="spouse"> 
    841                         <input class="valinp" type="radio" name="family" value="spouse" id="spouse" <?php xfn_check('family', 'spouse'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('spouse') ?> 
    842                         </label> 
    843                         <label for="family"> 
    844                         <input class="valinp" type="radio" name="family" value="" id="family" <?php xfn_check('family'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('none') ?> 
    845                         </label> 
    846                 </fieldset></td> 
    847         </tr> 
    848         <tr> 
    849                 <th scope="row"><?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('romantic') ?></th> 
    850                 <td><fieldset><legend class="screen-reader-text"><span> <?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('romantic') ?> </span></legend> 
    851                         <label for="muse"> 
    852                         <input class="valinp" type="checkbox" name="romantic" value="muse" id="muse" <?php xfn_check('romantic', 'muse'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('muse') ?> 
    853                         </label> 
    854                         <label for="crush"> 
    855                         <input class="valinp" type="checkbox" name="romantic" value="crush" id="crush" <?php xfn_check('romantic', 'crush'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('crush') ?> 
    856                         </label> 
    857                         <label for="date"> 
    858                         <input class="valinp" type="checkbox" name="romantic" value="date" id="date" <?php xfn_check('romantic', 'date'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('date') ?> 
    859                         </label> 
    860                         <label for="romantic"> 
    861                         <input class="valinp" type="checkbox" name="romantic" value="sweetheart" id="romantic" <?php xfn_check('romantic', 'sweetheart'); ?> />&nbsp;<?php /* translators: xfn: http://gmpg.org/xfn/ */ _e('sweetheart') ?> 
    862                         </label> 
    863                 </fieldset></td> 
    864         </tr> 
    865  
    866 </table> 
    867 <p><?php _e('If the link is to a person, you can specify your relationship with them using the above form. If you would like to learn more about the idea check out <a href="http://gmpg.org/xfn/">XFN</a>.'); ?></p> 
    868 <?php 
    869 } 
    870  
    871 /** 
    872  * Display advanced link options form fields. 
    873  * 
    874  * @since 2.6.0 
    875  * 
    876  * @param object $link 
    877  */ 
    878 function link_advanced_meta_box($link) { 
    879 ?> 
    880 <table class="links-table" cellpadding="0"> 
    881         <tr> 
    882                 <th scope="row"><label for="link_image"><?php _e('Image Address') ?></label></th> 
    883                 <td><input type="text" name="link_image" class="code" id="link_image" value="<?php echo ( isset( $link->link_image ) ? esc_attr($link->link_image) : ''); ?>" /></td> 
    884         </tr> 
    885         <tr> 
    886                 <th scope="row"><label for="rss_uri"><?php _e('RSS Address') ?></label></th> 
    887                 <td><input name="link_rss" class="code" type="text" id="rss_uri" value="<?php echo ( isset( $link->link_rss ) ? esc_attr($link->link_rss) : ''); ?>" /></td> 
    888         </tr> 
    889         <tr> 
    890                 <th scope="row"><label for="link_notes"><?php _e('Notes') ?></label></th> 
    891                 <td><textarea name="link_notes" id="link_notes" rows="10"><?php echo ( isset( $link->link_notes ) ? $link->link_notes : ''); // textarea_escaped ?></textarea></td> 
    892         </tr> 
    893         <tr> 
    894                 <th scope="row"><label for="link_rating"><?php _e('Rating') ?></label></th> 
    895                 <td><select name="link_rating" id="link_rating" size="1"> 
    896                 <?php 
    897                         for ( $r = 0; $r <= 10; $r++ ) { 
    898                                 echo '<option value="' . $r . '"'; 
    899                                 if ( isset($link->link_rating) && $link->link_rating == $r ) 
    900                                         echo ' selected="selected"'; 
    901                                 echo('>' . $r . '</option>'); 
    902                         } 
    903                 ?></select>&nbsp;<?php _e('(Leave at 0 for no rating.)') ?> 
    904                 </td> 
    905         </tr> 
    906 </table> 
    907 <?php 
    908 } 
    909  
    910 /** 
    911594 * Display post thumbnail meta box. 
    912595 * 
    913596 * @since 2.9.0 
  • wp-admin/includes/update-core.php

     
    398398// 3.5 
    399399'wp-admin/gears-manifest.php', 
    400400'wp-admin/includes/manifest.php', 
     401'wp-admin/edit-link-form.php', 
     402'wp-admin/includes/class-wp-links-list-table.php', 
     403'wp-admin/link-add.php', 
     404'wp-admin/link-manager.php', 
     405'wp-admin/link-parse-opml.php', 
     406'wp-admin/link.php',     
     407'wp-includes/bookmark.php', 
     408'wp-includes/bookmark-template.php',     
     409'wp-admin/includes/bookmark.php',        
    401410); 
    402411 
    403412/** 
  • wp-admin/includes/template.php

     
    202202        return $popular_ids; 
    203203} 
    204204 
    205 /** 
    206  * {@internal Missing Short Description}} 
    207  * 
    208  * @since 2.5.1 
    209  * 
    210  * @param unknown_type $link_id 
    211  */ 
    212 function wp_link_category_checklist( $link_id = 0 ) { 
    213         $default = 1; 
    214  
    215         if ( $link_id ) { 
    216                 $checked_categories = wp_get_link_cats( $link_id ); 
    217                 // No selected categories, strange 
    218                 if ( ! count( $checked_categories ) ) 
    219                         $checked_categories[] = $default; 
    220         } else { 
    221                 $checked_categories[] = $default; 
    222         } 
    223  
    224         $categories = get_terms( 'link_category', array( 'orderby' => 'name', 'hide_empty' => 0 ) ); 
    225  
    226         if ( empty( $categories ) ) 
    227                 return; 
    228  
    229         foreach ( $categories as $category ) { 
    230                 $cat_id = $category->term_id; 
    231                 $name = esc_html( apply_filters( 'the_category', $category->name ) ); 
    232                 $checked = in_array( $cat_id, $checked_categories ) ? ' checked="checked"' : ''; 
    233                 echo '<li id="link-category-', $cat_id, '"><label for="in-link-category-', $cat_id, '" class="selectit"><input value="', $cat_id, '" type="checkbox" name="link_category[]" id="in-link-category-', $cat_id, '"', $checked, '/> ', $name, "</label></li>"; 
    234         } 
    235 } 
    236  
    237205// adds hidden fields with the data for use in the inline editor for posts and pages 
    238206/** 
    239207 * {@internal Missing Short Description}} 
     
    938906                $screen = convert_to_screen( $screen ); 
    939907 
    940908        $page = $screen->id; 
    941  
    942909        $hidden = get_hidden_meta_boxes( $screen ); 
    943910 
    944911        printf('<div id="%s-sortables" class="meta-box-sortables">', htmlspecialchars($context)); 
  • wp-admin/includes/user.php

     
    221221} 
    222222 
    223223/** 
    224  * Remove user and optionally reassign posts and links to another user. 
     224 * Remove user and optionally reassign posts to another user. 
    225225 * 
    226226 * If the $reassign parameter is not assigned to an User ID, then all posts will 
    227227 * be deleted of that user. The action 'delete_user' that is passed the User ID 
     
    231231 * @since 2.0.0 
    232232 * 
    233233 * @param int $id User ID. 
    234  * @param int $reassign Optional. Reassign posts and links to new User ID. 
     234 * @param int $reassign Optional. Reassign posts to new User ID. 
    235235 * @return bool True when finished. 
    236236 */ 
    237237function wp_delete_user( $id, $reassign = 'novalue' ) { 
     
    260260                        foreach ( $post_ids as $post_id ) 
    261261                                wp_delete_post( $post_id ); 
    262262                } 
    263  
    264                 // Clean links 
    265                 $link_ids = $wpdb->get_col( $wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id) ); 
    266  
    267                 if ( $link_ids ) { 
    268                         foreach ( $link_ids as $link_id ) 
    269                                 wp_delete_link($link_id); 
    270                 } 
    271263        } else { 
    272264                $reassign = (int) $reassign; 
    273265                $wpdb->update( $wpdb->posts, array('post_author' => $reassign), array('post_author' => $id) ); 
    274                 $wpdb->update( $wpdb->links, array('link_owner' => $reassign), array('link_owner' => $id) ); 
     266                do_action( 'reassign_user_data', $id, $reassign ); 
    275267        } 
    276268 
    277269        // FINALLY, delete user 
  • wp-admin/includes/ms.php

     
    148148                                wp_delete_post( $post_id ); 
    149149                        } 
    150150 
    151                         // Clean links 
    152                         $link_ids = $wpdb->get_col( $wpdb->prepare( "SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id ) ); 
    153  
    154                         if ( $link_ids ) { 
    155                                 foreach ( $link_ids as $link_id ) 
    156                                         wp_delete_link( $link_id ); 
    157                         } 
    158  
    159151                        restore_current_blog(); 
    160152                } 
    161153        } 
  • wp-admin/edit-tags.php

     
    185185if ( current_user_can($tax->cap->edit_terms) ) 
    186186        wp_enqueue_script('inline-edit-tax'); 
    187187 
    188 if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $taxonomy  ) { 
     188do_action( 'edit_' . $taxonomy . '_help', $taxonomy ); 
     189 
     190if ( 'category' == $taxonomy || 'post_tag' == $taxonomy  ) { 
    189191        $help =''; 
    190192        if ( 'category' == $taxonomy ) 
    191193                $help = '<p>' . sprintf(__( 'You can use categories to define sections of your site and group related posts. The default category is &#8220;Uncategorized&#8221; until you change it in your <a href="%s">writing settings</a>.' ) , 'options-writing.php' ) . '</p>'; 
    192         elseif ( 'link_category' == $taxonomy ) 
    193                 $help = '<p>' . __( 'You can create groups of links by using Link Categories. Link Category names must be unique and Link Categories are separate from the categories you use for posts.' ) . '</p>'; 
    194194        else 
    195195                $help = '<p>' . __( 'You can assign keywords to your posts using <strong>tags</strong>. Unlike categories, tags have no hierarchy, meaning there&#8217;s no relationship from one tag to another.' ) . '</p>'; 
    196196 
    197         if ( 'link_category' == $taxonomy ) 
    198                 $help .= '<p>' . __( 'You can delete Link Categories in the Bulk Action pull-down, but that action does not delete the links within the category. Instead, it moves them to the default Link Category.' ) . '</p>'; 
    199         else 
    200                 $help .='<p>' . __( 'What&#8217;s the difference between categories and tags? Normally, tags are ad-hoc keywords that identify important information in your post (names, subjects, etc) that may or may not recur in other posts, while categories are pre-determined sections. If you think of your site like a book, the categories are like the Table of Contents and the tags are like the terms in the index.' ) . '</p>'; 
    201  
     197        $help .='<p>' . __( 'What&#8217;s the difference between categories and tags? Normally, tags are ad-hoc keywords that identify important information in your post (names, subjects, etc) that may or may not recur in other posts, while categories are pre-determined sections. If you think of your site like a book, the categories are like the Table of Contents and the tags are like the terms in the index.' ) . '</p>'; 
     198         
    202199        get_current_screen()->add_help_tab( array( 
    203200                'id'      => 'overview', 
    204201                'title'   => __('Overview'), 
     
    235232 
    236233        if ( 'category' == $taxonomy ) 
    237234                $help .= '<p>' . __( '<a href="http://codex.wordpress.org/Posts_Categories_Screen" target="_blank">Documentation on Categories</a>' ) . '</p>'; 
    238         elseif ( 'link_category' == $taxonomy ) 
    239                 $help .= '<p>' . __( '<a href="http://codex.wordpress.org/Links_Link_Categories_Screen" target="_blank">Documentation on Link Categories</a>' ) . '</p>'; 
    240235        else 
    241236                $help .= '<p>' . __( '<a href="http://codex.wordpress.org/Posts_Tags_Screen" target="_blank">Documentation on Tags</a>' ) . '</p>'; 
    242237 
     
    339334        // Back compat hooks. Deprecated in preference to {$taxonomy}_pre_add_form 
    340335        if ( 'category' == $taxonomy ) 
    341336                do_action('add_category_form_pre', (object)array('parent' => 0) ); 
    342         elseif ( 'link_category' == $taxonomy ) 
    343