PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
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
abilities 1 month ago sitemap-buffer-factory.php 7 months ago sitemap-buffer-fallback.php 7 months ago sitemap-buffer-image-fallback.php 7 months ago sitemap-buffer-image-xmlwriter.php 7 months ago sitemap-buffer-image.php 7 months ago sitemap-buffer-master-fallback.php 7 months ago sitemap-buffer-master-xmlwriter.php 7 months ago sitemap-buffer-master.php 7 months ago sitemap-buffer-news-fallback.php 7 months ago sitemap-buffer-news-xmlwriter.php 7 months ago sitemap-buffer-news.php 7 months ago sitemap-buffer-page-fallback.php 7 months ago sitemap-buffer-page-xmlwriter.php 7 months ago sitemap-buffer-page.php 7 months ago sitemap-buffer-video-fallback.php 7 months ago sitemap-buffer-video-xmlwriter.php 7 months ago sitemap-buffer-video.php 7 months ago sitemap-buffer-xmlwriter.php 7 months ago sitemap-buffer.php 7 months ago sitemap-builder.php 1 month ago sitemap-constants.php 7 months ago sitemap-finder.php 7 months ago sitemap-librarian.php 7 months ago sitemap-logger.php 7 months ago sitemap-state.php 7 months ago sitemap-stylist.php 7 months ago sitemaps.php 1 month ago
sitemap-buffer-fallback.php
159 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 if ( ! defined( 'ABSPATH' ) ) {
10 exit( 0 );
11 }
12
13 /**
14 * A buffer for constructing master sitemap xml files.
15 *
16 * @since 5.1.0
17 */
18 abstract class Jetpack_Sitemap_Buffer_Fallback extends Jetpack_Sitemap_Buffer {
19
20 /**
21 * The buffer contents.
22 *
23 * @access protected
24 * @since 5.3.0
25 * @var string The buffer contents.
26 */
27 protected $buffer;
28
29 /**
30 * Jetpack_Sitemap_Buffer_Fallback constructor.
31 *
32 * @param int $item_limit The maximum size of the buffer in items.
33 * @param int $byte_limit The maximum size of the buffer in bytes.
34 * @param string $time The initial datetime of the buffer. Must be in 'YYYY-MM-DD hh:mm:ss' format.
35 */
36 public function __construct( $item_limit, $byte_limit, $time = '1970-01-01 00:00:00' ) {
37 $this->is_full_flag = false;
38 $this->is_empty_flag = true;
39 $this->timestamp = $time;
40
41 $this->finder = new Jetpack_Sitemap_Finder();
42
43 $this->item_capacity = max( 1, (int) $item_limit );
44 $this->byte_capacity = max( 1, (int) $byte_limit ) - strlen( $this->contents() );
45 }
46
47 /**
48 * Append an item to the buffer, if there is room for it,
49 * and set is_empty_flag to false. If there is no room,
50 * we set is_full_flag to true. If $item is null,
51 * don't do anything and report success.
52 *
53 * @since 5.3.0
54 *
55 * @param array $array The item to be added.
56 *
57 * @return bool True if the append succeeded, False if not.
58 */
59 public function append( $array ) {
60 if ( $array === null ) {
61 return true;
62 }
63
64 if ( $this->is_full_flag ) {
65 return false;
66 }
67
68 if ( 0 >= $this->item_capacity || 0 >= $this->byte_capacity ) {
69 $this->is_full_flag = true;
70 return false;
71 } else {
72 $this->item_capacity -= 1;
73 $added_string = $this->array_to_xml_string( $array );
74 $this->buffer .= $added_string;
75 $this->is_empty_flag = false;
76
77 mbstring_binary_safe_encoding(); // So we can safely use strlen().
78 $this->byte_capacity -= strlen( $added_string );
79 reset_mbstring_encoding();
80
81 return true;
82 }
83 }
84
85 /**
86 * Detect whether the buffer is empty.
87 *
88 * @since 5.3.0
89 *
90 * @return bool True if the buffer is empty, false otherwise.
91 */
92 public function is_empty() {
93 return $this->is_empty_flag;
94 }
95
96 /**
97 * Retrieve the contents of the buffer.
98 *
99 * @since 5.3.0
100 *
101 * @return string The contents of the buffer (with the footer included).
102 */
103 public function contents() {
104 $root = $this->get_root_element();
105
106 return '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL . $root[0] . $this->buffer . $root[1] . PHP_EOL;
107 }
108
109 /**
110 * Legacy implementation of array to XML conversion without using DOMDocument.
111 *
112 * @param array $array Item to append to buffer.
113 * @param DOMElement $parent (optional) an element to which new children should be added.
114 * @param DOMDocument $root (optional) the parent document.
115 * @return String $result
116 */
117 public function array_to_xml_string( $array, $parent = null, $root = null ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
118 $string = '';
119
120 foreach ( $array as $key => $value ) {
121 // Only allow a-z, A-Z, colon, underscore, and hyphen.
122 $tag = preg_replace( '/[^a-zA-Z:_-]/', '_', $key );
123
124 if ( is_array( $value ) ) {
125 $string .= "<$tag>";
126 $string .= $this->array_to_xml_string( $value );
127 $string .= "</$tag>";
128 } elseif ( $value === null ) {
129 $string .= "<$tag />";
130 } else {
131 $string .= "<$tag>" . htmlspecialchars( $value, ENT_COMPAT ) . "</$tag>";
132 }
133 }
134
135 return $string;
136 }
137
138 /**
139 * Render an associative array of XML attribute key/value pairs.
140 *
141 * @access public
142 * @since 5.3.0
143 *
144 * @param array $array Key/value array of attributes.
145 *
146 * @return string The rendered attribute string.
147 */
148 public static function array_to_xml_attr_string( $array ) {
149 $string = '';
150
151 foreach ( $array as $key => $value ) {
152 $key = preg_replace( '/[^a-zA-Z:_-]/', '_', $key );
153 $string .= ' ' . $key . '="' . esc_attr( $value ) . '"';
154 }
155
156 return $string;
157 }
158 }
159