Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
90.48% covered (success)
90.48%
19 / 21
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
Jetpack_Sitemap_Buffer_Page_XMLWriter
100.00% covered (success)
100.00%
19 / 19
100.00% covered (success)
100.00%
3 / 3
5
100.00% covered (success)
100.00%
1 / 1
 initialize_buffer
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
 start_root
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
1 / 1
2
 append_item
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
2
1<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2/**
3 * XMLWriter implementation of the page sitemap buffer.
4 *
5 * @since 14.6
6 * @package automattic/jetpack
7 */
8
9if ( ! defined( 'ABSPATH' ) ) {
10    exit( 0 );
11}
12
13/**
14 * A buffer for constructing sitemap page xml files using XMLWriter.
15 *
16 * @since 14.6
17 */
18class Jetpack_Sitemap_Buffer_Page_XMLWriter extends Jetpack_Sitemap_Buffer_XMLWriter {
19
20    /**
21     * Initialize the buffer with required headers (no root element here).
22     */
23    protected function initialize_buffer() {
24        // Add generator comment
25        $this->writer->writeComment( "generator='jetpack-" . JETPACK__VERSION . "'" );
26        $this->writer->writeComment( 'Jetpack_Sitemap_Buffer_Page_XMLWriter' );
27
28        // Add stylesheet
29        $this->writer->writePi(
30            'xml-stylesheet',
31            'type="text/xsl" href="' . $this->finder->construct_sitemap_url( 'sitemap.xsl' ) . '"'
32        );
33    }
34
35    /**
36     * Start the root element and write its namespaces.
37     */
38    protected function start_root() {
39        $this->writer->startElement( 'urlset' );
40
41        /**
42         * Filter the attribute value pairs used for namespace and namespace URI mappings.
43         *
44         * @module sitemaps
45         *
46         * @since 3.9.0
47         *
48         * @param array $namespaces Associative array with namespaces and namespace URIs.
49         */
50        $namespaces = apply_filters(
51            'jetpack_sitemap_ns',
52            array(
53                'xmlns:xsi'          => 'http://www.w3.org/2001/XMLSchema-instance',
54                'xsi:schemaLocation' => 'http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd',
55                'xmlns'              => 'http://www.sitemaps.org/schemas/sitemap/0.9',
56            )
57        );
58
59        foreach ( $namespaces as $name => $value ) {
60            $this->writer->writeAttribute( $name, $value );
61        }
62    }
63
64    /**
65     * Append a URL entry to the sitemap.
66     *
67     * @param array $array The URL item to append.
68     */
69    protected function append_item( $array ) {
70        if ( ! empty( $array['url'] ) ) {
71            $this->array_to_xml( $array );
72        }
73    }
74}