PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.2
Jetpack – WP Security, Backup, Speed, & Growth v16.2
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 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 All 502 releases
jetpack / modules / sitemaps / sitemap-buffer-factory.php

sitemap-buffer-factory.php in Jetpack – WP Security, Backup, Speed, & Growth 16.2, at modules/sitemaps/sitemap-buffer-factory.php

72 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 }
72