Ticket #35106: 35106.2.patch
File 35106.2.patch, 3.9 KB (added by , 9 years ago) |
---|
-
src/wp-includes/media.php
878 878 } 879 879 880 880 /** 881 * Get the attachment path relative to the upload directory. 882 * 883 * @since 4.4.1 884 * @access private 885 * 886 * @param string $file Attachment file name. 887 * @return string Attachment path relative to the upload directory. 888 */ 889 function _wp_get_attachment_relative_path( $file ) { 890 $dirname = dirname( $file ); 891 892 if ( false !== strpos( $dirname, 'wp-content/uploads/' ) ) { 893 // Get the directory name relative to the upload directory (back compat for pre-2.7 uploads) 894 $dirname = substr( $dirname, strpos( $dirname, 'wp-content/uploads/' ) + 19 ); 895 } 896 897 return $dirname; 898 } 899 900 /** 881 901 * Caches and returns the base URL of the uploads directory. 882 902 * 883 903 * @since 4.4.0 … … 1006 1026 1007 1027 // Uploads are (or have been) in year/month sub-directories. 1008 1028 if ( $image_basename !== $image_meta['file'] ) { 1009 $dirname = dirname( $image_meta['file'] );1029 $dirname = _wp_get_attachment_relative_path( $image_meta['file'] ); 1010 1030 1011 1031 if ( $dirname !== '.' ) { 1012 1032 $image_baseurl = trailingslashit( $image_baseurl ) . $dirname; -
src/wp-includes/post.php
4879 4879 // Replace file location with url location. 4880 4880 $url = str_replace($uploads['basedir'], $uploads['baseurl'], $file); 4881 4881 } elseif ( false !== strpos($file, 'wp-content/uploads') ) { 4882 $url = $uploads['baseurl'] . substr( $file, strpos($file, 'wp-content/uploads') + 18 ); 4882 // Get the directory name relative to the basedir (back compat for pre-2.7 uploads) 4883 $url = $uploads['baseurl'] . '/' . _wp_get_attachment_relative_path( $file ); 4883 4884 } else { 4884 4885 // It's a newly-uploaded file, therefore $file is relative to the basedir. 4885 4886 $url = $uploads['baseurl'] . "/$file"; -
tests/phpunit/tests/media.php
866 866 } 867 867 868 868 /** 869 * @ticket 35106 870 */ 871 function test_wp_calculate_image_srcset_with_absolute_path_in_meta() { 872 global $_wp_additional_image_sizes; 873 874 $year_month = date('Y/m'); 875 $image_meta = wp_get_attachment_metadata( self::$large_id ); 876 $uploads_dir_url = 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/'; 877 878 // Set up test cases for all expected size names. 879 $intermediates = array( 'medium', 'medium_large', 'large', 'full' ); 880 881 // Add any soft crop intermediate sizes. 882 foreach ( $_wp_additional_image_sizes as $name => $additional_size ) { 883 if ( ! $_wp_additional_image_sizes[$name]['crop'] || 0 === $_wp_additional_image_sizes[$name]['height'] ) { 884 $intermediates[] = $name; 885 } 886 } 887 888 $expected = ''; 889 890 foreach( $image_meta['sizes'] as $name => $size ) { 891 // Whitelist the sizes that should be included so we pick up 'medium_large' in 4.4. 892 if ( in_array( $name, $intermediates ) ) { 893 $expected .= $uploads_dir_url . $year_month . '/' . $size['file'] . ' ' . $size['width'] . 'w, '; 894 } 895 } 896 897 // Add the full size width at the end. 898 $expected .= $uploads_dir_url . $image_meta['file'] . ' ' . $image_meta['width'] .'w'; 899 900 // Prepend an absolute path to simulate a pre-2.7 upload 901 $image_meta['file'] = 'H:\home\wordpress\trunk/wp-content/uploads/' . $image_meta['file']; 902 903 foreach ( $intermediates as $int ) { 904 $image_url = wp_get_attachment_image_url( self::$large_id, $int ); 905 $size_array = $this->_get_image_size_array_from_name( $int ); 906 $this->assertSame( $expected, wp_calculate_image_srcset( $size_array, $image_url, $image_meta ) ); 907 } 908 } 909 910 /** 869 911 * @ticket 33641 870 912 */ 871 913 function test_wp_calculate_image_srcset_false() {