Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
91.30% covered (success)
91.30%
21 / 23
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
Jetpack_Sitemap_Buffer_Video_XMLWriter
100.00% covered (success)
100.00%
21 / 21
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%
12 / 12
100.00% covered (success)
100.00%
1 / 1
2
 append_item
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
1<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2/**
3 * XMLWriter implementation of the video 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 video xml files using XMLWriter.
15 *
16 * @since 14.6
17 */
18class Jetpack_Sitemap_Buffer_Video_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_Video_XMLWriter' );
27
28        // Add stylesheet
29        $this->writer->writePi(
30            'xml-stylesheet',
31            'type="text/xsl" href="' . $this->finder->construct_sitemap_url( 'video-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 XML namespaces included in video sitemaps.
43         *
44         * @module sitemaps
45         *
46         * @since 4.8.0
47         *
48         * @param array $namespaces Associative array with namespaces and namespace URIs.
49         */
50        $namespaces = apply_filters(
51            'jetpack_sitemap_video_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                'xmlns:video'        => 'http://www.google.com/schemas/sitemap-video/1.1',
57            )
58        );
59
60        foreach ( $namespaces as $name => $value ) {
61            $this->writer->writeAttribute( $name, $value );
62        }
63    }
64
65    /**
66     * Append a URL entry with video information to the sitemap.
67     *
68     * @param array $array The URL item to append.
69     */
70    protected function append_item( $array ) {
71        // Return early if missing fundamental data.
72        if ( empty( $array['url']['video:video'] ) ) {
73            return;
74        }
75
76        $this->array_to_xml( $array );
77    }
78}