/var/www/hkosl.com/aga/wp-includes/IXR/class-IXR-value.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?php
/**
 * IXR_Value
 *
 * @package IXR
 * @since 1.5.0
 */
class IXR_Value {
    var 
$data;
    var 
$type;

    
/**
     * PHP5 constructor.
     */
    
function __construct$data$type false )
    {
        
$this->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 
'<boolean>'.(($this->data) ? '1' '0').'</boolean>';
                break;
            case 
'int':
                return 
'<int>'.$this->data.'</int>';
                break;
            case 
'double':
                return 
'<double>'.$this->data.'</double>';
                break;
            case 
'string':
                return 
'<string>'.htmlspecialchars($this->data).'</string>';
                break;
            case 
'array':
                
$return '<array><data>'."\n";
                foreach (
$this->data as $item) {
                    
$return .= '  <value>'.$item->getXml()."</value>\n";
                }
                
$return .= '</data></array>';
                return 
$return;
                break;
            case 
'struct':
                
$return '<struct>'."\n";
                foreach (
$this->data as $name => $value) {
                    
$name htmlspecialchars($name);
                    
$return .= "  <member><name>$name</name><value>";
                    
$return .= $value->getXml()."</value></member>\n";
                }
                
$return .= '</struct>';
                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;
    }
}