diff -r 490d5cc509ed -r cf61fcea0001 wp/wp-includes/IXR/class-IXR-value.php
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wp/wp-includes/IXR/class-IXR-value.php Mon Oct 14 17:39:30 2019 +0200
@@ -0,0 +1,138 @@
+data = $data;
+ if (!$type) {
+ $type = $this->calculateType();
+ }
+ $this->type = $type;
+ if ($type == 'struct') {
+ // Turn all the values in the array in to new IXR_Value objects
+ foreach ($this->data as $key => $value) {
+ $this->data[$key] = new IXR_Value($value);
+ }
+ }
+ if ($type == 'array') {
+ for ($i = 0, $j = count($this->data); $i < $j; $i++) {
+ $this->data[$i] = new IXR_Value($this->data[$i]);
+ }
+ }
+ }
+
+ /**
+ * PHP4 constructor.
+ */
+ public function IXR_Value( $data, $type = false ) {
+ self::__construct( $data, $type );
+ }
+
+ function calculateType()
+ {
+ if ($this->data === true || $this->data === false) {
+ return 'boolean';
+ }
+ if (is_integer($this->data)) {
+ return 'int';
+ }
+ if (is_double($this->data)) {
+ return 'double';
+ }
+
+ // Deal with IXR object types base64 and date
+ if (is_object($this->data) && is_a($this->data, 'IXR_Date')) {
+ return 'date';
+ }
+ if (is_object($this->data) && is_a($this->data, 'IXR_Base64')) {
+ return 'base64';
+ }
+
+ // If it is a normal PHP object convert it in to a struct
+ if (is_object($this->data)) {
+ $this->data = get_object_vars($this->data);
+ return 'struct';
+ }
+ if (!is_array($this->data)) {
+ return 'string';
+ }
+
+ // We have an array - is it an array or a struct?
+ if ($this->isStruct($this->data)) {
+ return 'struct';
+ } else {
+ return 'array';
+ }
+ }
+
+ function getXml()
+ {
+ // Return XML for this value
+ switch ($this->type) {
+ case 'boolean':
+ return ''.(($this->data) ? '1' : '0').'';
+ break;
+ case 'int':
+ return ''.$this->data.'';
+ break;
+ case 'double':
+ return ''.$this->data.'';
+ break;
+ case 'string':
+ return ''.htmlspecialchars($this->data).'';
+ break;
+ case 'array':
+ $return = ''."\n";
+ foreach ($this->data as $item) {
+ $return .= ' '.$item->getXml()."\n";
+ }
+ $return .= '';
+ return $return;
+ break;
+ case 'struct':
+ $return = ''."\n";
+ foreach ($this->data as $name => $value) {
+ $name = htmlspecialchars($name);
+ $return .= " $name";
+ $return .= $value->getXml()."\n";
+ }
+ $return .= '';
+ return $return;
+ break;
+ case 'date':
+ case 'base64':
+ return $this->data->getXml();
+ break;
+ }
+ return false;
+ }
+
+ /**
+ * Checks whether or not the supplied array is a struct or not
+ *
+ * @param array $array
+ * @return bool
+ */
+ function isStruct($array)
+ {
+ $expected = 0;
+ foreach ($array as $key => $value) {
+ if ((string)$key !== (string)$expected) {
+ return true;
+ }
+ $expected++;
+ }
+ return false;
+ }
+}