Make WordPress Core

Ticket #15058: 15058.1.diff

File 15058.1.diff, 2.2 KB (added by MikeHansenMe, 7 years ago)
  • src/wp-includes/option.php

     
    240240        if ( is_object( $value ) )
    241241                $value = clone $value;
    242242
     243        if( strlen( $option ) > 64 ) {
     244                $option = md5( $option );
     245                $option = "md5_" . $option;
     246        }
     247
    243248        $value = sanitize_option( $option, $value );
    244249        $old_value = get_option( $option );
    245250
     
    377382        $serialized_value = maybe_serialize( $value );
    378383        $autoload = ( 'no' === $autoload ) ? 'no' : 'yes';
    379384
     385        if( strlen( $option ) > 64 ) {
     386                $option = md5( $option );
     387                $option = "md5_" . $option;
     388        }
     389
    380390        /**
    381391         * Fires before an option is added.
    382392         *
     
    582592        if ( wp_using_ext_object_cache() ) {
    583593                $value = wp_cache_get( $transient, 'transient' );
    584594        } else {
     595
     596                if( strlen( $transient ) > 40 ) {
     597                        $transient = md5( $transient );
     598                        $transient = "md5_" . $transient;
     599                }
     600
    585601                $transient_option = '_transient_' . $transient;
    586602                if ( ! defined( 'WP_INSTALLING' ) ) {
    587603                        // If option is not in alloptions, it is not autoloaded and thus has a timeout
     
    645661        if ( wp_using_ext_object_cache() ) {
    646662                $result = wp_cache_set( $transient, $value, 'transient', $expiration );
    647663        } else {
     664
     665                if( strlen( $transient ) > 40 ) {
     666                        $transient = md5( $transient );
     667                        $transient = "md5_" . $transient;
     668                }
     669
    648670                $transient_timeout = '_transient_timeout_' . $transient;
    649671                $transient = '_transient_' . $transient;
     672
    650673                if ( false === get_option( $transient ) ) {
    651674                        $autoload = 'yes';
    652675                        if ( $expiration ) {
  • tests/phpunit/tests/option/transient.php

     
    8383                update_option( '_transient_timeout_' . $key, $now - 1 );
    8484                $this->assertFalse( get_transient( $key ) );
    8585        }
     86
     87        /**
     88         * ticket 15058
     89         */
     90        function test_transient_long() {
     91                $long_name = "thisisaverylongnamethatwillnotfitincolumnbecauseitistoolongforthecolumn";
     92                set_transient( $long_name, true, 60 );
     93                $this->assertTrue( get_transient( $long_name ) );
     94        }
    8695}