/** * * @param * @return * @access private */ function _decodeValue($valuetag) { $childs = $valuetag->childs(); $value = null; if (count($childs)) { switch ($childs[0]->name()) { case 'I4': case 'INT': $value = intval($childs[0]->content()); break; case 'DOUBLE': $value = doubleval($childs[0]->content()); break; case 'STRING': $value = html_entity_decode($childs[0]->content()); break; case 'BOOLEAN': $value = intval($childs[0]->content()) ? true : false; break; case 'ARRAY': $value = array(); if (isset($childs[0]->DATA->VALUE)) { $listvalue = is_array($childs[0]->DATA->VALUE) ? $childs[0]->DATA->VALUE : array($childs[0]->DATA->VALUE); foreach ($listvalue as $val) { $value[] = CopixXmlRpc::_decodeValue($val); } } break; case 'STRUCT': $value = array(); if (isset($childs[0]->MEMBER)) { $listvalue = is_array($childs[0]->MEMBER) ? $childs[0]->MEMBER : array($childs[0]->MEMBER); foreach ($listvalue as $val) { if (isset($val->NAME) && isset($val->VALUE)) { $value[$val->NAME->content()] = CopixXmlRpc::_decodeValue($val->VALUE); } } } break; case 'DATETIME.ISO8601': $value = new CopixDateTime(); $value->setFromString($childs[0]->content(), $value->ISO8601_FORMAT); break; case 'BASE64': $value = new CopixBinary(); $value->setFromBase64String($childs[0]->content()); break; } } else { $value = $valuetag->content(); } return $value; }