run:R W Run
414 By
2026-03-11 16:18:52
R W Run
4.67 KB
2026-03-11 16:18:52
R W Run
1.23 KB
2026-03-11 16:18:52
R W Run
1.65 KB
2026-03-11 16:18:52
R W Run
854 By
2026-03-11 16:18:52
R W Run
5.24 KB
2026-03-11 16:18:52
R W Run
8.21 KB
2026-03-11 16:18:52
R W Run
927 By
2026-03-11 16:18:52
R W Run
6.61 KB
2026-03-11 16:18:52
R W Run
3.7 KB
2026-03-11 16:18:52
R W Run
error_log
📄class-IXR-value.php
1<?php
2/**
3 * IXR_Value
4 *
5 * @package IXR
6 * @since 1.5.0
7 */
8class IXR_Value {
9 var $data;
10 var $type;
11
12 /**
13 * PHP5 constructor.
14 */
15 function __construct( $data, $type = false )
16 {
17 $this->data = $data;
18 if (!$type) {
19 $type = $this->calculateType();
20 }
21 $this->type = $type;
22 if ($type == 'struct') {
23 // Turn all the values in the array in to new IXR_Value objects
24 foreach ($this->data as $key => $value) {
25 $this->data[$key] = new IXR_Value($value);
26 }
27 }
28 if ($type == 'array') {
29 for ($i = 0, $j = count($this->data); $i < $j; $i++) {
30 $this->data[$i] = new IXR_Value($this->data[$i]);
31 }
32 }
33 }
34
35 /**
36 * PHP4 constructor.
37 */
38 public function IXR_Value( $data, $type = false ) {
39 self::__construct( $data, $type );
40 }
41
42 function calculateType()
43 {
44 if ($this->data === true || $this->data === false) {
45 return 'boolean';
46 }
47 if (is_integer($this->data)) {
48 return 'int';
49 }
50 if (is_double($this->data)) {
51 return 'double';
52 }
53
54 // Deal with IXR object types base64 and date
55 if (is_object($this->data) && is_a($this->data, 'IXR_Date')) {
56 return 'date';
57 }
58 if (is_object($this->data) && is_a($this->data, 'IXR_Base64')) {
59 return 'base64';
60 }
61
62 // If it is a normal PHP object convert it in to a struct
63 if (is_object($this->data)) {
64 $this->data = get_object_vars($this->data);
65 return 'struct';
66 }
67 if (!is_array($this->data)) {
68 return 'string';
69 }
70
71 // We have an array - is it an array or a struct?
72 if ($this->isStruct($this->data)) {
73 return 'struct';
74 } else {
75 return 'array';
76 }
77 }
78
79 function getXml()
80 {
81 // Return XML for this value
82 switch ($this->type) {
83 case 'boolean':
84 return '<boolean>'.(($this->data) ? '1' : '0').'</boolean>';
85 break;
86 case 'int':
87 return '<int>'.$this->data.'</int>';
88 break;
89 case 'double':
90 return '<double>'.$this->data.'</double>';
91 break;
92 case 'string':
93 return '<string>'.htmlspecialchars($this->data).'</string>';
94 break;
95 case 'array':
96 $return = '<array><data>'."\n";
97 foreach ($this->data as $item) {
98 $return .= ' <value>'.$item->getXml()."</value>\n";
99 }
100 $return .= '</data></array>';
101 return $return;
102 break;
103 case 'struct':
104 $return = '<struct>'."\n";
105 foreach ($this->data as $name => $value) {
106 $name = htmlspecialchars($name);
107 $return .= " <member><name>$name</name><value>";
108 $return .= $value->getXml()."</value></member>\n";
109 }
110 $return .= '</struct>';
111 return $return;
112 break;
113 case 'date':
114 case 'base64':
115 return $this->data->getXml();
116 break;
117 }
118 return false;
119 }
120
121 /**
122 * Checks whether or not the supplied array is a struct or not
123 *
124 * @param array $array
125 * @return bool
126 */
127 function isStruct($array)
128 {
129 $expected = 0;
130 foreach ($array as $key => $value) {
131 if ((string)$key !== (string)$expected) {
132 return true;
133 }
134 $expected++;
135 }
136 return false;
137 }
138}
139