Spaces:
Sleeping
Sleeping
/** | |
* Parse OPML XML files and store in globals. | |
* | |
* @package WordPress | |
* @subpackage Administration | |
*/ | |
if ( ! defined( 'ABSPATH' ) ) { | |
die(); | |
} | |
/** | |
* @global string $opml | |
*/ | |
global $opml; | |
/** | |
* Starts a new XML tag. | |
* | |
* Callback function for xml_set_element_handler(). | |
* | |
* @since 0.71 | |
* @access private | |
* | |
* @global array $names | |
* @global array $urls | |
* @global array $targets | |
* @global array $descriptions | |
* @global array $feeds | |
* | |
* @param resource $parser XML Parser resource. | |
* @param string $tag_name XML element name. | |
* @param array $attrs XML element attributes. | |
*/ | |
function startElement( $parser, $tag_name, $attrs ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid | |
global $names, $urls, $targets, $descriptions, $feeds; | |
if ( 'OUTLINE' === $tag_name ) { | |
$name = ''; | |
if ( isset( $attrs['TEXT'] ) ) { | |
$name = $attrs['TEXT']; | |
} | |
if ( isset( $attrs['TITLE'] ) ) { | |
$name = $attrs['TITLE']; | |
} | |
$url = ''; | |
if ( isset( $attrs['URL'] ) ) { | |
$url = $attrs['URL']; | |
} | |
if ( isset( $attrs['HTMLURL'] ) ) { | |
$url = $attrs['HTMLURL']; | |
} | |
// Save the data away. | |
$names[] = $name; | |
$urls[] = $url; | |
$targets[] = isset( $attrs['TARGET'] ) ? $attrs['TARGET'] : ''; | |
$feeds[] = isset( $attrs['XMLURL'] ) ? $attrs['XMLURL'] : ''; | |
$descriptions[] = isset( $attrs['DESCRIPTION'] ) ? $attrs['DESCRIPTION'] : ''; | |
} // End if outline. | |
} | |
/** | |
* Ends a new XML tag. | |
* | |
* Callback function for xml_set_element_handler(). | |
* | |
* @since 0.71 | |
* @access private | |
* | |
* @param resource $parser XML Parser resource. | |
* @param string $tag_name XML tag name. | |
*/ | |
function endElement( $parser, $tag_name ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid | |
// Nothing to do. | |
} | |
// Create an XML parser. | |
if ( ! function_exists( 'xml_parser_create' ) ) { | |
wp_trigger_error( '', __( "PHP's XML extension is not available. Please contact your hosting provider to enable PHP's XML extension." ) ); | |
wp_die( __( "PHP's XML extension is not available. Please contact your hosting provider to enable PHP's XML extension." ) ); | |
} | |
$xml_parser = xml_parser_create(); | |
// Set the functions to handle opening and closing tags. | |
xml_set_element_handler( $xml_parser, 'startElement', 'endElement' ); | |
if ( ! xml_parse( $xml_parser, $opml, true ) ) { | |
printf( | |
/* translators: 1: Error message, 2: Line number. */ | |
__( 'XML Error: %1$s at line %2$s' ), | |
xml_error_string( xml_get_error_code( $xml_parser ) ), | |
xml_get_current_line_number( $xml_parser ) | |
); | |
} | |
// Free up memory used by the XML parser. | |
xml_parser_free( $xml_parser ); | |
unset( $xml_parser ); | |