[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/IXR/ -> class-IXR-value.php (source)

   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  }


Generated : Thu Mar 28 08:20:01 2024 Cross-referenced by PHPXref