Ticket #10788: 10788.unserialized.diff

File 10788.unserialized.diff, 2.0 KB (added by nacin, 3 years ago)

Consistently pass unserialized values to hooks in update_site_option(). Change add_option() and add_site_option() to do the same. Any plugin using maybe_unserialize() would work fine, as the value wouldn't need to be unserialized any longer.

Line 
1Index: C:/xampp/htdocs/commit/wp-includes/functions.php
2===================================================================
3--- C:/xampp/htdocs/commit/wp-includes/functions.php    (revision 13430)
4+++ C:/xampp/htdocs/commit/wp-includes/functions.php    (working copy)
5@@ -576,6 +576,7 @@
6                if ( false !== get_option( $safe_option ) )
7                        return;
8 
9+       $_value = $value;
10        $value = maybe_serialize( $value );
11        $autoload = ( 'no' === $autoload ) ? 'no' : 'yes';
12        do_action( 'add_option', $option, $value );
13@@ -599,8 +600,8 @@
14        $result = $wpdb->query( $wpdb->prepare( "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)", $option, $value, $autoload ) );
15 
16        if ( $result ) {
17-               do_action( "add_option_{$option}", $option, $value );
18-               do_action( 'added_option', $option, $value );
19+               do_action( "add_option_{$option}", $option, $_value );
20+               do_action( 'added_option', $option, $_value );
21                return true;
22        }
23        return false;
24@@ -3444,13 +3445,14 @@
25                $value = sanitize_option( $option, $value );
26                wp_cache_set( $cache_key, $value, 'site-options' );
27 
28+               $_value = $value;
29                $value = maybe_serialize($value);
30 
31                $result = $wpdb->insert( $wpdb->sitemeta, array('site_id' => $wpdb->siteid, 'meta_key' => $option, 'meta_value' => $value ) );
32        }
33 
34-       do_action( "add_site_option_{$option}", $option, $value );
35-       do_action( "add_site_option", $option, $value );
36+       do_action( "add_site_option_{$option}", $option, $_value );
37+       do_action( "add_site_option", $option, $_value );
38 
39        return $result;
40 }
41@@ -3532,8 +3534,10 @@
42                $value = sanitize_option( $option, $value );
43                wp_cache_set( $cache_key, $value, 'site-options' );
44 
45+               $_value = $value;
46                $value = maybe_serialize( $value );
47                $result = $wpdb->update( $wpdb->sitemeta, array( 'meta_value' => $value ), array( 'site_id' => $wpdb->siteid, 'meta_key' => $option ) );
48+               $value = $_value;
49        }
50 
51        if ( $result ) {