示例#1
0
 /**
  * 整理合并贴子内容 
  * 
  * @param mixed $tids 
  * @param mixed $pids 
  * @access public
  * @return void
  */
 public function gather($threadList, $attList)
 {
     if (!is_array($threadList) || !is_array($attList)) {
         return array();
     }
     foreach ($threadList as $key => $thread) {
         $pic_key = $thread['tid'] . '_0';
         $threadList[$key]['pic'] = isset($attList[$pic_key]) ? $attList[$pic_key] : array();
         //列表数据,过滤掉图片及附件url等标签
         $_shareData = Pw::formatContent($threadList[$key]['content']);
         $threadList[$key]['share'] = $_shareData['share'];
         $threadList[$key]['content'] = preg_replace('/(\\[)[^\\]]*$/i', '', mb_substr($_shareData['content'], 0, 90));
         //截字并修正表情标签
         //
         $threadList[$key]['created_user_avatar'] = Pw::getAvatar($threadList[$key]['created_userid'], '');
         //
         $threadList[$key]['lastpost_time'] = Pw::time2str($threadList[$key]['lastpost_time'], 'auto');
     }
     krsort($threadList, SORT_NUMERIC);
     return $threadList;
 }
示例#2
0
 /**
  * 获取列表页展示的帖子数据
  */
 public function fetchThreadsList($tids, $uid = 0, $result_type = 'ASSOC')
 {
     if (!$tids) {
         return array();
     }
     Wind::import('SRV:like.PwLikeContent');
     $threads = Wekit::loadDao('native.dao.PwNativeThreadsDao')->fetchThreads($tids);
     $threads_place = Wekit::loadDao('native.dao.PwThreadsPlaceDao')->fetchByTids($tids);
     $threads_content = Wekit::loadDao('forum.dao.PwThreadsContentDao')->fetchThread($tids);
     $PwThreadService = Wekit::load('forum.srv.PwThreadService');
     $PwNativeThreadService = Wekit::load('native.PwNativeThread');
     $threadLikeData = Wekit::load('like.srv.reply.do.PwLikeDoReply')->getAllLikeUserids(PwLikeContent::THREAD, $tids);
     foreach ($threadLikeData as $k => $v) {
         if (!in_array($uid, $v)) {
             unset($threadLikeData[$k]);
         }
     }
     $tag_names_str = '';
     foreach ($threads as $k => $v) {
         $content = isset($threads_content[$k]['content']) ? $threads_content[$k]['content'] : '';
         $threads[$k]['tags'] = $threads[$k]['tags_origin'] = isset($threads_content[$k]['tags']) ? $threads_content[$k]['tags'] : '';
         $threads[$k]['from_type'] = isset($threads_place[$k]['from_type']) ? $threads_place[$k]['from_type'] : 0;
         $threads[$k]['created_address'] = isset($threads_place[$k]['created_address']) ? $threads_place[$k]['created_address'] : '';
         $threads[$k]['area_code'] = isset($threads_place[$k]['area_code']) ? $threads_place[$k]['area_code'] : '';
         $threads[$k]['tags'] && ($tag_names_str .= ',' . $threads[$k]['tags']);
         $threads[$k]['avatar'] = Pw::getAvatar($v['created_userid'], 'small');
         $threads[$k]['created_time'] = Pw::time2str($v['created_time'], 'auto');
         $threads[$k]['lastpost_time'] = Pw::time2str($v['lastpost_time'], 'auto');
         preg_match("/\\[mp3.*?\\].*?\\[\\/mp3\\]/i", $content, $matches);
         $threads[$k]['have_mp3'] = $matches ? true : false;
         preg_match("/\\[flash.*?\\].*?\\[\\/flash\\]/i", $content, $matches);
         $threads[$k]['have_flash'] = $matches ? true : false;
         $format_content = Pw::formatContent($content);
         //格式化移动端帖子内容去除ubb标签、分享链接内容、推广链接内容
         $threads[$k]['isliked'] = isset($threadLikeData[$k]) ? true : false;
         $imgs = array_shift($PwNativeThreadService->getThreadAttach(array($k), array(0)));
         ksort($imgs);
         $imgs = array_slice($imgs, 0, 9);
         foreach ($imgs as $imgs_k => $imgs_v) {
             $imgs[$imgs_k]['realpath'] = str_replace("/thumb/mini", "", $imgs_v['path']);
         }
         $threads[$k]['content'] = array('text' => preg_replace('/(\\[)[^\\]]*$/i', '', Pw::substrs($format_content['content'], 70, 0, false)), 'imgs' => $imgs, 'share' => $format_content['share'], 'origin_content' => $content, 'format_content' => $format_content);
     }
     $tag_names_arr = array_unique(explode(',', trim($tag_names_str, ',')));
     $tag_names = Wekit::loadDao('tag.dao.PwTagDao')->getTagsByNames($tag_names_arr);
     //        var_dump($tag_names);exit;
     foreach ($threads as $k => $v) {
         if ($v['tags']) {
             $tag_arr = explode(',', $v['tags']);
             $tag_tmp = array();
             foreach ($tag_arr as $name) {
                 array_key_exists($name, $tag_names) && ($tag_tmp[] = array('tag_id' => $tag_names[$name]['tag_id'], 'tag_name' => $name));
             }
             $threads[$k]['tags'] = $tag_tmp;
         }
     }
     $threads_tmp = array();
     $sort_num = 0;
     if ($result_type == 'ASSOC') {
         //按照tids的顺序重新排序结果集,tid作为索引
         foreach ($tids as $v) {
             if (isset($threads[$v])) {
                 $threads_tmp[$v] = $threads[$v];
                 $threads_tmp[$v]['sort'] = $sort_num++;
             }
         }
     } else {
         //tid会有重复的情况,置顶帖在列表中显示2次,数字顺序索引
         foreach ($tids as $v) {
             if (isset($threads[$v])) {
                 $threads[$v]['sort'] = $sort_num++;
                 $threads_tmp[] = $threads[$v];
             }
         }
     }
     //        print_r($threads_tmp);exit;
     return $threads_tmp;
 }