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