Remove unnecessary checks before setting `$wp_settings_*` arrays. Adds unit test for setting a nonexistent variable to a multi-dimensional `array`.

Props scribu.
Fixes #17884.



git-svn-id: https://develop.svn.wordpress.org/trunk@25240 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Scott Taylor 2013-09-04 19:06:13 +00:00
parent 24bf60bb4f
commit d10b9d32a0
2 changed files with 13 additions and 19 deletions

View File

@ -1072,13 +1072,6 @@ function add_settings_section($id, $title, $callback, $page) {
$page = 'reading'; $page = 'reading';
} }
if ( !isset($wp_settings_sections) )
$wp_settings_sections = array();
if ( !isset($wp_settings_sections[$page]) )
$wp_settings_sections[$page] = array();
if ( !isset($wp_settings_sections[$page][$id]) )
$wp_settings_sections[$page][$id] = array();
$wp_settings_sections[$page][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback); $wp_settings_sections[$page][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback);
} }
@ -1117,13 +1110,6 @@ function add_settings_field($id, $title, $callback, $page, $section = 'default',
$page = 'reading'; $page = 'reading';
} }
if ( !isset($wp_settings_fields) )
$wp_settings_fields = array();
if ( !isset($wp_settings_fields[$page]) )
$wp_settings_fields[$page] = array();
if ( !isset($wp_settings_fields[$page][$section]) )
$wp_settings_fields[$page][$section] = array();
$wp_settings_fields[$page][$section][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $args); $wp_settings_fields[$page][$section][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $args);
} }
@ -1143,7 +1129,7 @@ function add_settings_field($id, $title, $callback, $page, $section = 'default',
function do_settings_sections( $page ) { function do_settings_sections( $page ) {
global $wp_settings_sections, $wp_settings_fields; global $wp_settings_sections, $wp_settings_fields;
if ( ! isset( $wp_settings_sections ) || !isset( $wp_settings_sections[$page] ) ) if ( ! isset( $wp_settings_sections[$page] ) )
return; return;
foreach ( (array) $wp_settings_sections[$page] as $section ) { foreach ( (array) $wp_settings_sections[$page] as $section ) {
@ -1178,7 +1164,7 @@ function do_settings_sections( $page ) {
function do_settings_fields($page, $section) { function do_settings_fields($page, $section) {
global $wp_settings_fields; global $wp_settings_fields;
if ( !isset($wp_settings_fields) || !isset($wp_settings_fields[$page]) || !isset($wp_settings_fields[$page][$section]) ) if ( ! isset( $wp_settings_fields[$page][$section] ) )
return; return;
foreach ( (array) $wp_settings_fields[$page][$section] as $field ) { foreach ( (array) $wp_settings_fields[$page][$section] as $field ) {
@ -1219,9 +1205,6 @@ function do_settings_fields($page, $section) {
function add_settings_error( $setting, $code, $message, $type = 'error' ) { function add_settings_error( $setting, $code, $message, $type = 'error' ) {
global $wp_settings_errors; global $wp_settings_errors;
if ( !isset($wp_settings_errors) )
$wp_settings_errors = array();
$new_error = array( $new_error = array(
'setting' => $setting, 'setting' => $setting,
'code' => $code, 'code' => $code,

View File

@ -88,4 +88,15 @@ EOF;
EOF; EOF;
$this->assertEquals($expected, mask_input_value($in)); $this->assertEquals($expected, mask_input_value($in));
} }
function test_setting_nonexistent_arrays() {
$page = 1;
$field = 'settings';
error_reporting( -1 );
$empty_array[$page][$field] = 'foo';
unset( $empty_array[$page]['bar']['baz'] );
}
} }