PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3
Jetpack – WP Security, Backup, Speed, & Growth v16.3
16.3 16.3-beta 16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 All 508 releases
← All changes | modules/sitemaps/sitemap-buffer-factory.php +71 -0 16.2-beta → 16.3 View file →
@@ -1,0 +1,71 @@
1 +<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 +/**
3 + * Factory class for creating sitemap buffers.
4 + *
5 + * @since 14.6
6 + * @package automattic/jetpack
7 + */
8 +
9 +if ( ! defined( 'ABSPATH' ) ) {
10 + exit( 0 );
11 +}
12 +
13 +/**
14 + * Creates the appropriate sitemap buffer based on available PHP extensions.
15 + *
16 + * @since 14.6
17 + */
18 +class Jetpack_Sitemap_Buffer_Factory {
19 +
20 + /**
21 + * Create a new sitemap buffer instance.
22 + *
23 + * @since 14.6
24 + *
25 + * @param string $type The type of sitemap buffer ('page', 'image', 'video', etc.).
26 + * @param int $item_limit The maximum number of items in the buffer.
27 + * @param int $byte_limit The maximum number of bytes in the buffer.
28 + * @param string $time The initial datetime of the buffer.
29 + *
30 + * @return Jetpack_Sitemap_Buffer|null The created buffer or null if type is invalid.
31 + */
32 + public static function create( $type, $item_limit, $byte_limit, $time = '1970-01-01 00:00:00' ) {
33 +
34 + /**
35 + * Hook to allow for XMLWriter usage.
36 + *
37 + * Temporary filter to disallow XMLWriter usage.
38 + *
39 + * @since 14.7
40 + * @since 15.2 Update default to true.
41 + * @module sitemaps
42 + *
43 + * @param bool $use_xmlwriter Whether to use XMLWriter. Current default is true.
44 + */
45 + $use_xmlwriter = apply_filters( 'jetpack_sitemap_use_xmlwriter', true );
46 +
47 + // First try XMLWriter if available
48 + if ( $use_xmlwriter && class_exists( 'XMLWriter' ) ) {
49 + $class_name = 'Jetpack_Sitemap_Buffer_' . ucfirst( $type ) . '_XMLWriter';
50 + if ( class_exists( $class_name ) ) {
51 + return new $class_name( $item_limit, $byte_limit, $time );
52 + }
53 + }
54 +
55 + // Then try DOMDocument
56 + if ( class_exists( 'DOMDocument' ) ) {
57 + $class_name = 'Jetpack_Sitemap_Buffer_' . ucfirst( $type );
58 + if ( class_exists( $class_name ) ) {
59 + return new $class_name( $item_limit, $byte_limit, $time );
60 + }
61 + }
62 +
63 + // Finally fall back to the basic implementation
64 + $class_name = 'Jetpack_Sitemap_Buffer_' . ucfirst( $type ) . '_Fallback';
65 + if ( class_exists( $class_name ) ) {
66 + return new $class_name( $item_limit, $byte_limit, $time );
67 + }
68 +
69 + return null;
70 + }
71 +}