[ Index ] |
PHP Cross Reference of WordPress |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * IXR_Value 4 * 5 * @package IXR 6 * @since 1.5.0 7 */ 8 class 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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sat Nov 23 01:00:02 2024 | Cross-referenced by PHPXref 0.7.1 |