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;
 }
Esempio n. 2
0
 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);
             }
         }
     }
 }