예제 #1
0
 function _decodeDIMEMessage(&$data, &$headers, &$attachments)
 {
     if (!@(include_once 'Net/DIME.php')) {
         return $this->_raiseSoapFault('DIME messages are unsupported, the Net_DIME package is not installed');
     }
     // This SHOULD be moved to the transport layer, e.g. PHP itself should
     // handle parsing DIME ;)
     $dime = new Net_DIME_Message();
     $err = $dime->decodeData($data);
     if (PEAR::isError($err)) {
         $this->_raiseSoapFault('Failed to decode the DIME message!', '', '', 'Server');
         return;
     }
     if (strcasecmp($dime->parts[0]['type'], SOAP_ENVELOP) != 0) {
         $this->_raiseSoapFault('DIME record 1 is not a SOAP envelop!', '', '', 'Server');
         return;
     }
     $data = $dime->parts[0]['data'];
     // Fake it for now.
     $headers['content-type'] = 'text/xml';
     $c = count($dime->parts);
     for ($i = 0; $i < $c; $i++) {
         $part =& $dime->parts[$i];
         // We need to handle URI's better.
         $id = strncmp($part['id'], 'cid:', 4) ? 'cid:' . $part['id'] : $part['id'];
         $attachments[$id] = $part['data'];
     }
 }
예제 #2
0
 function _decodeDIMEMessage(&$data, &$headers, &$attachments)
 {
     global $SOAP_options;
     if (!isset($SOAP_options['DIME'])) {
         $this->_raiseSoapFault('DIME Unsupported, install PEAR::Net::DIME', '', '', 'Server');
         return;
     }
     // XXX this SHOULD be moved to the transport layer, e.g. PHP itself
     // should handle parsing DIME ;)
     $dime = new Net_DIME_Message();
     $err = $dime->decodeData($data);
     if (PEAR::isError($err)) {
         $this->_raiseSoapFault('Failed to decode the DIME message!', '', '', 'Server');
         return;
     }
     if (strcasecmp($dime->parts[0]['type'], SOAP_ENVELOP) != 0) {
         $this->_raiseSoapFault('DIME record 1 is not a SOAP envelop!', '', '', 'Server');
         return;
     }
     $data = $dime->parts[0]['data'];
     // fake it for now
     $headers['content-type'] = 'text/xml';
     $c = count($dime->parts);
     for ($i = 0; $i < $c; $i++) {
         $part =& $dime->parts[$i];
         // XXX we need to handle URI's better.
         $id = strncmp($part['id'], 'cid:', 4) ? 'cid:' . $part['id'] : $part['id'];
         $attachments[$id] = $part['data'];
     }
 }