private function parseMessageTypes($return, $meta, $data) { if ($return['type'] == 2) { //todo: hendle message ack return $return; } //todo: process 0xFE formatted switch ($meta['type']) { // Plain text (simple) message case 0x1: //todo: DC special check $meta['rtf'] = false; if (strlen($data) > $meta['size'] + 36) { //rtf message if (strpos($data, '{97B12751-243C-4334-AD22-D6ABF73F1492}') !== false) { $meta['rtf'] = true; } //utf-8 message if (strpos($data, '{0946134E-4C7F-11D1-8222-444553540000}') !== false) { $return['encoding'] = array('numset' => 'UTF-8', 'subset' => 0); } } $return['message'] = substr($data, 0, $meta['size']); if ($meta['rtf']) { $return['rtf'] = $return['message']; $return['message'] = RTF::Text($return['message']); } $return = $this->createResponse('message', $return); break; // URL message (0xFE formatted) // URL message (0xFE formatted) case 0x4: #$this->log('URL', $data, true); $return['message'] = substr($data, 0, $meta['size']); $return = $this->createResponse('urlmessage', $return); break; // Authorization request message (0xFE formatted) // Authorization request message (0xFE formatted) case 0x6: // Authorization denied message (0xFE formatted) // Authorization denied message (0xFE formatted) case 0x7: // Authorization given message (empty) // Authorization given message (empty) case 0x8: // Message from OSCAR server (0xFE formatted) // Message from OSCAR server (0xFE formatted) case 0x9: // Web pager message (0xFE formatted) // Web pager message (0xFE formatted) case 0xd: // Email express message (0xFE formatted) // Email express message (0xFE formatted) case 0xe: // Contact list message (0xFE formatted) // Contact list message (0xFE formatted) case 0x13: $this->log($meta['type'] . '>>', $data, true); //$return['message'] = substr($data, 0, $meta['size']); $return = array_merge($return, $meta); break; // "You-were-added" message (0xFE formatted) // "You-were-added" message (0xFE formatted) case 0xc: $return = $this->createResponse('youadded', $return); break; // Auto away message // Auto away message case 0xe8: $return['message'] = substr($data, 0, $meta['size']); $return = $this->createResponse('autoaway', $return); break; // Auto occupied message // Auto occupied message case 0xe9: $return['message'] = substr($data, 0, $meta['size']); $return = $this->createResponse('autooccupied', $return); break; // Auto not available message // Auto not available message case 0xea: $return['message'] = substr($data, 0, $meta['size']); $return = $this->createResponse('autona', $return); break; // Auto do not disturb message // Auto do not disturb message case 0xeb: $return['message'] = substr($data, 0, $meta['size']); $return = $this->createResponse('autodnd', $return); break; // Auto free for chat message // Auto free for chat message case 0xec: $return['message'] = substr($data, 0, $meta['size']); $return = $this->createResponse('autofreeforchat', $return); break; } return $return; }
public function process(RTF $rtf, RTFSection $section = null, $para = null, $style = null) { $list = $rtf->listTemplate(); for ($child = $this->element->firstChild; $child; $child = $child->nextSibling) { if ($child instanceof DOMElement) { if ($child->localName == 'listitem') { $this->processItem($child, $list, $rtf, $section, $style); } else { trigger_error("Don't know how to process a <" . $child->localName . "> within a <" . $this->element->localName . ">", E_USER_WARNING); } } } }