--- a/wp/wp-includes/bookmark.php Tue Oct 22 16:11:46 2019 +0200
+++ b/wp/wp-includes/bookmark.php Tue Dec 15 13:49:49 2020 +0100
@@ -14,9 +14,10 @@
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param int|stdClass $bookmark
- * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to
- * an stdClass object, an associative array, or a numeric array, respectively. Default OBJECT.
- * @param string $filter Optional, default is 'raw'.
+ * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which
+ * correspond to an stdClass object, an associative array, or a numeric array,
+ * respectively. Default OBJECT.
+ * @param string $filter Optional. How to sanitize bookmark fields. Default 'raw'.
* @return array|object|null Type returned depends on $output value.
*/
function get_bookmark( $bookmark, $output = OBJECT, $filter = 'raw' ) {
@@ -34,11 +35,14 @@
} else {
if ( isset( $GLOBALS['link'] ) && ( $GLOBALS['link']->link_id == $bookmark ) ) {
$_bookmark = & $GLOBALS['link'];
- } elseif ( ! $_bookmark = wp_cache_get( $bookmark, 'bookmark' ) ) {
- $_bookmark = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->links WHERE link_id = %d LIMIT 1", $bookmark ) );
- if ( $_bookmark ) {
- $_bookmark->link_category = array_unique( wp_get_object_terms( $_bookmark->link_id, 'link_category', array( 'fields' => 'ids' ) ) );
- wp_cache_add( $_bookmark->link_id, $_bookmark, 'bookmark' );
+ } else {
+ $_bookmark = wp_cache_get( $bookmark, 'bookmark' );
+ if ( ! $_bookmark ) {
+ $_bookmark = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->links WHERE link_id = %d LIMIT 1", $bookmark ) );
+ if ( $_bookmark ) {
+ $_bookmark->link_category = array_unique( wp_get_object_terms( $_bookmark->link_id, 'link_category', array( 'fields' => 'ids' ) ) );
+ wp_cache_add( $_bookmark->link_id, $_bookmark, 'bookmark' );
+ }
}
}
}
@@ -49,11 +53,11 @@
$_bookmark = sanitize_bookmark( $_bookmark, $filter );
- if ( $output == OBJECT ) {
+ if ( OBJECT == $output ) {
return $_bookmark;
- } elseif ( $output == ARRAY_A ) {
+ } elseif ( ARRAY_A == $output ) {
return get_object_vars( $_bookmark );
- } elseif ( $output == ARRAY_N ) {
+ } elseif ( ARRAY_N == $output ) {
return array_values( get_object_vars( $_bookmark ) );
} else {
return $_bookmark;
@@ -65,9 +69,9 @@
*
* @since 2.3.0
*
- * @param string $field The name of the data field to return
- * @param int $bookmark The bookmark ID to get field
- * @param string $context Optional. The context of how the field will be used.
+ * @param string $field The name of the data field to return.
+ * @param int $bookmark The bookmark ID to get field.
+ * @param string $context Optional. The context of how the field will be used.
* @return string|WP_Error
*/
function get_bookmark_field( $field, $bookmark, $context = 'display' ) {
@@ -103,12 +107,17 @@
* @param string|array $args {
* Optional. String or array of arguments to retrieve bookmarks.
*
- * @type string $orderby How to order the links by. Accepts post fields. Default 'name'.
+ * @type string $orderby How to order the links by. Accepts 'id', 'link_id', 'name', 'link_name',
+ * 'url', 'link_url', 'visible', 'link_visible', 'rating', 'link_rating',
+ * 'owner', 'link_owner', 'updated', 'link_updated', 'notes', 'link_notes',
+ * 'description', 'link_description', 'length' and 'rand'.
+ * When `$orderby` is 'length', orders by the character length of
+ * 'link_name'. Default 'name'.
* @type string $order Whether to order bookmarks in ascending or descending order.
* Accepts 'ASC' (ascending) or 'DESC' (descending). Default 'ASC'.
- * @type int $limit Amount of bookmarks to display. Accepts 1+ or -1 for all.
- * Default -1.
- * @type string $category Comma-separated list of category ids to include links from.
+ * @type int $limit Amount of bookmarks to display. Accepts any positive number or
+ * -1 for all. Default -1.
+ * @type string $category Comma-separated list of category IDs to include links from.
* Default empty.
* @type string $category_name Category to retrieve links for by name. Default empty.
* @type int|bool $hide_invisible Whether to show or hide links marked as 'invisible'. Accepts
@@ -117,8 +126,11 @@
* Accepts 1|true or 0|false. Default 0|false.
* @type string $include Comma-separated list of bookmark IDs to include. Default empty.
* @type string $exclude Comma-separated list of bookmark IDs to exclude. Default empty.
+ * @type string $search Search terms. Will be SQL-formatted with wildcards before and after
+ * and searched in 'link_url', 'link_name' and 'link_description'.
+ * Default empty.
* }
- * @return array List of bookmark row objects.
+ * @return object[] List of bookmark row objects.
*/
function get_bookmarks( $args = '' ) {
global $wpdb;
@@ -136,11 +148,12 @@
'search' => '',
);
- $r = wp_parse_args( $args, $defaults );
+ $parsed_args = wp_parse_args( $args, $defaults );
- $key = md5( serialize( $r ) );
- $cache = false;
- if ( 'rand' !== $r['orderby'] && $cache = wp_cache_get( 'get_bookmarks', 'bookmark' ) ) {
+ $key = md5( serialize( $parsed_args ) );
+ $cache = wp_cache_get( 'get_bookmarks', 'bookmark' );
+
+ if ( 'rand' !== $parsed_args['orderby'] && $cache ) {
if ( is_array( $cache ) && isset( $cache[ $key ] ) ) {
$bookmarks = $cache[ $key ];
/**
@@ -155,10 +168,10 @@
*
* @see get_bookmarks()
*
- * @param array $bookmarks List of the cached bookmarks.
- * @param array $r An array of bookmark query arguments.
+ * @param array $bookmarks List of the cached bookmarks.
+ * @param array $parsed_args An array of bookmark query arguments.
*/
- return apply_filters( 'get_bookmarks', $bookmarks, $r );
+ return apply_filters( 'get_bookmarks', $bookmarks, $parsed_args );
}
}
@@ -167,11 +180,12 @@
}
$inclusions = '';
- if ( ! empty( $r['include'] ) ) {
- $r['exclude'] = ''; //ignore exclude, category, and category_name params if using include
- $r['category'] = '';
- $r['category_name'] = '';
- $inclinks = wp_parse_id_list( $r['include'] );
+ if ( ! empty( $parsed_args['include'] ) ) {
+ $parsed_args['exclude'] = ''; // Ignore exclude, category, and category_name params if using include.
+ $parsed_args['category'] = '';
+ $parsed_args['category_name'] = '';
+
+ $inclinks = wp_parse_id_list( $parsed_args['include'] );
if ( count( $inclinks ) ) {
foreach ( $inclinks as $inclink ) {
if ( empty( $inclusions ) ) {
@@ -187,8 +201,8 @@
}
$exclusions = '';
- if ( ! empty( $r['exclude'] ) ) {
- $exlinks = wp_parse_id_list( $r['exclude'] );
+ if ( ! empty( $parsed_args['exclude'] ) ) {
+ $exlinks = wp_parse_id_list( $parsed_args['exclude'] );
if ( count( $exlinks ) ) {
foreach ( $exlinks as $exlink ) {
if ( empty( $exclusions ) ) {
@@ -203,27 +217,28 @@
$exclusions .= ')';
}
- if ( ! empty( $r['category_name'] ) ) {
- if ( $r['category'] = get_term_by( 'name', $r['category_name'], 'link_category' ) ) {
- $r['category'] = $r['category']->term_id;
+ if ( ! empty( $parsed_args['category_name'] ) ) {
+ $parsed_args['category'] = get_term_by( 'name', $parsed_args['category_name'], 'link_category' );
+ if ( $parsed_args['category'] ) {
+ $parsed_args['category'] = $parsed_args['category']->term_id;
} else {
$cache[ $key ] = array();
wp_cache_set( 'get_bookmarks', $cache, 'bookmark' );
/** This filter is documented in wp-includes/bookmark.php */
- return apply_filters( 'get_bookmarks', array(), $r );
+ return apply_filters( 'get_bookmarks', array(), $parsed_args );
}
}
$search = '';
- if ( ! empty( $r['search'] ) ) {
- $like = '%' . $wpdb->esc_like( $r['search'] ) . '%';
+ if ( ! empty( $parsed_args['search'] ) ) {
+ $like = '%' . $wpdb->esc_like( $parsed_args['search'] ) . '%';
$search = $wpdb->prepare( ' AND ( (link_url LIKE %s) OR (link_name LIKE %s) OR (link_description LIKE %s) ) ', $like, $like, $like );
}
$category_query = '';
$join = '';
- if ( ! empty( $r['category'] ) ) {
- $incategories = wp_parse_id_list( $r['category'] );
+ if ( ! empty( $parsed_args['category'] ) ) {
+ $incategories = wp_parse_id_list( $parsed_args['category'] );
if ( count( $incategories ) ) {
foreach ( $incategories as $incat ) {
if ( empty( $category_query ) ) {
@@ -239,15 +254,15 @@
$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";
}
- if ( $r['show_updated'] ) {
+ if ( $parsed_args['show_updated'] ) {
$recently_updated_test = ', IF (DATE_ADD(link_updated, INTERVAL 120 MINUTE) >= NOW(), 1,0) as recently_updated ';
} else {
$recently_updated_test = '';
}
- $get_updated = ( $r['show_updated'] ) ? ', UNIX_TIMESTAMP(link_updated) AS link_updated_f ' : '';
+ $get_updated = ( $parsed_args['show_updated'] ) ? ', UNIX_TIMESTAMP(link_updated) AS link_updated_f ' : '';
- $orderby = strtolower( $r['orderby'] );
+ $orderby = strtolower( $parsed_args['orderby'] );
$length = '';
switch ( $orderby ) {
case 'length':
@@ -265,9 +280,9 @@
foreach ( explode( ',', $orderby ) as $ordparam ) {
$ordparam = trim( $ordparam );
- if ( in_array( 'link_' . $ordparam, $keys ) ) {
+ if ( in_array( 'link_' . $ordparam, $keys, true ) ) {
$orderparams[] = 'link_' . $ordparam;
- } elseif ( in_array( $ordparam, $keys ) ) {
+ } elseif ( in_array( $ordparam, $keys, true ) ) {
$orderparams[] = $ordparam;
}
}
@@ -278,21 +293,21 @@
$orderby = 'link_name';
}
- $order = strtoupper( $r['order'] );
- if ( '' !== $order && ! in_array( $order, array( 'ASC', 'DESC' ) ) ) {
+ $order = strtoupper( $parsed_args['order'] );
+ if ( '' !== $order && ! in_array( $order, array( 'ASC', 'DESC' ), true ) ) {
$order = 'ASC';
}
$visible = '';
- if ( $r['hide_invisible'] ) {
+ if ( $parsed_args['hide_invisible'] ) {
$visible = "AND link_visible = 'Y'";
}
$query = "SELECT * $length $recently_updated_test $get_updated FROM $wpdb->links $join WHERE 1=1 $visible $category_query";
$query .= " $exclusions $inclusions $search";
$query .= " ORDER BY $orderby $order";
- if ( $r['limit'] != -1 ) {
- $query .= ' LIMIT ' . $r['limit'];
+ if ( -1 != $parsed_args['limit'] ) {
+ $query .= ' LIMIT ' . $parsed_args['limit'];
}
$results = $wpdb->get_results( $query );
@@ -303,17 +318,16 @@
}
/** This filter is documented in wp-includes/bookmark.php */
- return apply_filters( 'get_bookmarks', $results, $r );
+ return apply_filters( 'get_bookmarks', $results, $parsed_args );
}
/**
- * Sanitizes all bookmark fields
+ * Sanitizes all bookmark fields.
*
* @since 2.3.0
*
- * @param stdClass|array $bookmark Bookmark row
- * @param string $context Optional, default is 'display'. How to filter the
- * fields
+ * @param stdClass|array $bookmark Bookmark row.
+ * @param string $context Optional. How to filter the fields. Default 'display'.
* @return stdClass|array Same type as $bookmark but with fields sanitized.
*/
function sanitize_bookmark( $bookmark, $context = 'display' ) {
@@ -390,7 +404,7 @@
case 'link_category': // array( ints )
$value = array_map( 'absint', (array) $value );
// We return here so that the categories aren't filtered.
- // The 'link_category' filter is for the name of a link category, not an array of a link's link categories
+ // The 'link_category' filter is for the name of a link category, not an array of a link's link categories.
return $value;
case 'link_visible': // bool stored as Y|N
@@ -398,35 +412,35 @@
break;
case 'link_target': // "enum"
$targets = array( '_top', '_blank' );
- if ( ! in_array( $value, $targets ) ) {
+ if ( ! in_array( $value, $targets, true ) ) {
$value = '';
}
break;
}
- if ( 'raw' == $context ) {
+ if ( 'raw' === $context ) {
return $value;
}
- if ( 'edit' == $context ) {
+ if ( 'edit' === $context ) {
/** This filter is documented in wp-includes/post.php */
$value = apply_filters( "edit_{$field}", $value, $bookmark_id );
- if ( 'link_notes' == $field ) {
+ if ( 'link_notes' === $field ) {
$value = esc_html( $value ); // textarea_escaped
} else {
$value = esc_attr( $value );
}
- } elseif ( 'db' == $context ) {
+ } elseif ( 'db' === $context ) {
/** This filter is documented in wp-includes/post.php */
$value = apply_filters( "pre_{$field}", $value );
} else {
/** This filter is documented in wp-includes/post.php */
$value = apply_filters( "{$field}", $value, $bookmark_id, $context );
- if ( 'attribute' == $context ) {
+ if ( 'attribute' === $context ) {
$value = esc_attr( $value );
- } elseif ( 'js' == $context ) {
+ } elseif ( 'js' === $context ) {
$value = esc_js( $value );
}
}