示例#1
0
 function update($uploaddb)
 {
     $fieldService = L::loadClass('ActivityField', 'activity');
     if ($this->tid) {
         $defaultAttach = $userAttach = array();
         foreach ($uploaddb as $key => $value) {
             if ($value['id']) {
                 $attach = array();
                 $attach = $fieldService->getField($value['id']);
                 $this->attachs[$attach['fieldname']] = $value['fileuploadurl'];
                 if ($attach['fieldname'] && $attach['ifdel'] == 1) {
                     $userAttach[$attach['fieldname']] = $value['fileuploadurl'];
                 } elseif ($attach['fieldname'] && !$attach['ifdel']) {
                     $defaultAttach[$attach['fieldname']] = $value['fileuploadurl'];
                 }
             }
         }
         $defaultValueTableName = getActivityValueTableNameByActmid();
         $userDefinedValueTableName = getActivityValueTableNameByActmid($this->actmid, 1, 1);
         if ($defaultAttach) {
             $this->db->update("UPDATE {$defaultValueTableName} SET " . S::sqlSingle($defaultAttach) . " WHERE tid=" . S::sqlEscape($this->tid));
         }
         if ($userAttach) {
             $this->db->update("UPDATE {$userDefinedValueTableName} SET " . S::sqlSingle($userAttach) . " WHERE tid=" . S::sqlEscape($this->tid));
         }
     } else {
         foreach ($uploaddb as $key => $value) {
             $this->attachs['fileuploadurl'] = $value['fileuploadurl'];
         }
     }
     return true;
 }
示例#2
0
    $memberdb = $db->get_one("SELECT am.ifpay,am.isrefund,am.username,am.totalcash,am.out_trade_no,am.refundcost,t.authorid FROM pw_activitymembers am LEFT JOIN pw_threads t USING(tid) WHERE am.actuid=" . S::sqlEscape($actuid));
    $tempcost = $db->get_value("SELECT SUM(totalcash) as sum FROM pw_activitymembers WHERE isrefund=1 AND fupid=" . S::sqlEscape($actuid));
    //已退费用
    if ($memberdb['isrefund'] || $memberdb['authorid'] != $winduid) {
        //退款交易无法操作、不是发起人无法操作
        Showmsg('act_refund_noright');
    }
    $memberdb['ifpay'] != 1 && Showmsg('act_refund_error');
    //支付宝支付成功才能退款
    if (!$memberdb['refundcost'] || !preg_match("/^(([1-9]\\d*)|0)(\\.\\d{0,2})?\$/", $memberdb['refundcost']) || $memberdb['refundcost'] > number_format($memberdb['totalcash'] - $tempcost, 2, '.', '')) {
        //费用错误、超出剩余费用
        Showmsg('act_refund_cash_error');
    }
    $refundcost = number_format($memberdb['refundcost'], 2, '.', '');
    //退款金额
    $defaultValueTableName = getActivityValueTableNameByActmid();
    $defaultValue = $db->get_one("SELECT user_id,paymethod,endtime FROM {$defaultValueTableName} WHERE tid=" . S::sqlEscape($tid));
    $defaultValue['endtime'] + 30 * 86400 < $timestamp && Showmsg('act_endtime_toolong');
    //结束时间后一个月,>0 则可以操作,< 0无法操作
    $defaultValue['paymethod'] != 1 && Showmsg('act_toalipay_paymethod');
    //支付宝支付才能退款
    $param = array('out_trade_no' => $memberdb['out_trade_no'], 'operator_id' => $defaultValue['user_id'], 'refund_fee' => $refundcost, 'notify_url' => "{$db_bbsurl}/act_alipay_receive.php", 'return_url' => "{$db_bbsurl}/read.php?tid={$tid}");
    ObHeader($AlipayInterface->alipayurl($param));
}
/**
 * 生成随机码
 * @param int $len 位数
 * @param string 随机串
 */
function generatestr($len)
{
示例#3
0
/**
 * 将活动帖子的数据删除
 * @param array $activityDb 帖子数据,形入array(tid, tid)
 */
function _delActivityTopic($activityDb)
{
    global $db;
    $defaultValueTableName = getActivityValueTableNameByActmid();
    $newActivityDb = array();
    $query = $db->query("SELECT actmid,tid FROM {$defaultValueTableName} WHERE tid IN(" . S::sqlImplode($activityDb) . ")");
    while ($rt = $db->fetch_array($query)) {
        $newActivityDb[$rt['actmid']][] = $rt['tid'];
    }
    /*帖子被删除费用日志更新*/
    L::loadClass('ActivityForBbs', 'activity', false);
    $postActForBbs = new PW_ActivityForBbs($data);
    $data = array();
    /*帖子被删除费用日志更新*/
    foreach ($newActivityDb as $key => $value) {
        $tids = S::sqlImplode($value);
        $userDefinedValueTableName = getActivityValueTableNameByActmid($key, 1, 1);
        $db->update("DELETE FROM {$defaultValueTableName} WHERE tid IN({$tids})");
        $db->update("DELETE FROM {$userDefinedValueTableName} WHERE tid IN({$tids})");
        $db->update("DELETE FROM pw_activitymembers WHERE tid IN({$tids})");
        /*帖子被删除费用日志更新*/
        $postActForBbs->UpdatePayLog($value, 0, 4);
        /*帖子被删除费用日志更新*/
        /*帖子被删除发送站内信*/
        $postActForBbs->activityDelSendmsg($value);
        /*帖子被删除发送站内信*/
    }
}
示例#4
0
/**
 * 删除活动子分类的相关数据
 * @param int $actmid
 * @global DB
 */
function deleteTopicAndModelDataByActmid($actmid)
{
    global $db;
    //删除子分类
    $db->update("DELETE FROM pw_activitymodel WHERE actmid=" . S::sqlEscape($actmid));
    //删除子分类字段
    $db->update("DELETE FROM pw_activityfield WHERE actmid=" . S::sqlEscape($actmid));
    $userDefinedValueTableName = getActivityValueTableNameByActmid($actmid, 1, 1);
    //删除子分类帖子数据
    $query = $db->query("SELECT tid FROM {$userDefinedValueTableName}");
    while ($rt = $db->fetch_array($query)) {
        $tids[] = $rt['tid'];
    }
    $delarticle = L::loadClass('DelArticle', 'forum');
    $delarticle->delTopicByTids($tids);
    //删除子分类自定义表
    $db->query("DROP TABLE IF EXISTS {$userDefinedValueTableName}");
    //删除子分类默认字段数据
    $defaultValueTableName = getActivityValueTableNameByActmid();
    $db->update("DELETE FROM {$defaultValueTableName} WHERE actmid=" . S::sqlEscape($actmid));
}
示例#5
0
 /**
  * 数据交互
  * @param int $tid 帖子id
  * @param int $actmid 活动二级分类id
  * @return ''
  */
 function pushActivityToAppCenter($tid, $actmid)
 {
     global $db_siteid, $db_siteownerid, $db_sitehash, $db_bbsurl, $db_bbsname, $db_charset;
     $defaultValueTableName = getActivityValueTableNameByActmid();
     $this->db->update("UPDATE {$defaultValueTableName} SET pushtime=" . S::sqlEscape($this->timestamp) . " WHERE tid=" . S::sqlEscape($tid));
     $i = $payMemberNums = $orderMemberNums = $payMemberCosts = $orderMemberCosts = $payRefundCouts = 0;
     $query = $this->db->query("SELECT am.tid,am.fupid,am.isrefund,am.ifpay,am.totalcash,am.signupnum,t.subject,t.authorid,t.author,t.postdate FROM pw_activitymembers am LEFT JOIN pw_threads t ON am.tid=t.tid WHERE am.tid=" . S::sqlEscape($tid));
     while ($rt = $this->db->fetch_array($query)) {
         if ($rt['ifpay'] != 3 && $rt['fupid'] == 0) {
             //费用关闭的不算
             $orderMemberNums += $rt['signupnum'];
             //已报名人数
         }
         if ($rt['ifpay'] != 3 && $rt['isrefund'] == 0) {
             //费用关闭的不算
             $orderMemberCosts += $rt['totalcash'];
             //涉及费用
         }
         if ($rt['ifpay'] != 0 && $rt['ifpay'] != 3 && $rt['fupid'] == 0) {
             //自己支付1、确认支付2、费用退完4
             $payMemberNums += $rt['signupnum'];
             //已经付款的人数
         }
         if ($rt['ifpay'] != 0 && $rt['ifpay'] != 3 && $rt['isrefund'] == 0) {
             //自己支付1、确认支付2、费用退完4
             $payMemberTempCosts += $rt['totalcash'];
             //已支付费用
         }
         if ($rt['isrefund'] == 1) {
             $payRefundCouts += $rt['totalcash'];
             //退款费用
         }
         if ($i == 0) {
             $tid = $rt['tid'];
             $subject = $rt['subject'];
             $authorid = $rt['authorid'];
             $author = $rt['author'];
             $postdate = $rt['postdate'];
         }
     }
     if ($orderMemberNums) {
         //有人报名才更新
         $author = pwConvert($author, 'gbk', $db_charset);
         $subject = pwConvert($subject, 'gbk', $db_charset);
         $acttype = pwConvert($this->activitymodeldb[$actmid]['name'], 'gbk', $db_charset);
         $db_bbsname = pwConvert($db_bbsname, 'gbk', $db_charset);
         $partner = md5($db_siteid . $db_siteownerid);
         $payMemberCosts = $payMemberTempCosts - $payRefundCouts;
         //已支付费用
         $para = array('tid' => $tid, 'subject' => $subject, 'authorid' => $authorid, 'author' => $author, 'postdate' => $postdate, 'acttype' => $acttype, 'ordermembernums' => $orderMemberNums, 'ordermembercosts' => $orderMemberCosts, 'paymembernums' => $payMemberNums, 'paymembercosts' => $payMemberCosts, 'sitehash' => $db_sitehash, 'bbsurl' => $db_bbsurl, 'bbsname' => $db_bbsname);
         ksort($para);
         reset($para);
         $arg = '';
         foreach ($para as $key => $value) {
             $arg .= "{$key}={$value}&";
             $url .= "{$key}=" . urlencode($value) . "&";
         }
         $sign = md5(substr($arg, 0, -1) . $partner);
         $url .= 'sign=' . $sign;
         require_once R_P . 'require/posthost.php';
         PostHost("http://stats.phpwind.com/api.php?m=app&job=alipayaa", $url, "POST");
     }
 }
示例#6
0
 /**
  * 查询单笔订单
  * @param int $tid 帖子id
  * @param int $actmid 二级分类id
  * @return string T
  * @access private
  */
 function query_aa_detail_payment($tid, $actuid)
 {
     global $timestamp;
     require_once R_P . 'lib/activity/alipay.php';
     $AlipayInterface = new AlipayInterface('query_aa_detail_payment');
     $defaultValueTableName = getActivityValueTableNameByActmid();
     $batch_no = $this->db->get_value("SELECT batch_no FROM {$defaultValueTableName} WHERE tid=" . S::sqlEscape($tid));
     //AA外部活动号
     $memberdb = $this->db->get_one("SELECT out_trade_no,batch_detail_no FROM pw_activitymembers WHERE actuid=" . S::sqlEscape($actuid));
     //AA订单号
     $param = array('batch_no' => $batch_no, 'out_trade_no' => $memberdb['out_trade_no'], 'batch_detail_no' => $memberdb['batch_detail_no']);
     require_once R_P . 'require/posthost.php';
     $returnResult = PostHost($AlipayInterface->alipayurl($param), '', 'POST');
     //获取XML值
     $xml_parser = xml_parser_create();
     xml_parse_into_struct($xml_parser, $returnResult, $arr_vals);
     xml_parser_free($xml_parser);
     foreach ($arr_vals as $value) {
         if ($value['tag'] == 'ERROR') {
             $error = $value['value'];
         } elseif ($value['tag'] == 'IS_SUCCESS') {
             $is_success = $value['value'];
         } elseif ($value['tag'] == 'SIGN') {
             $sign = $value['value'];
         } elseif ($value['tag'] == 'BATCH_DETAIL_NO') {
             $batch_detail_no = $value['value'];
         } elseif ($value['tag'] == 'TRADE_STATUS') {
             $trade_status = $value['value'];
         }
     }
     if ($error) {
         return $error;
     } elseif ($is_success == 'T') {
         $payStatus = array('I' => '0', 'S' => '1', 'C' => '3', 'E' => '1');
         $this->db->update("UPDATE pw_activitymembers SET batch_detail_no=" . S::sqlEscape($batch_detail_no) . ",ifpay=" . S::sqlEscape($payStatus[$trade_status]) . " WHERE actuid=" . S::sqlEscape($actuid));
         $this->db->update("UPDATE {$defaultValueTableName} SET updatetime=" . S::sqlEscape($timestamp) . " WHERE tid=" . S::sqlEscape($tid));
         //报名列表动态时间
         return $payStatus[$trade_status];
     }
 }
示例#7
0
 function getActivityStatusValue($tid)
 {
     $activityValue = array();
     $defaultValueTableName = getActivityValueTableNameByActmid();
     $activityValue = $this->db->get_one("SELECT iscancel,signupstarttime,signupendtime,endtime,starttime,maxparticipant FROM {$defaultValueTableName} dt WHERE dt.tid=" . S::sqlEscape($tid));
     $activityStatusKey = $this->getActivityStatusKey($activityValue, $this->timestamp, $this->peopleAlreadySignup($tid));
     switch ($activityStatusKey) {
         case 'activity_is_cancelled':
             $return = 3;
             break;
         case 'signup_is_ended':
             $return = 2;
             break;
         case 'activity_is_ended':
             $return = 2;
             break;
         case 'signup_number_limit_is_reached':
         case 'signup_is_available':
             $return = 1;
             break;
         default:
             $return = 0;
             break;
     }
     return $return;
 }
示例#8
0
function RevertActivityTopic($activityDb)
{
    global $db;
    $defaultValueTableName = getActivityValueTableNameByActmid();
    $newActivityDb = array();
    $query = $db->query("SELECT actmid,tid FROM {$defaultValueTableName} WHERE tid IN(" . S::sqlImplode($activityDb) . ")");
    while ($rt = $db->fetch_array($query)) {
        $newActivityDb[$rt['actmid']][] = $rt['tid'];
    }
    /*支付成功费用流通日志*/
    L::loadClass('ActivityForBbs', 'activity', false);
    $postActForBbs = new PW_ActivityForBbs($data);
    $data = array();
    /*支付成功费用流通日志*/
    foreach ($newActivityDb as $key => $value) {
        $tids = S::sqlImplode($value);
        $userDefinedValueTableName = getActivityValueTableNameByActmid($key, 1, 1);
        $db->update("UPDATE {$defaultValueTableName} SET ifrecycle='0' WHERE tid IN({$tids})");
        $db->update("UPDATE {$userDefinedValueTableName} SET ifrecycle='0' WHERE tid IN({$tids})");
        /*支付成功费用流通日志*/
        foreach ($value as $tid) {
            $statusValue = $postActForBbs->getActivityStatusValue($tid);
            $postActForBbs->UpdatePayLog($tid, 0, $statusValue);
        }
        /*支付成功费用流通日志*/
    }
}
示例#9
0
文件: thread.php 项目: jechiy/PHPWind
 function parseThread($tpcdb)
 {
     global $isGM, $pwSystem, $foruminfo, $forumset, $db_readdir, $viewbbs, $page, $managemode, $imgpath, $stylepath, $db_readperpage, $managecheck, $db_threademotion, $winduid, $db_anonymousname, $modelid, $pcid, $actmid, $timestamp;
     $this->analyseDataToCache($tpcdb);
     $pwAnonyHide = $isGM || $pwSystem['anonyhide'];
     $updatetop = 0;
     $threaddb = $rewids = $cyids = $replyReward = array();
     $arrStatus = array(1 => 'vote', 2 => 'active', 3 => 'reward', 4 => 'trade', 5 => 'debate');
     $attachtype = array('1' => 'img', '2' => 'txt', '3' => 'zip');
     foreach ($tpcdb as $key => $thread) {
         $foruminfo['allowhtm'] == 1 && ($htmurl = $db_readdir . '/' . $this->fid . '/' . date('ym', $thread['postdate']) . '/' . $thread['tid'] . '.html');
         $thread['tpcurl'] = "read.php?tid={$thread[tid]}{$viewbbs}" . ($page > 1 ? "&fpage={$page}" : '');
         if ($managemode == 1) {
             $thread['tpcurl'] .= '&toread=1';
         } elseif (!$foruminfo['cms'] && $foruminfo['allowhtm'] == 1 && file_exists(R_P . $htmurl)) {
             $thread['tpcurl'] = "{$htmurl}";
         }
         if ($thread['toolfield']) {
             list($t, $e, $m) = explode(',', $thread['toolfield']);
             $sqladd = '';
             if ($t && $t < $timestamp) {
                 $sqladd .= ",toolinfo='',specialsort=0,topped='0'";
                 $t = '';
                 $thread['topped'] > 0 && ($updatetop = 1);
             }
             if ($e && $e < $timestamp) {
                 $sqladd .= ",titlefont=''";
                 $thread['titlefont'] = '';
                 $e = '';
             }
             if ($m && $m < $timestamp) {
                 $sqladd .= ",specialsort=0";
                 $m = '';
                 $kmdService = L::loadClass('kmdservice', 'forum');
                 $kmdService->initKmdInfoByTid($thread['tid']);
             }
             if ($sqladd) {
                 $thread['toolfield'] = implode(',', array(0 => $t, 1 => $e, 2 => $m));
                 $this->db->update(pwQuery::buildClause("UPDATE :pw_table SET toolfield=:toolfield {$sqladd} WHERE tid=:tid", array('pw_threads', $thread['toolfield'], $thread['tid'])));
                 //* $threads = L::loadClass('Threads', 'forum');
                 //* $threads->delThreads($thread['tid']);
             }
         }
         $forumset['cutnums'] && ($thread['subject'] = substrs($thread['subject'], $forumset['cutnums']));
         $forumset['cutnums'] > 80 && ($thread['subject'] = substrs(str_replace('&nbsp;', ' ', $thread['subject']), 80));
         if ($thread['titlefont']) {
             $titledetail = explode("~", $thread['titlefont']);
             if ($titledetail[0]) {
                 $thread['subject'] = "<font color={$titledetail['0']}>{$thread['subject']}</font>";
             }
             if ($titledetail[1]) {
                 $thread['subject'] = "<b>{$thread['subject']}</b>";
             }
             if ($titledetail[2]) {
                 $thread['subject'] = "<i>{$thread['subject']}</i>";
             }
             if ($titledetail[3]) {
                 $thread['subject'] = "<u>{$thread['subject']}</u>";
             }
         }
         if ($thread['ifshield']) {
             $thread['subject'] = threadShield('shield_title');
         }
         if ($thread['ifmark']) {
             $thread['ifmark'] = $thread['ifmark'] > 0 ? "<span class='gray tpage w'>&#xFF08;+{$thread['ifmark']}&#xFF09;</span>" : "<span class='gray tpage w'>&#xFF08;{$thread['ifmark']}&#xFF09;</span>";
         } else {
             unset($thread['ifmark']);
         }
         if (isset($arrStatus[$thread['special']])) {
             $p_status = $thread['locked'] % 3 == 0 ? $arrStatus[$thread['special']] : $arrStatus[$thread['special']] . 'lock';
         } elseif ($thread['locked'] % 3 != 0) {
             $p_status = $thread['locked'] % 3 == 1 ? 'topiclock' : 'topicclose';
         } else {
             $p_status = $thread['ifmagic'] ? 'magic' : ($thread['replies'] >= 10 ? 'topichot' : 'topicnew');
         }
         if ($thread['special'] == 8 && $p_status == 'topicnew') {
             //活动帖图标展示
             $p_status = 'activity';
         }
         $thread['inspect'] && ($thread['inspect'] = explode("\t", $thread['inspect']));
         if ($thread['inspect'] && $thread['inspect'][0] == 0) {
             $thread['inspect'][0] = '主';
         }
         $thread['tooltip'] = $p_status;
         $thread['status'] = "<img src=\"{$imgpath}/{$stylepath}/thread/" . $p_status . ".gif\" align=\"absmiddle\">";
         if ($thread['special'] == 8 && $p_status == 'activity') {
             //活动帖图标展示
             $thread['status'] = "<img src=\"{$imgpath}/activity/" . $p_status . ".gif\" border=0 align=\"absmiddle\">";
         }
         $thread['topped'] && ($GLOBALS['ifsort'] = 1);
         $thread['ispage'] = '';
         if ($thread['topreplays'] + $thread['replies'] + 1 > $db_readperpage) {
             $numofpage = ceil(($thread['topreplays'] + $thread['replies'] + 1) / $db_readperpage);
             $fpage = $page > 1 ? "&fpage={$page}" : "";
             $thread['ispage'] = ' ';
             $thread['ispage'] .= "&nbsp;<img src=\"{$imgpath}/{$stylepath}/file/multipage.gif\" align=\"absmiddle\" alt=\"pages\">&nbsp;<span class=\"tpage\">";
             for ($j = 1; $j <= $numofpage; $j++) {
                 if ($j == 6 && $j + 1 < $numofpage) {
                     $thread['ispage'] .= " .. <a href=\"read.php?tid={$thread['tid']}{$fpage}&page={$numofpage}\">{$numofpage}</a>";
                     break;
                 } elseif ($j == 1) {
                     $thread['ispage'] .= "";
                     //				$thread['ispage'].=" <a href=\"read.php?tid=$thread[tid]$fpage\">$j</a>";
                 } else {
                     $thread['ispage'] .= " <a href=\"read.php?tid={$thread['tid']}{$fpage}&page={$j}\">{$j}</a>";
                 }
             }
             $thread['ispage'] .= '</span> ';
         }
         $postdetail = explode(",", $thread['lastpost']);
         if ($thread['ifupload']) {
             $atype = $attachtype[$thread['ifupload']];
             $thread['titleadd'] = " <img src=\"{$imgpath}/{$stylepath}/file/{$atype}.gif\" alt=\"{$atype}\" align=\"absmiddle\">";
         } else {
             $thread['titleadd'] = "";
         }
         /*if ($managecheck) {
         			if ($thread['fid'] == $this->fid) {
         				$thread['adminbox'] = "<input type=\"checkbox\" autocomplete=\"off\" name=\"tidarray[]\" id=tid_{$thread[tid]} value=\"$thread[tid]\" onclick=\"postManage.show('postbatch','a_ajax_{$thread[tid]}')\" />";
         			} else {
         				$thread['adminbox'] = "&nbsp;&nbsp;&nbsp;";
         			}
         		}*/
         if ($db_threademotion) {
             if ($thread['icon'] == "R" || !$thread['icon']) {
                 $thread['useriocn'] = '';
             } else {
                 $thread['useriocn'] = "<img src=\"{$imgpath}/post/emotion/{$thread['icon']}.gif\" alt=\"{$thread['icon']}\" align=\"absmiddle\"> ";
             }
         }
         if ($thread['anonymous'] && $thread['authorid'] != $winduid && !$pwAnonyHide) {
             $thread['author'] = $db_anonymousname;
             $thread['authorid'] = 0;
         }
         if ($thread['special'] == 3 && $thread['state'] < 1) {
             $rewids[] = $thread['tid'];
         }
         //获取分类信息的帖子id
         if ($modelid > 0) {
             $topicids[] = $thread['tid'];
         }
         //获取团购的帖子id
         if ($pcid > 0) {
             $postcatepcids[] = $thread['tid'];
         }
         //获取活动的帖子id
         if ($actmid > 0 || $thread['special'] == 8) {
             $activitytiddb[] = $thread['tid'];
         }
         if (getstatus($thread['tpcstatus'], 1)) {
             $cyids[] = $thread['tid'];
         }
         if (getstatus($thread['tpcstatus'], 8)) {
             $replyReward[] = $thread['tid'];
         }
         $threaddb[$thread['tid']] = $thread;
     }
     if ($rewids) {
         $rewids = S::sqlImplode($rewids);
         $query = $this->db->query("SELECT tid,cbval,caval FROM pw_reward WHERE tid IN({$rewids})");
         while ($rt = $this->db->fetch_array($query)) {
             $threaddb[$rt['tid']]['rewcredit'] = $rt['cbval'] + $rt['caval'];
         }
     }
     if ($cyids && !$cyid) {
         $query = $this->db->query("SELECT a.tid,a.cyid,c.cname FROM pw_argument a LEFT JOIN pw_colonys c ON a.cyid=c.id WHERE tid IN (" . S::sqlImplode($cyids) . ')');
         while ($rt = $this->db->fetch_array($query)) {
             $threaddb[$rt['tid']]['colony'] = $rt;
         }
     }
     if ($topicids) {
         $topicvaluetable = GetTopcitable($modelid);
         $query = $this->db->query("SELECT * FROM {$topicvaluetable} WHERE tid IN (" . S::sqlImplode($topicids) . ")");
         while ($rt = $this->db->fetch_array($query)) {
             $threaddb[$rt['tid']]['topic'] = $rt;
         }
     }
     if ($postcatepcids) {
         //团购
         $pcvaluetable = GetPcatetable($pcid);
         $query = $this->db->query("SELECT * FROM {$pcvaluetable} WHERE tid IN (" . S::sqlImplode($postcatepcids) . ")");
         while ($rt = $this->db->fetch_array($query)) {
             $threaddb[$rt['tid']]['topic'] = $rt;
         }
     }
     if ($activitytiddb) {
         //活动
         global $threadshowfield, $postActForBbs;
         $defaultValueTableName = getActivityValueTableNameByActmid();
         if ($actmid) {
             $userDefinedValueTableName = getActivityValueTableNameByActmid($actmid, 1, 1);
             $query = $this->db->query("SELECT actmid,recommend,starttime,endtime,location,contact,telephone,picture1,picture2,picture3,picture4,picture5,signupstarttime,signupendtime,minparticipant,maxparticipant,userlimit,specificuserlimit,genderlimit,fees,feesdetail,paymethod,ut.* FROM {$defaultValueTableName} dt LEFT JOIN {$userDefinedValueTableName} ut USING(tid) WHERE dt.tid IN(" . S::sqlImplode($activitytiddb) . ")");
         } else {
             $query = $this->db->query("SELECT * FROM {$defaultValueTableName} WHERE tid IN(" . S::sqlImplode($activitytiddb) . ")");
         }
         while ($rt = $this->db->fetch_array($query)) {
             if ($rt['recommend'] == 1) {
                 $threaddb[$rt['tid']]['recommendadd'] = " <img src=\"{$imgpath}/activity/actrecommend.gif\" border=0 align=\"absmiddle\" title=\"" . getLangInfo('other', 'act_recommend') . "\">";
             } else {
                 $threaddb[$rt['tid']]['recommendadd'] = "";
             }
             if ($threadshowfield) {
                 foreach ($threadshowfield as $key => $column) {
                     $i = 0;
                     $columnHtml = '';
                     foreach ($column as $field) {
                         // 如人数限制值为0,视为空
                         if (in_array($field['fieldname'], array('minparticipant', 'maxparticipant')) && $rt[$field['fieldname']] == 0) {
                             $rt[$field['fieldname']] = '';
                         }
                         if ($rt[$field['fieldname']] !== '') {
                             $names = $postActForBbs->getNamePartsByName($field['name']);
                             if ($i != 0) {
                                 $columnHtml .= ' ' . $names[0];
                             }
                             $columnHtml .= $names[1] . ' ';
                             $fieldValueHtml = $postActForBbs->getThreadFieldValueHtml($field['type'], $rt[$field['fieldname']], $field['rules'], $field['fieldname']);
                             $columnHtml .= $fieldValueHtml;
                             $columnHtml .= $names[2];
                             $columnHtml = trim($columnHtml);
                         }
                         $i++;
                     }
                     $threaddb[$rt['tid']]['topic'][$key] = $columnHtml ? $columnHtml : '';
                 }
             }
         }
     }
     if ($replyReward) {
         $replyRewardService = L::loadClass('ReplyReward', 'forum');
         /* @var $replyRewardService PW_ReplyReward */
         $replyRewardInfos = $replyRewardService->getRewardByTids($replyReward);
         foreach ($replyRewardInfos as $value) {
             $threaddb[$value['tid']]['replyrewardtip'] = '[回帖奖励' . intval($value['creditnum'] * $value['lefttimes']) . ']';
         }
     }
     if ($updatetop) {
         require_once R_P . 'require/updateforum.php';
         updatetop();
     }
     return $threaddb;
 }