WP_Theme: Return false from the display() method when get() fails.

Fixes a potential warning on the themes page when the active theme is deleted.

fixes #26873.


git-svn-id: https://develop.svn.wordpress.org/trunk@27745 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Nacin 2014-03-26 18:21:45 +00:00
parent ed0b146180
commit 79ff680b93
2 changed files with 16 additions and 2 deletions

View File

@ -535,7 +535,7 @@ final class WP_Theme implements ArrayAccess {
* @since 3.4.0
*
* @param string $header Theme header. Name, Description, Author, Version, ThemeURI, AuthorURI, Status, Tags.
* @return string String on success, false on failure.
* @return string|bool String on success, false on failure.
*/
public function get( $header ) {
if ( ! isset( $this->headers[ $header ] ) )
@ -571,10 +571,13 @@ final class WP_Theme implements ArrayAccess {
* @param string $header Theme header. Name, Description, Author, Version, ThemeURI, AuthorURI, Status, Tags.
* @param bool $markup Optional. Whether to mark up the header. Defaults to true.
* @param bool $translate Optional. Whether to translate the header. Defaults to true.
* @return string Processed header, false on failure.
* @return string|bool Processed header, false on failure.
*/
public function display( $header, $markup = true, $translate = true ) {
$value = $this->get( $header );
if ( false === $value ) {
return false;
}
if ( $translate && ( empty( $value ) || ! $this->load_textdomain() ) )
$translate = false;

View File

@ -128,4 +128,15 @@ class Tests_Theme_WPTheme extends WP_UnitTestCase {
function filter_theme_with_spaces() {
return 'subdir/theme with spaces';
}
/**
* @ticket 26873
*/
function test_display_method_on_get_method_failure() {
$theme = new WP_Theme( 'nonexistent', $this->theme_root );
$this->assertEquals( 'nonexistent', $theme->get( 'Name' ) );
$this->assertFalse( $theme->get( 'AuthorURI' ) );
$this->assertFalse( $theme->get( 'Tags' ) );
$this->assertFalse( $theme->display( 'Tags' ) );
}
}