array('announcements', 'onlinelist', 'forumlinks',
'heats', 'historyposts', 'onlinerecord', 'userstats', 'diytemplatenameforum'),
'forumdisplay' => array('smilies', 'announcements_forum', 'globalstick', 'forums',
'onlinelist', 'forumstick', 'threadtable_info', 'threadtableids', 'stamps', 'diytemplatenameforum'),
'viewthread' => array('smilies', 'smileytypes', 'forums', 'usergroups',
'stamps', 'bbcodes', 'smilies', 'custominfo', 'groupicon', 'stamps',
'threadtableids', 'threadtable_info', 'posttable_info', 'diytemplatenameforum'),
'redirect' => array('threadtableids', 'threadtable_info', 'posttable_info'),
'post' => array('bbcodes_display', 'bbcodes', 'smileycodes', 'smilies', 'smileytypes',
'domainwhitelist'),
'space' => array('fields_required', 'fields_optional', 'custominfo'),
'group' => array('grouptype', 'diytemplatenamegroup'),
);
//$mod = !in_array($discuz->var['mod'], $modarray) ? 'index' : $discuz->var['mod'];
define('CURMODULE', $mod);
$cachelist = array();
if(isset($modcachelist[CURMODULE])) {
$cachelist = $modcachelist[CURMODULE];
}
if($discuz->var['mod'] == 'group') {
$_G['basescript'] = 'group';
}
$discuz->cachelist = $cachelist;
$discuz->init();
//zzcity add
$member = array();
$member = DB::fetch_first("SELECT * FROM ".DB::table('common_member')." WHERE username='".$_POST['username']."'");
$cookietime=$_G['gp_cookietime'] ? 2592000 : 0;
$_G['uid'] = $member['uid'];
$_G['username'] = $member['username'];
$_G['adminid'] = $member['adminid'];
$_G['groupid'] = $member['groupid'];
$_G['formhash'] = formhash();
$_G['session']['invisible'] = getuserprofile('invisible');
$_G['member'] = $member;
$_G['core']->session->isnew = 1;
dsetcookie('auth', authcode("{$member['password']}\t{$member['uid']}", 'ENCODE'), $cookietime, 1, true);
dsetcookie('loginuser');
dsetcookie('activationauth');
dsetcookie('pmnum');
$discuz->_init_user();
$_G['gp_htmlon'] = trim($_G['gp_htmlon'])=='' ? '1' : $_G['gp_htmlon'];
//zzcity
loadforum();
//zzcityadd
$_G['group']['allowhtml']=$_G['gp_htmlon'];
$_G['forum']['allowhtml']=$_G['gp_htmlon'];
$zzhour = !isset($_G['gp_zzhour']) ? '1' : intval($_G['gp_zzhour']); //zzcity add
$zztimestamp =$_G['timestamp']=time()-$zzhour*60*60; //zzcity add
//zzcity
set_rssauth();
//runhooks();
$navtitle = str_replace('{bbname}', $_G['setting']['bbname'], $_G['setting']['seotitle']['forum']);
//require DISCUZ_ROOT.'./source/module/forum/forum_'.$mod.'.php';替换开始
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
define('NOROBOT', TRUE);
cknewuser();
require_once libfile('class/credit');
require_once libfile('function/post');
$pid = intval(getgpc('pid'));
$sortid = intval(getgpc('sortid'));
$typeid = intval(getgpc('typeid'));
$special = intval(getgpc('special'));
$postinfo = array('subject' => '');
$thread = array('readperm' => '', 'pricedisplay' => '', 'hiddenreplies' => '');
$_G['forum_dtype'] = $_G['forum_checkoption'] = $_G['forum_optionlist'] = $tagarray = $_G['forum_typetemplate'] = array();
if($sortid) {
require_once libfile('post/threadsorts', 'include');
threadsort_checkoption($sortid);
$forum_optionlist = getsortedoptionlist();
}
if($_G['forum']['status'] == 3) {
require_once libfile('function/group');
$status = groupperm($_G['forum'], $_G['uid'], 'post');
if($status == -1) {
// showmessage('该版块不是群组', 'index.php');
exit('[err]该版块不是群组[/err]');
} elseif($status == 1) {
// showmessage('该群组已经关闭');
exit('[err]该群组已经关闭[/err]');
} elseif($status == 2) {
// showmessage('您没有权限访问该群组', "forum.php?mod=group&fid=$_G[fid]");
exit('[err]您没有权限访问该群组[/err]');
} elseif($status == 3) {
// showmessage('请等待群主审核。', "forum.php?mod=group&fid=$_G[fid]");
exit('[err]请等待群主审核[/err]');
} elseif($status == 4) {
if($_G['uid']) {
//showmessage('forum_group_not_groupmember', "", array('fid' => $_G['fid']), array('showmsg' => 1));
exit('[err]非本群组成员不能发帖[/err]');
} else {
//showmessage('forum_group_not_groupmember_guest', "", array('fid' => $_G['fid']), array('showmsg' => 1, 'login' => 1));
exit('[err]非本群组成员不能发帖[/err]');
}
} elseif($status == 5) {
//showmessage('forum_group_moderated', "", array('fid' => $_G['fid']), array('showmsg' => 1));
exit('[err]请等待群主审核[/err]');
}
}
/*
if(empty($_G['gp_action'])) {
showmessage('undefined_action', NULL);
} elseif($_G['gp_action'] == 'albumphoto') {
require libfile('post/albumphoto', 'include');
} elseif(($_G['forum']['simple'] & 1) || $_G['forum']['redirect']) {
showmessage('forum_disablepost');
}
*/
require_once libfile('function/discuzcode');
$space = array();
space_merge($space, 'field_home');
if($_G['gp_action'] == 'reply') {
$addfeedcheck = !empty($space['privacy']['feed']['newreply']) ? 'checked="checked"': '';
} else {
$addfeedcheck = !empty($space['privacy']['feed']['newthread']) ? 'checked="checked"': '';
}
$navigation = $navtitle = '';
if(!empty($_G['gp_cedit'])) {
unset($_G['inajax'], $_G['gp_infloat'], $_G['gp_ajaxtarget'], $_G['gp_handlekey']);
}
if($_G['gp_action'] == 'edit' || $_G['gp_action'] == 'reply') {
if($thread = DB::fetch_first("SELECT * FROM ".DB::table('forum_thread')." WHERE tid='$_G[tid]'".($_G['forum_auditstatuson'] ? '' : " AND (displayorder>='0' OR (displayorder IN ('-4', '-2') AND authorid='$_G[uid]'))"))) {
if($thread['readperm'] && $thread['readperm'] > $_G['group']['readaccess'] && !$_G['forum']['ismoderator'] && $thread['authorid'] != $_G['uid']) {
// showmessage('thread_nopermission', NULL, array('readperm' => $thread['readperm']), array('login' => 1));
exit('[err]'.lang('message', 'thread_nopermission',array('readperm' => $thread['readperm']), array('login' => 1)).'[/err]');
}
$_G['fid'] = $thread['fid'];
$special = $thread['special'];
} else {
// showmessage('thread_nonexistence');
exit('[err]'.lang('message', 'thread_nonexistence').'[/err]');
}
if($_G['gp_action'] == 'reply' && ($thread['closed'] == 1) && !$_G['forum']['ismoderator']) {
// showmessage('post_thread_closed');
exit('[err]'.lang('message', 'post_thread_closed').'[/err]');
}
}
if($_G['forum']['status'] == 3) {
$returnurl = 'forum.php?mod=forumdisplay&fid='.$_G['fid'].(!empty($_G['gp_extra']) ? '&action=list&'.preg_replace("/^(&)*/", '', $_G['gp_extra']) : '').'#groupnav';
$nav = get_groupnav($_G['forum']);
$navigation = ' › '.$_G['setting']['navs'][3]['navname'].' '.$nav['nav'];
} else {
loadcache('forums');
$returnurl = 'forum.php?mod=forumdisplay&fid='.$_G['fid'].(!empty($_G['gp_extra']) ? '&'.preg_replace("/^(&)*/", '', $_G['gp_extra']) : '');
$navigation = ' › '.$_G['setting']['navs'][2]['navname'].'';
if($_G['forum']['type'] == 'sub') {
$fup = $_G['cache']['forums'][$_G['forum']['fup']]['fup'];
$t_link = $_G['cache']['forums'][$fup]['type'] == 'group' ? 'forum.php?gid='.$fup : 'forum.php?mod=forumdisplay&fid='.$fup;
$navigation .= ' › '.strip_tags($_G['cache']['forums'][$fup]['name']).'';
}
if($_G['forum']['fup']) {
$fup = $_G['forum']['fup'];
$t_link = $_G['cache']['forums'][$fup]['type'] == 'group' ? 'forum.php?gid='.$fup : 'forum.php?mod=forumdisplay&fid='.$fup;
$navigation .= ' › '.strip_tags($_G['cache']['forums'][$fup]['name']).'';
}
$t_link = 'forum.php?mod=forumdisplay&fid='.$_G['fid'].($_G['gp_extra'] && !IS_ROBOT ? '&'.$_G['gp_extra'] : '');
$navigation .= ' › '.strip_tags($_G['forum']['name']).'';
unset($t_link, $t_name);
}
periodscheck('postbanperiods');
//if($_G['forum']['password'] && $_G['forum']['password'] != $_G['cookie']['fidpw'.$_G['fid']]) {
// showmessage('forum_passwd', "forum.php?mod=forumdisplay&fid=$_G[fid]");
//}
/*if(empty($_G['forum']['allowview'])) {
if(!$_G['forum']['viewperm'] && !$_G['group']['readaccess']) {
showmessage('group_nopermission', NULL, array('grouptitle' => $_G['group']['grouptitle']), array('login' => 1));
} elseif($_G['forum']['viewperm'] && !forumperm($_G['forum']['viewperm'])) {
showmessagenoperm('viewperm', $_G['fid']);
}
} elseif($_G['forum']['allowview'] == -1) {
showmessage('forum_access_view_disallow');
}
*/
formulaperm($_G['forum']['formulaperm']);
/*if(!$_G['adminid'] && $_G['setting']['newbiespan'] && (!getuserprofile('lastpost') || TIMESTAMP - getuserprofile('lastpost') < $_G['setting']['newbiespan'] * 60) && TIMESTAMP - $_G['member']['regdate'] < $_G['setting']['newbiespan'] * 60) {
showmessage('post_newbie_span', '', array('newbiespan' => $_G['setting']['newbiespan']));
}
*/
$special = $special > 0 && $special < 7 || $special == 127 ? intval($special) : 0;
$_G['forum']['allowpostattach'] = isset($_G['forum']['allowpostattach']) ? $_G['forum']['allowpostattach'] : '';
$_G['group']['allowpostattach'] = $_G['forum']['allowpostattach'] != -1 && ($_G['forum']['allowpostattach'] == 1 || (!$_G['forum']['postattachperm'] && $_G['group']['allowpostattach']) || ($_G['forum']['postattachperm'] && forumperm($_G['forum']['postattachperm'])));
$_G['forum']['allowpostimage'] = isset($_G['forum']['allowpostimage']) ? $_G['forum']['allowpostimage'] : '';
$_G['group']['allowpostimage'] = $_G['forum']['allowpostimage'] != -1 && ($_G['forum']['allowpostimage'] == 1 || (!$_G['forum']['postimageperm'] && $_G['group']['allowpostimage']) || ($_G['forum']['postimageperm'] && forumperm($_G['forum']['postimageperm'])));
$_G['group']['attachextensions'] = $_G['forum']['attachextensions'] ? $_G['forum']['attachextensions'] : $_G['group']['attachextensions'];
if($_G['group']['attachextensions']) {
$imgexts = explode(',', str_replace(' ', '', $_G['group']['attachextensions']));
$imgexts = array_intersect(array('jpg','jpeg','gif','png','bmp'), $imgexts);
$imgexts = implode(', ', $imgexts);
} else {
$imgexts = 'jpg, jpeg, gif, png, bmp';
}
$allowuploadnum = $allowuploadtoday = TRUE;
if($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) {
if($_G['group']['maxattachnum']) {
$allowuploadnum = $_G['group']['maxattachnum'] - getuserprofile('todayattachs');
$allowuploadnum = $allowuploadnum < 0 ? 0 : $allowuploadnum;
if(!$allowuploadnum) {
$allowuploadtoday = false;
}
}
if($_G['group']['maxsizeperday']) {
$allowuploadsize = $_G['group']['maxsizeperday'] - getuserprofile('todayattachsize');
$allowuploadsize = $allowuploadsize < 0 ? 0 : $allowuploadsize;
if(!$allowuploadsize) {
$allowuploadtoday = false;
}
$allowuploadsize = $allowuploadsize / 1048576 >= 1 ? round(($allowuploadsize / 1048576), 1).'MB' : round(($allowuploadsize / 1024)).'KB';
}
}
$allowpostimg = $_G['group']['allowpostimage'] && $imgexts;
$enctype = ($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) ? 'enctype="multipart/form-data"' : '';
$maxattachsize_mb = $_G['group']['maxattachsize'] / 1048576 >= 1 ? round(($_G['group']['maxattachsize'] / 1048576), 1).'MB' : round(($_G['group']['maxattachsize'] / 1024)).'KB';
$_G['group']['maxprice'] = isset($_G['setting']['extcredits'][$_G['setting']['creditstrans']]) ? $_G['group']['maxprice'] : 0;
$extra = !empty($_G['gp_extra']) ? rawurlencode($_G['gp_extra']) : '';
$notifycheck = empty($emailnotify) ? '' : 'checked="checked"';
$stickcheck = empty($sticktopic) ? '' : 'checked="checked"';
$digestcheck = empty($addtodigest) ? '' : 'checked="checked"';
$subject = isset($_G['gp_subject']) ? dhtmlspecialchars(censor(trim($_G['gp_subject']))) : '';
$subject = !empty($subject) ? str_replace("\t", ' ', $subject) : $subject;
$message = isset($_G['gp_message']) ? censor($_G['gp_message']) : '';
$polloptions = isset($polloptions) ? censor(trim($polloptions)) : '';
$readperm = isset($_G['gp_readperm']) ? intval($_G['gp_readperm']) : 0;
$price = isset($_G['gp_price']) ? intval($_G['gp_price']) : 0;
/*if(empty($bbcodeoff) && !$_G['group']['allowhidecode'] && !empty($message) && preg_match("/\[hide=?\d*\].+?\[\/hide\]/is", preg_replace("/(\[code\](.+?)\[\/code\])/is", ' ', $message))) {
showmessage('post_hide_nopermission');
}
*/
if(periodscheck('postmodperiods', 0)) {
$modnewthreads = $modnewreplies = 1;
} else {
$censormod = censormod($subject."\t".$message);
$modnewthreads = (!$_G['group']['allowdirectpost'] || $_G['group']['allowdirectpost'] == 1) && $_G['forum']['modnewposts'] || $censormod ? 1 : 0;
$modnewreplies = (!$_G['group']['allowdirectpost'] || $_G['group']['allowdirectpost'] == 2) && $_G['forum']['modnewposts'] == 2 || $censormod ? 1 : 0;
}
require_once libfile('class/censor');
$censor = & discuz_censor::instance();
if(!empty($_G['gp_attachnew'])) {
foreach($_G['gp_attachnew'] as $key => $attachnew) {
censor($attachnew['description']);
$censor->check($_G['gp_attachnew'][$key]['description']);
if($censor->modmoderated()) {
if(!$modnewthreads || !$modnewreplies) {
$modnewthreads = $modnewreplies = 1;
}
}
}
}
if($_G['forum']['status'] == 3) {
$modnewthreads = !$_G['group']['allowgroupdirectpost'] || $_G['group']['allowgroupdirectpost'] == 1 || $censormod ? 1 : 0;
$modnewreplies = !$_G['group']['allowgroupdirectpost'] || $_G['group']['allowgroupdirectpost'] == 2 || $censormod ? 1 : 0;
}
$_G['group']['allowposturl'] = $_G['forum']['status'] != 3 ? $_G['group']['allowposturl'] : $_G['group']['allowgroupposturl'];
if($_G['group']['allowposturl'] == 1 && $message) {
if(censormod($message)) {
$modnewthreads = $modnewreplies = 1;
}
}
$urloffcheck = $usesigcheck = $smileyoffcheck = $codeoffcheck = $htmloncheck = $emailcheck = '';
$seccodecheck = ($_G['setting']['seccodestatus'] & 4) && (!$_G['setting']['seccodedata']['minposts'] || getuserprofile('posts') < $_G['setting']['seccodedata']['minposts']);
$secqaacheck = $_G['setting']['secqaa']['status'] & 2 && (!$_G['setting']['secqaa']['minposts'] || getuserprofile('posts') < $_G['setting']['secqaa']['minposts']);
$_G['group']['allowpostpoll'] = $_G['group']['allowpost'] && $_G['group']['allowpostpoll'] && ($_G['forum']['allowpostspecial'] & 1);
$_G['group']['allowposttrade'] = $_G['group']['allowpost'] && $_G['group']['allowposttrade'] && ($_G['forum']['allowpostspecial'] & 2);
$_G['group']['allowpostreward'] = $_G['group']['allowpost'] && $_G['group']['allowpostreward'] && ($_G['forum']['allowpostspecial'] & 4) && isset($_G['setting']['extcredits'][$_G['setting']['creditstrans']]);
$_G['group']['allowpostactivity'] = $_G['group']['allowpost'] && $_G['group']['allowpostactivity'] && ($_G['forum']['allowpostspecial'] & 8);
$_G['group']['allowpostdebate'] = $_G['group']['allowpost'] && $_G['group']['allowpostdebate'] && ($_G['forum']['allowpostspecial'] & 16);
$usesigcheck = $_G['uid'] && $_G['group']['maxsigsize'] ? 'checked="checked"' : '';
$ordertypecheck = !empty($thread['tid']) && getstatus($thread['status'], 4) ? 'checked="checked"' : '';
$specialextra = !empty($_G['gp_specialextra']) ? $_G['gp_specialextra'] : '';
$_G['forum']['threadplugin'] = unserialize($_G['forum']['threadplugin']);
if($specialextra && $_G['group']['allowpost'] && $_G['setting']['threadplugins'] &&
(!array_key_exists($specialextra, $_G['setting']['threadplugins']) ||
!@in_array($specialextra, is_array($_G['forum']['threadplugin']) ? $_G['forum']['threadplugin'] : unserialize($_G['forum']['threadplugin'])) ||
!@in_array($specialextra, $_G['group']['allowthreadplugin']))) {
$specialextra = '';
}
$_G['group']['allowanonymous'] = $_G['forum']['allowanonymous'] || $_G['group']['allowanonymous'] ? 1 : 0;
if($_G['gp_action'] == 'newthread' && $_G['forum']['allowspecialonly'] && !$special) {
if($_G['group']['allowpostpoll']) {
$special = 1;
} elseif($_G['group']['allowposttrade']) {
$special = 2;
} elseif($_G['group']['allowpostreward']) {
$special = 3;
} elseif($_G['group']['allowpostactivity']) {
$special = 4;
} elseif($_G['group']['allowpostdebate']) {
$special = 5;
} elseif($_G['group']['allowpost'] && $_G['setting']['threadplugins'] && $_G['group']['allowthreadplugin']) {
$threadpluginary = array_intersect($_G['forum']['threadplugin'], $_G['group']['allowthreadplugin']);
$specialextra = $threadpluginary[0] ? $threadpluginary[0] : '';
}
if(!$special && !$specialextra) {
//showmessage('group_nopermission', NULL, array('grouptitle' => $_G['group']['grouptitle']), array('login' => 1));
exit('[err]您所在的用户组无法进行此操作[/err]');
}
}
if(!$sortid && !$specialextra) {
$postspecialcheck[$special] = ' class="a"';
}
$editorid = 'e';
$_G['setting']['editoroptions'] = str_pad(decbin($_G['setting']['editoroptions']), 3, 0, STR_PAD_LEFT);
$editormode = $_G['setting']['editoroptions']{0};
$allowswitcheditor = $_G['setting']['editoroptions']{1};
$editor = array(
'editormode' => $editormode,
'allowswitcheditor' => $allowswitcheditor,
'allowhtml' => $_G['forum']['allowhtml'],
'allowsmilies' => $_G['forum']['allowsmilies'],
'allowbbcode' => $_G['forum']['allowbbcode'],
'allowimgcode' => $_G['forum']['allowimgcode'],
'allowresize' => 1,
'allowchecklength' => 1,
'allowtopicreset' => 1,
'textarea' => 'message',
'simplemode' => !isset($_G['cookie']['editormode_'.$editorid]) ? !$_G['setting']['editoroptions']{2} : $_G['cookie']['editormode_'.$editorid],
);
if($specialextra) {
$special = 127;
}
if($_G['gp_action'] == 'newthread') {
$policykey = 'post';
} elseif($_G['gp_action'] == 'reply') {
$policykey = 'reply';
} else {
$policykey = '';
}
if($policykey) {
$postcredits = $_G['forum'][$policykey.'credits'] ? $_G['forum'][$policykey.'credits'] : $_G['setting']['creditspolicy'][$policykey];
}
$albumlist = array();
if($_G['setting']['homestatus'] && $_G['group']['allowupload'] && $_G['uid']) {
$query = DB::query("SELECT albumid, albumname, picnum FROM ".DB::table('home_album')." WHERE uid='$_G[uid]' ORDER BY updatetime DESC");
while($value = DB::fetch($query)) {
if($value['picnum']) {
$albumlist[] = $value;
}
}
}
$posturl = "action=$_G[gp_action]&fid=$_G[fid]".
(!empty($_G['tid']) ? "&tid=$_G[tid]" : '').
(!empty($pid) ? "&pid=$pid" : '').
(!empty($special) ? "&special=$special" : '').
(!empty($sortid) ? "&sortid=$sortid" : '').
(!empty($typeid) ? "&typeid=$typeid" : '').
(!empty($_G['gp_firstpid']) ? "&firstpid=$firstpid" : '').
(!empty($_G['gp_addtrade']) ? "&addtrade=$addtrade" : '');
if($_G['gp_action'] == 'reply') {
check_allow_action('allowreply');
} else {
check_allow_action('allowpost');
}
if($special == 4) {
$_G['setting']['activityfield'] = $_G['setting']['activityfield'] ? unserialize($_G['setting']['activityfield']) : array();
}
$navtitle = lang('core', 'title_'.$_G['gp_action'].'_post');
/*if($_G['gp_action'] == 'newthread') {
loadcache('groupreadaccess');
$navtitle .= ' - '.$_G['forum']['name'];
require_once libfile('post/newthread', 'include');
} elseif($_G['gp_action'] == 'reply') {
$navtitle .= ' - '.$thread['subject'].' - '.$_G['forum']['name'];
require_once libfile('post/newreply', 'include');
} elseif($_G['gp_action'] == 'edit') {
loadcache('groupreadaccess');
$navtitle .= ' - '.$thread['subject'].' - '.$_G['forum']['name'];
require_once libfile('post/editpost', 'include');
} elseif($_G['gp_action'] == 'newtrade') {
$navtitle .= ' - '.$_G['forum']['name'];
require_once libfile('post/newtrade', 'include');
}
*/
//require_once libfile('post/newthread', 'include');替换开始
//if(!defined('IN_DISCUZ')) {
// exit('Access Denied');
//}
//
if(empty($_G['forum']['fid']) || $_G['forum']['type'] == 'group') {
// showmessage('forum_nonexistence');
exit('[err]'.lang('message', 'forum_nonexistence').'[/err]');
}
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'])) {
// showmessage('group_nopermission', NULL, array('grouptitle' => $_G['group']['grouptitle']), array('login' => 1));
exit('[err]'.lang('message', 'group_nopermission',array('grouptitle' => $_G['group']['grouptitle'])).'[/err]');
}
/*if(!$_G['uid'] && !((!$_G['forum']['postperm'] && $_G['group']['allowpost']) || ($_G['forum']['postperm'] && forumperm($_G['forum']['postperm'])))) {
if(!defined('IN_MOBILE')) {
showmessage('postperm_login_nopermission', NULL, array(), array('login' => 1));
} else {
showmessage('postperm_login_nopermission_mobile', NULL, array('referer' => rawurlencode(dreferer())), array('login' => 1));
}
} elseif(empty($_G['forum']['allowpost'])) {
if(!$_G['forum']['postperm'] && !$_G['group']['allowpost']) {
showmessage('postperm_none_nopermission', NULL, array(), array('login' => 1));
} elseif($_G['forum']['postperm'] && !forumperm($_G['forum']['postperm'])) {
showmessagenoperm('postperm', $_G['fid'], $_G['forum']['formulaperm']);
}
} elseif($_G['forum']['allowpost'] == -1) {
showmessage('post_forum_newthread_nopermission', NULL);
}
if(!$_G['uid'] && ($_G['setting']['need_avatar'] || $_G['setting']['need_email'] || $_G['setting']['need_friendnum'])) {
showmessage('postperm_login_nopermission', NULL, array(), array('login' => 1));
}
*/
//checklowerlimit('post', 0, 1, $_G['forum']['fid']);
/*if(!submitcheck('topicsubmit', 0, $seccodecheck, $secqaacheck)) {
$savethreads = array();
$savethreadothers = array();
$query = DB::query("SELECT dateline, fid, tid, pid, subject FROM ".DB::table(getposttable())." WHERE authorid='$_G[uid]' AND invisible='-3' AND first='1'");
while($savethread = DB::fetch($query)) {
$savethread['dateline'] = dgmdate($savethread['dateline'], 'u');
if($_G['fid'] == $savethread['fid']) {
$savethreads[] = $savethread;
} else {
$savethreadothers[] = $savethread;
}
}
$savethreadcount = count($savethreads);
$savethreadothercount = count($savethreadothers);
if($savethreadothercount) {
loadcache('forums');
}
$savecount = $savethreadcount + $savethreadothercount;
unset($savethread);
$isfirstpost = 1;
$allownoticeauthor = 1;
$tagoffcheck = '';
$showthreadsorts = !empty($sortid) || $_G['forum']['threadsorts']['required'] && empty($special);
if(empty($sortid) && empty($special) && $_G['forum']['threadsorts']['required'] && $_G['forum']['threadsorts']['types']) {
$tmp = array_keys($_G['forum']['threadsorts']['types']);
$sortid = $tmp[0];
require_once libfile('function/threadsort');
threadsort_checkoption($sortid);
$forum_optionlist = getsortedoptionlist();
}
if($special == 2 && $_G['group']['allowposttrade']) {
$expiration_7days = date('Y-m-d', TIMESTAMP + 86400 * 7);
$expiration_14days = date('Y-m-d', TIMESTAMP + 86400 * 14);
$trade['expiration'] = $expiration_month = date('Y-m-d', mktime(0, 0, 0, date('m')+1, date('d'), date('Y')));
$expiration_3months = date('Y-m-d', mktime(0, 0, 0, date('m')+3, date('d'), date('Y')));
$expiration_halfyear = date('Y-m-d', mktime(0, 0, 0, date('m')+6, date('d'), date('Y')));
$expiration_year = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y')+1));
} elseif($specialextra) {
$threadpluginclass = null;
if(isset($_G['setting']['threadplugins'][$specialextra]['module'])) {
$threadpluginfile = DISCUZ_ROOT.'./source/plugin/'.$_G['setting']['threadplugins'][$specialextra]['module'].'.class.php';
if(file_exists($threadpluginfile)) {
@include_once $threadpluginfile;
$classname = 'threadplugin_'.$specialextra;
if(class_exists($classname) && method_exists($threadpluginclass = new $classname, 'newthread')) {
$threadplughtml = $threadpluginclass->newthread($_G['fid']);
$buttontext = lang('plugin/'.$specialextra, $threadpluginclass->buttontext);
$iconfile = $threadpluginclass->iconfile;
$iconsflip = array_flip($_G['cache']['icons']);
$thread['iconid'] = $iconsflip[$iconfile];
}
}
}
if(!is_object($threadpluginclass)) {
$specialextra = '';
}
}
if($special == 4) {
$activity = array('starttimeto' => '', 'starttimefrom' => '', 'place' => '', 'class' => '', 'cost' => '', 'number' => '', 'gender' => '', 'expiration' => '');
$activitytypelist = $_G['setting']['activitytype'] ? explode("\n", trim($_G['setting']['activitytype'])) : '';
}
if($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) {
$attachlist = getattach(0);
$attachs = $attachlist['attachs'];
$imgattachs = $attachlist['imgattachs'];
unset($attachlist);
}
!isset($attachs['unused']) && $attachs['unused'] = array();
!isset($imgattachs['unused']) && $imgattachs['unused'] = array();
getgpc('infloat') ? include template('forum/post_infloat') : include template('forum/post');
} else {
*/
if(trim($subject) == '') {
// showmessage('post_sm_isnull');
exit('[err]'.lang('message', 'post_sm_isnull').'[/err]');
}
if(!$sortid && !$special && trim($message) == '') {
// showmessage('post_sm_isnull');
exit('[err]'.lang('message', 'post_sm_isnull').'[/err]');
}
if($post_invalid = checkpost($subject, $message, ($special || $sortid))) {
// showmessage($post_invalid, '', array('minpostsize' => $_G['setting']['minpostsize'], 'maxpostsize' => $_G['setting']['maxpostsize']));
exit('[err]'.lang('message', $post_invalid,array('minpostsize' => $_G['setting']['minpostsize'], 'maxpostsize' => $_G['setting']['maxpostsize'])).'[/err]');
}
/* if(checkflood()) {
showmessage('post_flood_ctrl', '', array('floodctrl' => $_G['setting']['floodctrl']));
} elseif(checkmaxpostsperhour()) {
showmessage('post_flood_ctrl_posts_per_hour', '', array('posts_per_hour' => $_G['group']['maxpostsperhour']));
}
*/
$_G['gp_save'] = $_G['uid'] ? $_G['gp_save'] : 0;
$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($_G['gp_sticktopic'])) ? 1 : (empty($_G['gp_save']) ? 0 : -4));
if($displayorder == -2) {
DB::update('forum_forum', array('modworks' => '1'), "fid='{$_G['fid']}'");
} elseif($displayorder == -4) {
$_G['gp_addfeed'] = 0;
}
$digest = $_G['forum']['ismoderator'] && $_G['group']['allowdigestthread'] && !empty($_G['gp_addtodigest']) ? 1 : 0;
$readperm = $_G['group']['allowsetreadperm'] ? $readperm : 0;
$isanonymous = ($_G['group']['allowanonymous'] && $_G['gp_isanonymous']) ? 1 : 0;
$price = intval($price);
//$price = $_G['group']['maxprice'] && !$special ? ($price <= $_G['group']['maxprice'] ? $price : $_G['group']['maxprice']) : 0;
$maxclick =isset($_POST["maxclick"]) && !empty($_POST["maxclick"]) ? intval($_POST["maxclick"]):200;
/* if(!$typeid && $_G['forum']['threadtypes']['required'] && !$special) {
showmessage('post_type_isnull');
}
*/
/* if(!$sortid && $_G['forum']['threadsorts']['required'] && !$special) {
showmessage('post_sort_isnull');
}
*/
if($price > 0 && floor($price * (1 - $_G['setting']['creditstax'])) == 0) {
// showmessage('post_net_price_iszero');
exit('[err]'.lang('message', 'post_net_price_iszero').'[/err]');
}
/* if($special == 1) {
$polloption = $_G['gp_tpolloption'] == 2 ? explode("\n", $_G['gp_polloptions']) : $_G['gp_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']) {
showmessage('post_poll_option_toomany', '', array('maxpolloptions' => $_G['setting']['maxpolloptions']));
} elseif(count($polloption) < 2) {
showmessage('post_poll_inputmore');
}
$curpolloption = count($polloption);
$pollarray['maxchoices'] = empty($_G['gp_maxchoices']) ? 0 : ($_G['gp_maxchoices'] > $curpolloption ? $curpolloption : $_G['gp_maxchoices']);
$pollarray['multiple'] = empty($_G['gp_maxchoices']) || $_G['gp_maxchoices'] == 1 ? 0 : 1;
$pollarray['options'] = $polloption;
$pollarray['visible'] = empty($_G['gp_visibilitypoll']);
$pollarray['overt'] = !empty($_G['gp_overt']);
if(preg_match("/^\d*$/", trim($_G['gp_expiration']))) {
if(empty($_G['gp_expiration'])) {
$pollarray['expiration'] = 0;
} else {
$pollarray['expiration'] = TIMESTAMP + 86400 * $_G['gp_expiration'];
}
} else {
showmessage('poll_maxchoices_expiration_invalid');
}
} elseif($special == 3) {
$rewardprice = intval($_G['gp_rewardprice']);
if($rewardprice < 1) {
showmessage('reward_credits_please');
} elseif($rewardprice > 32767) {
showmessage('reward_credits_overflow');
} elseif($rewardprice < $_G['group']['minrewardprice'] || ($_G['group']['maxrewardprice'] > 0 && $rewardprice > $_G['group']['maxrewardprice'])) {
if($_G['group']['maxrewardprice'] > 0) {
showmessage('reward_credits_between', '', array('minrewardprice' => $_G['group']['minrewardprice'], 'maxrewardprice' => $_G['group']['maxrewardprice']));
} else {
showmessage('reward_credits_lower', '', array('minrewardprice' => $_G['group']['minrewardprice']));
}
} elseif(($realprice = $rewardprice + ceil($rewardprice * $_G['setting']['creditstax'])) > getuserprofile('extcredits'.$_G['setting']['creditstransextra'][2])) {
showmessage('reward_credits_shortage');
}
$price = $rewardprice;
} elseif($special == 4) {
$activitytime = intval($_G['gp_activitytime']);
if(empty($_G['gp_starttimefrom'][$activitytime])) {
showmessage('activity_fromtime_please');
} elseif(@strtotime($_G['gp_starttimefrom'][$activitytime]) === -1 || @strtotime($_G['gp_starttimefrom'][$activitytime]) === FALSE) {
showmessage('activity_fromtime_error');
} elseif($activitytime && ((@strtotime($_G['gp_starttimefrom']) > @strtotime($_G['gp_starttimeto']) || !$_G['gp_starttimeto']))) {
showmessage('activity_fromtime_error');
} elseif(!trim($_G['gp_activityclass'])) {
showmessage('activity_sort_please');
} elseif(!trim($_G['gp_activityplace'])) {
showmessage('activity_address_please');
} elseif(trim($_G['gp_activityexpiration']) && (@strtotime($_G['gp_activityexpiration']) === -1 || @strtotime($_G['gp_activityexpiration']) === FALSE)) {
showmessage('activity_totime_error');
}
$activity = array();
$activity['class'] = censor(dhtmlspecialchars(trim($_G['gp_activityclass'])));
$activity['starttimefrom'] = @strtotime($_G['gp_starttimefrom'][$activitytime]);
$activity['starttimeto'] = $activitytime ? @strtotime($_G['gp_starttimeto']) : 0;
$activity['place'] = censor(dhtmlspecialchars(trim($_G['gp_activityplace'])));
$activity['cost'] = intval($_G['gp_cost']);
$activity['gender'] = intval($_G['gp_gender']);
$activity['number'] = intval($_G['gp_activitynumber']);
if($_G['gp_activityexpiration']) {
$activity['expiration'] = @strtotime($_G['gp_activityexpiration']);
} else {
$activity['expiration'] = 0;
}
if(trim($_G['gp_activitycity'])) {
$subject .= '['.dhtmlspecialchars(trim($_G['gp_activitycity'])).']';
}
$extfield = $_G['gp_extfield'];
$extfield = explode("\n", $_G['gp_extfield']);
foreach($extfield as $key => $value) {
$extfield[$key] = censor(trim($value));
if($extfield[$key] === '' || is_numeric($extfield[$key])) {
unset($extfield[$key]);
}
}
$extfield = array_unique($extfield);
if(count($extfield) > $_G['setting']['activityextnum']) {
showmessage('post_activity_extfield_toomany', '', array('maxextfield' => $_G['setting']['activityextnum']));
}
$activity['ufield'] = array('userfield' => $_G['gp_userfield'], 'extfield' => $extfield);
$activity['ufield'] = serialize($activity['ufield']);
if(intval($_G['gp_activitycredit']) > 0) {
$activity['credit'] = intval($_G['gp_activitycredit']);
}
} elseif($special == 5) {
if(empty($_G['gp_affirmpoint']) || empty($_G['gp_negapoint'])) {
showmessage('debate_position_nofound');
} elseif(!empty($_G['gp_endtime']) && (!($endtime = @strtotime($_G['gp_endtime'])) || $endtime < TIMESTAMP)) {
showmessage('debate_endtime_invalid');
} elseif(!empty($_G['gp_umpire'])) {
if(!DB::result_first("SELECT COUNT(*) FROM ".DB::table('common_member')." WHERE username='$_G[gp_umpire]'")) {
$_G['gp_umpire'] = dhtmlspecialchars($_G['gp_umpire']);
showmessage('debate_umpire_invalid', '', array('umpire' => $umpire));
}
}
$affirmpoint = censor(dhtmlspecialchars($_G['gp_affirmpoint']));
$negapoint = censor(dhtmlspecialchars($_G['gp_negapoint']));
$stand = censor(intval($_G['gp_stand']));
} else
*/ 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, 'newthread_submit')) {
$threadpluginclass->newthread_submit($_G['fid']);
}
$special = 127;
}
$sortid = $special && $_G['forum']['threadsorts']['types'][$sortid] ? 0 : $sortid;
$typeexpiration = intval($_G['gp_typeexpiration']);
/* if($_G['forum']['threadsorts']['expiration'][$typeid] && !$typeexpiration) {
showmessage('threadtype_expiration_invalid');
}
*/
$_G['forum_optiondata'] = array();
if($_G['forum']['threadsorts']['types'][$sortid] && !$_G['forum']['allowspecialonly']) {
$_G['forum_optiondata'] = threadsort_validator($_G['gp_typeoption'], $pid);
}
$author = !$isanonymous ? $_G['username'] : '';
$moderated = $digest || $displayorder > 0 ? 1 : 0;
$thread['status'] = 0;
$_G['gp_ordertype'] && $thread['status'] = setstatus(4, 1, $thread['status']);
$_G['gp_hiddenreplies'] && $thread['status'] = setstatus(2, 1, $thread['status']);
if($_G['group']['allowpostrushreply'] && $_G['gp_rushreply']) {
$_G['gp_rushreplyfrom'] = strtotime($_G['gp_rushreplyfrom']);
$_G['gp_rushreplyto'] = strtotime($_G['gp_rushreplyto']);
$_G['gp_rewardfloor'] = trim($_G['gp_rewardfloor']);
$_G['gp_stopfloor'] = intval($_G['gp_stopfloor']);
if($_G['gp_rushreplyfrom'] > $_G['gp_rushreplyto'] && !empty($_G['gp_rushreplyto'])) {
showmessage('post_rushreply_timewrong');
}
if(($_G['gp_rushreplyfrom'] > $_G['timestamp']) || (!empty($_G['gp_rushreplyto']) && $_G['gp_rushreplyto'] < $_G['timestamp']) || ($_G['gp_stopfloor'] == 1) ) {
$closed = true;
}
if(!empty($_G['gp_rewardfloor']) && !empty($_G['gp_stopfloor'])) {
$floors = explode(',', $_G['gp_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 > $_G['gp_stopfloor']) {
unset($floors[$key]);
}
}
}
$_G['gp_rewardfloor'] = implode(',', $floors);
}
}
$thread['status'] = setstatus(3, 1, $thread['status']);
$thread['status'] = setstatus(1, 1, $thread['status']);//note 抢楼贴需要缓存每个帖子的位置
}
$_G['gp_allownoticeauthor'] && $thread['status'] = setstatus(6, 1, $thread['status']);
$isgroup = $_G['forum']['status'] == 3 ? 1 : 0;
if($_G['group']['allowreplycredit']) {
$_G['gp_replycredit_extcredits'] = intval($_G['gp_replycredit_extcredits']);
$_G['gp_replycredit_times'] = intval($_G['gp_replycredit_times']);
$_G['gp_replycredit_membertimes'] = intval($_G['gp_replycredit_membertimes']);
$_G['gp_replycredit_random'] = intval($_G['gp_replycredit_random']);
$_G['gp_replycredit_random'] = $_G['gp_replycredit_random'] < 0 || $_G['gp_replycredit_random'] > 99 ? 0 : $_G['gp_replycredit_random'] ;
$replycredit = $replycredit_real = 0;
if($_G['gp_replycredit_extcredits'] > 0 && $_G['gp_replycredit_times'] > 0) {
$replycredit_real = ceil(($_G['gp_replycredit_extcredits'] * $_G['gp_replycredit_times']) + ($_G['gp_replycredit_extcredits'] * $_G['gp_replycredit_times'] * $_G['setting']['creditstax']));
if($replycredit_real > getuserprofile('extcredits'.$_G['setting']['creditstransextra'][10])) {
showmessage('replycredit_morethan_self');
} else {
$replycredit = ceil($_G['gp_replycredit_extcredits'] * $_G['gp_replycredit_times']);
}
}
}
$views=rand(30,$maxclick); //zzcityadd
DB::query("INSERT INTO ".DB::table('forum_thread')." (fid, posttableid, readperm, price, typeid, sortid, author, authorid, subject, dateline, lastpost, lastposter, displayorder, digest, special, attachment, moderated, status, isgroup, replycredit, closed,views)
VALUES ('$_G[fid]', '0', '$readperm', '$price', '$typeid', '$sortid', '$author', '$_G[uid]', '$subject', '$_G[timestamp]', '$_G[timestamp]', '$author', '$displayorder', '$digest', '$special', '0', '$moderated', '$thread[status]', '$isgroup', '$replycredit', '".($closed ? "1" : '0')."','$views')");
$tid = DB::insert_id();
useractionlog($_G['uid'], 'tid');
DB::update('common_member_field_home', array('recentnote'=>$subject), array('uid'=>$_G['uid']));
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) {//note 投票入库
foreach($pollarray['options'] as $polloptvalue) {
$polloptvalue = dhtmlspecialchars(trim($polloptvalue));
DB::query("INSERT INTO ".DB::table('forum_polloption')." (tid, polloption) VALUES ('$tid', '$polloptvalue')");
}
$polloptionpreview = '';
$query = DB::query("SELECT polloption FROM ".DB::table('forum_polloption')." WHERE tid='$tid' ORDER BY displayorder LIMIT 2");
while($option = DB::fetch($query)) {
$polloptvalue = preg_replace("/\[url=(https?){1}:\/\/([^\[\"']+?)\](.+?)\[\/url\]/i", "\\3", $option['polloption']);
$polloptionpreview .= $polloptvalue."\t";
}
$polloptionpreview = daddslashes($polloptionpreview);
DB::query("INSERT INTO ".DB::table('forum_poll')." (tid, multiple, visible, maxchoices, expiration, overt, pollpreview)
VALUES ('$tid', '$pollarray[multiple]', '$pollarray[visible]', '$pollarray[maxchoices]', '$pollarray[expiration]', '$pollarray[overt]', '$polloptionpreview')");
} elseif($special == 4 && $_G['group']['allowpostactivity']) {
DB::query("INSERT INTO ".DB::table('forum_activity')." (tid, uid, cost, starttimefrom, starttimeto, place, class, gender, number, expiration, aid, ufield, credit)
VALUES ('$tid', '$_G[uid]', '$activity[cost]', '$activity[starttimefrom]', '$activity[starttimeto]', '$activity[place]', '$activity[class]', '$activity[gender]', '$activity[number]', '$activity[expiration]', '$_G[gp_activityaid]', '$activity[ufield]', '$activity[credit]')");
} elseif($special == 5 && $_G['group']['allowpostdebate']) {//note 辩论入库
DB::query("INSERT INTO ".DB::table('forum_debate')." (tid, uid, starttime, endtime, affirmdebaters, negadebaters, affirmvotes, negavotes, umpire, winner, bestdebater, affirmpoint, negapoint, umpirepoint)
VALUES ('$tid', '$_G[uid]', '$_G[timestamp]', '$endtime', '0', '0', '0', '0', '$_G[gp_umpire]', '', '', '$affirmpoint', '$negapoint', '')");
} else
*/ if($special == 127) {
$message .= chr(0).chr(0).chr(0).$specialextra;
}
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."'$value'";
$separator = ' ,';
}
if($_G['forum_optionlist'][$optionid]['type'] == 'image') {
$identifier = $_G['forum_optionlist'][$optionid]['identifier'];
$sortaids[] = intval($_G['gp_typeoption'][$identifier]['aid']);
}
DB::query("INSERT INTO ".DB::table('forum_typeoptionvar')." (sortid, tid, fid, optionid, value, expiration)
VALUES ('$sortid', '$tid', '$_G[fid]', '$optionid', '$value', '".($typeexpiration ? TIMESTAMP + $typeexpiration : 0)."')");
}
if($filedname && $valuelist) {
DB::query("INSERT INTO ".DB::table('forum_optionvalue')."$sortid ($filedname, tid, fid) VALUES ($valuelist, '$tid', '$_G[fid]')");
}
}
$bbcodeoff = checkbbcodes($message, !empty($_G['gp_bbcodeoff']));
$smileyoff = checksmilies($message, !empty($_G['gp_smileyoff']));
$parseurloff = !empty($_G['gp_parseurloff']);
$htmlon = $_G['group']['allowhtml'] && !empty($_G['gp_htmlon']) ? 1 : 0;
//$htmlon = $_G['gp_htmlon']; //zzcityadd
$usesig = !empty($_G['gp_usesig']) && $_G['group']['maxsigsize'] ? 1 : 0;
//自动标签
if ($_G['gp_tagauto']==1){
$subjectenc = rawurlencode(strip_tags($subject));
$messageenc = rawurlencode(strip_tags(preg_replace("/\[.+?\]/U", '', $message)));
$data = @implode('', file("http://keyword.discuz.com/related_kw.html?ics=".CHARSET."&ocs=".CHARSET."&title=$subjectenc&content=$messageenc"));
if($data) {
if(PHP_VERSION > '5' && CHARSET != 'utf-8') {
require_once libfile('class/chinese');
$chs = new Chinese('utf-8', CHARSET);
}
$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, $data, $values, $index);
xml_parser_free($parser);
$kws = array();
foreach($values as $valuearray) {
if($valuearray['tag'] == 'kw' || $valuearray['tag'] == 'ekw') {
$kws[] = !empty($chs) ? $chs->convert(trim($valuearray['value'])) : trim($valuearray['value']);
}
}
$zztags = '';
if($kws) {
foreach($kws as $kw) {
$kw = htmlspecialchars($kw);
$zztags .= $kw.' ';
}
$_G['gp_tags'] = htmlspecialchars($zztags);
}
}
}
$tagstr = addthreadtag($_G['gp_tags'], $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'] && $_G['gp_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]')");
}
$pinvisible = $modnewthreads ? -2 : (empty($_G['gp_save']) ? 0 : -3);
//zzcity add
//
function zzfileext($filename) {
return strtolower(substr(strrchr($filename, '.'), 1, 10));
}
$attachlist=explode(',',$_POST['etattachs']);
$curattachs='';
$message=preg_replace("/\[img([^\]]*?)\]/i",'[img]',$message);
foreach ($attachlist as $key => $value) {
$value=trim($value);
if(empty($value))continue;
if (preg_match("/".preg_quote($value,"/")."/i",$message)){
$message=preg_replace("/]*?)".preg_quote($value,"/")."([^<]*?)]*?)".preg_quote($value,"/")."([^<]*?)<\/(.*?)>/i",'[attachimg]'.$value.'[/attachimg]',$message);
$message=preg_replace("/]*?)".preg_quote($value,"/")."([^>]*?)>/i",'[attachimg]'.$value.'[/attachimg]',$message);
$message=preg_replace("/\[img([^\]]*?)\]".preg_quote($value,"/")."\[\/img\]/i",'[attachimg]'.$value.'[/attachimg]',$message);
$message=preg_replace("/]*?)".preg_quote($value,"/")."([^>]*?)>([^<]+?)<\/a(.*?)>/i",'[attach]'.$value.'[/attach]',$message);
$message=preg_replace("/\[url=".preg_quote($value,"/")."(.*?)\[\/url\]/i",'[attach]'.$value.'[/attach]',$message);
if (in_array(zzfileext('ext'),array("wma","mp3","ra","rm"))) {
$message=preg_replace("/