1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
<?php /** * Parse OPML XML files and store in globals. * * @package WordPress * @subpackage Administration */
if ( ! defined( 'ABSPATH' ) ) { die(); }
/** * @global string $opml */ global $opml;
/** * XML callback function for the start of a new XML tag. * * @since 0.71 * @access private * * @global array $names * @global array $urls * @global array $targets * @global array $descriptions * @global array $feeds * * @param mixed $parser XML Parser resource. * @param string $tagName XML element name. * @param array $attrs XML element attributes. */ function startElement( $parser, $tagName, $attrs ) { global $names, $urls, $targets, $descriptions, $feeds;
if ( 'OUTLINE' === $tagName ) { $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. }
/** * XML callback function that is called at the end of a XML tag. * * @since 0.71 * @access private * * @param mixed $parser XML Parser resource. * @param string $tagName XML tag name. */ function endElement( $parser, $tagName ) { // Nothing to do. }
// Create an XML parser if ( ! function_exists( 'xml_parser_create' ) ) { 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 );
|