WordPress.org

Make WordPress Core

Ticket #38921: 38921.diff

File 38921.diff, 1.7 KB (added by birgire, 20 months ago)
  • src/wp-includes/wp-db.php

    diff --git src/wp-includes/wp-db.php src/wp-includes/wp-db.php
    index 77b64da..b5e38c1 100644
    class wpdb { 
    26372637                 */
    26382638                $charset = apply_filters( 'pre_get_table_charset', null, $table );
    26392639                if ( null !== $charset ) {
     2640                        $this->table_charset[ $tablekey ] = $charset;
    26402641                        return $charset;
    26412642                }
    26422643
  • tests/phpunit/tests/db/charset.php

    diff --git tests/phpunit/tests/db/charset.php tests/phpunit/tests/db/charset.php
    index e0f9df2..d54dd14 100644
    class Tests_DB_Charset extends WP_UnitTestCase { 
    833833        }
    834834
    835835        /**
     836         * Tests if the column charset handles table charset changes with the `pre_get_table_charset` filter.
     837         *
     838         * @ticket 38921
     839         */
     840        public function test_get_table_and_column_charset_with_pre_get_table_charset_filter() {
     841                add_filter( 'pre_get_table_charset', array( $this, 'change_table_charset_callback' ), 10, 2 );
     842                $table_charset = self::$_wpdb->get_table_charset( 'some_table' );
     843                remove_filter( 'pre_get_table_charset', array( $this, 'change_table_charset_callback' ), 10, 2 );
     844
     845                $column_charset = self::$_wpdb->get_col_charset( 'some_table', 'some_column' );
     846
     847                $this->assertSame( 'fake_charset', $table_charset );
     848                $this->assertSame( 'fake_charset', $column_charset );
     849        }
     850
     851        /**
     852         * Callback for the `pre_get_table_charset` filter.
     853         *
     854         * @param string $charset  The table's character set.
     855         * @param string $table    The name of the table.
     856         * @return string $charset The table's character set.
     857         */
     858        public function change_table_charset_callback( $charset, $table ) {
     859                return 'fake_charset';
     860        }
     861
     862        /**
    836863         * @dataProvider data_test_get_column_charset
    837864         * @ticket 33501
    838865         */