Make WordPress Core

Ticket #39768: 39768.3.diff

File 39768.3.diff, 2.8 KB (added by SergeyBiryukov, 5 years ago)
  • src/wp-includes/media.php

     
    42954295        }
    42964296
    42974297        $sql = $wpdb->prepare(
    4298                 "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attached_file' AND meta_value = %s",
     4298                "SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = '_wp_attached_file' AND meta_value = %s",
    42994299                $path
    43004300        );
    43014301
    4302         $post_id = $wpdb->get_var( $sql );
     4302        $results = $wpdb->get_results( $sql );
     4303        $post_id = null;
    43034304
     4305        if ( $results ) {
     4306                // Use the first available result, but prefer a case-sensitive match, if exists.
     4307                $post_id = reset( $results )->post_id;
     4308
     4309                if ( count( $results ) > 1 ) {
     4310                        foreach ( $results as $result ) {
     4311                                if ( $path === $result->meta_value ) {
     4312                                        $post_id = $result->post_id;
     4313                                        break;
     4314                                }
     4315                        }
     4316                }
     4317        }
     4318
    43044319        /**
    43054320         * Filters an attachment id found by URL.
    43064321         *
  • tests/phpunit/tests/media.php

     
    10581058                $this->assertEquals( $attachment_id, attachment_url_to_postid( $image_url ) );
    10591059        }
    10601060
    1061         function test_attachment_url_to_postid_schemes() {
     1061        /**
     1062         * @ticket 33109
     1063         */
     1064        function test_attachment_url_to_postid_with_different_scheme() {
    10621065                $image_path    = '2014/11/' . $this->img_name;
    10631066                $attachment_id = self::factory()->attachment->create_object(
    10641067                        $image_path,
     
    10691072                        )
    10701073                );
    10711074
    1072                 /**
    1073                  * @ticket 33109 Testing protocols not matching
    1074                  */
    10751075                $image_url = 'https://' . WP_TESTS_DOMAIN . '/wp-content/uploads/' . $image_path;
    10761076                $this->assertEquals( $attachment_id, attachment_url_to_postid( $image_url ) );
    10771077        }
    10781078
     1079        /**
     1080         * @ticket 39768
     1081         */
     1082        function test_attachment_url_to_postid_should_be_case_sensitive() {
     1083                $image_path_lower_case    = '2014/11/' . $this->img_name;
     1084                $attachment_id_lower_case = self::factory()->attachment->create_object(
     1085                        $image_path_lower_case,
     1086                        0,
     1087                        array(
     1088                                'post_mime_type' => 'image/jpeg',
     1089                                'post_type'      => 'attachment',
     1090                        )
     1091                );
     1092
     1093                $image_path_upper_case    = '2014/11/' . ucfirst( $this->img_name );
     1094                $attachment_id_upper_case = self::factory()->attachment->create_object(
     1095                        $image_path_upper_case,
     1096                        0,
     1097                        array(
     1098                                'post_mime_type' => 'image/jpeg',
     1099                                'post_type'      => 'attachment',
     1100                        )
     1101                );
     1102
     1103                $image_url  = 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/' . $image_path_upper_case;
     1104                $this->assertEquals( $attachment_id_upper_case, attachment_url_to_postid( $image_url ) );
     1105        }
     1106
    10791107        function test_attachment_url_to_postid_filtered() {
    10801108                $image_path    = '2014/11/' . $this->img_name;
    10811109                $attachment_id = self::factory()->attachment->create_object(