Ejemplo n.º 1
0
 public function after_newthread()
 {
     if (!$this->tid) {
         return;
     }
     $this->trademessage = preg_replace('/\\[attachimg\\](\\d+)\\[\\/attachimg\\]/is', '[attach]\\1[/attach]', $this->trademessage);
     $pid = insertpost(array('fid' => $this->forum['fid'], 'tid' => $this->tid, 'first' => '0', 'author' => $this->member['username'], 'authorid' => $this->member['uid'], 'subject' => $this->param['subject'], 'dateline' => getglobal('timestamp'), 'message' => $this->trademessage, 'useip' => getglobal('clientip'), 'invisible' => 0, 'anonymous' => $this->param['isanonymous'], 'usesig' => $_GET['usesig'], 'htmlon' => $this->param['htmlon'], 'bbcodeoff' => $this->param['bbcodeoff'], 'smileyoff' => $this->param['smileyoff'], 'parseurloff' => $this->param['parseurloff'], 'attachment' => 0, 'tags' => $this->param['tagstr'], 'status' => defined('IN_MOBILE') ? 8 : 0));
     ($this->group['allowpostattach'] || $this->group['allowpostimage']) && ($_GET['attachnew'] || $_GET['tradeaid']) && updateattach($this->param['displayorder'] == -4 || $this->param['modnewthreads'], $this->tid, $pid, $_GET['attachnew']);
     require_once libfile('function/trade');
     $author = !$this->param['isanonymous'] ? $this->member['username'] : '';
     trade_create(array('tid' => $this->tid, 'pid' => $pid, 'aid' => $_GET['tradeaid'], 'item_expiration' => $_GET['item_expiration'], 'thread' => $this->thread, 'discuz_uid' => $this->member['uid'], 'author' => $author, 'seller' => empty($_GET['paymethod']) && $_GET['seller'] ? dhtmlspecialchars(trim($_GET['seller'])) : '', 'tenpayaccount' => $_GET['tenpay_account'], 'item_name' => $_GET['item_name'], 'item_price' => $_GET['item_price'], 'item_number' => $_GET['item_number'], 'item_quality' => $_GET['item_quality'], 'item_locus' => $_GET['item_locus'], 'transport' => $_GET['transport'], 'postage_mail' => $_GET['postage_mail'], 'postage_express' => $_GET['postage_express'], 'postage_ems' => $_GET['postage_ems'], 'item_type' => $_GET['item_type'], 'item_costprice' => $_GET['item_costprice'], 'item_credit' => $_GET['item_credit'], 'item_costcredit' => $_GET['item_costcredit']));
     if (!empty($_GET['tradeaid'])) {
         convertunusedattach($_GET['tradeaid'], $this->tid, $pid);
     }
 }
Ejemplo n.º 2
0
     if ($subject == '' && $message == '' && $thread['special'] != 2) {
         showmessage('post_sm_isnull');
     }
 }
 $htmlon = $_G['group']['allowhtml'] && !empty($_G['gp_htmlon']) ? 1 : 0;
 if ($_G['setting']['editedby'] && TIMESTAMP - $orig['dateline'] > 60 && $_G['adminid'] != 1) {
     $editor = $isanonymous && $isorigauthor ? lang('forum/misc', 'anonymous') : $_G['username'];
     $edittime = dgmdate(TIMESTAMP);
     $message = lang('forum/misc', $htmlon ? 'post_edithtml' : (!$_G['forum']['allowbbcode'] || $_G['gp_bbcodeoff'] ? 'post_editnobbcode' : 'post_edit'), array('editor' => $editor, 'edittime' => $edittime)) . $message;
 }
 $bbcodeoff = checkbbcodes($message, !empty($_G['gp_bbcodeoff']));
 $smileyoff = checksmilies($message, !empty($_G['gp_smileyoff']));
 $tagoff = $isfirstpost ? !empty($tagoff) : 0;
 $attachupdate = !empty($_G['gp_delattachop']) || ($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) && ($_G['gp_attachnew'] || $special == 2 && $_G['gp_tradeaid'] || $special == 4 && $_G['gp_activityaid'] || $isfirstpost && $sortid);
 if ($attachupdate) {
     updateattach($thread['displayorder'] == -4 || $_G['forum_auditstatuson'], $_G['tid'], $pid, $_G['gp_attachnew'], $_G['gp_attachupdate'], $orig['authorid']);
 }
 if ($special == 2 && $_G['group']['allowposttrade']) {
     if ($trade = DB::fetch_first("SELECT * FROM " . DB::table('forum_trade') . " WHERE tid='{$_G['tid']}' AND pid='{$pid}'")) {
         $seller = empty($_G['gp_paymethod']) && $_G['gp_seller'] ? censor(dhtmlspecialchars(trim($_G['gp_seller']))) : '';
         $item_name = censor(dhtmlspecialchars(trim($_G['gp_item_name'])));
         $item_price = floatval($_G['gp_item_price']);
         $item_credit = intval($_G['gp_item_credit']);
         $item_locus = censor(dhtmlspecialchars(trim($_G['gp_item_locus'])));
         $item_number = intval($_G['gp_item_number']);
         $item_quality = intval($_G['gp_item_quality']);
         $item_transport = intval($_G['gp_item_transport']);
         $postage_mail = intval($_G['gp_postage_mail']);
         $postage_express = intval(trim($_G['gp_postage_express']));
         $postage_ems = intval($_G['gp_postage_ems']);
         $item_type = intval($_G['gp_item_type']);
Ejemplo n.º 3
0
     $_G['tid'] > 1 && DB::query("UPDATE " . DB::table('forum_thread') . " SET subject='{$subject}' WHERE closed='{$_G['tid']}'", 'UNBUFFERED');
 } else {
     if ($subject == '' && $message == '' && $thread['special'] != 2) {
         showmessage('post_sm_isnull');
     }
 }
 $htmlon = bindec(($_G['setting']['tagstatus'] && $tagoff ? 1 : 0) . ($_G['group']['allowhtml'] && !empty($_G['gp_htmlon']) ? 1 : 0));
 if ($_G['setting']['editedby'] && TIMESTAMP - $orig['dateline'] > 1 && $_G['adminid'] != 1) {
     $editor = $isanonymous && $isorigauthor ? lang('forum/misc', 'anonymous') : $_G['username'];
     $edittime = dgmdate(TIMESTAMP);
     $message = lang('forum/misc', $htmlon ? 'post_edithtml' : (!$_G['forum']['allowbbcode'] || $_G['gp_bbcodeoff'] ? 'post_editnobbcode' : 'post_edit'), array('editor' => $editor, 'edittime' => $edittime)) . $message;
 }
 $bbcodeoff = checkbbcodes($message, !empty($_G['gp_bbcodeoff']));
 $smileyoff = checksmilies($message, !empty($_G['gp_smileyoff']));
 $tagoff = $isfirstpost ? !empty($tagoff) : 0;
 ($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) && ($_G['gp_attachnew'] || $_G['gp_attachdel'] || $special == 2 && $_G['gp_tradeaid'] || $special == 4 && $_G['gp_activityaid'] || $isfirstpost && $sortid) && updateattach($postattachcredits, $_G['tid'], $pid, $_G['gp_attachnew'], $_G['gp_attachdel'], $_G['gp_attachupdate'], $orig['authorid']);
 if ($special == 2 && $_G['group']['allowposttrade']) {
     if ($trade = DB::fetch_first("SELECT * FROM " . DB::table('forum_trade') . " WHERE tid='{$_G['tid']}' AND pid='{$pid}'")) {
         $seller = empty($_G['gp_paymethod']) && $_G['gp_seller'] ? censor(dhtmlspecialchars(trim($_G['gp_seller']))) : '';
         $item_name = censor(dhtmlspecialchars(trim($_G['gp_item_name'])));
         $item_price = floatval($_G['gp_item_price']);
         $item_credit = intval($_G['gp_item_credit']);
         $item_locus = censor(dhtmlspecialchars(trim($_G['gp_item_locus'])));
         $item_number = intval($_G['gp_item_number']);
         $item_quality = intval($_G['gp_item_quality']);
         $item_transport = intval($_G['gp_item_transport']);
         $postage_mail = intval($_G['gp_postage_mail']);
         $postage_express = intval(trim($_G['gp_postage_express']));
         $postage_ems = intval($_G['gp_postage_ems']);
         $item_type = intval($_G['gp_item_type']);
         $item_costprice = floatval($_G['gp_item_costprice']);
Ejemplo n.º 4
0
							filename=\'' . $uattachments[$paid]['name'] . '\',
							filetype=\'' . $uattachments[$paid]['type'] . '\',
							filesize=\'' . $uattachments[$paid]['size'] . '\',
							attachment=\'' . $uattachments[$paid]['attachment'] . '\',
							thumb=\'' . $uattachments[$paid]['thumb'] . '\',
							isimage=\'-' . $uattachments[$paid]['isimage'] . '\',
							remote=\'' . $uattachments[$paid]['remote'] . '\',
							width=\'' . $uattachments[$paid]['width'] . '\'';
                    unset($uattachments[$paid]);
                }
                if ($attachfileadd) {
                    $db->query("UPDATE {$tablepre}attachments SET {$attachfileadd} WHERE aid='{$attach['aid']}'");
                }
            }
        }
        $allowpostattach && ($attachnew || $attachdel || $special == 2 && $tradeaid || $isfirstpost && $sortid) && updateattach();
        if ($uattachment || $attachdel) {
            $tattachment = $db->result_first("SELECT count(*) FROM {$tablepre}posts p, {$tablepre}attachments a WHERE a.tid='{$tid}' AND a.isimage IN ('1', '-1') AND a.pid=p.pid AND p.invisible='0' LIMIT 1") ? 2 : ($db->result_first("SELECT count(*) FROM {$tablepre}posts p, {$tablepre}attachments a WHERE a.tid='{$tid}' AND a.pid=p.pid AND p.invisible='0' LIMIT 1") ? 1 : 0);
            $db->query("UPDATE {$tablepre}threads SET attachment='{$tattachment}' WHERE tid='{$tid}'");
        }
        if ($special == 2 && $allowposttrade) {
            $oldtypeid = $db->result_first("SELECT typeid FROM {$tablepre}trades WHERE pid='{$pid}'");
            $oldtypeid = isset($tradetypes[$oldtypeid]) ? $oldtypeid : 0;
            $tradetypeid = !$tradetypeid ? $oldtypeid : $tradetypeid;
            $optiondata = array();
            threadsort_checkoption($oldtypeid, 1);
            $optiondata = array();
            if ($tradetypes && $typeoption && is_array($typeoption) && $checkoption) {
                $optiondata = threadsort_validator($typeoption);
            }
            if ($tradetypes && $optiondata && is_array($optiondata)) {
Ejemplo n.º 5
0
         if ($stand == 1) {
             $db->query("UPDATE {$tablepre}debates SET affirmdebaters=affirmdebaters+1 WHERE tid='{$tid}'");
         } elseif ($stand == 2) {
             $db->query("UPDATE {$tablepre}debates SET negadebaters=negadebaters+1 WHERE tid='{$tid}'");
         }
     } else {
         $stand = $firststand;
     }
     if ($stand == 1) {
         $db->query("UPDATE {$tablepre}debates SET affirmreplies=affirmreplies+1 WHERE tid='{$tid}'");
     } elseif ($stand == 2) {
         $db->query("UPDATE {$tablepre}debates SET negareplies=negareplies+1 WHERE tid='{$tid}'");
     }
     $db->query("INSERT INTO {$tablepre}debateposts (tid, pid, uid, dateline, stand, voters, voterids) VALUES ('{$tid}', '{$pid}', '{$discuz_uid}', '{$timestamp}', '{$stand}', '0', '')");
 }
 $allowpostattach && ($attachnew || $attachdel || $special == 2 && $tradeaid) && updateattach();
 $replymessage = 'post_reply_succeed';
 if ($special == 2 && $allowposttrade && $thread['authorid'] == $discuz_uid && !empty($trade) && !empty($item_name)) {
     if ($tradetypes && $optiondata) {
         foreach ($optiondata as $optionid => $value) {
             $db->query("INSERT INTO {$tablepre}tradeoptionvars (sortid, pid, optionid, value)\r\n\t\t\t\t\tVALUES ('{$tradetypeid}', '{$pid}', '{$optionid}', '{$value}')");
         }
     }
     require_once DISCUZ_ROOT . './include/trade.func.php';
     trade_create(array('tid' => $tid, 'pid' => $pid, 'aid' => $tradeaid, 'typeid' => $tradetypeid, 'item_expiration' => $item_expiration, 'thread' => $thread, 'discuz_uid' => $discuz_uid, 'author' => $author, 'seller' => $seller, 'item_name' => $item_name, 'item_price' => $item_price, 'item_number' => $item_number, 'item_quality' => $item_quality, 'item_locus' => $item_locus, 'transport' => $transport, 'postage_mail' => $postage_mail, 'postage_express' => $postage_express, 'postage_ems' => $postage_ems, 'item_type' => $item_type, 'item_costprice' => $item_costprice, 'item_credit' => $item_credit, 'item_costcredit' => $item_costcredit));
     $replymessage = 'trade_add_succeed';
 }
 if ($specialextra) {
     @(include_once DISCUZ_ROOT . './plugins/' . $threadplugins[$specialextra]['module'] . '.class.php');
     $classname = 'threadplugin_' . $specialextra;
     if (method_exists($classname, 'newreply_submit_end')) {
Ejemplo n.º 6
0
        $tags = str_replace(array(chr(0xa1) . chr(0xa1), chr(0xa1) . chr(0x40), chr(0xe3) . chr(0x80) . chr(0x80)), ' ', $tags);
        $tagarray = array_unique(explode(' ', $tags));
    }
    $tagarraynew = array();
    foreach ($tagarray as $k => $tagname) {
        if (preg_match('/^([\\x7f-\\xff_-]|\\w){3,20}$/', $tagname)) {
            $tagarraynew[$k] = trim($tagname);
        }
    }
    $tagarray = $tagarraynew;
    unset($tagarraynew);
}
$pinvisible = $modnewreplies ? -2 : 0;
$message = preg_replace('/\\[attachimg\\](\\d+)\\[\\/attachimg\\]/is', '[attach]\\1[/attach]', $message);
$pid = insertpost(array('fid' => $_G['fid'], 'tid' => $tid, 'first' => '0', 'author' => $_G['username'], 'authorid' => $_G['uid'], 'subject' => $subject, 'dateline' => $_G['timestamp'], 'message' => $message, 'useip' => $_G['clientip'], 'invisible' => $pinvisible, 'anonymous' => $isanonymous, 'usesig' => $_G['gp_usesig'], 'htmlon' => $htmlon, 'bbcodeoff' => $bbcodeoff, 'smileyoff' => $smileyoff, 'parseurloff' => $parseurloff, 'attachment' => $attachment, 'tags' => implode(',', $tagarray)));
($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) && ($_G['gp_attachnew'] || $_G['gp_attachdel'] || $_G['gp_tradeaid']) && updateattach($postattachcredits, $tid, $pid, $_G['gp_attachnew'], $_G['gp_attachdel']);
require_once libfile('function/trade');
trade_create(array('tid' => $tid, 'pid' => $pid, 'aid' => $_G['gp_tradeaid'], 'item_expiration' => $_G['gp_item_expiration'], 'thread' => $thread, 'discuz_uid' => $_G['uid'], 'author' => $author, 'seller' => empty($_G['gp_paymethod']) && $_G['gp_seller'] ? dhtmlspecialchars(trim($_G['gp_seller'])) : '', 'tenpayaccount' => $_G['gp_tenpay_account'], 'item_name' => $_G['gp_item_name'], 'item_price' => $_G['gp_item_price'], 'item_number' => $_G['gp_item_number'], 'item_quality' => $_G['gp_item_quality'], 'item_locus' => $_G['gp_item_locus'], 'transport' => $_G['gp_transport'], 'postage_mail' => $_G['gp_postage_mail'], 'postage_express' => $_G['gp_postage_express'], 'postage_ems' => $_G['gp_postage_ems'], 'item_type' => $_G['gp_item_type'], 'item_costprice' => $_G['gp_item_costprice'], 'item_credit' => $_G['gp_item_credit'], 'item_costcredit' => $_G['gp_item_costcredit']));
if (!empty($_G['gp_tradeaid'])) {
    DB::query("UPDATE " . DB::table('forum_attachment') . " SET tid='{$tid}', pid='{$pid}' WHERE aid='{$_G['gp_tradeaid']}' AND uid='{$_G['uid']}'");
}
$param = array($_G['fid'], $tid, $pid);
if ($modnewthreads) {
    DB::query("UPDATE " . DB::table('forum_forum') . " SET todayposts=todayposts+1 WHERE fid='{$_G['fid']}'", 'UNBUFFERED');
    showmessage('post_newthread_mod_succeed', "forum.php?mod=forumdisplay&fid={$_G['fid']}", $param);
} else {
    $feed = array();
    if (!empty($_G['gp_addfeed']) && $_G['forum']['allowfeed'] && !$isanonymous) {
        $feed['icon'] = 'goods';
        $feed['title_template'] = 'feed_thread_goods_title';
        if ($_G['gp_item_price'] > 0) {
Ejemplo n.º 7
0
 if ($pid && getstatus($thread['status'], 1)) {
     savepostposition($tid, $pid);
 }
 $threadimageaid = 0;
 $threadimage = array();
 if ($special == 4 && $_G['gp_activityaid']) {
     $threadimageaid = $_G['gp_activityaid'];
     convertunusedattach($_G['gp_activityaid'], $tid, $pid);
 }
 if ($_G['forum']['threadsorts']['types'][$sortid] && !empty($_G['forum_optiondata']) && is_array($_G['forum_optiondata']) && $sortaids) {
     foreach ($sortaids as $sortaid) {
         convertunusedattach($sortaid, $tid, $pid);
     }
 }
 if (($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) && ($_G['gp_attachnew'] || $sortid || !empty($_G['gp_activityaid']))) {
     updateattach($displayorder == -4 || $modnewthreads, $tid, $pid, $_G['gp_attachnew']);
     if (!$threadimageaid) {
         $threadimage = DB::fetch_first("SELECT aid, attachment, remote FROM " . DB::table(getattachtablebytid($tid)) . " WHERE tid='{$tid}' AND isimage IN ('1', '-1') ORDER BY width DESC LIMIT 1");
         $threadimageaid = $threadimage['aid'];
     }
     if ($_G['forum']['picstyle']) {
         setthreadcover($pid, 0, $threadimageaid);
     }
 }
 if ($threadimageaid) {
     if (!$threadimage) {
         $threadimage = DB::fetch_first("SELECT attachment, remote FROM " . DB::table(getattachtablebytid($tid)) . " WHERE aid='{$threadimageaid}'");
     }
     $threadimage = daddslashes($threadimage);
     DB::insert('forum_threadimage', array('tid' => $tid, 'attachment' => $threadimage['attachment'], 'remote' => $threadimage['remote']));
 }
Ejemplo n.º 8
0
 private function sendPost($extract)
 {
     global $_G;
     extract($extract);
     // 获取主题和帖子要插入的状态信息
     $topicStatus = ForumUtils::getPostSendStatus('topic', $_GET['platType']);
     $postStatus = ForumUtils::getPostSendStatus('post', $_GET['platType']);
     //copy from dz source/include/post/post_newthread.php
     if (empty($_G['forum']['fid']) || $_G['forum']['type'] == 'group') {
         return WebUtils::makeErrorInfo_oldVersion($res, 'forum_nonexistence');
     }
     if ($special == 1 && !$_G['group']['allowpostpoll'] || $special == 2 && !$_G['group']['allowposttrade'] || $special == 3 && !$_G['group']['allowpostreward'] || $special == 4 && !$_G['group']['allowpostactivity'] || $special == 5 && !$_G['group']['allowpostdebate']) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'group_nopermission', array('{grouptitle}' => $_G['group']['grouptitle']));
     }
     if (!$_G['uid'] && !(!$_G['forum']['postperm'] && $_G['group']['allowpost'] || $_G['forum']['postperm'] && forumperm($_G['forum']['postperm']))) {
         if (!defined('IN_MOBILE')) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'postperm_login_nopermission', array('{login}' => 1));
         } else {
             return WebUtils::makeErrorInfo_oldVersion($res, 'postperm_login_nopermission_mobile', array('{login}' => 1));
         }
     } elseif (empty($_G['forum']['allowpost'])) {
         if (!$_G['forum']['postperm'] && !$_G['group']['allowpost']) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'postperm_none_nopermission');
         } elseif ($_G['forum']['postperm'] && !forumperm($_G['forum']['postperm'])) {
             $msg = mobcent_showmessagenoperm('postperm', $_G['fid'], $_G['forum']['formulaperm']);
             return WebUtils::makeErrorInfo_oldVersion($res, $msg['message'], $msg['params']);
         }
     } elseif ($_G['forum']['allowpost'] == -1) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_forum_newthread_nopermission');
     }
     if (!$_G['uid'] && ($_G['setting']['need_avatar'] || $_G['setting']['need_email'] || $_G['setting']['need_friendnum'])) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'postperm_login_nopermission');
     }
     if (trim($subject) == '') {
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_sm_isnull');
     }
     if (!$sortid && !$special && trim($message) == '') {
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_sm_isnull');
     }
     if ($post_invalid = checkpost($subject, $message, $special || $sortid)) {
         return WebUtils::makeErrorInfo_oldVersion($res, $post_invalid, array('{minpostsize}' => $_G['setting']['minpostsize'], '{maxpostsize}' => $_G['setting']['maxpostsize']));
         //showmessage($post_invalid, '', array('minpostsize' => $_G['setting']['minpostsize'], 'maxpostsize' => $_G['setting']['maxpostsize']));
     }
     if (checkflood()) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_flood_ctrl', array('{floodctrl}' => $_G['setting']['floodctrl']));
     } elseif (checkmaxperhour('tid')) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'thread_flood_ctrl_threads_per_hour', array('{threads_per_hour}' => $_G['group']['maxthreadsperhour']));
     }
     $_GET['save'] = $_G['uid'] ? $_GET['save'] : 0;
     if ($_G['group']['allowsetpublishdate'] && $_GET['cronpublish'] && $_GET['cronpublishdate']) {
         $publishdate = strtotime($_GET['cronpublishdate']);
         if ($publishdate > $_G['timestamp']) {
             $_GET['save'] = 1;
         } else {
             $publishdate = $_G['timestamp'];
         }
     } else {
         $publishdate = $_G['timestamp'];
     }
     $typeid = isset($typeid) && isset($_G['forum']['threadtypes']['types'][$typeid]) && (empty($_G['forum']['threadtypes']['moderators'][$typeid]) || $_G['forum']['ismoderator']) ? $typeid : 0;
     $displayorder = $modnewthreads ? -2 : ($_G['forum']['ismoderator'] && $_G['group']['allowstickthread'] && !empty($_GET['sticktopic']) ? 1 : (empty($_GET['save']) ? 0 : -4));
     if ($displayorder == -2) {
         C::t('forum_forum')->update($_G['fid'], array('modworks' => '1'));
     } elseif ($displayorder == -4) {
         $_GET['addfeed'] = 0;
     }
     $digest = $_G['forum']['ismoderator'] && $_G['group']['allowdigestthread'] && !empty($_GET['addtodigest']) ? 1 : 0;
     $readperm = $_G['group']['allowsetreadperm'] ? $readperm : 0;
     $isanonymous = $_G['group']['allowanonymous'] && $_GET['isanonymous'] ? 1 : 0;
     $price = intval($price);
     $price = $_G['group']['maxprice'] && !$special ? $price <= $_G['group']['maxprice'] ? $price : $_G['group']['maxprice'] : 0;
     //强制主题类别判断
     if (!$typeid && $_G['forum']['threadtypes']['required'] && !$special) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_type_isnull');
     }
     //强制主题分类判断
     if (!$sortid && $_G['forum']['threadsorts']['required'] && !$special) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_sort_isnull');
     }
     //主题售价 客户端暂不支持
     if ($price > 0 && floor($price * (1 - $_G['setting']['creditstax'])) == 0) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'forum_passwd');
         showmessage('post_net_price_iszero');
     }
     //投票贴相关
     if ($special == 1) {
         $polloption = $_GET['tpolloption'] == 2 ? explode("\n", $_GET['polloptions']) : $_GET['polloption'];
         $pollarray = array();
         foreach ($polloption as $key => $value) {
             $polloption[$key] = censor($polloption[$key]);
             if (trim($value) === '') {
                 unset($polloption[$key]);
             }
         }
         if (count($polloption) > $_G['setting']['maxpolloptions']) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'forum_passwd');
             showmessage('post_poll_option_toomany', '', array('maxpolloptions' => $_G['setting']['maxpolloptions']));
         } elseif (count($polloption) < 2) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'forum_passwd');
             showmessage('post_poll_inputmore');
         }
         $curpolloption = count($polloption);
         $pollarray['maxchoices'] = empty($_GET['maxchoices']) ? 0 : ($_GET['maxchoices'] > $curpolloption ? $curpolloption : $_GET['maxchoices']);
         $pollarray['multiple'] = empty($_GET['maxchoices']) || $_GET['maxchoices'] == 1 ? 0 : 1;
         $pollarray['options'] = $polloption;
         $pollarray['visible'] = empty($_GET['visibilitypoll']);
         $pollarray['overt'] = !empty($_GET['overt']);
         if (preg_match("/^\\d*\$/", trim($_GET['expiration']))) {
             if (empty($_GET['expiration'])) {
                 $pollarray['expiration'] = 0;
             } else {
                 $pollarray['expiration'] = TIMESTAMP + 86400 * $_GET['expiration'];
             }
         } else {
             return WebUtils::makeErrorInfo_oldVersion($res, 'forum_passwd');
             showmessage('poll_maxchoices_expiration_invalid');
         }
     }
     // 分类信息有效期
     $_GET['typeexpiration'] = $_GET['typeoption']['typeexpiration'];
     $sortid = $special && $_G['forum']['threadsorts']['types'][$sortid] ? 0 : $sortid;
     $typeexpiration = intval($_GET['typeexpiration']);
     if ($_G['forum']['threadsorts']['expiration'][$typeid] && !$typeexpiration) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'threadtype_expiration_invalid');
     }
     $_G['forum_optiondata'] = array();
     if ($_G['forum']['threadsorts']['types'][$sortid] && !$_G['forum']['allowspecialonly']) {
         Mobcent::import(MOBCENT_APP_ROOT . '/components/discuz/source/function/function_threadsort.php');
         $_G['forum_optiondata'] = mobcent_threadsort_validator($_GET['typeoption'], $pid);
         if ($_G['forum_optiondata']['message'] != '') {
             return WebUtils::makeErrorInfo_oldVersion($res, $_G['forum_optiondata']['message'], $_G['forum_optiondata']['params']);
         }
     }
     $author = !$isanonymous ? $_G['username'] : '';
     $moderated = $digest || $displayorder > 0 ? 1 : 0;
     $thread['status'] = 0;
     $_GET['ordertype'] && ($thread['status'] = setstatus(4, 1, $thread['status']));
     $_GET['hiddenreplies'] && ($thread['status'] = setstatus(2, 1, $thread['status']));
     /*             if($_G['group']['allowpostrushreply'] && $_GET['rushreply']) {
              $_GET['rushreplyfrom'] = strtotime($_GET['rushreplyfrom']);
             $_GET['rushreplyto'] = strtotime($_GET['rushreplyto']);
             $_GET['rewardfloor'] = trim($_GET['rewardfloor']);
             $_GET['stopfloor'] = intval($_GET['stopfloor']);
             $_GET['creditlimit'] = $_GET['creditlimit'] == '' ? '-996' : intval($_GET['creditlimit']);
             if($_GET['rushreplyfrom'] > $_GET['rushreplyto'] && !empty($_GET['rushreplyto'])) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'forum_passwd');
             showmessage('post_rushreply_timewrong');
             }
             if(($_GET['rushreplyfrom'] > $_G['timestamp']) || (!empty($_GET['rushreplyto']) && $_GET['rushreplyto'] < $_G['timestamp']) || ($_GET['stopfloor'] == 1) ) {
             $closed = true;
             }
             if(!empty($_GET['rewardfloor']) && !empty($_GET['stopfloor'])) {
             $floors = explode(',', $_GET['rewardfloor']);
             if(!empty($floors) && is_array($floors)) {
             foreach($floors AS $key => $floor) {
             if(strpos($floor, '*') === false) {
             if(intval($floor) == 0) {
             unset($floors[$key]);
             } elseif($floor > $_GET['stopfloor']) {
             unset($floors[$key]);
             }
             }
             }
             $_GET['rewardfloor'] = implode(',', $floors);
             }
             }
             $thread['status'] = setstatus(3, 1, $thread['status']);
             $thread['status'] = setstatus(1, 1, $thread['status']);
             } */
     $_GET['allownoticeauthor'] && ($thread['status'] = setstatus(6, 1, $thread['status']));
     $isgroup = $_G['forum']['status'] == 3 ? 1 : 0;
     /*  if($_G['group']['allowreplycredit']) {
              $_GET['replycredit_extcredits'] = intval($_GET['replycredit_extcredits']);
             $_GET['replycredit_times'] = intval($_GET['replycredit_times']);
             $_GET['replycredit_membertimes'] = intval($_GET['replycredit_membertimes']);
             $_GET['replycredit_random'] = intval($_GET['replycredit_random']);
     
             $_GET['replycredit_random'] = $_GET['replycredit_random'] < 0 || $_GET['replycredit_random'] > 99 ? 0 : $_GET['replycredit_random'] ;
             $replycredit = $replycredit_real = 0;
             if($_GET['replycredit_extcredits'] > 0 && $_GET['replycredit_times'] > 0) {
             $replycredit_real = ceil(($_GET['replycredit_extcredits'] * $_GET['replycredit_times']) + ($_GET['replycredit_extcredits'] * $_GET['replycredit_times'] *  $_G['setting']['creditstax']));
             if($replycredit_real > getuserprofile('extcredits'.$_G['setting']['creditstransextra'][10])) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'forum_passwd');
             showmessage('replycredit_morethan_self');
             } else {
             $replycredit = ceil($_GET['replycredit_extcredits'] * $_GET['replycredit_times']);
             }
             }
             } */
     $newthread = array('fid' => $_G['fid'], 'posttableid' => 0, 'readperm' => $readperm, 'price' => $price, 'typeid' => $typeid, 'sortid' => $sortid, 'author' => $author, 'authorid' => $_G['uid'], 'subject' => $subject, 'dateline' => $publishdate, 'lastpost' => $publishdate, 'lastposter' => $author, 'displayorder' => $displayorder, 'digest' => $digest, 'special' => $special, 'attachment' => 0, 'moderated' => $moderated, 'status' => $thread['status'] | $topicStatus, 'isgroup' => $isgroup, 'replycredit' => $replycredit, 'closed' => $closed ? 1 : 0);
     $tid = C::t('forum_thread')->insert($newthread, true);
     useractionlog($_G['uid'], 'tid');
     if (!getuserprofile('threads') && $_G['setting']['newbie']) {
         C::t('forum_thread')->update($tid, array('icon' => $_G['setting']['newbie']));
     }
     if ($publishdate != $_G['timestamp']) {
         loadcache('cronpublish');
         $cron_publish_ids = dunserialize($_G['cache']['cronpublish']);
         $cron_publish_ids[$tid] = $tid;
         $cron_publish_ids = serialize($cron_publish_ids);
         savecache('cronpublish', $cron_publish_ids);
     }
     if (!$isanonymous) {
         C::t('common_member_field_home')->update($_G['uid'], array('recentnote' => $subject));
     }
     if ($special == 3 && $_G['group']['allowpostreward']) {
         updatemembercount($_G['uid'], array($_G['setting']['creditstransextra'][2] => -$realprice), 1, 'RTC', $tid);
     }
     if ($moderated) {
         updatemodlog($tid, $displayorder > 0 ? 'STK' : 'DIG');
         updatemodworks($displayorder > 0 ? 'STK' : 'DIG', 1);
     }
     /* if($special == 1) {
     
             foreach($pollarray['options'] as $polloptvalue) {
             $polloptvalue = dhtmlspecialchars(trim($polloptvalue));
             C::t('forum_polloption')->insert(array('tid' => $tid, 'polloption' => $polloptvalue));
             }
             $polloptionpreview = '';
             $query = C::t('forum_polloption')->fetch_all_by_tid($tid, 1, 2);
             foreach($query as $option) {
             $polloptvalue = preg_replace("/\[url=(https?){1}:\/\/([^\[\"']+?)\](.+?)\[\/url\]/i", "<a href=\"\\1://\\2\" target=\"_blank\">\\3</a>", $option['polloption']);
             $polloptionpreview .= $polloptvalue."\t";
             }
     
             $polloptionpreview = daddslashes($polloptionpreview);
     
             $data = array('tid' => $tid, 'multiple' => $pollarray['multiple'], 'visible' => $pollarray['visible'], 'maxchoices' => $pollarray['maxchoices'], 'expiration' => $pollarray['expiration'], 'overt' => $pollarray['overt'], 'pollpreview' => $polloptionpreview);
             C::t('forum_poll')->insert($data);
             } */
     if ($_G['forum']['threadsorts']['types'][$sortid] && !empty($_G['forum_optiondata']) && is_array($_G['forum_optiondata'])) {
         $filedname = $valuelist = $separator = '';
         foreach ($_G['forum_optiondata'] as $optionid => $value) {
             if ($value) {
                 $filedname .= $separator . $_G['forum_optionlist'][$optionid]['identifier'];
                 $valuelist .= $separator . "'" . daddslashes($value) . "'";
                 $separator = ' ,';
             }
             if ($_G['forum_optionlist'][$optionid]['type'] == 'image') {
                 $identifier = $_G['forum_optionlist'][$optionid]['identifier'];
                 $sortaids[] = intval($_GET['typeoption'][$identifier]['aid']);
             }
             C::t('forum_typeoptionvar')->insert(array('sortid' => $sortid, 'tid' => $tid, 'fid' => $_G['fid'], 'optionid' => $optionid, 'value' => censor($value), 'expiration' => $typeexpiration ? $publishdate + $typeexpiration : 0));
         }
         if ($filedname && $valuelist) {
             C::t('forum_optionvalue')->insert($sortid, "({$filedname}, tid, fid) VALUES ({$valuelist}, '{$tid}', '{$_G['fid']}')");
         }
     }
     if ($_G['group']['allowat']) {
         $atlist = $atlist_tmp = array();
         preg_match_all("/@([^\r\n]*?)\\s/i", $message . ' ', $atlist_tmp);
         $atlist_tmp = array_slice(array_unique($atlist_tmp[1]), 0, $_G['group']['allowat']);
         if (!empty($atlist_tmp)) {
             if (empty($_G['setting']['at_anyone'])) {
                 foreach (C::t('home_follow')->fetch_all_by_uid_fusername($_G['uid'], $atlist_tmp) as $row) {
                     $atlist[$row['followuid']] = $row['fusername'];
                 }
                 if (count($atlist) < $_G['group']['allowat']) {
                     $query = C::t('home_friend')->fetch_all_by_uid_username($_G['uid'], $atlist_tmp);
                     foreach ($query as $row) {
                         $atlist[$row['fuid']] = $row['fusername'];
                     }
                 }
             } else {
                 foreach (C::t('common_member')->fetch_all_by_username($atlist_tmp) as $row) {
                     $atlist[$row['uid']] = $row['username'];
                 }
             }
         }
         if ($atlist) {
             foreach ($atlist as $atuid => $atusername) {
                 $atsearch[] = "/@" . str_replace('/', '\\/', preg_quote($atusername)) . " /i";
                 $atreplace[] = "[url=home.php?mod=space&uid={$atuid}]@{$atusername}[/url] ";
             }
             $message = preg_replace($atsearch, $atreplace, $message . ' ', 1);
         }
     }
     $bbcodeoff = checkbbcodes($message, !empty($_GET['bbcodeoff']));
     $smileyoff = checksmilies($message, !empty($_GET['smileyoff']));
     $parseurloff = !empty($_GET['parseurloff']);
     $htmlon = $_G['group']['allowhtml'] && !empty($_GET['htmlon']) ? 1 : 0;
     $usesig = !empty($_GET['usesig']) && $_G['group']['maxsigsize'] ? 1 : 0;
     $class_tag = new tag();
     $tagstr = $class_tag->add_tag($_GET['tags'], $tid, 'tid');
     /* if($_G['group']['allowreplycredit']) {
         if($replycredit > 0 && $replycredit_real > 0) {
        updatemembercount($_G['uid'], array('extcredits'.$_G['setting']['creditstransextra'][10] => -$replycredit_real), 1, 'RCT', $tid);
        $insertdata = array(
                'tid' => $tid,
                'extcredits' => $_GET['replycredit_extcredits'],
                'extcreditstype' => $_G['setting']['creditstransextra'][10],
                'times' => $_GET['replycredit_times'],
                'membertimes' => $_GET['replycredit_membertimes'],
                'random' => $_GET['replycredit_random']
        );
        C::t('forum_replycredit')->insert($insertdata);
        }
        } */
     if ($_G['group']['allowpostrushreply'] && $_GET['rushreply']) {
         $rushdata = array('tid' => $tid, 'stopfloor' => $_GET['stopfloor'], 'starttimefrom' => $_GET['rushreplyfrom'], 'starttimeto' => $_GET['rushreplyto'], 'rewardfloor' => $_GET['rewardfloor'], 'creditlimit' => $_GET['creditlimit']);
         C::t('forum_threadrush')->insert($rushdata);
     }
     $pinvisible = $modnewthreads ? -2 : (empty($_GET['save']) ? 0 : -3);
     $message = preg_replace('/\\[attachimg\\](\\d+)\\[\\/attachimg\\]/is', '[attach]\\1[/attach]', $message);
     $pid = insertpost(array('fid' => $_G['fid'], 'tid' => $tid, 'first' => '1', 'author' => $_G['username'], 'authorid' => $_G['uid'], 'subject' => $subject, 'dateline' => $publishdate, 'message' => $message, 'useip' => $_G['clientip'], 'invisible' => $pinvisible, 'anonymous' => $isanonymous, 'usesig' => $usesig, 'htmlon' => $htmlon, 'bbcodeoff' => $bbcodeoff, 'smileyoff' => $smileyoff, 'parseurloff' => $parseurloff, 'attachment' => '0', 'tags' => $tagstr, 'replycredit' => 0, 'status' => (defined('IN_MOBILE') ? 8 : 0) | $postStatus));
     if ($_G['group']['allowat'] && $atlist) {
         foreach ($atlist as $atuid => $atusername) {
             notification_add($atuid, 'at', 'at_message', array('from_id' => $tid, 'from_idtype' => 'at', 'buyerid' => $_G['uid'], 'buyer' => $_G['username'], 'tid' => $tid, 'subject' => $subject, 'pid' => $pid, 'message' => messagecutstr($message, 150)));
         }
         set_atlist_cookie(array_keys($atlist));
     }
     $threadimageaid = 0;
     $threadimage = array();
     if ($special == 4 && $_GET['activityaid']) {
         $threadimageaid = $_GET['activityaid'];
         convertunusedattach($_GET['activityaid'], $tid, $pid);
     }
     if ($_G['forum']['threadsorts']['types'][$sortid] && !empty($_G['forum_optiondata']) && is_array($_G['forum_optiondata']) && $sortaids) {
         foreach ($sortaids as $sortaid) {
             convertunusedattach($sortaid, $tid, $pid);
         }
     }
     if (($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) && ($_GET['attachnew'] || $sortid || !empty($_GET['activityaid']))) {
         updateattach($displayorder == -4 || $modnewthreads, $tid, $pid, $_GET['attachnew']);
         if (!$threadimageaid) {
             $threadimage = C::t('forum_attachment_n')->fetch_max_image('tid:' . $tid, 'tid', $tid);
             $threadimageaid = $threadimage['aid'];
         }
     }
     $values = array('fid' => $_G['fid'], 'tid' => $tid, 'pid' => $pid, 'coverimg' => '', 'sechash' => !empty($_GET['sechash']) ? $_GET['sechash'] : '');
     $param = array();
     Mobcent::import(MOBCENT_APP_ROOT . '/components/discuz/source/function/function_post.php');
     if ($_G['forum']['picstyle']) {
         if (!mobcent_setthreadcover($pid, 0, $threadimageaid)) {
             preg_match_all("/(\\[img\\]|\\[img=\\d{1,4}[x|\\,]\\d{1,4}\\])\\s*([^\\[\\<\r\n]+?)\\s*\\[\\/img\\]/is", $message, $imglist, PREG_SET_ORDER);
             $values['coverimg'] = "<p id=\"showsetcover\">" . lang('message', 'post_newthread_set_cover') . "<span id=\"setcoverwait\"></span></p><script>if(\$('forward_a')){\$('forward_a').style.display='none';setTimeout(\"\$('forward_a').style.display=''\", 5000);};ajaxget('forum.php?mod=ajax&action=setthreadcover&tid={$tid}&pid={$pid}&fid={$_G['fid']}&imgurl={$imglist[0][2]}&newthread=1', 'showsetcover', 'setcoverwait')</script>";
             $param['clean_msgforward'] = 1;
             $param['timeout'] = $param['refreshtime'] = 15;
         }
     }
     if ($threadimageaid) {
         if (!$threadimage) {
             $threadimage = C::t('forum_attachment_n')->fetch('tid:' . $tid, $threadimageaid);
         }
         $threadimage = daddslashes($threadimage);
         C::t('forum_threadimage')->insert(array('tid' => $tid, 'attachment' => $threadimage['attachment'], 'remote' => $threadimage['remote']));
     }
     $statarr = array(0 => 'thread', 1 => 'poll', 2 => 'trade', 3 => 'reward', 4 => 'activity', 5 => 'debate', 127 => 'thread');
     include_once libfile('function/stat');
     updatestat($isgroup ? 'groupthread' : $statarr[$special]);
     if ($modnewthreads) {
         updatemoderate('tid', $tid);
         C::t('forum_forum')->update_forum_counter($_G['fid'], 0, 0, 1);
         manage_addnotify('verifythread');
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_newthread_mod_succeed', array('noError' => 1));
         //showmessage('post_newthread_mod_succeed', $returnurl, $values, $param);
     } else {
         if ($displayorder >= 0 && helper_access::check_module('follow') && !empty($_GET['adddynamic']) && !$isanonymous) {
             require_once libfile('function/discuzcode');
             require_once libfile('function/followcode');
             $feedcontent = array('tid' => $tid, 'content' => followcode($message, $tid, $pid, 1000));
             C::t('forum_threadpreview')->insert($feedcontent);
             C::t('forum_thread')->update_status_by_tid($tid, '512');
             $followfeed = array('uid' => $_G['uid'], 'username' => $_G['username'], 'tid' => $tid, 'note' => '', 'dateline' => TIMESTAMP);
             $values['feedid'] = C::t('home_follow_feed')->insert($followfeed, true);
             C::t('common_member_count')->increase($_G['uid'], array('feeds' => 1));
         }
         $feed = array('icon' => '', 'title_template' => '', 'title_data' => array(), 'body_template' => '', 'body_data' => array(), 'title_data' => array(), 'images' => array());
         if ($displayorder != -4) {
             if ($digest) {
                 updatepostcredits('+', $_G['uid'], 'digest', $_G['fid']);
             }
             //updatepostcredits('+',  $_G['uid'], 'post', $_G['fid']);
             Mobcent::import(MOBCENT_APP_ROOT . '/components/discuz/source/function/function_post.php');
             //Yii::import('application.components.discuz.source.function.function_post', true);
             mobcent_updatepostcredits('+', $_G['uid'], 'post', $_G['fid']);
             if ($isgroup) {
                 C::t('forum_groupuser')->update_counter_for_user($_G['uid'], $_G['fid'], 1);
             }
             $subject = str_replace("\t", ' ', $subject);
             $lastpost = "{$tid}\t" . $subject . "\t{$_G['timestamp']}\t{$author}";
             C::t('forum_forum')->update($_G['fid'], array('lastpost' => $lastpost));
             C::t('forum_forum')->update_forum_counter($_G['fid'], 1, 1, 1);
             if ($_G['forum']['type'] == 'sub') {
                 C::t('forum_forum')->update($_G['forum']['fup'], array('lastpost' => $lastpost));
             }
         }
         if ($_G['forum']['status'] == 3) {
             C::t('forum_forumfield')->update($_G['fid'], array('lastupdate' => TIMESTAMP));
             require_once libfile('function/grouplog');
             updategroupcreditlog($_G['fid'], $_G['uid']);
         }
         /*如果显示地理位置,入库到表里*/
         if ($jsonInfo['isShowPostion']) {
             $data = DB::query('INSERT INTO  %t VALUES(null,%f,%f,%d,%d,%s)', array('home_surrounding_user', $jsonInfo['longitude'], $jsonInfo['latitude'], $tid, 3, (string) $jsonInfo['location']));
         }
         /*  //客户端发表主题积分入库
                $temp = DB::fetch_first('SELECT extcredits3  FROM '.DB::table('common_credit_rule').' WHERE rid =%d ',array(1));
                $extcredits3 = DB::fetch_first('SELECT extcredits3 FROM '.DB::table('common_member_count').' WHERE uid = %d',array($_G['uid']));
                $temp = $extcredits3['extcredits3'] + $temp['extcredits3'];
                DB::query('UPDATE '.DB::table('common_member_count').' set extcredits3 = %d WHERE uid = %d',array($temp,$_G['uid']));
             */
         //showmessage('post_newthread_succeed', $returnurl, $values, $param);
         // return array('rs'=>1,'errcode'=>WebUtils::t('发贴成功'));
         return $this->makeErrorInfo($res, 'mobcent_post_newthread_success', array('noError' => 1));
     }
 }
Ejemplo n.º 9
0
if ($moderated) {
    updatemodlog($tid, $displayorder > 0 ? 'STK' : 'DIG');
    updatemodworks($displayorder > 0 ? 'STK' : 'DIG', 1);
}
$bbcodeoff = checkbbcodes($message, !empty($_GET['bbcodeoff']));
$smileyoff = checksmilies($message, !empty($_GET['smileyoff']));
$parseurloff = !empty($_GET['parseurloff']);
$htmlon = $_G['group']['allowhtml'] && !empty($_GET['htmlon']) ? 1 : 0;
$attentionon = empty($_GET['attention_add']) ? 0 : 1;
$pinvisible = $modnewthreads ? -2 : (empty($_GET['save']) ? 0 : -3);
$class_tag = new tag();
$tagstr = $class_tag->add_tag($_GET['tags'], $tid, 'tid');
insertpost(array('fid' => $_G['fid'], 'tid' => $tid, 'first' => '1', 'author' => $_G['username'], 'authorid' => $_G['uid'], 'subject' => $subject, 'dateline' => $_G['timestamp'], 'message' => '', 'useip' => $_G['clientip'], 'invisible' => $pinvisible, 'anonymous' => $isanonymous, 'usesig' => $_GET['usesig'], 'htmlon' => $htmlon, 'bbcodeoff' => $bbcodeoff, 'smileyoff' => $smileyoff, 'parseurloff' => $parseurloff, 'attachment' => '0', 'tags' => $tagstr));
$message = preg_replace('/\\[attachimg\\](\\d+)\\[\\/attachimg\\]/is', '[attach]\\1[/attach]', $message);
$pid = insertpost(array('fid' => $_G['fid'], 'tid' => $tid, 'first' => '0', 'author' => $_G['username'], 'authorid' => $_G['uid'], 'subject' => $subject, 'dateline' => $_G['timestamp'], 'message' => $message, 'useip' => $_G['clientip'], 'invisible' => 0, 'anonymous' => $isanonymous, 'usesig' => $_GET['usesig'], 'htmlon' => $htmlon, 'bbcodeoff' => $bbcodeoff, 'smileyoff' => $smileyoff, 'parseurloff' => $parseurloff, 'attachment' => $attachment, 'tags' => $tagstr, 'status' => defined('IN_MOBILE') ? 8 : 0));
($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) && ($_GET['attachnew'] || $_GET['tradeaid']) && updateattach($displayorder == -4 || $modnewthreads, $tid, $pid, $_GET['attachnew']);
require_once libfile('function/trade');
trade_create(array('tid' => $tid, 'pid' => $pid, 'aid' => $_GET['tradeaid'], 'item_expiration' => $_GET['item_expiration'], 'thread' => $thread, 'discuz_uid' => $_G['uid'], 'author' => $author, 'seller' => empty($_GET['paymethod']) && $_GET['seller'] ? dhtmlspecialchars(trim($_GET['seller'])) : '', 'tenpayaccount' => $_GET['tenpay_account'], 'item_name' => $_GET['item_name'], 'item_price' => $_GET['item_price'], 'item_number' => $_GET['item_number'], 'item_quality' => $_GET['item_quality'], 'item_locus' => $_GET['item_locus'], 'transport' => $_GET['transport'], 'postage_mail' => $_GET['postage_mail'], 'postage_express' => $_GET['postage_express'], 'postage_ems' => $_GET['postage_ems'], 'item_type' => $_GET['item_type'], 'item_costprice' => $_GET['item_costprice'], 'item_credit' => $_GET['item_credit'], 'item_costcredit' => $_GET['item_costcredit']));
if (!empty($_GET['tradeaid'])) {
    convertunusedattach($_GET['tradeaid'], $tid, $pid);
}
if ($_G['forum']['picstyle']) {
    setthreadcover($pid);
}
$param = array('fid' => $_G['fid'], 'tid' => $tid, 'pid' => $pid, 'coverimg' => '');
include_once libfile('function/stat');
updatestat($isgroup ? 'groupthread' : 'trade');
dsetcookie('clearUserdata', 'forum');
if ($modnewthreads) {
    updatemoderate('tid', $tid);
    C::t('forum_forum')->update_forum_counter($_G['fid'], 0, 0, 1);
Ejemplo n.º 10
0
             } else {
                 $db->query("INSERT INTO {$tablepre}tags (tagname, closed, total)\r\n\t\t\t\t\t\tVALUES ('{$tagname}', 0, 1)", 'UNBUFFERED');
                 $tagstatus = 0;
             }
             if (!$tagstatus) {
                 $db->query("INSERT {$tablepre}threadtags (tagname, tid) VALUES ('{$tagname}', {$tid})", 'UNBUFFERED');
             }
             $tagcount++;
             if ($tagcount > 4) {
                 unset($tagarray);
                 break;
             }
         }
     }
 }
 $allowpostattach && ($attachnew || $attachdel || $sortid) && updateattach();
 if ($modnewthreads) {
     $db->query("UPDATE {$tablepre}forums SET todayposts=todayposts+1 WHERE fid='{$fid}'", 'UNBUFFERED');
     showmessage('post_newthread_mod_succeed', "forumdisplay.php?fid={$fid}");
 } else {
     $feed = array('icon' => '', 'title_template' => '', 'title_data' => array(), 'body_template' => '', 'body_data' => array(), 'title_data' => array(), 'images' => array());
     if ($addfeed && $forum['allowfeed'] && !$isanonymous) {
         if ($special == 0) {
             $feed['icon'] = 'thread';
             $feed['title_template'] = 'feed_thread_title';
             $feed['body_template'] = 'feed_thread_message';
             $feed['body_data'] = array('subject' => "<a href=\"{$boardurl}viewthread.php?tid={$tid}\">{$subject}</a>", 'message' => cutstr(strip_tags(preg_replace(array("/\\[hide=?\\d*\\].+?\\[\\/hide\\]/is", "/\\[.+?\\]/is"), array('', ''), $message)), 150));
         } elseif ($special > 0) {
             if ($special == 1) {
                 $feed['icon'] = 'poll';
                 $feed['title_template'] = 'feed_thread_poll_title';
Ejemplo n.º 11
0
         if ($stand == 1) {
             DB::query("UPDATE " . DB::table('forum_debate') . " SET affirmdebaters=affirmdebaters+1 WHERE tid='{$_G['tid']}'");
         } elseif ($stand == 2) {
             DB::query("UPDATE " . DB::table('forum_debate') . " SET negadebaters=negadebaters+1 WHERE tid='{$_G['tid']}'");
         }
     } else {
         $stand = $firststand;
     }
     if ($stand == 1) {
         DB::query("UPDATE " . DB::table('forum_debate') . " SET affirmreplies=affirmreplies+1 WHERE tid='{$_G['tid']}'");
     } elseif ($stand == 2) {
         DB::query("UPDATE " . DB::table('forum_debate') . " SET negareplies=negareplies+1 WHERE tid='{$_G['tid']}'");
     }
     DB::query("INSERT INTO " . DB::table('forum_debatepost') . " (tid, pid, uid, dateline, stand, voters, voterids) VALUES ('{$_G['tid']}', '{$pid}', '{$_G['uid']}', '{$_G['timestamp']}', '{$stand}', '0', '')");
 }
 ($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) && ($_G['gp_attachnew'] || $special == 2 && $_G['gp_tradeaid']) && updateattach($thread['displayorder'] == -4 || $modnewreplies, $_G['tid'], $pid, $_G['gp_attachnew']);
 $replymessage = 'post_reply_succeed';
 if ($special == 2 && $_G['group']['allowposttrade'] && $thread['authorid'] == $_G['uid'] && !empty($_G['gp_trade']) && !empty($_G['gp_item_name'])) {
     require_once libfile('function/trade');
     trade_create(array('tid' => $_G['tid'], 'pid' => $pid, 'aid' => $_G['gp_tradeaid'], 'item_expiration' => $_G['gp_item_expiration'], 'thread' => $thread, 'discuz_uid' => $_G['uid'], 'author' => $author, 'seller' => empty($_G['gp_paymethod']) && $_G['gp_seller'] ? dhtmlspecialchars(trim($_G['gp_seller'])) : '', 'item_name' => $_G['gp_item_name'], 'item_price' => $_G['gp_item_price'], 'item_number' => $_G['gp_item_number'], 'item_quality' => $_G['gp_item_quality'], 'item_locus' => $_G['gp_item_locus'], 'transport' => $_G['gp_transport'], 'postage_mail' => $_G['gp_postage_mail'], 'postage_express' => $_G['gp_postage_express'], 'postage_ems' => $_G['gp_postage_ems'], 'item_type' => $_G['gp_item_type'], 'item_costprice' => $_G['gp_item_costprice'], 'item_credit' => $_G['gp_item_credit'], 'item_costcredit' => $_G['gp_item_costcredit']));
     $replymessage = 'trade_add_succeed';
     if (!empty($_G['gp_tradeaid'])) {
         convertunusedattach($_G['gp_tradeaid'], $_G['tid'], $pid);
     }
 }
 if ($specialextra) {
     @(include_once DISCUZ_ROOT . './source/plugin/' . $_G['setting']['threadplugins'][$specialextra]['module'] . '.class.php');
     $classname = 'threadplugin_' . $specialextra;
     if (class_exists($classname) && method_exists($threadpluginclass = new $classname(), 'newreply_submit_end')) {
         $threadpluginclass->newreply_submit_end($_G['fid'], $_G['tid']);
     }
Ejemplo n.º 12
0
    foreach ($optiondata as $optionid => $value) {
        $db->query("INSERT INTO {$tablepre}tradeoptionvars (sortid, pid, optionid, value)\r\n\t\t\tVALUES ('{$tradetypeid}', '{$pid}', '{$optionid}', '{$value}')");
    }
}
if ($discuz_uid) {
    $stataction = '';
    if ($attentionon) {
        $stataction = 'attentionon';
        $db->query("REPLACE INTO {$tablepre}favoritethreads (tid, uid, dateline) VALUES ('{$tid}', '{$discuz_uid}', '{$timestamp}')", 'UNBUFFERED');
    }
    if ($stataction) {
        write_statlog('', 'item=attention&action=newtrade_' . $stataction, '', '', 'my.php');
    }
    $db->query("UPDATE {$tablepre}favoriteforums SET newthreads=newthreads+1 WHERE fid='{$fid}' AND uid<>'{$discuz_uid}'", 'UNBUFFERED');
}
$allowpostattach && ($attachnew || $attachdel || $tradeaid) && updateattach();
require_once DISCUZ_ROOT . './include/trade.func.php';
trade_create(array('tid' => $tid, 'pid' => $pid, 'aid' => $tradeaid, 'typeid' => $tradetypeid, 'item_expiration' => $item_expiration, 'thread' => $thread, 'discuz_uid' => $discuz_uid, 'author' => $author, 'seller' => $seller, 'item_name' => $item_name, 'item_price' => $item_price, 'item_number' => $item_number, 'item_quality' => $item_quality, 'item_locus' => $item_locus, 'transport' => $transport, 'postage_mail' => $postage_mail, 'postage_express' => $postage_express, 'postage_ems' => $postage_ems, 'item_type' => $item_type, 'item_costprice' => $item_costprice, 'item_credit' => $item_credit, 'item_costcredit' => $item_costcredit));
if ($modnewthreads) {
    $db->query("UPDATE {$tablepre}forums SET todayposts=todayposts+1 WHERE fid='{$fid}'", 'UNBUFFERED');
    showmessage('post_newthread_mod_succeed', "forumdisplay.php?fid={$fid}");
} else {
    $feed = array();
    if ($addfeed && $forum['allowfeed']) {
        $feed['icon'] = 'goods';
        $feed['title_template'] = 'feed_thread_goods_title';
        $feed['body_template'] = 'feed_thread_goods_message';
        $feed['body_data'] = array('itemname' => "<a href=\"{$boardurl}viewthread.php?do=tradeinfo&tid={$tid}&pid={$pid}\">{$item_name}</a>", 'itemprice' => $item_price);
        if (in_array($attachments[1]['type'], array('image/gif', 'image/jpeg', 'image/png'))) {
            $attachurl = preg_match("/^((https?|ftps?):\\/\\/|www\\.)/i", $attachurl) ? $attachurl : $boardurl . $attachurl;
            $imgurl = $attachurl . '/' . $attachments[1]['attachment'] . ($attachments[1]['thumb'] && $attachments[1]['type'] != 'image/gif' ? '.thumb.jpg' : '');
Ejemplo n.º 13
0
 $parseurloff = !empty($_G['gp_parseurloff']);
 $htmlon = bindec(($_G['setting']['tagstatus'] && !empty($tagoff) ? 1 : 0) . ($_G['group']['allowhtml'] && !empty($_G['gp_htmlon']) ? 1 : 0));
 $usesig = !empty($_G['gp_usesig']) && $_G['group']['maxsigsize'] ? 1 : 0;
 $pinvisible = $modnewthreads ? -2 : (empty($_G['gp_save']) ? 0 : -3);
 $message = preg_replace('/\\[attachimg\\](\\d+)\\[\\/attachimg\\]/is', '[attach]\\1[/attach]', $message);
 $pid = insertpost(array('fid' => $_G['fid'], 'tid' => $tid, 'first' => '1', 'author' => $_G['username'], 'authorid' => $_G['uid'], 'subject' => $subject, 'dateline' => $_G['timestamp'], 'message' => $message, 'useip' => $_G['clientip'], 'invisible' => $pinvisible, 'anonymous' => $isanonymous, 'usesig' => $usesig, 'htmlon' => $htmlon, 'bbcodeoff' => $bbcodeoff, 'smileyoff' => $smileyoff, 'parseurloff' => $parseurloff, 'attachment' => '0', 'tags' => implode(',', $tagarray)));
 if ($pid && getstatus($thread['status'], 1)) {
     savepostposition($tid, $pid);
 }
 if ($special == 4 && $_G['gp_activityaid']) {
     DB::query("UPDATE " . DB::table('forum_attachment') . " SET tid='{$tid}', pid='{$pid}' WHERE aid='{$_G['gp_activityaid']}' AND uid='{$_G['uid']}'");
 }
 if ($_G['forum']['threadsorts']['types'][$sortid] && !empty($_G['forum_optiondata']) && is_array($_G['forum_optiondata']) && $sortaid) {
     DB::query("UPDATE " . DB::table('forum_attachment') . " SET tid='{$tid}', pid='{$pid}' WHERE aid='{$sortaid}'");
 }
 ($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) && ($_G['gp_attachnew'] || $_G['gp_attachdel'] || $sortid || !empty($_G['gp_activityaid'])) && updateattach($postattachcredits, $tid, $pid, $_G['gp_attachnew'], $_G['gp_attachdel']);
 $param = array('fid' => $_G['fid'], 'tid' => $tid, 'pid' => $pid);
 $statarr = array(0 => 'thread', 1 => 'poll', 2 => 'trade', 3 => 'reward', 4 => 'activity', 5 => 'debate', 127 => 'thread');
 include_once libfile('function/stat');
 updatestat($isgroup ? 'groupthread' : $statarr[$special]);
 if ($modnewthreads) {
     DB::query("UPDATE " . DB::table('forum_forum') . " SET todayposts=todayposts+1 WHERE fid='{$_G['fid']}'", 'UNBUFFERED');
     showmessage('post_newthread_mod_succeed', "forum.php?mod=viewthread&tid={$tid}&extra={$extra}", $param);
 } else {
     $feed = array('icon' => '', 'title_template' => '', 'title_data' => array(), 'body_template' => '', 'body_data' => array(), 'title_data' => array(), 'images' => array());
     if (!empty($_G['gp_addfeed']) && $_G['forum']['allowfeed'] && !$isanonymous) {
         $message = !$price ? $message : '';
         if ($special == 0) {
             $feed['icon'] = 'thread';
             $feed['title_template'] = 'feed_thread_title';
             $feed['body_template'] = 'feed_thread_message';
Ejemplo n.º 14
0
 public function before_editpost($parameters)
 {
     global $_G;
     $isfirstpost = $this->post['first'] ? 1 : 0;
     $attachupdate = !empty($_GET['delattachop']) || ($this->group['allowpostattach'] || $this->group['allowpostimage']) && ($_GET['attachnew'] || $parameters['special'] == 2 && $_GET['tradeaid'] || $parameters['special'] == 4 && $_GET['activityaid'] || $isfirstpost && $parameters['sortid']);
     if ($attachupdate) {
         updateattach($this->thread['displayorder'] == -4 || $_G['forum_auditstatuson'], $this->thread['tid'], $this->post['pid'], $_GET['attachnew'], $_GET['attachupdate'], $this->post['authorid']);
     }
     if ($isfirstpost && $attachupdate) {
         if (!$this->param['threadimageaid']) {
             $this->param['threadimage'] = C::t('forum_attachment_n')->fetch_max_image('tid:' . $this->thread['tid'], 'pid', $this->post['pid']);
             $this->param['threadimageaid'] = $this->param['threadimage']['aid'];
         }
         if ($this->forum['picstyle']) {
             if (empty($this->thread['cover'])) {
                 setthreadcover($this->post['pid'], 0, $this->param['threadimageaid']);
             } else {
                 setthreadcover($this->post['pid'], $this->thread['tid'], 0, 1);
             }
         }
         if ($this->param['threadimageaid']) {
             if (!$this->param['threadimage']) {
                 $this->param['threadimage'] = C::t('forum_attachment_n')->fetch_max_image('tid:' . $this->thread['tid'], 'tid', $this->thread['tid']);
             }
             C::t('forum_threadimage')->delete_by_tid($this->thread['tid']);
             C::t('forum_threadimage')->insert(array('tid' => $this->thread['tid'], 'attachment' => $this->param['threadimage']['attachment'], 'remote' => $this->param['threadimage']['remote']));
         }
     }
 }
Ejemplo n.º 15
0
function article_move_forums($arr, $old_arr)
{
    global $_G;
    $arr['content'] = preg_replace(array('/<center>([\\s\\S]*?)<\\/center>/', '/\\s(?=\\s)/'), array("[align=center]\\1[/align]", ''), $arr['content']);
    $subject = addslashes(trim($arr['title']));
    if ($arr['check']) {
        if (!strlen($subject)) {
            return FALSE;
        }
        $num = DB::result_first('SELECT COUNT(*) FROM ' . DB::table('forum_thread') . " WHERE subject='{$subject}' AND displayorder > '-1'");
        if ($num) {
            return FALSE;
        }
    }
    if ($arr['contents'] > 1 && $arr['is_content_reply'] != 1) {
        $arr['reply'] = array();
    }
    $time_arr = create_public_time($arr, count($arr['reply']) + 1, 1);
    if ($arr['contents'] == 1) {
        $uid_arr = get_rand_uid($arr, 'reply');
    } else {
        if ($arr['is_content_reply'] != 1) {
            if ($arr['content_arr']) {
                $arr['content'] = content_merge($arr['content_arr']);
            }
            $uid_arr = get_rand_uid($arr);
        }
    }
    $arr['public_time'] = $arr['public_time'] ? $arr['public_time'] : array_shift($time_arr);
    require_once libfile('function/editor');
    require_once libfile('function/forum');
    $subject = htmlspecialchars_decode(format_html($subject));
    $subject = htmlspecialchars_decode(format_html($subject));
    $arr['content'] = dstripslashes($arr['content']);
    $arr['content'] = img_htmlbbcode($arr['content'], $arr['page_url']);
    $arr['content'] = media_htmlbbcode($arr['content'], $arr['page_url']);
    $arr['content'] = audio_htmlbbcode($arr['content'], $arr['page_url']);
    $message = htmlspecialchars_decode(html2bbcode($arr['content']));
    $message = dstripslashes(format_html($message));
    $arr['fid'] = $_G['fid'] = $_GET['forums'] ? $_GET['forums'] : $arr['forum_fid'];
    $_G['uid'] = $arr['uid'] ? $arr['uid'] : $_G['uid'];
    $view_num = $arr['view_num'];
    require_once libfile('function/post');
    $special = 0;
    if (trim($subject) == '' || trim($message) == '') {
        return -1;
    }
    if (!$sortid && !$special && trim($message) == '') {
        return -1;
    }
    $_GET['save'] = $arr['uid'] ? $arr['uid'] : $_G['uid'];
    $uid = $_GET['save'];
    $typeid = intval($_GET['threadtypeid']) ? intval($_GET['threadtypeid']) : $arr['forum_typeid'];
    $displayorder = 0;
    $digest = $_G['forum']['ismoderator'] && $_G['group']['allowdigestthread'] && !empty($_GET['addtodigest']) ? 1 : 0;
    $readperm = $_G['group']['allowsetreadperm'] ? $readperm : 0;
    $isanonymous = $_G['group']['allowanonymous'] && $_GET['isanonymous'] ? 1 : 0;
    $price = intval($price);
    $price = $_G['group']['maxprice'] && !$special ? $price <= $_G['group']['maxprice'] ? $price : $_G['group']['maxprice'] : 0;
    if (!$typeid && $_G['forum']['threadtypes']['required'] && !$special) {
        return -2;
    }
    if (!$sortid && $_G['forum']['threadsorts']['required'] && !$special) {
        return -3;
    }
    if ($price > 0 && floor($price * (1 - $_G['setting']['creditstax'])) == 0) {
        return -4;
    }
    $_G['forum'] = DB::fetch_first("SELECT * FROM " . DB::table('forum_forum') . " WHERE fid = '{$arr['fid']}'");
    //查询版块信息
    if (!$_G['forum']) {
        return -5;
    }
    $sortid = $special && $_G['forum']['threadsorts']['types'][$sortid] ? 0 : $sortid;
    $typeexpiration = intval($_GET['typeexpiration']);
    if ($_G['forum']['threadsorts']['expiration'][$typeid] && !$typeexpiration) {
        return -5;
    }
    $_G['forum_optiondata'] = array();
    if ($_G['forum']['threadsorts']['types'][$sortid] && !$_G['forum']['allowspecialonly']) {
        $_G['forum_optiondata'] = threadsort_validator($_GET['typeoption'], $pid);
    }
    $author = !$arr['username'] ? $_G['username'] : $arr['username'];
    $moderated = $digest || $displayorder > 0 ? 1 : 0;
    $thread['status'] = 0;
    $_GET['ordertype'] && ($thread['status'] = setstatus(4, 1, $thread['status']));
    $_GET['hiddenreplies'] && ($thread['status'] = setstatus(2, 1, $thread['status']));
    $_GET['allownoticeauthor'] && ($thread['status'] = setstatus(6, 1, $thread['status']));
    $isgroup = $_G['forum']['status'] == 3 ? 1 : 0;
    //检查各项设置
    $bbcodeoff = checkbbcodes($message, FALSE);
    $smileyoff = checksmilies($message, FALSE);
    $parseurloff = FALSE;
    $htmlon = $_G['group']['allowhtml'] && !empty($_GET['htmlon']) ? 1 : 0;
    if ($_G['group']['allowreplycredit']) {
        $_GET['replycredit_extcredits'] = intval($_GET['replycredit_extcredits']);
        $_GET['replycredit_times'] = intval($_GET['replycredit_times']);
        $_GET['replycredit_membertimes'] = intval($_GET['replycredit_membertimes']);
        $_GET['replycredit_random'] = intval($_GET['replycredit_random']);
        $_GET['replycredit_random'] = $_GET['replycredit_random'] < 0 || $_GET['replycredit_random'] > 99 ? 0 : $_GET['replycredit_random'];
        $replycredit = $replycredit_real = 0;
    }
    if ($old_arr['forum_id']) {
        $info = DB::fetch_first("SELECT p.pid,p.tid,t.tid,p.first FROM " . DB::table('forum_post') . " p Inner Join " . DB::table('forum_thread') . " t  ON p.tid = t.tid WHERE p.first = '1' AND t.tid='" . $old_arr['forum_id'] . "' AND t.displayorder > '-1'");
    }
    $reply_count = count($arr['reply']);
    $view_num = $view_num < $reply_count - 1 ? rand($reply_count * 2, $reply_count * 10) : $view_num;
    if ($info['tid']) {
        //更新
        DB::query("UPDATE " . DB::table('forum_thread') . " SET typeid='{$typeid}', author='{$author}', authorid='{$uid}', subject='{$subject}', dateline='{$arr['public_time']}', lastpost='{$arr['public_time']}', fid='{$arr['fid']}', lastposter='{$author}', views='{$view_num}', attachment='0' WHERE tid='{$info['tid']}'", 'UNBUFFERED');
        $tid = $info['tid'];
    } else {
        //添加
        DB::query("INSERT INTO " . DB::table('forum_thread') . " (fid, posttableid, readperm, price, typeid, sortid, author, authorid, subject, dateline, lastpost, lastposter, views, displayorder, digest, special, attachment, moderated, status, isgroup, replycredit, closed)\r\n\t\t\tVALUES ('{$_G['fid']}', '0', '{$readperm}', '{$price}', '{$typeid}', '{$sortid}', '{$author}', '{$_G['uid']}', '{$subject}', '{$arr['public_time']}', '{$arr['public_time']}', '{$author}', '{$view_num}', '{$displayorder}', '{$digest}', '{$special}', '0', '{$moderated}', '32', '{$isgroup}', '{$replycredit}', '" . ($closed ? "1" : '0') . "')");
        $tid = DB::insert_id();
        useractionlog($uid, 'tid');
    }
    DB::update('common_member_field_home', array('recentnote' => $subject), array('uid' => $uid));
    if ($moderated) {
        updatemodlog($tid, $displayorder > 0 ? 'STK' : 'DIG');
        updatemodworks($displayorder > 0 ? 'STK' : 'DIG', 1);
    }
    if (DISCUZ_VERSION == 'X2') {
        //2.0版本
        $tagstr = addthreadtag($arr['article_tag'], $tid);
    } else {
        $class_tag = new tag();
        $tagstr = $class_tag->add_tag($arr['article_tag'], $tid, 'tid');
    }
    if ($_G['group']['allowreplycredit']) {
        if ($replycredit > 0 && $replycredit_real > 0) {
            updatemembercount($_G['uid'], array('extcredits' . $_G['setting']['creditstransextra'][10] => -$replycredit_real), 1, 'RCT', $tid);
            DB::query("INSERT INTO " . DB::table('forum_replycredit') . " (tid, extcredits, extcreditstype, times, membertimes, random)VALUES('{$tid}', '{$_G['gp_replycredit_extcredits']}', '{$_G[setting][creditstransextra][10]}', '{$_G['gp_replycredit_times']}', '{$_G['gp_replycredit_membertimes']}', '{$_G['gp_replycredit_random']}')");
        }
    }
    if ($_G['group']['allowpostrushreply'] && $_GET['rushreply']) {
        DB::query("INSERT INTO " . DB::table('forum_threadrush') . " (tid, stopfloor, starttimefrom, starttimeto, rewardfloor) VALUES ('{$tid}', '{$_G['gp_stopfloor']}', '{$_G['gp_rushreplyfrom']}', '{$_G['gp_rushreplyto']}', '{$_G['gp_rewardfloor']}')");
    }
    $message = preg_replace('/\\[attachimg\\](\\d+)\\[\\/attachimg\\]/is', '[attach]\\1[/attach]', $message);
    $post_setarr = array('fid' => $arr['fid'], 'tid' => $tid, 'first' => '1', 'author' => $author, 'authorid' => $_G['uid'], 'subject' => $subject, 'dateline' => $arr['public_time'], 'message' => $message, 'useip' => $_G['clientip'], 'invisible' => 0, 'anonymous' => $isanonymous, 'usesig' => 1, 'htmlon' => $htmlon, 'bbcodeoff' => $bbcodeoff, 'smileyoff' => $smileyoff, 'parseurloff' => $parseurloff, 'attachment' => '0', 'replycredit' => 0, 'status' => defined('IN_MOBILE') ? 8 : 0);
    if (DISCUZ_VERSION != 'X2') {
        //2.5版本 2.5版本多了一个position字段
        $post_setarr['position'] = 1;
        $post_setarr = dstripslashes($post_setarr);
    } else {
        $post_setarr = daddslashes($post_setarr);
    }
    $post_setarr['tags'] = $tagstr;
    $replys = 0;
    if ($info['tid']) {
        //更新
        //发布时间要做更改
        $new_post_arr = DB::fetch_first("SELECT dateline FROM " . DB::table('forum_post') . " WHERE tid='{$tid}' ORDER BY dateline ASC limit 1");
        $post_setarr['dateline'] = $new_post_arr['dateline'] - 3600;
        DB::update('forum_post', $post_setarr, array('pid' => $info['pid']));
        $pid = $info['pid'];
    } else {
        $pid = insertpost($post_setarr);
        $post_setarr = array();
        //发布回复
        if ($arr['is_public_reply'] == 1 && $arr['reply'] || $arr['is_content_reply'] == 1) {
            //是否开启发布回复
            if ($arr['is_content_reply'] == 1) {
                $uid_arr = $time_arr = array();
            }
            $reply_arr = $arr['reply'];
            $replys = count($reply_arr);
            if ($arr['public_reply_seq'] == 1) {
                shuffle($reply_arr);
            }
            foreach ((array) $reply_arr as $k => $v) {
                $message = dstripslashes($v['content']);
                $message = media_htmlbbcode($message, $arr['page_url']);
                $message = img_htmlbbcode($message, $arr['page_url']);
                $message = htmlspecialchars_decode(html2bbcode($message));
                //print_r($v['content']);exit();
                if (!$message || strlen($message) < 2) {
                    continue;
                }
                $post_setarr = array('fid' => $arr['fid'], 'tid' => $tid, 'first' => '0', 'author' => $uid_arr[$k]['username'] ? $uid_arr[$k]['username'] : $arr['username'], 'authorid' => $uid_arr[$k]['uid'] ? $uid_arr[$k]['uid'] : $arr['uid'], 'subject' => '', 'dateline' => $time_arr[$k] ? $time_arr[$k] : $arr['public_time'], 'message' => $message, 'useip' => $_G['clientip'], 'invisible' => 0, 'anonymous' => $_G['group']['allowanonymous'] && !empty($_GET['isanonymous']) ? 1 : 0, 'usesig' => 1, 'htmlon' => $_G['group']['allowhtml'] && !empty($_GET['htmlon']) ? 1 : 0, 'bbcodeoff' => checkbbcodes($message, !empty($_GET['bbcodeoff'])), 'smileyoff' => checksmilies($message, !empty($_GET['smileyoff'])), 'parseurloff' => !empty($_GET['parseurloff']), 'attachment' => '0', 'tags' => 0, 'replycredit' => 0, 'status' => defined('IN_MOBILE') ? 8 : 0);
                $lastpost = $post_setarr['dateline'];
                $lastposter = $post_setarr['author'];
                if (DISCUZ_VERSION != 'X2') {
                    //2.5版本 2.5版本多了一个position字段
                    $post_setarr['position'] = $k + 2;
                    $post_setarr = dstripslashes($post_setarr);
                } else {
                    $post_setarr = daddslashes($post_setarr);
                }
                $reply_pid = insertpost($post_setarr);
                $v['tid'] = $tid;
                $v['pid'] = $reply_pid;
                $v['is_post'] = 1;
                //标识是回复
                $v['cookie'] = $arr['cookie'];
                $v['is_water_img'] = $arr['is_water_img'];
                $v['is_download_img'] = $arr['is_download_img'];
                $v['is_download_file'] = $arr['is_download_file'];
                $forum_arr['tid'] = $tid;
                $forum_arr['pid'] = $reply_pid;
                $forum_arr['is_post'] = 1;
                //标识是回复
                $forum_arr['cookie'] = $arr['cookie'];
                $forum_arr['is_water_img'] = $arr['is_water_img'];
                $forum_arr['is_download_img'] = $arr['is_download_img'];
                $forum_arr['content'] = $v['content'];
                //$re_arr = forum_downremotefile($forum_arr);
                if ($arr['is_download_img'] == 1) {
                    $re_arr = forum_downremotefile($v);
                }
                DB::query("UPDATE " . DB::table('common_member_count') . " SET posts=posts+1 WHERE uid='{$post_setarr['authorid']}'");
                //更新数
                $new[$k] = $post_setarr;
            }
            unset($post_setarr);
            DB::update('forum_thread', array('replies' => count($reply_arr), 'lastpost' => $lastpost, 'lastposter' => $lastposter), array('tid' => $tid));
        }
    }
    //exit();
    $re = $arr;
    $re['fid'] = $fid;
    $re['tid'] = $tid;
    $re['fid'] = $fid;
    $re['uid'] = $arr['uid'];
    $re['username'] = $author;
    $re['pid'] = $pid;
    $re['message'] = $message;
    if ($pid && getstatus($thread['status'], 1)) {
        savepostposition($tid, $pid);
    }
    $threadimageaid = 0;
    $threadimage = array();
    //print_r($message);exit();
    if ($_G['forum']['threadsorts']['types'][$sortid] && !empty($_G['forum_optiondata']) && is_array($_G['forum_optiondata']) && $sortaids) {
        foreach ($sortaids as $sortaid) {
            convertunusedattach($sortaid, $tid, $pid);
        }
    }
    if (($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) && ($_GET['attachnew'] || $sortid || !empty($_GET['activityaid']))) {
        updateattach($displayorder == -4 || $modnewthreads, $tid, $pid, $_GET['attachnew']);
        if (!$threadimageaid) {
            $threadimage = DB::fetch_first("SELECT aid, attachment, remote FROM " . DB::table(getattachtablebytid($tid)) . " WHERE tid='{$tid}' AND isimage IN ('1', '-1') ORDER BY width DESC LIMIT 1");
            $threadimageaid = $threadimage['aid'];
        }
        if ($_G['forum']['picstyle']) {
            setthreadcover($pid, 0, $threadimageaid);
        }
    }
    /*删除附件*/
    if ($old_arr['forum_id']) {
        $query = DB::query("SELECT attachment, thumb, remote, aid FROM " . DB::table(getattachtablebytid($old_arr['forum_id'])) . " WHERE tid='{$old_arr['forum_id']}'");
        while ($v = DB::fetch($query)) {
            $attach[] = $v;
        }
        dunlink($attach);
        DB::query("DELETE FROM " . DB::table('forum_attachment') . " WHERE tid='{$old_arr['forum_id']}'");
        DB::query("DELETE FROM " . DB::table(getattachtablebytid($old_arr['forum_id'])) . " WHERE tid='{$old_arr['forum_id']}'");
        DB::delete('forum_threadimage', "tid='{$old_arr['forum_id']}'");
        //图片表
    }
    $param = array('fid' => $arr['fid'], 'tid' => $tid, 'pid' => $pid);
    $statarr = array(0 => 'thread', 1 => 'poll', 2 => 'trade', 3 => 'reward', 4 => 'activity', 5 => 'debate', 127 => 'thread');
    include_once libfile('function/stat');
    updatestat($isgroup ? 'groupthread' : $statarr[$special]);
    dsetcookie('clearUserdata', 'forum');
    if ($specialextra) {
        $classname = 'threadplugin_' . $specialextra;
        if (class_exists($classname) && method_exists($threadpluginclass = new $classname(), 'newthread_submit_end')) {
            $threadpluginclass->newthread_submit_end($_G['fid'], $tid);
        }
    }
    $feed = array('icon' => '', 'title_template' => '', 'title_data' => array(), 'body_template' => '', 'body_data' => array(), 'title_data' => array(), 'images' => array());
    if (!empty($_GET['addfeed']) && $_G['forum']['allowfeed'] && !$isanonymous) {
        $message = !$price ? $message : '';
        if ($special == 0) {
            $feed['icon'] = 'thread';
            $feed['title_template'] = 'feed_thread_title';
            $feed['body_template'] = 'feed_thread_message';
            $feed['body_data'] = array('subject' => "<a href=\"forum.php?mod=viewthread&tid={$tid}\">{$subject}</a>", 'message' => messagecutstr($message, 150));
            if (!empty($_G['forum_attachexist'])) {
                $firstaid = DB::result_first("SELECT aid FROM " . DB::table(getattachtablebytid($tid)) . " WHERE pid='{$pid}' AND dateline>'0' AND isimage='1' ORDER BY dateline LIMIT 1");
                if ($firstaid) {
                    $feed['images'] = array(getforumimg($firstaid));
                    $feed['image_links'] = array("forum.php?mod=viewthread&do=tradeinfo&tid={$tid}&pid={$pid}");
                }
            }
        }
    }
    $feed['title_data']['hash_data'] = "tid{$tid}";
    $feed['id'] = $tid;
    $feed['idtype'] = 'tid';
    if ($feed['icon']) {
        postfeed($feed);
    }
    if ($displayorder != -4) {
        if ($digest) {
            updatepostcredits('+', $_G['uid'], 'digest', $_G['fid']);
        }
        updatepostcredits('+', $_G['uid'], 'post', $_G['fid']);
        if ($isgroup) {
            DB::query("UPDATE " . DB::table('forum_groupuser') . " SET threads=threads+1, lastupdate='" . $arr['public_time'] . "' WHERE uid='{$_G['uid']}' AND fid='{$_G['fid']}'");
        }
        $subject = str_replace("\t", ' ', $subject);
        $f_lastpost = "{$tid}\t{$subject}\t" . $arr['public_time'] . "\t{$author}";
        if ($_G['forum']['type'] == 'sub') {
            DB::query("UPDATE " . DB::table('forum_forum') . " SET lastpost='{$f_lastpost}' WHERE fid='" . $_G['forum'][fup] . "'", 'UNBUFFERED');
        }
    }
    $subject = str_replace("\t", ' ', $subject);
    $replys = $replys ? $replys : 1;
    //今日发帖
    $todayposts = date("Yjn", $arr['public_time']) == date("Yjn", $v) ? 1 : 0;
    foreach ((array) $time_arr as $k => $v) {
        if (date("Yjn", $_G['timestamp']) == date("Yjn", $v)) {
            $todayposts++;
        }
    }
    DB::query("UPDATE " . DB::table('forum_forum') . " SET lastpost='{$f_lastpost}', threads=threads+1, posts=posts+{$replys}, todayposts=todayposts+{$todayposts} WHERE fid='{$arr['fid']}'", 'UNBUFFERED');
    //更新今日发帖这些数据
    if ($_G['forum']['status'] == 3) {
        require_once libfile('function/group');
        updateactivity($_G['fid'], 0);
        require_once libfile('function/grouplog');
        updategroupcreditlog($_G['fid'], $_G['uid']);
    }
    return $re;
}