Public Member Functions | |
ilBMFBase ($faultcode= 'Client') | |
Constructor. | |
_resetNamespaces () | |
_setSchemaVersion ($schemaVersion) | |
_setSchemaVersion | |
& | _raiseSoapFault ($str, $detail= '', $actorURI= '', $code=null, $mode=null, $options=null, $skipmsg=false) |
Raise a soap error. | |
__isfault () | |
& | __getfault () |
_debug ($string) | |
maintains a string of debug data | |
_getNamespacePrefix ($ns) | |
_getNamespaceForPrefix ($prefix) | |
_isSoapValue (&$value) | |
_serializeValue (&$value, $name= '', $type=false, $elNamespace=NULL, $typeNamespace=NULL, $options=array(), $attributes=array(), $artype='', $OBJTypeNS=array()) | |
_getType (&$value) | |
ilBMF::Value::_getType | |
_multiArrayType (&$value, &$type, &$size, &$xml) | |
_isBase64 (&$value) | |
_isHash (&$a) | |
& | _un_htmlentities ($string) |
& | _decode (&$soapval) |
& | _makeEnvelope (&$method, &$headers, $encoding=SOAP_DEFAULT_ENCODING, $options=array()) |
creates the soap envelope with the soap envelop data | |
_makeMimeMessage (&$xml, $encoding=SOAP_DEFAULT_ENCODING) | |
_makeDIMEMessage (&$xml) | |
_decodeMimeMessage (&$data, &$headers, &$attachments) | |
_decodeDIMEMessage (&$data, &$headers, &$attachments) | |
__set_type_translation ($type, $class=NULL) | |
Data Fields | |
$_XMLSchema = array('http://www.w3.org/2001/XMLSchema', 'http://www.w3.org/1999/XMLSchema') | |
$_XMLSchemaVersion = 'http://www.w3.org/2001/XMLSchema' | |
$_typemap | |
$_namespaces | |
$_ns_count = 0 | |
$_encodings = array('ISO-8859-1','US-ASCII','UTF-8') | |
$_xmlEntities = array ( '&' => '&', '<' => '<', '>' => '>', "'" => ''', '"' => '"' ) | |
$_doconversion = FALSE | |
$__attachments = array() | |
$_debug_flag = false | |
$_debug_data = '' | |
$_myfaultcode = '' | |
$fault = NULL | |
$_wsdl = NULL | |
$_section5 = TRUE | |
$_auto_translation = false | |
$_type_translation = array() |
Definition at line 121 of file class.ilBMFBase.php.
& ilBMFBase::__getfault | ( | ) |
Definition at line 331 of file class.ilBMFBase.php.
{
return $this->fault;
}
ilBMFBase::__isfault | ( | ) |
Definition at line 326 of file class.ilBMFBase.php.
{
return $this->fault != NULL;
}
ilBMFBase::__set_type_translation | ( | $ | type, | |
$ | class = NULL | |||
) |
ilBMFBase::_debug | ( | $ | string | ) |
maintains a string of debug data
debugging | message - sometimes an error message |
Definition at line 341 of file class.ilBMFBase.php.
{ if ($this->_debug_flag) { $this->_debug_data .= get_class($this) . ': ' . preg_replace("/>/", ">\r\n", $string) . "\n"; } }
& ilBMFBase::_decode | ( | &$ | soapval | ) |
mixed |
Definition at line 854 of file class.ilBMFBase.php.
References $counter, $t, and _isSoapValue().
Referenced by ilBMFClient::__decodeResponse().
{ global $SOAP_OBJECT_STRUCT; if (!$this->_isSoapValue($soapval)) { return $soapval; } else if (is_array($soapval->value)) { if ($SOAP_OBJECT_STRUCT && $soapval->type != 'Array') { $classname = 'stdClass'; if (isset($this->_type_translation[$soapval->tqn->fqn()])) { // this will force an error in php if the // class does not exist $classname = $this->_type_translation[$soapval->tqn->fqn()]; } else if (isset($this->_type_translation[$soapval->type])) { // this will force an error in php if the // class does not exist $classname = $this->_type_translation[$soapval->type]; } else if ($this->_auto_translation) { if (class_exists($soapval->type)) { $classname = $soapval->type; } else if ($this->_wsdl) { $t = $this->_wsdl->getComplexTypeNameForElement($soapval->name, $soapval->namespace); if ($t && class_exists($t)) $classname = $t; } } $return = new $classname; } else { $return = array(); } $counter = 1; $isstruct = !$SOAP_OBJECT_STRUCT || !is_array($return); foreach ($soapval->value as $item) { if (is_object($return)) { if ($this->_wsdl) { // get this childs wsdl information // /$soapval->ns/$soapval->type/$item->ns/$item->name $child_type = $this->_wsdl->getComplexTypeChildType( $soapval->namespace, $soapval->name, $item->namespace, $item->name); if ($child_type) $item->type = $child_type; } if (!$isstruct || $item->type == 'Array') { if (isset($return->{$item->name}) && is_object($return->{$item->name})) { $return->{$item->name} = $this->_decode($item); } else if (isset($return->{$item->name}) && is_array($return->{$item->name})) { $return->{$item->name}[] = $this->_decode($item); } else if (is_array($return)) { $return[] = $this->_decode($item); } else { $return->{$item->name} = $this->_decode($item); } } else if (isset($return->{$item->name})) { $isstruct = FALSE; if (count(get_object_vars($return)) == 1) { $return = array($return->{$item->name}, $this->_decode($item)); } else { $return->{$item->name} = array($return->{$item->name}, $this->_decode($item)); } } else { $return->{$item->name} = $this->_decode($item); } /* set the attributes as members in the class */ if (method_exists($return,'__set_attribute')) { foreach ($soapval->attributes as $key=>$value) { call_user_func_array(array(&$return,'__set_attribute'),array($key,$value)); } } } else { if ($soapval->arrayType && $this->_isSoapValue($item)) { $item->type = $soapval->arrayType; } if (!$isstruct) { $return[] = $this->_decode($item); } else if (isset($return[$item->name])) { $isstruct = FALSE; $return = array($return[$item->name], $this->_decode($item)); } else { $return[$item->name] = $this->_decode($item); } } } return $return; } if ($soapval->type == 'boolean') { if ($soapval->value != '0' && strcasecmp($soapval->value,'false') !=0) { $soapval->value = TRUE; } else { $soapval->value = FALSE; } } else if ($soapval->type && array_key_exists($soapval->type, $this->_typemap[SOAP_XML_SCHEMA_VERSION])) { # if we can, lets set php's variable type settype($soapval->value, $this->_typemap[SOAP_XML_SCHEMA_VERSION][$soapval->type]); } return $soapval->value; }
ilBMFBase::_decodeDIMEMessage | ( | &$ | data, | |
&$ | headers, | |||
&$ | attachments | |||
) |
Definition at line 1107 of file class.ilBMFBase.php.
References $data.
Referenced by ilBMFTransport_HTTP::_parseResponse().
{ global $SOAP_options; if (!isset($SOAP_options['DIME'])) { $this->_raiseSoapFault('DIME Unsupported, install PEAR::Net::DIME','','','Server'); } // XXX this SHOULD be moved to the transport layer, e.g. PHP itself // should handle parsing DIME ;) $dime = new Net_DIME_Message(); $dime->decodeData($data); if (strcasecmp($dime->parts[0]['type'],SOAP_ENVELOP) !=0 || strcasecmp($dime->parts[0]['type'],SOAP_ENVELOP) !=0) { $this->_raiseSoapFault('Dime record 1 is not a SOAP envelop!','','','Server'); } else { $data = $dime->parts[0]['data']; $headers['content-type'] = 'text/xml'; // fake it for now $c = count($dime->parts); for ($i = 0; $i < $c; $i++) { $part =& $dime->parts[$i]; // XXX we need to handle URI's better $attachments['cid:'.$part['id']] = $part['data']; } } }
ilBMFBase::_decodeMimeMessage | ( | &$ | data, | |
&$ | headers, | |||
&$ | attachments | |||
) |
Definition at line 1062 of file class.ilBMFBase.php.
References $data.
Referenced by ilBMFTransport_HTTP::_parseResponse().
{ global $SOAP_options; if (!isset($SOAP_options['Mime'])) { $this->_raiseSoapFault('Mime Unsupported, install PEAR::Mail::Mime','','','Server'); return; } $params['include_bodies'] = TRUE; $params['decode_bodies'] = TRUE; $params['decode_headers'] = TRUE; // XXX lame thing to have to do for decoding $decoder = new Mail_mimeDecode($data); $structure = $decoder->decode($params); if (isset($structure->body)) { $data = $structure->body; $headers = $structure->headers; return; } else if (isset($structure->parts)) { $data = $structure->parts[0]->body; $headers = array_merge($structure->headers,$structure->parts[0]->headers); if (count($structure->parts) > 1) { $mime_parts = array_splice($structure->parts,1); // prepare the parts for the soap parser $c = count($mime_parts); for ($i = 0; $i < $c; $i++) { $p =& $mime_parts[$i]; if (isset($p->headers['content-location'])) { // XXX TODO: modify location per SwA note section 3 // http://www.w3.org/TR/SOAP-attachments $attachments[$p->headers['content-location']] = $p->body; } else { $cid = 'cid:'.substr($p->headers['content-id'],1,strlen($p->headers['content-id'])-2); $attachments[$cid] = $p->body; } } } return; } $this->_raiseSoapFault('Mime parsing error','','','Server'); }
ilBMFBase::_getNamespaceForPrefix | ( | $ | prefix | ) |
Definition at line 359 of file class.ilBMFBase.php.
Referenced by ilBMFParser::startElement().
{ $flipped = array_flip($this->_namespaces); if (array_key_exists($prefix,$flipped)) { return $flipped[$prefix]; } return NULL; }
ilBMFBase::_getNamespacePrefix | ( | $ | ns | ) |
Definition at line 348 of file class.ilBMFBase.php.
Referenced by _serializeValue(), and ilBMFParser::startElement().
{ if (array_key_exists($ns,$this->_namespaces)) { return $this->_namespaces[$ns]; } $prefix = 'ns'.count($this->_namespaces); $this->_namespaces[$ns] = $prefix; return $prefix; return NULL; }
ilBMFBase::_getType | ( | &$ | value | ) |
ilBMF::Value::_getType
convert php type to soap type
string | value |
Definition at line 691 of file class.ilBMFBase.php.
References $type, _isBase64(), _isHash(), and _isSoapValue().
Referenced by _multiArrayType(), and _serializeValue().
{ global $SOAP_OBJECT_STRUCT,$SOAP_RAW_CONVERT; $type = gettype($value); switch ($type) { case 'object': if (is_a($value,'ilbmfvalue')) { $type = $value->type; } else { $type = 'Struct'; } break; case 'array': // XXX hashes always get done as structs by pear::soap if ($this->_isHash($value)) { $type = 'Struct'; } else { $ar_size = count($value); if ($ar_size > 0 && is_a($value[0],'ilbmfvalue')) { // fixme for non-wsdl structs that are all teh same type if ($ar_size > 1 && $this->_isSoapValue($value[0]) && $this->_isSoapValue($value[1]) && $value[0]->name != $value[1]->name) { // this is a struct, not an array $type = 'Struct'; } else { $type = 'Array'; } } else { $type = 'Array'; } } break; case 'integer': case 'long': $type = 'int'; break; case 'boolean': #$value = $value?'true':'false'; break; case 'double': $type = 'decimal'; // double is deprecated in 4.2 and later break; case 'NULL': $type = ''; break; case 'string': if (!$SOAP_RAW_CONVERT) { if (is_numeric($value)) { /* if (strstr($value,'.')) $type = 'float'; else $type = 'int'; */ } else { /* if (ilBMFType_hexBinary::is_hexbin($value)) { $type = 'hexBinary'; } else */ { if ($this->_isBase64($value)) { $type = 'base64Binary'; } else { $dt = new ilBMFType_dateTime($value); if ($dt->toUnixtime() != -1) { $type = 'dateTime'; #$value = $dt->toSOAP(); } } } } } default: break; } return $type; }
ilBMFBase::_isBase64 | ( | &$ | value | ) |
string |
Definition at line 811 of file class.ilBMFBase.php.
Referenced by _getType().
{ $l = strlen($value); if ($l > 0) return $value[$l-1] == '=' && preg_match("/[A-Za-z=\/\+]+/",$value); return FALSE; }
ilBMFBase::_isHash | ( | &$ | a | ) |
mixed |
Definition at line 824 of file class.ilBMFBase.php.
References $t, and _isSoapValue().
Referenced by _getType().
{ # XXX I realy dislike having to loop through this in php code, # realy large arrays will be slow. We need a C function to do this. $names = array(); $it = 0; foreach ($a as $k => $v) { # checking the type is faster than regexp. $t = gettype($k); if ($t != 'integer') { return TRUE; } else if ($this->_isSoapValue($v)) { $names[$v->name] = 1; } // if someone has a large hash they should realy be defining the type if ($it++ > 10) return FALSE; } return count($names)>1; }
ilBMFBase::_isSoapValue | ( | &$ | value | ) |
Definition at line 368 of file class.ilBMFBase.php.
Referenced by _decode(), _getType(), _isHash(), and _serializeValue().
{ return is_object($value) && (get_class($value) == 'ilbmfvalue' || is_subclass_of($value,'ilbmfvalue')); }
ilBMFBase::_makeDIMEMessage | ( | &$ | xml | ) |
Definition at line 1038 of file class.ilBMFBase.php.
Referenced by ilBMFClient::__generate().
{ global $SOAP_options; if (!isset($SOAP_options['DIME'])) { return $this->_raiseSoapFault('DIME is not installed'); } // encode any attachments // see http://search.ietf.org/internet-drafts/draft-nielsen-dime-soap-00.txt // now we have to DIME encode the message $dime = new Net_DIME_Message(); $msg = $dime->encodeData($xml,SOAP_ENVELOP,NULL,NET_DIME_TYPE_URI); // add the attachements $c = count($this->__attachments); for ($i=0; $i < $c; $i++) { $attachment =& $this->__attachments[$i]; $msg .= $dime->encodeData($attachment['body'],$attachment['content_type'],$attachment['cid'],NET_DIME_TYPE_MEDIA); } $msg .= $dime->endMessage(); return $msg; }
& ilBMFBase::_makeEnvelope | ( | &$ | method, | |
&$ | headers, | |||
$ | encoding = SOAP_DEFAULT_ENCODING , |
|||
$ | options = array() | |||
) |
creates the soap envelope with the soap envelop data
string | $payload soap data (in xml) |
Definition at line 963 of file class.ilBMFBase.php.
Referenced by ilBMFClient::__generate(), and ilBMFTransport_SMTP::send().
{ $smsg = $header_xml = $ns_string = ''; if ($headers) { $c = count($headers); for ($i=0; $i < $c; $i++) { $header_xml .= $headers[$i]->serialize($this); } $header_xml = "<SOAP-ENV:Header>\r\n$header_xml\r\n</SOAP-ENV:Header>\r\n"; } if (!isset($options['input']) || $options['input'] == 'parse') { if (is_array($method)) { $c = count($method); for ($i = 0; $i < $c; $i++) { $smsg .= $method[$i]->serialize($this); } } else { $smsg = $method->serialize($this); } } else { $smsg = $method; } $body = "<SOAP-ENV:Body>\r\n".$smsg."\r\n</SOAP-ENV:Body>\r\n"; $a = 0; foreach ($this->_namespaces as $k => $v) { if ($a > 3) break; $ns_string .= " xmlns:$v=\"$k\"\r\n"; $a ++; } /* if use='literal', we do not put in the encodingStyle. This is denoted by $this->_section5 being false. XXX use can be defined at a more granular level than we are dealing with here, so this does not work for all services. */ $xml = "<?phpxml version=\"1.0\" encoding=\"$encoding\"?>\r\n\r\n". "<SOAP-ENV:Envelope $ns_string". ($this->_section5?" SOAP-ENV:encodingStyle=\"" . SOAP_SCHEMA_ENCODING . "\"":''). ">\r\n". "$header_xml$body</SOAP-ENV:Envelope>\r\n"; return $xml; }
ilBMFBase::_makeMimeMessage | ( | &$ | xml, | |
$ | encoding = SOAP_DEFAULT_ENCODING | |||
) |
Definition at line 1009 of file class.ilBMFBase.php.
Referenced by ilBMFClient::__generate().
{ global $SOAP_options; if (!isset($SOAP_options['Mime'])) { return $this->_raiseSoapFault('Mime is not installed'); } // encode any attachments // see http://www.w3.org/TR/SOAP-attachments // now we have to mime encode the message $params = array('content_type' => 'multipart/related; type=text/xml'); $msg = new Mail_mimePart('', $params); // add the xml part $params['content_type'] = 'text/xml'; $params['charset'] = $encoding; $params['encoding'] = 'base64'; $msg->addSubPart($xml, $params); // add the attachements $c = count($this->__attachments); for ($i=0; $i < $c; $i++) { $attachment =& $this->__attachments[$i]; $msg->addSubPart($attachment['body'],$attachment); } return $msg->encode(); }
ilBMFBase::_multiArrayType | ( | &$ | value, | |
&$ | type, | |||
&$ | size, | |||
&$ | xml | |||
) |
Definition at line 777 of file class.ilBMFBase.php.
References $type, _getType(), and _serializeValue().
Referenced by _serializeValue().
{ $sz = count($value); if ($sz > 1) { // seems we have a multi dimensional array, figure it out if we do $c = count($value); for ($i=0; $i<$c; $i++) { $this->_multiArrayType($value[$i], $type, $size, $xml); } if ($size) { $size = $sz.','.$size; } else { $size = $sz; } return 1; } else { if (is_object($value)) { $type = $value->type; $xml .= $value->serialize($this); } else { $type = $this->_getType($value); $xml .= $this->_serializeValue($value,'item',$type); } } $size = NULL; return 1; }
& ilBMFBase::_raiseSoapFault | ( | $ | str, | |
$ | detail = '' , |
|||
$ | actorURI = '' , |
|||
$ | code = null , |
|||
$ | mode = null , |
|||
$ | options = null , |
|||
$ | skipmsg = false | |||
) |
Raise a soap error.
Please referr to the SOAP definition for an impression of what a certain parameter stands for.
Use $debug_flag to store errors to the member variable $debug_data
string | error message | |
string | detailed error message. | |
string | actor | |
mixed | ||
mixed | ||
mixed | ||
boolean |
Definition at line 309 of file class.ilBMFBase.php.
Referenced by ilBMFClient::__decodeResponse(), ilBMFClient::__generate(), ilBMFClient::__parse(), ilBMFTransport_HTTP::_parseResponse(), ilBMFTransport_HTTP::_sendHTTP(), ilBMFTransport_HTTP::_sendHTTPS(), _setSchemaVersion(), ilBMFTransport_SMTP::_validateUrl(), ilBMFTransport_HTTP::_validateUrl(), ilBMFClient::addHeader(), ilBMFClient::call(), ilBMFWSDL_Cache::get(), ilBMFWSDL::getEndpoint(), ilBMFWSDL::getOperationData(), ilBMFWSDL::getPortName(), ilBMFParser::getResponse(), ilBMFClient::ilBMFClient(), ilBMFParser::ilBMFParser(), ilBMFTransport::ilBMFTransport(), ilBMFWSDL_Parser::parse(), ilBMFWSDL::parse(), ilBMFTransport_SMTP::send(), ilBMFTransport_HTTP::send(), ilBMFTransport::send(), ilBMFClient::setEncoding(), and ilBMFWSDL_Parser::startElement().
{ # pass through previous faults if (is_object($str)) { $this->fault = $str; } else { if (!$code) $code = $this->_myfaultcode; $this->fault = new ilBMFFault($str, $code, $actorURI, $detail, $mode, $options); } return $this->fault; }
ilBMFBase::_resetNamespaces | ( | ) |
Definition at line 262 of file class.ilBMFBase.php.
Referenced by ilBMFBase().
{ $this->_namespaces = array( 'http://schemas.xmlsoap.org/soap/envelope/' => 'SOAP-ENV', 'http://www.w3.org/2001/XMLSchema' => 'xsd', 'http://www.w3.org/2001/XMLSchema-instance' => 'xsi', 'http://schemas.xmlsoap.org/soap/encoding/' => 'SOAP-ENC'); }
ilBMFBase::_serializeValue | ( | &$ | value, | |
$ | name = '' , |
|||
$ | type = false , |
|||
$ | elNamespace = NULL , |
|||
$ | typeNamespace = NULL , |
|||
$ | options = array() , |
|||
$ | attributes = array() , |
|||
$ | artype = '' , |
|||
$ | OBJTypeNS = array() | |||
) |
Definition at line 375 of file class.ilBMFBase.php.
References $type, _getNamespacePrefix(), _getType(), _isSoapValue(), and _multiArrayType().
Referenced by _multiArrayType().
{ $namespaces = array(); $arrayType = $xmlout_value = NULL; $typePrefix = $elPrefix = $xmlout_offset = $xmlout_arrayType = $xmlout_type = $xmlns = ''; $ptype = $array_type_ns = ''; if (!$name || is_numeric($name)) { $name = 'item'; } if ($this->_wsdl) list($ptype,$arrayType,$array_type_ns) = $this->_wsdl->getSchemaType($type, $name, $typeNamespace); if (!$arrayType) $arrayType = $artype; if (!$ptype) $ptype = $this->_getType($value); if (!$type) $type = $ptype; if (strcasecmp($ptype,'Struct')==0 || strcasecmp($type,'Struct')==0) { // struct $vars = NULL; if (is_object($value)) { $vars = get_object_vars($value); } else { $vars = &$value; } if (is_array($vars)) { foreach (array_keys($vars) as $k) { if ($k[0]=='_') continue; // hide private vars if (is_object($vars[$k])) { if (is_a($vars[$k],'ilbmfvalue')) { $xmlout_value .= $vars[$k]->serialize($this); } else { // XXX get the members and serialize them instead // converting to an array is more overhead than we // should realy do, but php-soap is on it's way. $objarr = get_object_vars ( $vars[$k] ); if (!isset ($objarr['OBJTypeNS']) ) { $xmlout_value .= $this->_serializeValue(get_object_vars($vars[$k]), $k, false, $this->_section5?NULL:$elNamespace, NULL, NULL, NULL, NULL); } else { $xmlout_value .= $this->_serializeValue(get_object_vars($vars[$k]), $k, false, $this->_section5?NULL:$elNamespace, NULL, NULL, NULL, NULL, $objarr['OBJTypeNS']); } } } else { if ( $k != 'OBJTypeNS' ) { $xmlout_value .= $this->_serializeValue($vars[$k],$k, false, $this->_section5?NULL:$elNamespace); } } } } } else { if (strcasecmp($ptype,'Array')==0 || strcasecmp($type,'Array')==0) { // array $typeNamespace = SOAP_SCHEMA_ENCODING; $orig_type = $type; $type = 'Array'; $numtypes = 0; // XXX this will be slow on larger array's. Basicly, it flattens array's to allow us // to serialize multi-dimensional array's. We only do this if arrayType is set, // which will typicaly only happen if we are using WSDL if (isset($options['flatten']) || ($arrayType && (strchr($arrayType,',') || strstr($arrayType,'][')))) { $numtypes = $this->_multiArrayType($value, $arrayType, $ar_size, $xmlout_value); } $array_type = $array_type_prefix = ''; if ($numtypes != 1) { $arrayTypeQName = new QName($arrayType); $arrayType = $arrayTypeQName->name; $array_types = array(); $array_val = NULL; // serialize each array element $ar_size = count($value); for ($i=0; $i < $ar_size; $i++) { $array_val =& $value[$i]; if ($this->_isSoapValue($array_val)) { $array_type = $array_val->type; $array_types[$array_type] = 1; $array_type_ns = $array_val->type_namespace; $xmlout_value .= $array_val->serialize($this); } else { $array_type = $this->_getType($array_val); $array_types[$array_type] = 1; $objarr = get_object_vars ( $array_val ); if (isset ($objarr['OBJTypeNS']) ) { $tmp_arr['item'] = $objarr['OBJTypeNS']['item']; $xmlout_value .= $this->_serializeValue($array_val,'item', $array_type, $this->_section5?NULL:$elNamespace, NULL, NULL, NULL, NULL, $tmp_arr ); } else { $xmlout_value .= $this->_serializeValue($array_val,'item', $array_type, $this->_section5?NULL:$elNamespace); } } } $xmlout_offset = " SOAP-ENC:offset=\"[0]\""; if (!$arrayType) { $numtypes = count($array_types); if ($numtypes == 1) $arrayType = $array_type; // using anyType is more interoperable if ($array_type == 'Struct') { $array_type = ''; } else if ($array_type == 'Array') { $arrayType = 'anyType'; $array_type_prefix = 'xsd'; } else if (!$arrayType) $arrayType = $array_type; } } if (!isset($arrayType) || $numtypes > 1) { $arrayType = 'xsd:anyType'; // should reference what schema we're using } else { if ($array_type_ns) { $array_type_prefix = $this->_getNamespacePrefix($array_type_ns); } else if (array_key_exists($arrayType, $this->_typemap[$this->_XMLSchemaVersion])) { $array_type_prefix = $this->_namespaces[$this->_XMLSchemaVersion]; } if ($array_type_prefix) $arrayType = $array_type_prefix.':'.$arrayType; } if ( isset ($value[0]->OBJTypeNS) ) { $xmlout_arrayType = ' xmlns:' . $value[0]->OBJTypeNS['nsPrefix'] . '="' . $value[0]->OBJTypeNS['namespace'] . '" xsi:type="' . $value[0]->OBJTypeNS['nsPrefix'] . ':Array" ' . $value[0]->OBJTypeNS['nsPrefix'] . ':arrayType="' . $value[0]->OBJTypeNS['pnsPrefix'] . ':' . get_class($value[0]) . '[' . count($value) . ']"'; $xmlout_type = $xmlns = $xmlout_offset = $xml_attr = $arrayType = ''; } else { $xmlout_arrayType = " SOAP-ENC:arrayType=\"".$arrayType."[$ar_size]\""; } } else { if ($this->_isSoapValue($value)) { $xmlout_value = $value->serialize($this); } else { if ($type == 'string') { $xmlout_value = htmlspecialchars($value); } else { if ($type == 'boolean') { $xmlout_value = $value?'true':'false'; } else { $xmlout_value = $value; } } } } } // add namespaces if ($elNamespace) { $elPrefix = $this->_getNamespacePrefix($elNamespace); $xmlout_name = "$elPrefix:$name"; $xmlns = " xmlns:$elPrefix=\"$elNamespace\""; } else { $xmlout_name = $name; } if ($typeNamespace) { $typePrefix = $this->_getNamespacePrefix($typeNamespace); $xmlout_type = "$typePrefix:$type"; } else if ($type && array_key_exists($type, $this->_typemap[$this->_XMLSchemaVersion])) { $typePrefix = $this->_namespaces[$this->_XMLSchemaVersion]; $xmlout_type = "$typePrefix:$type"; } // handle additional attributes $xml_attr = ''; if (count($attributes) > 0) { foreach ($attributes as $k => $v) { $kqn = new QName($k); $vqn = new QName($v); $xml_attr .= ' '.$kqn->fqn().'="'.$vqn->fqn().'"'; } } // store the attachement for mime encoding if (isset($options['attachment'])) $this->__attachments[] = $options['attachment']; if ($this->_section5) { if ($name == 'item' && isset($OBJTypeNS['item'])) { $xmlout_type = $OBJTypeNS['item']; } if ($xmlout_type) $xmlout_type = " xsi:type=\"$xmlout_type\""; if (is_null($xmlout_value)) { $xml = "\r\n<$xmlout_name$xmlout_type$xmlns$xmlout_arrayType$xml_attr/>"; } else { if ( isset ($value[0]->OBJTypeNS) ) { $xmlout_type = ''; } $xml = "\r\n<$xmlout_name$xmlout_type$xmlns$xmlout_arrayType$xmlout_offset$xml_attr "; if ( isset($OBJTypeNS['namespace']) && isset ($OBJTypeNS['type']) ) { if ( trim($OBJTypeNS['namespace']) != '' || trim($OBJTypeNS['type']) != '' ) { if ( isset($OBJTypeNS['namespace']) && $OBJTypeNS['namespace'] != '') { $xml .= ' xmlns:'; if ( isset($OBJTypeNS['nsPrefix'])) $xml .= $OBJTypeNS['nsPrefix']; else $xml .= 'intf'; $xml .= '="' . $OBJTypeNS['namespace'] . '"'; } if (isset ($OBJTypeNS['type'] ) && $OBJTypeNS['type'] != '') { $xml .= ' xsi:type="'; if ( strpos($OBJTypeNS['type'], "xsd:") === false ) { if ( isset($OBJTypeNS['nsPrefix'])) $xml .= $OBJTypeNS['nsPrefix'] . ':'; else $xml .= 'intf:'; } $xml .= $OBJTypeNS['type'] . '"'; } } } $xml .= ">" . $xmlout_value . "</$xmlout_name>"; } } else { if (is_null($xmlout_value)) { $xml = "\r\n<$xmlout_name$xmlns$xml_attr/>"; } else { $xml = "\r\n<$xmlout_name$xmlns$xml_attr>" . $xmlout_value . "</$xmlout_name>"; } } return $xml; }
ilBMFBase::_setSchemaVersion | ( | $ | schemaVersion | ) |
_setSchemaVersion
sets the schema version used in the soap message
string | (see globals.php) |
private
Definition at line 280 of file class.ilBMFBase.php.
References _raiseSoapFault().
Referenced by ilBMFClient::__generate(), ilBMFParser::ilBMFParser(), and ilBMFParser::startElement().
{ if (!in_array($schemaVersion, $this->_XMLSchema)) { return $this->_raiseSoapFault("unsuported XMLSchema $schemaVersion"); } $this->_XMLSchemaVersion = $schemaVersion; $tmpNS = array_flip($this->_namespaces); $tmpNS['xsd'] = $this->_XMLSchemaVersion; $tmpNS['xsi'] = $this->_XMLSchemaVersion.'-instance'; $this->_namespaces = array_flip($tmpNS); }
& ilBMFBase::_un_htmlentities | ( | $ | string | ) |
Definition at line 843 of file class.ilBMFBase.php.
{
$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip($trans_tbl);
return strtr($string, $trans_tbl);
}
ilBMFBase::ilBMFBase | ( | $ | faultcode = 'Client' |
) |
Constructor.
string | error code |
Definition at line 254 of file class.ilBMFBase.php.
References $GLOBALS, and _resetNamespaces().
Referenced by ilBMFClient::ilBMFClient(), ilBMFParser::ilBMFParser(), ilBMFTransport::ilBMFTransport(), ilBMFTransport_HTTP::ilBMFTransport_HTTP(), ilBMFTransport_SMTP::ilBMFTransport_SMTP(), ilBMFWSDL::ilBMFWSDL(), ilBMFWSDL_Cache::ilBMFWSDL_Cache(), and ilBMFWSDL_Parser::ilBMFWSDL_Parser().
{ $this->_myfaultcode = $faultcode; $this->_resetNamespaces(); $this->_debug_flag = $GLOBALS['SOAP_DEBUG']; parent::PEAR('SOAPfault'); }
ilBMFBase::$__attachments = array() |
Definition at line 201 of file class.ilBMFBase.php.
ilBMFBase::$_auto_translation = false |
Definition at line 244 of file class.ilBMFBase.php.
ilBMFBase::$_debug_data = '' |
Definition at line 218 of file class.ilBMFBase.php.
ilBMFBase::$_debug_flag = false |
Definition at line 209 of file class.ilBMFBase.php.
ilBMFBase::$_doconversion = FALSE |
Definition at line 199 of file class.ilBMFBase.php.
ilBMFBase::$_encodings = array('ISO-8859-1','US-ASCII','UTF-8') |
Definition at line 195 of file class.ilBMFBase.php.
ilBMFBase::$_myfaultcode = '' |
Definition at line 225 of file class.ilBMFBase.php.
ilBMFBase::$_namespaces |
Definition at line 192 of file class.ilBMFBase.php.
ilBMFBase::$_ns_count = 0 |
Definition at line 193 of file class.ilBMFBase.php.
ilBMFBase::$_section5 = TRUE |
Definition at line 241 of file class.ilBMFBase.php.
ilBMFBase::$_type_translation = array() |
Definition at line 245 of file class.ilBMFBase.php.
ilBMFBase::$_typemap |
Definition at line 127 of file class.ilBMFBase.php.
ilBMFBase::$_wsdl = NULL |
Definition at line 234 of file class.ilBMFBase.php.
ilBMFBase::$_xmlEntities = array ( '&' => '&', '<' => '<', '>' => '>', "'" => ''', '"' => '"' ) |
Definition at line 197 of file class.ilBMFBase.php.
ilBMFBase::$_XMLSchema = array('http://www.w3.org/2001/XMLSchema', 'http://www.w3.org/1999/XMLSchema') |
Definition at line 123 of file class.ilBMFBase.php.
ilBMFBase::$_XMLSchemaVersion = 'http://www.w3.org/2001/XMLSchema' |
Definition at line 124 of file class.ilBMFBase.php.
ilBMFBase::$fault = NULL |
Definition at line 232 of file class.ilBMFBase.php.