/var/www/html_us/wp-admin/link-parse-opml.php


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
97
98
99
100
101
<?php
/**
 * 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$opmltrue ) ) {
    
printf(
        
/* translators: 1: Error message, 2: Line number. */
        
__'XML Error: %1$s at line %2$s' ),
        
xml_error_stringxml_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 );