| @@ 972-1003 (lines=32) @@ | ||
| 969 | * @param object |
|
| 970 | * @return array |
|
| 971 | */ |
|
| 972 | public function xmlrpc_decoder($xmlrpc_val) |
|
| 973 | { |
|
| 974 | $kind = $xmlrpc_val->kindOf(); |
|
| 975 | ||
| 976 | if ($kind === 'scalar') |
|
| 977 | { |
|
| 978 | return $xmlrpc_val->scalarval(); |
|
| 979 | } |
|
| 980 | elseif ($kind === 'array') |
|
| 981 | { |
|
| 982 | reset($xmlrpc_val->me); |
|
| 983 | $b = current($xmlrpc_val->me); |
|
| 984 | $arr = array(); |
|
| 985 | ||
| 986 | for ($i = 0, $size = count($b); $i < $size; $i++) |
|
| 987 | { |
|
| 988 | $arr[] = $this->xmlrpc_decoder($xmlrpc_val->me['array'][$i]); |
|
| 989 | } |
|
| 990 | return $arr; |
|
| 991 | } |
|
| 992 | elseif ($kind === 'struct') |
|
| 993 | { |
|
| 994 | reset($xmlrpc_val->me['struct']); |
|
| 995 | $arr = array(); |
|
| 996 | ||
| 997 | while (list($key,$value) = each($xmlrpc_val->me['struct'])) |
|
| 998 | { |
|
| 999 | $arr[$key] = $this->xmlrpc_decoder($value); |
|
| 1000 | } |
|
| 1001 | return $arr; |
|
| 1002 | } |
|
| 1003 | } |
|
| 1004 | ||
| 1005 | // -------------------------------------------------------------------- |
|
| 1006 | ||
| @@ 1610-1643 (lines=34) @@ | ||
| 1607 | * @param object |
|
| 1608 | * @return mixed |
|
| 1609 | */ |
|
| 1610 | public function decode_message($param) |
|
| 1611 | { |
|
| 1612 | $kind = $param->kindOf(); |
|
| 1613 | ||
| 1614 | if ($kind === 'scalar') |
|
| 1615 | { |
|
| 1616 | return $param->scalarval(); |
|
| 1617 | } |
|
| 1618 | elseif ($kind === 'array') |
|
| 1619 | { |
|
| 1620 | reset($param->me); |
|
| 1621 | $b = current($param->me); |
|
| 1622 | $arr = array(); |
|
| 1623 | ||
| 1624 | for ($i = 0, $c = count($b); $i < $c; $i++) |
|
| 1625 | { |
|
| 1626 | $arr[] = $this->decode_message($param->me['array'][$i]); |
|
| 1627 | } |
|
| 1628 | ||
| 1629 | return $arr; |
|
| 1630 | } |
|
| 1631 | elseif ($kind === 'struct') |
|
| 1632 | { |
|
| 1633 | reset($param->me['struct']); |
|
| 1634 | $arr = array(); |
|
| 1635 | ||
| 1636 | while (list($key,$value) = each($param->me['struct'])) |
|
| 1637 | { |
|
| 1638 | $arr[$key] = $this->decode_message($value); |
|
| 1639 | } |
|
| 1640 | ||
| 1641 | return $arr; |
|
| 1642 | } |
|
| 1643 | } |
|
| 1644 | ||
| 1645 | } // END XML_RPC_Message Class |
|
| 1646 | ||