Exemple #1
0
 function prepareMessage(&$message, $jid = null)
 {
     if ($jid != $message->jidto && $jid != $message->jidfrom && $jid != null) {
         return $this->_wrapper;
     }
     $message->jidto = echapJS($message->jidto);
     $message->jidfrom = echapJS($message->jidfrom);
     if (isset($message->html)) {
         $message->body = $message->html;
     } else {
         // We add some smileys...
         $message->convertEmojis();
         $message->addUrls();
         //    $message->body = prepareString(htmlentities($message->body , ENT_COMPAT,'UTF-8'));
     }
     if (isset($message->sticker)) {
         $p = new Picture();
         $sticker = $p->get($message->sticker, false, false, 'png');
         $stickerSize = $p->getSize();
         if ($sticker == false) {
             $r = new Request();
             $r->setTo($message->jidfrom)->setResource($message->resource)->setCid($message->sticker)->request();
         } else {
             $message->sticker = ['url' => $sticker, 'width' => $stickerSize['width'], 'height' => $stickerSize['height']];
         }
     }
     if (isset($message->picture)) {
         $message->sticker = ['url' => $message->picture, 'picture' => true];
     }
     $message->publishedPrepared = prepareDate(strtotime($message->published), true);
     if ($message->delivered) {
         $message->delivered = prepareDate(strtotime($message->delivered), true);
     }
     $date = substr($message->published, 0, 10);
     if ($message->type == 'groupchat') {
         $message->color = stringToColor($message->session . $message->resource . $message->jidfrom . $message->type);
         //fillup $wrapper
         if ($message->body != "") {
             if (!array_key_exists($date, $this->_wrapper)) {
                 $this->_wrapper[$date] = [$message];
             } else {
                 array_push($this->_wrapper[$date], $message);
             }
         }
     } else {
         $msgkey = $message->jidfrom . '>' . substr($message->published, 11, 5);
         //fillup $wrapper
         if (!array_key_exists($date, $this->_wrapper)) {
             $sticker = "";
             if (isset($message->sticker)) {
                 $sticker = "sticker";
             }
             $this->_wrapper[$date] = ['0' . $sticker . '<' . $msgkey => [$message]];
         } else {
             //date contains at least one speaker@time=>msg already
             end($this->_wrapper[$date]);
             $lastkey = key($this->_wrapper[$date]);
             if (substr($lastkey, strpos($lastkey, '<') + 1) == $msgkey && !isset($message->sticker) && strpos($lastkey, "sticker<") === false) {
                 // the previous msg was not a sticker
                 array_push($this->_wrapper[$date][$lastkey], $message);
             } else {
                 $sticker = "";
                 if (isset($message->sticker)) {
                     $sticker = "sticker";
                 }
                 $this->_wrapper[$date][count($this->_wrapper[$date]) . $sticker . '<' . $msgkey] = [$message];
             }
         }
     }
     return $this->_wrapper;
 }