PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.3.3
Jetpack – WP Security, Backup, Speed, & Growth v13.3.3
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 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / sitemaps / sitemap-buffer-fallback.php
jetpack / modules / sitemaps Last commit date
sitemap-buffer-fallback.php 2 years ago sitemap-buffer-image-fallback.php 2 years ago sitemap-buffer-image.php 4 years ago sitemap-buffer-master-fallback.php 2 years ago sitemap-buffer-master.php 4 years ago sitemap-buffer-news-fallback.php 2 years ago sitemap-buffer-news.php 4 years ago sitemap-buffer-page-fallback.php 2 years ago sitemap-buffer-page.php 4 years ago sitemap-buffer-video-fallback.php 2 years ago sitemap-buffer-video.php 4 years ago sitemap-buffer.php 3 years ago sitemap-builder.php 2 years ago sitemap-constants.php 4 years ago sitemap-finder.php 2 years ago sitemap-librarian.php 2 years ago sitemap-logger.php 4 years ago sitemap-state.php 2 years ago sitemap-stylist.php 2 years ago sitemaps.php 2 years ago
sitemap-buffer-fallback.php
155 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * The fallback buffer for users with no XML support.
4 *
5 * @since 5.3.0
6 * @package automattic/jetpack
7 */
8
9 /**
10 * A buffer for constructing master sitemap xml files.
11 *
12 * @since 5.1.0
13 */
14 abstract class Jetpack_Sitemap_Buffer_Fallback extends Jetpack_Sitemap_Buffer {
15
16 /**
17 * The buffer contents.
18 *
19 * @access protected
20 * @since 5.3.0
21 * @var string The buffer contents.
22 */
23 protected $buffer;
24
25 /**
26 * Jetpack_Sitemap_Buffer_Fallback constructor.
27 *
28 * @param int $item_limit The maximum size of the buffer in items.
29 * @param int $byte_limit The maximum size of the buffer in bytes.
30 * @param string $time The initial datetime of the buffer. Must be in 'YYYY-MM-DD hh:mm:ss' format.
31 */
32 public function __construct( $item_limit, $byte_limit, $time = '1970-01-01 00:00:00' ) {
33 $this->is_full_flag = false;
34 $this->is_empty_flag = true;
35 $this->timestamp = $time;
36
37 $this->finder = new Jetpack_Sitemap_Finder();
38
39 $this->item_capacity = max( 1, (int) $item_limit );
40 $this->byte_capacity = max( 1, (int) $byte_limit ) - strlen( $this->contents() );
41 }
42
43 /**
44 * Append an item to the buffer, if there is room for it,
45 * and set is_empty_flag to false. If there is no room,
46 * we set is_full_flag to true. If $item is null,
47 * don't do anything and report success.
48 *
49 * @since 5.3.0
50 *
51 * @param array $array The item to be added.
52 *
53 * @return bool True if the append succeeded, False if not.
54 */
55 public function append( $array ) {
56 if ( $array === null ) {
57 return true;
58 }
59
60 if ( $this->is_full_flag ) {
61 return false;
62 }
63
64 if ( 0 >= $this->item_capacity || 0 >= $this->byte_capacity ) {
65 $this->is_full_flag = true;
66 return false;
67 } else {
68 $this->item_capacity -= 1;
69 $added_string = $this->array_to_xml_string( $array );
70 $this->buffer .= $added_string;
71 $this->is_empty_flag = false;
72
73 mbstring_binary_safe_encoding(); // So we can safely use strlen().
74 $this->byte_capacity -= strlen( $added_string );
75 reset_mbstring_encoding();
76
77 return true;
78 }
79 }
80
81 /**
82 * Detect whether the buffer is empty.
83 *
84 * @since 5.3.0
85 *
86 * @return bool True if the buffer is empty, false otherwise.
87 */
88 public function is_empty() {
89 return $this->is_empty_flag;
90 }
91
92 /**
93 * Retrieve the contents of the buffer.
94 *
95 * @since 5.3.0
96 *
97 * @return string The contents of the buffer (with the footer included).
98 */
99 public function contents() {
100 $root = $this->get_root_element();
101
102 return '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL . $root[0] . $this->buffer . $root[1] . PHP_EOL;
103 }
104
105 /**
106 * Legacy implementation of array to XML conversion without using DOMDocument.
107 *
108 * @param array $array Item to append to buffer.
109 * @param DOMElement $parent (optional) an element to which new children should be added.
110 * @param DOMDocument $root (optional) the parent document.
111 * @return String $result
112 */
113 public function array_to_xml_string( $array, $parent = null, $root = null ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
114 $string = '';
115
116 foreach ( $array as $key => $value ) {
117 // Only allow a-z, A-Z, colon, underscore, and hyphen.
118 $tag = preg_replace( '/[^a-zA-Z:_-]/', '_', $key );
119
120 if ( is_array( $value ) ) {
121 $string .= "<$tag>";
122 $string .= $this->array_to_xml_string( $value );
123 $string .= "</$tag>";
124 } elseif ( $value === null ) {
125 $string .= "<$tag />";
126 } else {
127 $string .= "<$tag>" . htmlspecialchars( $value, ENT_COMPAT ) . "</$tag>";
128 }
129 }
130
131 return $string;
132 }
133
134 /**
135 * Render an associative array of XML attribute key/value pairs.
136 *
137 * @access public
138 * @since 5.3.0
139 *
140 * @param array $array Key/value array of attributes.
141 *
142 * @return string The rendered attribute string.
143 */
144 public static function array_to_xml_attr_string( $array ) {
145 $string = '';
146
147 foreach ( $array as $key => $value ) {
148 $key = preg_replace( '/[^a-zA-Z:_-]/', '_', $key );
149 $string .= ' ' . $key . '="' . esc_attr( $value ) . '"';
150 }
151
152 return $string;
153 }
154 }
155