Ejemplo n.º 1
0
 /**
  * 将消息列表整理为标准的返回格式
  * @param array $list 需要整理的消息列表
  * @return array 返回整理好的消息列表
  */
 public static function parseMessage($list)
 {
     if (!$list) {
         return array();
     }
     $array = array();
     $users = self::getUserInfo(Util::arrayColumn($list, 'from_uid'));
     foreach ($list as $key => $rs) {
         $array[$key]['message_id'] = (int) $rs['message_id'];
         $array[$key]['from_uid'] = (int) $rs['from_uid'];
         $array[$key]['from_uname'] = (string) $users[$rs['from_uid']]['uname'];
         $array[$key]['type'] = $rs['type'];
         $array[$key]['content'] = Util::htmlDecode($rs['content']);
         $array[$key]['room_id'] = (int) $rs['list_id'];
         $array[$key]['mtime'] = (int) $rs['mtime'];
         if (empty($rs['attach_ids'])) {
             $attach = array();
         } else {
             $attach = @unserialize($rs['attach_ids']);
         }
         if ($rs['type'] == 'notify') {
             if ($attach) {
                 $array[$key] = array_merge($attach, $array[$key]);
             }
         } elseif ($rs['type'] == 'voice') {
             $array[$key]['length'] = @$attach['length'];
             $array[$key]['attach_id'] = @Util::desEncrypt($attach['attach_id']);
         } elseif ($rs['type'] == 'image') {
             $array[$key]['attach_id'] = @Util::desEncrypt($attach['attach_id']);
         } elseif ($rs['type'] == 'position') {
             $array[$key]['latitude'] = @$attach['latitude'];
             $array[$key]['longitude'] = @$attach['longitude'];
             $array[$key]['location'] = @$attach['location'];
             $array[$key]['attach_id'] = @Util::desEncrypt($attach['attach_id']);
         } elseif ($rs['type'] == 'card') {
             $array[$key]['uid'] = @(int) $attach['uid'];
         } else {
             $array[$key]['type'] = 'text';
         }
     }
     return $array;
 }