Changeset 54556
- Timestamp:
- 10/17/2022 05:58:36 PM (22 months ago)
- Location:
- branches/5.5
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/5.5
- Property svn:mergeinfo changed
/trunk merged: 54521-54530,54541
- Property svn:mergeinfo changed
-
branches/5.5/src/wp-admin/includes/ajax-actions.php
r48956 r54556 2976 2976 // Filter query clauses to include filenames. 2977 2977 if ( isset( $query['s'] ) ) { 2978 add_filter( ' posts_clauses', '_filter_query_attachment_filenames' );2978 add_filter( '' ); 2979 2979 } 2980 2980 -
branches/5.5/src/wp-admin/includes/post.php
r48574 r54556 1267 1267 // Filter query clauses to include filenames. 1268 1268 if ( isset( $q['s'] ) ) { 1269 add_filter( ' posts_clauses', '_filter_query_attachment_filenames' );1269 add_filter( '' ); 1270 1270 } 1271 1271 -
branches/5.5/src/wp-includes/class-wp-date-query.php
r48586 r54556 150 150 } 151 151 152 if ( isset( $date_query['relation'] ) && 'OR' === strtoupper( $date_query['relation'] )) {153 $this->relation = 'OR';152 if ( isset( $date_query['relation'] ) ) { 153 $this->relation = ; 154 154 } else { 155 155 $this->relation = 'AND'; … … 219 219 $this->validate_date_values( $queries ); 220 220 } 221 222 223 221 224 222 225 foreach ( $queries as $key => $q ) { … … 1040 1043 return $wpdb->prepare( "DATE_FORMAT( $column, %s ) $compare %f", $format, $time ); 1041 1044 } 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1042 1061 } -
branches/5.5/src/wp-includes/class-wp-query.php
r48586 r54556 442 442 public $thumbnails_cached = false; 443 443 444 445 446 447 448 449 450 444 451 /** 445 452 * Cached list of search stopwords. … … 1392 1399 1393 1400 $like = $n . $wpdb->esc_like( $term ) . $n; 1394 $search .= $wpdb->prepare( "{$searchand}(({$wpdb->posts}.post_title $like_op %s) $andor_op ({$wpdb->posts}.post_excerpt $like_op %s) $andor_op ({$wpdb->posts}.post_content $like_op %s))", $like, $like, $like ); 1401 1402 if ( ! empty( $this->allow_query_attachment_by_filename ) ) { 1403 $search .= $wpdb->prepare( "{$searchand}(({$wpdb->posts}.post_title $like_op %s) $andor_op ({$wpdb->posts}.post_excerpt $like_op %s) $andor_op ({$wpdb->posts}.post_content $like_op %s) $andor_op (sq1.meta_value $like_op %s))", $like, $like, $like, $like ); 1404 } else { 1405 $search .= $wpdb->prepare( "{$searchand}(({$wpdb->posts}.post_title $like_op %s) $andor_op ({$wpdb->posts}.post_excerpt $like_op %s) $andor_op ({$wpdb->posts}.post_content $like_op %s))", $like, $like, $like ); 1406 } 1395 1407 $searchand = ' AND '; 1396 1408 } … … 1785 1797 $q = $this->fill_query_vars( $q ); 1786 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1787 1809 // Parse meta query. 1788 1810 $this->meta_query = new WP_Meta_Query(); … … 2216 2238 } 2217 2239 2218 if ( ! empty( $this->tax_query->queries ) || ! empty( $this->meta_query->queries ) ) {2240 if ( ! empty( $this->tax_query->queries ) || ! empty( $this->meta_query->queries ) ) { 2219 2241 $groupby = "{$wpdb->posts}.ID"; 2220 2242 } … … 2292 2314 } 2293 2315 $where .= $search . $whichauthor . $whichmimetype; 2316 2317 2318 2319 2294 2320 2295 2321 if ( ! empty( $this->meta_query->queries ) ) { -
branches/5.5/src/wp-includes/comment.php
r48752 r54556 2457 2457 } 2458 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2459 2468 // Escape data pulled from DB. 2460 2469 $comment = wp_slash( $comment ); … … 2466 2475 2467 2476 $commentarr = wp_filter_comment( $commentarr ); 2477 2478 2479 2480 2468 2481 2469 2482 // Now extract the merged array. -
branches/5.5/src/wp-includes/customize/class-wp-customize-header-image-control.php
r45932 r54556 131 131 132 132 <button type="button" class="choice thumbnail" 133 data-customize-image-value="{{ {data.header.url}}}"133 data-customize-image-value="{{}}" 134 134 data-customize-header-image-data="{{JSON.stringify(data.header)}}"> 135 135 <span class="screen-reader-text"><?php _e( 'Set image' ); ?></span> 136 <img src="{{ {data.header.thumbnail_url}}}" alt="{{{data.header.alt_text || data.header.description}}}">136 <img src="{{> 137 137 </button> 138 138 -
branches/5.5/src/wp-includes/customize/class-wp-customize-site-icon-control.php
r47382 r54556 69 69 <img src="{{ data.attachment.sizes.full ? data.attachment.sizes.full.url : data.attachment.url }}" alt="<?php esc_attr_e( 'Preview as a browser icon' ); ?>"/> 70 70 </div> 71 <span class="browser-title" aria-hidden="true"><# print( '<?php bloginfo( 'name'); ?>' ) #></span>71 <span class="browser-title" aria-hidden="true"><# print( '<?php ); ?>' ) #></span> 72 72 </div> 73 73 <img class="app-icon-preview" src="{{ data.attachment.sizes.full ? data.attachment.sizes.full.url : data.attachment.url }}" alt="<?php esc_attr_e( 'Preview as an app icon' ); ?>"/> -
branches/5.5/src/wp-includes/deprecated.php
r48575 r54556 4101 4101 return remove_allowed_options( $del_options, $options ); 4102 4102 } 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 -
branches/5.5/src/wp-includes/functions.php
r51744 r54556 3262 3262 $html = __( 'The link you followed has expired.' ); 3263 3263 if ( wp_get_referer() ) { 3264 3265 3264 3266 $html .= '</p><p>'; 3265 3267 $html .= sprintf( 3266 3268 '<a href="%s">%s</a>', 3267 esc_url( remove_query_arg( 'updated', wp_get_referer() )),3269 esc_url( ), 3268 3270 __( 'Please try again.' ) 3269 3271 ); -
branches/5.5/src/wp-includes/media-template.php
r48618 r54556 1449 1449 <img id="preview-favicon" src="{{ data.url }}" alt="<?php esc_attr_e( 'Preview as a browser icon' ); ?>"/> 1450 1450 </div> 1451 <span class="browser-title" aria-hidden="true"><# print( '<?php bloginfo( 'name'); ?>' ) #></span>1451 <span class="browser-title" aria-hidden="true"><# print( '<?php ); ?>' ) #></span> 1452 1452 </div> 1453 1453 -
branches/5.5/src/wp-includes/pluggable.php
r48645 r54556 318 318 $phpmailer->clearCustomHeaders(); 319 319 $phpmailer->clearReplyTos(); 320 321 320 322 321 323 // Set "From" name and email. -
branches/5.5/src/wp-includes/post.php
r52468 r54556 1976 1976 * @since 4.5.0 Added the ability to pass a post type name in addition to object. 1977 1977 * @since 4.6.0 Converted the `$post_type` parameter to accept a `WP_Post_Type` object. 1978 1978 1979 * 1979 1980 * @param string|WP_Post_Type $post_type Post type name or object. … … 1983 1984 if ( is_scalar( $post_type ) ) { 1984 1985 $post_type = get_post_type_object( $post_type ); 1986 1985 1987 if ( ! $post_type ) { 1986 1988 return false; … … 1988 1990 } 1989 1991 1990 return $post_type->publicly_queryable || ( $post_type->_builtin && $post_type->public ); 1992 if ( ! is_object( $post_type ) ) { 1993 return false; 1994 } 1995 1996 $is_viewable = $post_type->publicly_queryable || ( $post_type->_builtin && $post_type->public ); 1997 1998 /** 1999 * Filters whether a post type is considered "viewable". 2000 * 2001 * The returned filtered value must be a boolean type to ensure 2002 * `is_post_type_viewable()` only returns a boolean. This strictness 2003 * is by design to maintain backwards-compatibility and guard against 2004 * potential type errors in PHP 8.1+. Non-boolean values (even falsey 2005 * and truthy values) will result in the function returning false. 2006 * 2007 * @since 5.9.0 2008 * 2009 * @param bool $is_viewable Whether the post type is "viewable" (strict type). 2010 * @param WP_Post_Type $post_type Post type object. 2011 */ 2012 return true === apply_filters( 'is_post_type_viewable', $is_viewable, $post_type ); 2013 } 2014 2015 /** 2016 * Determines whether a post status is considered "viewable". 2017 * 2018 * For built-in post statuses such as publish and private, the 'public' value will be evaluated. 2019 * For all others, the 'publicly_queryable' value will be used. 2020 * 2021 * @since 5.7.0 2022 * @since 5.9.0 Added `is_post_status_viewable` hook to filter the result. 2023 * 2024 * @param string|stdClass $post_status Post status name or object. 2025 * @return bool Whether the post status should be considered viewable. 2026 */ 2027 function is_post_status_viewable( $post_status ) { 2028 if ( is_scalar( $post_status ) ) { 2029 $post_status = get_post_status_object( $post_status ); 2030 2031 if ( ! $post_status ) { 2032 return false; 2033 } 2034 } 2035 2036 if ( 2037 ! is_object( $post_status ) || 2038 $post_status->internal || 2039 $post_status->protected 2040 ) { 2041 return false; 2042 } 2043 2044 $is_viewable = $post_status->publicly_queryable || ( $post_status->_builtin && $post_status->public ); 2045 2046 /** 2047 * Filters whether a post status is considered "viewable". 2048 * 2049 * The returned filtered value must be a boolean type to ensure 2050 * `is_post_status_viewable()` only returns a boolean. This strictness 2051 * is by design to maintain backwards-compatibility and guard against 2052 * potential type errors in PHP 8.1+. Non-boolean values (even falsey 2053 * and truthy values) will result in the function returning false. 2054 * 2055 * @since 5.9.0 2056 * 2057 * @param bool $is_viewable Whether the post status is "viewable" (strict type). 2058 * @param stdClass $post_status Post status object. 2059 */ 2060 return true === apply_filters( 'is_post_status_viewable', $is_viewable, $post_status ); 2061 } 2062 2063 /** 2064 * Determines whether a post is publicly viewable. 2065 * 2066 * Posts are considered publicly viewable if both the post status and post type 2067 * are viewable. 2068 * 2069 * @since 5.7.0 2070 * 2071 * @param int|WP_Post|null $post Optional. Post ID or post object. Defaults to global $post. 2072 * @return bool Whether the post is publicly viewable. 2073 */ 2074 function is_post_publicly_viewable( $post = null ) { 2075 $post = get_post( $post ); 2076 2077 if ( ! $post ) { 2078 return false; 2079 } 2080 2081 $post_type = get_post_type( $post ); 2082 $post_status = get_post_status( $post ); 2083 2084 return is_post_type_viewable( $post_type ) && is_post_status_viewable( $post_status ); 1991 2085 } 1992 2086 … … 7331 7425 7332 7426 /** 7333 * Filter the SQL clauses of an attachment query to include filenames.7334 *7335 * @since 4.7.07336 * @access private7337 *7338 * @global wpdb $wpdb WordPress database abstraction object.7339 *7340 * @param string[] $clauses An array including WHERE, GROUP BY, JOIN, ORDER BY,7341 * DISTINCT, fields (SELECT), and LIMITS clauses.7342 * @return string[] The modified array of clauses.7343 */7344 function _filter_query_attachment_filenames( $clauses ) {7345 global $wpdb;7346 remove_filter( 'posts_clauses', __FUNCTION__ );7347 7348 // Add a LEFT JOIN of the postmeta table so we don't trample existing JOINs.7349 $clauses['join'] .= " LEFT JOIN {$wpdb->postmeta} AS sq1 ON ( {$wpdb->posts}.ID = sq1.post_id AND sq1.meta_key = '_wp_attached_file' )";7350 7351 $clauses['groupby'] = "{$wpdb->posts}.ID";7352 7353 $clauses['where'] = preg_replace(7354 "/\({$wpdb->posts}.post_content (NOT LIKE|LIKE) (\'[^']+\')\)/",7355 '$0 OR ( sq1.meta_value $1 $2 )',7356 $clauses['where']7357 );7358 7359 return $clauses;7360 }7361 7362 /**7363 7427 * Sets the last changed time for the 'posts' cache group. 7364 7428 * -
branches/5.5/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php
r48547 r54556 90 90 // Filter query clauses to include filenames. 91 91 if ( isset( $query_args['s'] ) ) { 92 add_filter( ' posts_clauses', '_filter_query_attachment_filenames' );92 add_filter( '' ); 93 93 } 94 94 -
branches/5.5/src/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php
r48275 r54556 136 136 137 137 /** 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 138 167 * Checks if a request has access to read terms in the specified taxonomy. 139 168 * … … 156 185 array( 'status' => rest_authorization_required_code() ) 157 186 ); 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 158 211 } 159 212 -
branches/5.5/src/wp-includes/widgets.php
r48590 r54556 1501 1501 if ( is_wp_error( $rss ) ) { 1502 1502 if ( is_admin() || current_user_can( 'manage_options' ) ) { 1503 echo '<p><strong>' . __( 'RSS Error:' ) . '</strong> ' . $rss->get_error_message() . '</p>';1503 echo '<p><strong>' . __( 'RSS Error:' ) . '</strong> ' . ) . '</p>'; 1504 1504 } 1505 1505 return; … … 1624 1624 1625 1625 if ( ! empty( $args['error'] ) ) { 1626 echo '<p class="widget-error"><strong>' . __( 'RSS Error:' ) . '</strong> ' . $args['error']. '</p>';1626 echo '<p class="widget-error"><strong>' . __( 'RSS Error:' ) . '</strong> ' . . '</p>'; 1627 1627 } 1628 1628 -
branches/5.5/src/wp-mail.php
r47580 r54556 65 65 wp_die( __( 'There doesn’t seem to be any new mail.' ) ); 66 66 } 67 68 69 67 70 68 71 for ( $i = 1; $i <= $count; $i++ ) { … … 132 135 $author = sanitize_email( $author ); 133 136 if ( is_email( $author ) ) { 134 /* translators: %s: Post author email address. */135 echo '<p>' . sprintf( __( 'Author is %s' ), $author ) . '</p>';136 137 $userdata = get_user_by( 'email', $author ); 137 138 if ( ! empty( $userdata ) ) { -
branches/5.5/src/wp-trackback.php
r47198 r54556 13 13 wp( array( 'tb' => '1' ) ); 14 14 } 15 16 17 15 18 16 19 /** -
branches/5.5/tests/phpunit/tests/query/search.php
r47122 r54556 456 456 457 457 add_post_meta( $attachment, '_wp_attached_file', 'some-image1.png', true ); 458 add_filter( ' posts_clauses', '_filter_query_attachment_filenames' );458 add_filter( '' ); 459 459 460 460 // Pass post_type a string value. … … 486 486 487 487 add_post_meta( $attachment, '_wp_attached_file', 'some-image2.png', true ); 488 add_filter( ' posts_clauses', '_filter_query_attachment_filenames' );488 add_filter( '' ); 489 489 490 490 // Pass post_type an array value. … … 545 545 add_post_meta( $attachment, '_wp_attached_file', 'some-image4.png', true ); 546 546 add_post_meta( $attachment, '_test_meta_key', 'value', true ); 547 add_filter( ' posts_clauses', '_filter_query_attachment_filenames' );547 add_filter( '' ); 548 548 549 549 // Pass post_type a string value. … … 585 585 586 586 add_post_meta( $attachment, '_wp_attached_file', 'some-image5.png', true ); 587 add_filter( ' posts_clauses', '_filter_query_attachment_filenames' );587 add_filter( '' ); 588 588 589 589 // Pass post_type a string value. … … 610 610 * @ticket 22744 611 611 */ 612 public function test_filter_query_attachment_filenames_unhooks_itself() { 613 add_filter( 'posts_clauses', '_filter_query_attachment_filenames' ); 614 615 apply_filters( 616 'posts_clauses', 617 array( 618 'where' => '', 619 'groupby' => '', 620 'join' => '', 621 'orderby' => '', 622 'distinct' => '', 623 'fields' => '', 624 'limit' => '', 625 ) 626 ); 627 628 $result = has_filter( 'posts_clauses', '_filter_query_attachment_filenames' ); 629 630 $this->assertFalse( $result ); 612 public function test_wp_query_removes_filter_wp_allow_query_attachment_by_filename() { 613 $attachment = self::factory()->post->create( 614 array( 615 'post_type' => 'attachment', 616 'post_status' => 'publish', 617 'post_title' => 'bar foo', 618 'post_content' => 'foo bar', 619 'post_excerpt' => 'This post has foo', 620 ) 621 ); 622 623 add_post_meta( $attachment, '_wp_attached_file', 'some-image1.png', true ); 624 add_filter( 'wp_allow_query_attachment_by_filename', '__return_true' ); 625 626 $q = new WP_Query( 627 array( 628 's' => 'image1', 629 'fields' => 'ids', 630 'post_type' => 'attachment', 631 'post_status' => 'inherit', 632 ) 633 ); 634 635 $this->assertSame( array( $attachment ), $q->posts ); 636 637 /* 638 * WP_Query should have removed the wp_allow_query_attachment_by_filename filter 639 * and thus not match the attachment created above 640 */ 641 $q->get_posts(); 642 $this->assertEmpty( $q->posts ); 631 643 } 632 644 -
branches/5.5/tests/phpunit/tests/rest-api/rest-comments-controller.php
r48231 r54556 2903 2903 'author_name' => '<div>div</div> <strong>strong</strong> <script>oh noes</script>', 2904 2904 'author_user_agent' => '<div>div</div> <strong>strong</strong> <script>oh noes</script>', 2905 2905 2906 ), 2906 2907 array( … … 2911 2912 'author_name' => 'div strong', 2912 2913 'author_user_agent' => 'div strong', 2914 2913 2915 ) 2914 2916 ); … … 2920 2922 'author_name' => '<div>div</div> <strong>strong</strong> <script>oh noes</script>', 2921 2923 'author_user_agent' => '<div>div</div> <strong>strong</strong> <script>oh noes</script>', 2924 2922 2925 ), 2923 2926 array( … … 2928 2931 'author_name' => 'div strong', 2929 2932 'author_user_agent' => 'div strong', 2933 2930 2934 ) 2931 2935 ); … … 2942 2946 'author_name' => '\\\&\\\ & &invalid; < < &lt;', 2943 2947 'author_user_agent' => '\\\&\\\ & &invalid; < < &lt;', 2948 2944 2949 ), 2945 2950 array( … … 2950 2955 'author_name' => '\\\&\\\ & &invalid; < < &lt;', 2951 2956 'author_user_agent' => '\\\&\\\ & &invalid; < < &lt;', 2957 2952 2958 ) 2953 2959 ); … … 2963 2969 'author_name' => '<div>div</div> <strong>strong</strong> <script>oh noes</script>', 2964 2970 'author_user_agent' => '<div>div</div> <strong>strong</strong> <script>oh noes</script>', 2971 2965 2972 ), 2966 2973 array( … … 2971 2978 'author_name' => 'div strong', 2972 2979 'author_user_agent' => 'div strong', 2980 2973 2981 ) 2974 2982 );
Note: See TracChangeset
for help on using the changeset viewer.