Make WordPress Core

Ticket #34368: 34368.2.diff

File 34368.2.diff, 2.0 KB (added by swissspidy, 9 years ago)
  • src/wp-admin/includes/class-wp-site-icon.php

    diff --git src/wp-admin/includes/class-wp-site-icon.php src/wp-admin/includes/class-wp-site-icon.php
    index 42e2ca6..fbc7c6c 100644
    class WP_Site_Icon { 
    229229         * @return array|null|string The attachment metadata value, array of values, or null.
    230230         */
    231231        public function get_post_metadata( $value, $post_id, $meta_key, $single ) {
    232                 $site_icon_id = get_option( 'site_icon' );
     232                if ( $single && '_wp_attachment_backup_sizes' === $meta_key ) {
     233                        $site_icon_id = get_option( 'site_icon' );
    233234
    234                 if ( $post_id == $site_icon_id && '_wp_attachment_backup_sizes' == $meta_key && $single ) {
    235                         add_filter( 'intermediate_image_sizes', array( $this, 'intermediate_image_sizes' ) );
     235                        if ( $post_id === (int) $site_icon_id ) {
     236                                add_filter( 'intermediate_image_sizes', array( $this, 'intermediate_image_sizes' ) );
     237                        }
    236238                }
    237239
    238240                return $value;
  • tests/phpunit/tests/image/site_icon.php

    diff --git tests/phpunit/tests/image/site_icon.php tests/phpunit/tests/image/site_icon.php
    index e634ee9..cd30bf6 100644
    class Tests_WP_Site_Icon extends WP_UnitTestCase { 
    127127                $this->assertFalse( get_option( 'site_icon', false ) );
    128128        }
    129129
     130        /**
     131         * @ticket 34368
     132         */
     133        function test_get_post_metadata() {
     134                $attachment_id = $this->_insert_attachment();
     135                update_option( 'site_icon', $attachment_id );
     136
     137                $this->wp_site_icon->get_post_metadata( '', $attachment_id, '_some_post_meta', true );
     138                $this->assertFalse( has_filter( 'intermediate_image_sizes', array( $this->wp_site_icon, 'intermediate_image_sizes' ) ) );
     139
     140                $this->wp_site_icon->get_post_metadata( '', $attachment_id, '_wp_attachment_backup_sizes', true );
     141                $this->assertSame( 10,  has_filter( 'intermediate_image_sizes', array( $this->wp_site_icon, 'intermediate_image_sizes' ) ) );
     142
     143                wp_delete_attachment( $attachment_id, true );
     144        }
     145
    130146        function _custom_test_sizes( $sizes ) {
    131147                $sizes[] = 321;
    132148