oEmbed: if `SimpleXMLElement` does not exist, return an `HTTP Error 501 Not implemented` response.
Props swissspidy. Fixes #34274. git-svn-id: https://develop.svn.wordpress.org/trunk@35354 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
ff49cc7ebf
commit
a19a0e6e72
|
@ -142,12 +142,17 @@ final class WP_oEmbed_Controller {
|
|||
* @return string The XML response data.
|
||||
*/
|
||||
public function xml_response( $data ) {
|
||||
if ( ! class_exists( 'SimpleXMLElement' ) ) {
|
||||
status_header( 501 );
|
||||
return get_status_header_desc( 501 );
|
||||
}
|
||||
|
||||
$result = _oembed_create_xml( $data );
|
||||
|
||||
// Bail if there's no XML.
|
||||
if ( ! $result ) {
|
||||
status_header( 501 );
|
||||
return 'Not implemented';
|
||||
return get_status_header_desc( 501 );
|
||||
}
|
||||
|
||||
if ( ! headers_sent() ) {
|
||||
|
|
|
@ -351,8 +351,11 @@ function wp_oembed_add_discovery_links() {
|
|||
|
||||
if ( is_singular() ) {
|
||||
$output .= '<link rel="alternate" type="application/json+oembed" href="' . esc_url( get_oembed_endpoint_url( get_permalink() ) ) . '" />' . "\n";
|
||||
|
||||
if ( class_exists( 'SimpleXMLElement' ) ) {
|
||||
$output .= '<link rel="alternate" type="text/xml+oembed" href="' . esc_url( get_oembed_endpoint_url( get_permalink(), 'xml' ) ) . '" />' . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the oEmbed discovery links HTML.
|
||||
|
|
|
@ -164,9 +164,9 @@ class Test_oEmbed_Controller extends WP_UnitTestCase {
|
|||
function test_request_xml_invalid_data() {
|
||||
$legacy_controller = new WP_oEmbed_Controller();
|
||||
|
||||
$this->assertEquals( 'Not implemented', $legacy_controller->xml_response( null ) );
|
||||
$this->assertEquals( 'Not implemented', $legacy_controller->xml_response( 123 ) );
|
||||
$this->assertEquals( 'Not implemented', $legacy_controller->xml_response( array() ) );
|
||||
$this->assertEquals( get_status_header_desc( 501 ), $legacy_controller->xml_response( null ) );
|
||||
$this->assertEquals( get_status_header_desc( 501 ), $legacy_controller->xml_response( 123 ) );
|
||||
$this->assertEquals( get_status_header_desc( 501 ), $legacy_controller->xml_response( array() ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue