<?php

@$vercode=''; //此处取值请自行修改
if(!empty($vercode)){
		if ($_POST['vercode']!=$vercode){
		 echo("[err]invalid vercode[/err]");
		 exit();
		}
}



foreach($_POST as $key=>$value){
        $_GET[$key]=$value;
}

$_GET['mod']='post'; //zzcityadd
$_GET['action']='newthread'; //zzcityadd
if(isset($_GET['adddynamic'])){
    $_POST['adddynamic'] =$_GET['adddynamic'] = trim($_GET['adddynamic'])=='' ? '1' : $_GET['adddynamic']; //zzcity add 如果未设置则默认转播
}else{
    $_POST['adddynamic'] =$_GET['adddynamic']='1';
}
if(isset($_GET['cronpublish'])){
    $_POST['cronpublish'] =$_GET['cronpublish'] = trim($_GET['cronpublish'])=='' ? '0' : $_GET['cronpublish']; //zzcity add 如果未设置则默认不预发布
}else{
    $_POST['cronpublish'] =$_GET['cronpublish']='0';
}

if($_GET['cronpublish']='1'){
    if(isset($_GET['cronpublishhour'])){
        $_GET['cronpublishhour']=empty($_GET['cronpublishhour']) ? 0 :intval($_GET['cronpublishhour']);
    }else{
        $_GET['cronpublishhour']=0;
    }
    if ($_GET['cronpublishhour']>0){
        $zzcrontime=time()+3600*$_GET['cronpublishhour'];
        $zzcron=getdate($zzcrontime);
        if($zzcron['minutes']>=30){
            $_POST['cronpublishdate']=$_GET['cronpublishdate']=date("Y-m-d H:30");    
        }else{
            $_POST['cronpublishdate']=$_GET['cronpublishdate']=date("Y-m-d H:00");    
        }
    }else{
        if(isset($_GET['cronpublishdate'])){
            $_POST['cronpublishdate'] =$_GET['cronpublishdate'] = trim($_GET['cronpublishdate'])=='' ? '' : $_GET['cronpublishdate']; //zzcity add 如果未设置则默认不预发布
        }else{
            $_POST['cronpublishdate'] =$_GET['cronpublishdate']='';
        }
        if($_POST['cronpublishdate']<>''){

            if (trim($_POST['cronpublishdate'])<>''){
                $_POST['cronpublishdate']=str_replace(array('年', '月'), '-',$_POST['cronpublishdate']);
                $_POST['cronpublishdate']=str_replace(array('日'), '',$_POST['cronpublishdate']);
                if ($_POST['cronpublishdate'] && strlen(trim( $_POST['cronpublishdate'] )) <= 10) {
                 $_POST['cronpublishdate'] .= date('H:i');
                }
                if (strtotime($_POST['cronpublishdate'])==false||strtotime($_POST['cronpublishdate'])==-1){
                 echo("[err]定时时间格式错误[/err]");
                 exit();
                }
                $_GET['cronpublishdate'] =$_POST['cronpublishdate'];
            }

        }
        
    }
}

if($_GET['rushreply']='1'){
//	
//				$_GET['rushreplyfrom'] = strtotime($_GET['rushreplyfrom']);
//			$_GET['rushreplyto'] = strtotime($_GET['rushreplyto']);
//			$_GET['rewardfloor'] = trim($_GET['rewardfloor']);
//			$_GET['stopfloor'] = intval($_GET['stopfloor']);
//			$_GET['replylimit'] = intval($_GET['replylimit']);
//			$_GET['creditlimit'] = $_GET['creditlimit'] == '' ? '-996' : intval($_GET['creditlimit']);
//
//	if(isset($_GET['cronpublishdate'])){
//			$_POST['cronpublishdate'] =$_GET['cronpublishdate'] = trim($_GET['cronpublishdate'])=='' ? '' : $_GET['cronpublishdate']; //zzcity add 如果未设置则默认不预发布
//	}else{
//			$_POST['cronpublishdate'] =$_GET['cronpublishdate']='';
//	}
//	if($_POST['cronpublishdate']<>''){
//
//			if (trim($_POST['cronpublishdate'])<>''){
//					$_POST['cronpublishdate']=str_replace(array('年', '月'), '-',$_POST['cronpublishdate']);
//					$_POST['cronpublishdate']=str_replace(array('日'), '',$_POST['cronpublishdate']);
//					if ($_POST['cronpublishdate'] && strlen(trim( $_POST['cronpublishdate'] )) <= 10) {
//					 $_POST['cronpublishdate'] .= date('H:i');
//					}
//					if (strtotime($_POST['cronpublishdate'])==false||strtotime($_POST['cronpublishdate'])==-1){
//					 echo("[err]定时时间格式错误[/err]");
//					 exit();
//					}
//					$_GET['cronpublishdate'] =$_POST['cronpublishdate'];
//			}
//
//	}
}


define('APPTYPEID', 2);
define('CURSCRIPT', 'forum');
define('DISABLEXSSCHECK', true);

require './source/class/class_core.php';
require './source/function/function_forum.php';

$modarray = array('ajax','announcement','attachment','forumdisplay',
    'group','image','index','medal','misc','modcp','notice','post','redirect',
    'relatekw','relatethread','rss','topicadmin','trade','viewthread','tag','collection','guide'
);

$modcachelist = array(
    'index'        => 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', 'albumcategory'),
    'space'        => array('fields_required', 'fields_optional', 'custominfo'),
    'group'        => array('grouptype', 'diytemplatenamegroup'),
);

$mod = !in_array(C::app()->var['mod'], $modarray) ? 'index' : C::app()->var['mod'];


define('CURMODULE', $mod);
$cachelist = array();
if(isset($modcachelist[CURMODULE])) {
	$cachelist = $modcachelist[CURMODULE];

	$cachelist[] = 'plugin';
	$cachelist[] = 'pluginlanguage_system';
}
if(C::app()->var['mod'] == 'group') {
    $_G['basescript'] = 'group';
}

C::app()->cachelist = $cachelist;
C::app()->init();

//zzcity add
$member = array();
$member = c::t('common_member')->fetch_by_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;
    loadcache('usergroup_'.$_G['groupid']);
    C::app()->session->isnew = true;
    C::app()->session->updatesession();

    dsetcookie('auth', authcode("{$member['password']}\t{$member['uid']}", 'ENCODE'), $cookietime, 1, true);
    dsetcookie('loginuser');
    dsetcookie('activationauth');
    dsetcookie('pmnum');

    include_once libfile('function/stat');
    updatestat('login', 1);
    if(defined('IN_MOBILE')) {
        updatestat('mobilelogin', 1);
    }
    if($_G['setting']['connect']['allow'] && $_G['member']['conisbind']) {
        updatestat('connectlogin', 1);
    }
    $rule = updatecreditbyaction('daylogin', $_G['uid']);
    if(!$rule['updatecredit']) {
        checkusergroup($_G['uid']);
    }
    $_G['gp_htmlon']=$_GET['htmlon'] = trim($_GET['htmlon'])=='' ? '1' : $_GET['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');
}

if($_G['forum']['status'] == 3) {
    if(!helper_access::check_module('group')) {
        showmessage('group_status_off');
    }
    require_once libfile('function/group');
    $status = groupperm($_G['forum'], $_G['uid'], 'post');
    if($status == -1) {
        //showmessage('forum_not_group', 'index.php');
        exit('[err]该版块不是群组[/err]');
    } elseif($status == 1) {
        //showmessage('forum_group_status_off');
        exit('[err]该群组已经关闭[/err]');
    } elseif($status == 2) {
        //showmessage('forum_group_noallowed', "forum.php?mod=group&fid=$_G[fid]");
        exit('[err]您没有权限访问该群组[/err]');
    } elseif($status == 3) {
        //showmessage('forum_group_moderated', "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($_GET['action'])) {
    showmessage('undefined_action', NULL);
} elseif($_GET['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($_GET['action'] == 'reply') {
//    $addfeedcheck = !empty($space['privacy']['feed']['newreply']) ? 'checked="checked"': '';
//} else {
    $addfeedcheck = !empty($space['privacy']['feed']['newthread']) ? 'checked="checked"': '';
//}


$navigation = $navtitle = '';

if(!empty($_GET['cedit'])) {
    unset($_G['inajax'], $_GET['infloat'], $_GET['ajaxtarget'], $_GET['handlekey']);
}
/*
if($_GET['action'] == 'edit' || $_GET['action'] == 'reply') {

    $thread = C::t('forum_thread')->fetch($_G['tid']);
    if(!$_G['forum_auditstatuson'] && !($thread['displayorder']>=0 || (in_array($thread['displayorder'], array(-4, -2)) && $thread['authorid']==$_G['uid']))) {
        $thread = array();
    }
    if(!empty($thread)) {

        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($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($_GET['extra']) ? '&action=list&'.preg_replace("/^(&)*/", '', $_GET['extra']) : '').'#groupnav';
    $nav = get_groupnav($_G['forum']);
    $navigation = ' <em>&rsaquo;</em> <a href="group.php">'.$_G['setting']['navs'][3]['navname'].'</a> '.$nav['nav'];
} else {
    loadcache('forums');
    $returnurl = 'forum.php?mod=forumdisplay&fid='.$_G['fid'].(!empty($_GET['extra']) ? '&'.preg_replace("/^(&)*/", '', $_GET['extra']) : '');
    $navigation = ' <em>&rsaquo;</em> <a href="forum.php">'.$_G['setting']['navs'][2]['navname'].'</a>';

    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 .= ' <em>&rsaquo;</em> <a href="'.$t_link.'">'.($_G['cache']['forums'][$fup]['name']).'</a>';
    }

    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 .= ' <em>&rsaquo;</em> <a href="'.$t_link.'">'.($_G['cache']['forums'][$fup]['name']).'</a>';
    }

    $t_link = 'forum.php?mod=forumdisplay&fid='.$_G['fid'].($_GET['extra'] && !IS_ROBOT ? '&'.$_GET['extra'] : '');
    $navigation .= ' <em>&rsaquo;</em> <a href="'.$t_link.'">'.($_G['forum']['name']).'</a>';

    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'];
require_once libfile('function/upload');
$swfconfig = getuploadconfig($_G['uid'], $_G['fid']);
$imgexts = str_replace(array(';', '*.'), array(', ', ''), $swfconfig['imageexts']['ext']);
$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($_GET['extra']) ? rawurlencode($_GET['extra']) : '';
$notifycheck = empty($emailnotify) ? '' : 'checked="checked"';
$stickcheck = empty($sticktopic) ? '' : 'checked="checked"';
$digestcheck = empty($addtodigest) ? '' : 'checked="checked"';


$subject = isset($_GET['subject']) ? dhtmlspecialchars(censor(trim($_GET['subject']), NULL, FALSE, FALSE)) : '';
$subject = !empty($subject) ? str_replace("\t", ' ', $subject) : $subject;
$message = isset($_GET['message']) ? censor($_GET['message'], NULL, FALSE, FALSE) : '';

$polloptions = isset($polloptions) ? censor(trim($polloptions)) : '';
$readperm = isset($_GET['readperm']) ? intval($_GET['readperm']) : 0;
$price = isset($_GET['price']) ? intval($_GET['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');
}
*/

$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);
$_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"' : '';
$imgcontentcheck = !empty($thread['tid']) && getstatus($thread['status'], 15) ? 'checked="checked"' : '';
$specialextra = !empty($_GET['specialextra']) ? $_GET['specialextra'] : '';
$_G['forum']['threadplugin'] = dunserialize($_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'] : dunserialize($_G['forum']['threadplugin'])) ||
    !@in_array($specialextra, $_G['group']['allowthreadplugin']))) {
    $specialextra = '';
}
if($special == 3 && !isset($_G['setting']['extcredits'][$_G['setting']['creditstrans']])) {
    //showmessage('reward_credits_closed');
    exit('[err]交易积分被关闭，请联系管理员[/err]');
}

$_G['group']['allowanonymous'] = $_G['forum']['allowanonymous'] || $_G['group']['allowanonymous'] ? 1 : 0;

if($_GET['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']) {
		if(empty($_GET['specialextra'])) {
			foreach($_G['forum']['threadplugin'] as $tpid) {
				if(array_key_exists($tpid, $_G['setting']['threadplugins']) && @in_array($tpid, $_G['group']['allowthreadplugin'])){
					$specialextra=$tpid;
					break;
				}
			}
		}
        $threadpluginary = array_intersect($_G['forum']['threadplugin'], $_G['group']['allowthreadplugin']);
        $specialextra = in_array($specialextra, $threadpluginary) ? $specialextra : '';
    }

 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($_GET['action'] == 'newthread') {
    $policykey = 'post';
} elseif($_GET['action'] == 'reply') {
    $policykey = 'reply';
} else {
    $policykey = '';
}
if($policykey) {
    $postcredits = $_G['forum'][$policykey.'credits'] ? $_G['forum'][$policykey.'credits'] : $_G['setting']['creditspolicy'][$policykey];
}

$albumlist = array();
if(helper_access::check_module('album') && $_G['group']['allowupload'] && $_G['uid']) {
    $query = C::t('home_album')->fetch_all_by_uid($_G['uid'], 'updatetime');
    foreach($query as $value) {
        if($value['picnum']) {
            $albumlist[] = $value;
        }
    }
}

$posturl = "action=$_GET[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($_GET['firstpid']) ? "&firstpid=$firstpid" : '').
    (!empty($_GET['addtrade']) ? "&addtrade=$addtrade" : '');

if($_GET['action'] == 'reply') {
    check_allow_action('allowreply');
} else {
    check_allow_action('allowpost');
}

if($special == 4) {
    $_G['setting']['activityfield'] = $_G['setting']['activityfield'] ? dunserialize($_G['setting']['activityfield']) : array();
}
if(helper_access::check_module('album') && $_G['group']['allowupload'] && $_G['setting']['albumcategorystat'] && !empty($_G['cache']['albumcategory'])) {
    require_once libfile('function/portalcp');
}
$navtitle = lang('core', 'title_'.$_GET['action'].'_post');

/*
if($_GET['action'] == 'newthread' || $_GET['action'] == 'newtrade') {
    loadcache('groupreadaccess');
    $navtitle .= ' - '.$_G['forum']['name'];
    require_once libfile('post/newthread', 'include');
} elseif($_GET['action'] == 'reply') {
    $navtitle .= ' - '.$thread['subject'].' - '.$_G['forum']['name'];
    require_once libfile('post/newreply', 'include');
} elseif($_GET['action'] == 'edit') {
    loadcache('groupreadaccess');
    $navtitle .= ' - '.$thread['subject'].' - '.$_G['forum']['name'];
    require_once libfile('post/editpost', '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();
    foreach(C::t('forum_post')->fetch_all_by_authorid(0, $_G['uid'], false, '', 0, 20, 1, -3) as $savethread) {
  $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('post/threadsorts', 'include');
    }

 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 {
*/


	//model_forum_thread.php开始
	class model_zz_forum_thread extends discuz_model
	{
	
		public $forum;
	
		public $thread;
	
		public $post;
	
		public $tid;
	
		public $pid;
	
		public $feed = array();
	
		public function __construct($fid = null) {
			parent::__construct();
			if($fid) {
				include_once libfile('function/forum');
				loadforum($fid);
			}
			$this->forum = &$this->app->var['forum'];
		}
	
		public function newthread($parameters) {
			require_once libfile('function/post');
			$this->tid = $this->pid = 0;
			$this->_init_parameters($parameters);
	
			if(trim($this->param['subject']) == '') {
//				return $this->showmessage('post_sm_isnull');
			    exit('[err]'.lang('message', 'post_sm_isnull').'[/err]');
			}
	
			if(!$this->param['sortid'] && !$this->param['special'] && trim($this->param['message']) == '') {
//				return $this->showmessage('post_sm_isnull');
			    exit('[err]'.lang('message', 'post_sm_isnull').'[/err]');
			}
			list($this->param['modnewthreads'], $this->param['modnewreplies']) = threadmodstatus($this->param['subject']."\t".$this->param['message'].$this->param['extramessage']);
	
			if(($post_invalid = checkpost($this->param['subject'], $this->param['message'], ($this->param['special'] || $this->param['sortid'])))) {
//				return $this->showmessage($post_invalid, '', array('minpostsize' => $this->setting['minpostsize'], 'maxpostsize' => $this->setting['maxpostsize']));
          exit('[err]'.lang('message',$post_invalid, array('minpostsize' => $this->setting['minpostsize'], 'maxpostsize' => $this->setting['maxpostsize'])).'[/err]');

			}
	
//			if(checkflood()) {
//				return $this->showmessage('post_flood_ctrl', '', array('floodctrl' => $this->setting['floodctrl']));
//			} elseif(checkmaxperhour('tid')) {
//				return $this->showmessage('thread_flood_ctrl_threads_per_hour', '', array('threads_per_hour' => $this->group['maxthreadsperhour']));
//			}
			$this->param['save'] = $this->member['uid'] ? $this->param['save'] : 0;
	
			$this->param['typeid'] = isset($this->param['typeid']) && isset($this->forum['threadtypes']['types'][$this->param['typeid']]) && (!$this->forum['threadtypes']['moderators'][$this->param['typeid']] || $this->forum['ismoderator']) ? $this->param['typeid'] : 0;
	
			$this->param['displayorder'] = $this->param['modnewthreads'] ? -2 : (($this->forum['ismoderator'] && $this->group['allowstickthread'] && !empty($this->param['sticktopic'])) ? 1 : (empty($this->param['save']) ? 0 : -4));
			if($this->param['displayorder'] == -2) {
				C::t('forum_forum')->update($this->forum['fid'], array('modworks' => '1'));
			}
	
			$this->param['digest'] = $this->forum['ismoderator'] && $this->group['allowdigestthread'] && !empty($this->param['digest']) ? 1 : 0;
			$this->param['readperm'] = $this->group['allowsetreadperm'] ? $this->param['readperm'] : 0;
			$this->param['isanonymous'] = $this->group['allowanonymous'] && $this->param['isanonymous'] ? 1 : 0;
			$this->param['price'] = intval($this->param['price']);
			if(!$this->param['special']) {
				$this->param['price'] = $this->group['maxprice'] ? ($this->param['price'] <= $this->group['maxprice'] ? $this->param['price'] : $this->group['maxprice']) : 0;
			}
	
			if(!$this->param['typeid'] && $this->forum['threadtypes']['required'] && !$this->param['special']) {
//				return $this->showmessage('post_type_isnull');
			    exit('[err]'.lang('message', 'post_type_isnull').'[/err]');
			}
	
			if(!$this->param['sortid'] && $this->forum['threadsorts']['required'] && !$this->param['special']) {
//				return $this->showmessage('post_sort_isnull');
			    exit('[err]'.lang('message', 'post_sort_isnull').'[/err]');
			}
	
			if(!$this->param['special'] && $this->param['price'] > 0 && floor($this->param['price'] * (1 - $this->setting['creditstax'])) == 0) {
//				return $this->showmessage('post_net_price_iszero');
			    exit('[err]'.lang('message', 'post_net_price_iszero').'[/err]');
			}
	
	
			$this->param['sortid'] = $this->param['special'] && $this->forum['threadsorts']['types'][$this->param['sortid']] ? 0 : $this->param['sortid'];
			$this->param['typeexpiration'] = intval($this->param['typeexpiration']);
	
			if($this->forum['threadsorts']['expiration'][$this->param['typeid']] && !$this->param['typeexpiration']) {
//				return $this->showmessage('threadtype_expiration_invalid');
			    exit('[err]'.lang('message', 'threadtype_expiration_invalid').'[/err]');
			}
	
			$author = !$this->param['isanonymous'] ? $this->member['username'] : '';
	
			$this->param['moderated'] = $this->param['digest'] || $this->param['displayorder'] > 0 ? 1 : 0;
	
	
			$this->param['ordertype'] && $this->param['tstatus'] = setstatus(4, 1, $this->param['tstatus']);
	
			$this->param['imgcontent'] && $this->param['tstatus'] = setstatus(15, $this->param['imgcontent'], $this->param['tstatus']);
	
			$this->param['hiddenreplies'] && $this->param['tstatus'] = setstatus(2, 1, $this->param['tstatus']);
	
	
			$this->param['allownoticeauthor'] && $this->param['tstatus'] = setstatus(6, 1, $this->param['tstatus']);
			$this->param['isgroup'] = $this->forum['status'] == 3 ? 1 : 0;
	
			$newthread = array(
				'fid' => $this->forum['fid'],
				'posttableid' => 0,
				'readperm' => $this->param['readperm'],
				'price' => $this->param['price'],
				'typeid' => $this->param['typeid'],
				'sortid' => $this->param['sortid'],
				'author' => $author,
				'authorid' => $this->member['uid'],
				'subject' => $this->param['subject'],
				'dateline' => $this->param['publishdate'],
				'lastpost' => $this->param['publishdate'],
				'lastposter' => $author,
				'displayorder' => $this->param['displayorder'],
				'digest' => $this->param['digest'],
				'special' => $this->param['special'],
				'attachment' => 0,
				'moderated' => $this->param['moderated'],
				'status' => $this->param['tstatus'],
				'isgroup' => $this->param['isgroup'],
				'replycredit' => $this->param['replycredit'],
				'closed' => $this->param['closed'] ? 1 : 0,
				'views' => $this->param['views']
				
			);

			$this->tid = C::t('forum_thread')->insert($newthread, true);
			C::t('forum_newthread')->insert(array(
					'tid' => $this->tid,
					'fid' => $this->forum['fid'],
					'dateline' => $this->param['publishdate'],
			));
			useractionlog($this->member['uid'], 'tid');
	
			if(!getuserprofile('threads') && $this->setting['newbie']) {
				C::t('forum_thread')->update($this->tid, array('icon' => $this->setting['newbie']));
			}
			if ($this->param['publishdate'] != TIMESTAMP) {
				$cron_publish_ids = dunserialize($this->cache('cronpublish'));
				$cron_publish_ids[$this->tid] = $this->tid;
				$cron_publish_ids = serialize($cron_publish_ids);
				savecache('cronpublish', $cron_publish_ids);
			}
	
			if(!$this->param['isanonymous']) {
				C::t('common_member_field_home')->update($this->member['uid'], array('recentnote'=>$this->param['subject']));
			}
	
			if($this->param['moderated']) {
				updatemodlog($this->tid, ($this->param['displayorder'] > 0 ? 'STK' : 'DIG'));
				updatemodworks(($this->param['displayorder'] > 0 ? 'STK' : 'DIG'), 1);
			}
	
			$this->param['bbcodeoff'] = checkbbcodes($this->param['message'], !empty($this->param['bbcodeoff']));
			$this->param['smileyoff'] = checksmilies($this->param['message'], !empty($this->param['smileyoff']));
			$this->param['parseurloff'] = !empty($this->param['parseurloff']);
			$this->param['htmlon'] = $this->group['allowhtml'] && !empty($this->param['htmlon']) ? 1 : 0;
			$this->param['usesig'] = !empty($this->param['usesig']) && $this->group['maxsigsize'] ? 1 : 0;
			$class_tag = new tag();
			$this->param['tagstr'] = $class_tag->add_tag($this->param['tags'], $this->tid, 'tid');
	
	
			$this->param['pinvisible'] = $this->param['modnewthreads'] ? -2 : (empty($this->param['save']) ? 0 : -3);
			$this->param['message'] = preg_replace('/\[attachimg\](\d+)\[\/attachimg\]/is', '[attach]\1[/attach]', $this->param['message']);
	
			$this->param['pstatus'] = intval($this->param['pstatus']);
			defined('IN_MOBILE') && $this->param['pstatus'] = setstatus(4, 1, $this->param['pstatus']);
	
			if($this->param['imgcontent']) {
				stringtopic($this->param['message'], $this->tid, true, $this->param['imgcontentwidth']);
			}
			$this->pid = insertpost(array(
				'fid' => $this->forum['fid'],
				'tid' => $this->tid,
				'first' => '1',
				'author' => $this->member['username'],
				'authorid' => $this->member['uid'],
				'subject' => $this->param['subject'],
				'dateline' => $this->param['publishdate'],
				'message' => $this->param['message'],
				'useip' => $this->param['clientip'] ? $this->param['clientip'] : getglobal('clientip'),
				'invisible' => $this->param['pinvisible'],
				'anonymous' => $this->param['isanonymous'],
				'usesig' => $this->param['usesig'],
				'htmlon' => $this->param['htmlon'],
				'bbcodeoff' => $this->param['bbcodeoff'],
				'smileyoff' => $this->param['smileyoff'],
				'parseurloff' => $this->param['parseurloff'],
				'attachment' => '0',
				'tags' => $this->param['tagstr'],
				'replycredit' => 0,
				'status' => $this->param['pstatus']
			));
	
			$statarr = array(0 => 'thread', 1 => 'poll', 2 => 'trade', 3 => 'reward', 4 => 'activity', 5 => 'debate', 127 => 'thread');
			include_once libfile('function/stat');
			updatestat($this->param['isgroup'] ? 'groupthread' : $statarr[$this->param['special']]);
	
			if($this->param['geoloc'] && IN_MOBILE == 2) {
				list($mapx, $mapy, $location) = explode('|', $this->param['geoloc']);
				if($mapx && $mapy && $location) {
					C::t('forum_post_location')->insert(array(
						'pid' => $this->pid,
						'tid' => $this->tid,
						'uid' => $this->member['uid'],
						'mapx' => $mapx,
						'mapy' => $mapy,
						'location' => $location,
					));
				}
			}
	
			if($this->param['modnewthreads']) {
				updatemoderate('tid', $this->tid);
				C::t('forum_forum')->update_forum_counter($this->forum['fid'], 0, 0, 1);
				manage_addnotify('verifythread');
				return 'post_newthread_mod_succeed';
			} else {
	
				if($this->param['displayorder'] != -4) {
					if($this->param['digest']) {
						updatepostcredits('+',  $this->member['uid'], 'digest', $this->forum['fid']);
					}
					updatepostcredits('+',  $this->member['uid'], 'post', $this->forum['fid']);
					if($this->param['isgroup']) {
						C::t('forum_groupuser')->update_counter_for_user($this->member['uid'], $this->forum['fid'], 1);
					}
	
					$subject = str_replace("\t", ' ', $this->param['subject']);
					$lastpost = "$this->tid\t".$subject."\t".TIMESTAMP."\t$author";
					C::t('forum_forum')->update($this->forum['fid'], array('lastpost' => $lastpost));
					C::t('forum_forum')->update_forum_counter($this->forum['fid'], 1, 1, 1);
					if($this->forum['type'] == 'sub') {
						C::t('forum_forum')->update($this->forum['fup'], array('lastpost' => $lastpost));
					}
				}
	
				if($this->param['isgroup']) {
					C::t('forum_forumfield')->update($this->forum['fid'], array('lastupdate' => TIMESTAMP));
					require_once libfile('function/grouplog');
					updategroupcreditlog($this->forum['fid'], $this->member['uid']);
				}
	
				C::t('forum_sofa')->insert(array('tid' => $this->tid,'fid' => $this->forum['fid']));
	
				return 'post_newthread_succeed';
	
			}
	
		}
	
		public function feed() {
			if($this->forum('allowfeed') && !$this->param['isanonymous']) {
				if(empty($this->feed)) {
					$this->feed = array(
						'icon' => '',
						'title_template' => '',
						'title_data' => array(),
						'body_template' => '',
						'body_data' => array(),
						'title_data' => array(),
						'images' => array()
					);
	
					$message = !$this->param['price'] && !$this->param['readperm'] ? $this->param['message'] : '';

					$message = messagesafeclear($message);
					
					$this->feed['icon'] = 'thread';
					$this->feed['title_template'] = 'feed_thread_title';
					$this->feed['body_template'] = 'feed_thread_message';
					$this->feed['body_data'] = array(
						'subject' => "<a href=\"forum.php?mod=viewthread&tid={$this->tid}\">{$this->param['subject']}</a>",
						'message' => messagecutstr($message, 150)
					);
					if(getglobal('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");
						$imgattach = C::t('forum_attachment_n')->fetch_max_image('tid:'.$this->tid, 'pid', $this->pid);
						$firstaid = $imgattach['aid'];
						unset($imgattach);
						if($firstaid) {
							$this->feed['images'] = array(getforumimg($firstaid));
							$this->feed['image_links'] = array("forum.php?mod=viewthread&do=tradeinfo&tid={$this->tid}&pid={$this->pid}");
						}
					}
	
				}
	
	
				$this->feed['title_data']['hash_data'] = 'tid'.$this->tid;
				$this->feed['id'] = $this->tid;
				$this->feed['idtype'] = 'tid';
				if($this->feed['icon']) {
					postfeed($this->feed);
				}
			}
		}
		protected function _init_parameters($parameters){
	
			$varname = array(
				'member', 'group', 'forum', 'extramessage',
				'subject', 'sticktopic', 'save', 'ordertype', 'hiddenreplies',
				'allownoticeauthor', 'readperm', 'price', 'typeid', 'sortid',
				'publishdate', 'digest', 'moderated', 'tstatus', 'isgroup', 'imgcontent', 'imgcontentwidth',
				'replycredit', 'closed', 'special', 'tags',
				'message','clientip', 'invisible', 'isanonymous', 'usesig',
				'htmlon', 'bbcodeoff', 'smileyoff', 'parseurloff', 'pstatus', 'geoloc','views'
			);
			foreach($varname as $name) {
				if(!isset($this->param[$name]) && isset($parameters[$name])) {
					$this->param[$name] = $parameters[$name];
				}
			}
	
		}
	
	
		public function forum($name = null, $val = null) {
			if(isset($val)) {
				return $this->setvar($this->forum, $name, $val);
			} else {
				return $this->getvar($this->forum, $name);
			}
		}
	
	
	}	
	//类结束
		
		

		
	if($_GET['mygroupid']) {
		$mygroupid = explode('__', $_GET['mygroupid']);
		$mygid = intval($mygroupid[0]);
		if($mygid) {
			$mygname = $mygroupid[1];
			if(count($mygroupid) > 2) {
				unset($mygroupid[0]);
				$mygname = implode('__', $mygroupid);
			}
			$message .= '[groupid='.intval($mygid).']'.$mygname.'[/groupid]';
			C::t('forum_forum')->update_commoncredits(intval($mygroupid[0]));
		}
	}
	$modthread = C::m('zz_forum_thread');
	$bfmethods = $afmethods = array();

	$params = array(
		'subject' => $subject,
		'message' => $message,
		'typeid' => $typeid,
		'sortid' => $sortid,
		'special' => $special,
	);
	$_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'];
	}
	$params['publishdate'] = $publishdate;
	$params['save'] = $_GET['save'];

	$params['sticktopic'] = $_GET['sticktopic'];

	$params['digest'] = $_GET['addtodigest'];
	$params['readperm'] = $readperm;
	$params['isanonymous'] = $_GET['isanonymous'];
	$params['price'] = $_GET['price'];


	if(in_array($special, array(1, 2, 3, 4, 5))) {
		$specials = array(
			1 => 'extend_thread_poll',
			2 => 'extend_thread_trade',
			3 => 'extend_thread_reward',
			4 => 'extend_thread_activity',
			5 => 'extend_thread_debate'
		);
		$bfmethods[] = array('class' => $specials[$special], 'method' => 'before_newthread');
		$afmethods[] = array('class' => $specials[$special], 'method' => 'after_newthread');

		if(!empty($_GET['addfeed'])) {
			$modthread->attach_before_method('feed', array('class' => $specials[$special], 'method' => 'before_feed'));
			if($special == 2) {
				$modthread->attach_before_method('feed', array('class' => $specials[$special], 'method' => 'before_replyfeed'));
			}
		}
	}

		
	if($special == 1) {
	} elseif($special == 3) {
	} elseif($special == 4) {
	} elseif($special == 5) {
	} elseif($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;
		$params['special'] = 127;
		$params['message'] .= chr(0).chr(0).chr(0).$specialextra;

	}

	$params['typeexpiration'] = $_GET['typeexpiration'];

	$params['ordertype'] = $_GET['ordertype'];

	$params['hiddenreplies'] = $_GET['hiddenreplies'];

	$params['allownoticeauthor'] = $_GET['allownoticeauthor'];
	
	 //自动标签
  if ($_GET['tagauto']==1){
        $subjectenc = rawurlencode(strip_tags($subject));
		$messageenc =messagecutstr($message, 400);
        $messageenc = rawurlencode(strip_tags(preg_replace("/\[.+?\]/U", '', $messageenc)));
        $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 = dhtmlspecialchars($kw);
                    $zztags .= $kw.' ';
                }
                $_GET['tags']  = dhtmlspecialchars($zztags);
            }
            
  
      }
 
	}

	$params['tags'] = $_GET['tags'];
	
	
	$params['bbcodeoff'] = $_GET['bbcodeoff'];
	$params['smileyoff'] = $_GET['smileyoff'];
	$params['parseurloff'] = $_GET['parseurloff'];
	$params['usesig'] = $_GET['usesig'];
	$params['htmlon'] = $_GET['htmlon'];

	$views=rand(30,$_GET['maxclick']); 	
	$params['views'] =$views;
	//
	if($_G['group']['allowimgcontent']) {
		$params['imgcontent'] = $_GET['imgcontent'];
		$params['imgcontentwidth'] = $_G['setting']['imgcontentwidth'] ? intval($_G['setting']['imgcontentwidth']) : 100;
	}

	$params['geoloc'] = diconv($_GET['geoloc'], 'UTF-8');

	if($_GET['rushreply']) {
		$bfmethods[] = array('class' => 'extend_thread_rushreply', 'method' => 'before_newthread');
		$afmethods[] = array('class' => 'extend_thread_rushreply', 'method' => 'after_newthread');
	}

	$bfmethods[] = array('class' => 'extend_thread_replycredit', 'method' => 'before_newthread');
	$afmethods[] = array('class' => 'extend_thread_replycredit', 'method' => 'after_newthread');


	if($sortid) {
		$bfmethods[] = array('class' => 'extend_thread_sort', 'method' => 'before_newthread');
		$afmethods[] = array('class' => 'extend_thread_sort', 'method' => 'after_newthread');
	}
	$bfmethods[] = array('class' => 'extend_thread_allowat', 'method' => 'before_newthread');
	$afmethods[] = array('class' => 'extend_thread_allowat', 'method' => 'after_newthread');
	$afmethods[] = array('class' => 'extend_thread_image', 'method' => 'after_newthread');

	if(!empty($_GET['adddynamic'])) {
		$afmethods[] = array('class' => 'extend_thread_follow', 'method' => 'after_newthread');
	}

	$modthread->attach_before_methods('newthread', $bfmethods);
	$modthread->attach_after_methods('newthread', $afmethods);
	//zzcity add

	function zzfileext($filename) {
	return strtolower(substr(strrchr($filename, '.'), 1, 10));
	}
	
	$attachlist=explode(',',$_POST['etattachs']);
	$curattachs='';
	foreach ($attachlist as $key => $value) {
		$value=trim($value);
		if(empty($value))continue;
		if (preg_match("/".preg_quote($value,"/")."/i",$message)){
		 $message=preg_replace("/<a([^>]*?)".preg_quote($value,"/")."([^<]*?)<img([^>]*?)".preg_quote($value,"/")."([^<]*?)<\/(.*?)>/i",'[attachimg]'.$value.'[/attachimg]',$message);
		 $message=preg_replace("/<img([^>]*?)".preg_quote($value,"/")."([^>]*?)>/i",'[attachimg]'.$value.'[/attachimg]',$message);
		 $message=preg_replace("/\[img([^\]]*?)\]".preg_quote($value,"/")."\[\/img\]/i",'[attachimg]'.$value.'[/attachimg]',$message);
	
		 $message=preg_replace("/<a([^>]*?)".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($value),array("wma","mp3","ra","rm"))) {

			$message=preg_replace("/<embed([^>]*?)".preg_quote($value,"/")."([^<]*?)<\/embed>/i",'[audio=1]'.$value.'[/audio]',$message);
			$message=preg_replace("/<embed([^>]*?)".preg_quote($value,"/")."([^>]*?)>/i",'[audio=1]'.$value.'[/audio]',$message);
		 }elseif  (in_array(zzfileext($value), array('wmv','rmvb','avi','mov'))){
			$message=preg_replace("/<embed([^>]*?)".preg_quote($value,"/")."([^<]*?)<\/embed>/i",'[media='.zzfileext($value).',500,375,1]'.$value.'[/media]',$message);
			$message=preg_replace("/<embed([^>]*?)".preg_quote($value,"/")."([^>]*?)>/i",'[media='.zzfileext($value).',500,375,1]'.$value.'[/media]',$message);
		 }elseif  (in_array(zzfileext($value), array('swf','flv'))){
			$message=preg_replace("/<embed([^>]*?)".preg_quote($value,"/")."([^<]*?)<\/embed>/i",'[flash]'.$value.'[/flash]',$message);
			$message=preg_replace("/<embed([^>]*?)".preg_quote($value,"/")."([^>]*?)>/i",'[flash]'.$value.'[/flash]',$message);
		 }
	 $curattachs.= empty($curattachs) ? $value:','.$value;
	 
	}
	}

	$message = preg_replace('/\[attachimg\](.+?)\[\/attachimg\]/is', '[attach]\1[/attach]', $message);
	$params['message'] =$message;

	//zzcity close

	$return = $modthread->newthread($params);
	$tid = $modthread->tid;
	
	$pid = $modthread->pid; //zzcity

	//zzcity add attachment
 $ashowurl =  empty($_POST['ashowurl']) ? "/data/attachment/forum" : trim($_POST['ashowurl']);
 
 $ashowurl = substr($ashowurl,-1)=="/" ? $ashowurl: $ashowurl.'/';
 

 $curalist=explode(',',$curattachs);
 $attachnum =  empty($curattachs) ? 0 :count($curalist);
 $zzattachtype=0;
 if ($attachnum){

   $zzattachtype=1;
   //
   function zzis_image_ext($ext) {
    static $imgext  = array('jpg', 'jpeg', 'gif', 'png', 'bmp');
    return in_array($ext, $imgext) ? 1 : 0;
   }
   //
   function zzget_target_extension($ext) {
    static $safeext  = array('attach', 'jpg', 'jpeg', 'gif', 'png', 'swf', 'bmp', 'txt', 'zip', 'rar', 'mp3');
    return strtolower(!in_array(strtolower($ext), $safeext) ? 'attach' : $ext);
   }
   function zzforum_upload($filename) {
    global $_G,$zzattachtype;
 
    $zzuid = intval($_G['uid']);
//    $swfhash = md5(substr(md5($_G['config']['security']['authkey']), 8).$this->uid);
  
     $zzaid = 0;
//     $zzsimple = !empty($_G['gp_simple']) ? $_G['gp_simple'] : 0;
  
//     $_G['groupid'] = intval(DB::result_first("SELECT groupid FROM ".DB::table('common_member')." WHERE uid='".$this->uid."'"));
//     loadcache('usergroup_'.$_G['groupid']);
//     $_G['group'] = $_G['cache']['usergroup_'.$_G['groupid']];
  
  
//     $upload = new discuz_upload();
//     $upload->init($_FILES['Filedata'], 'forum');
//     $this->attach = &$upload->attach;
     $thistype='forum';
     $attach=array();
  	 if (strpos($filename,'/')){
     	$attach['name'] =  trim(substr(strrchr($filename,'/'),1));
		 }else{
     	$attach['name'] =  trim($filename);
		 }
     $attach['thumb'] = '';
     
     $attach['name'] =  dhtmlspecialchars($attach['name'], ENT_QUOTES);
     if(strlen($attach['name']) > 90) {
      $attach['name'] = cutstr($attach['name'], 90, '').'.'.$attach['ext'];
     }
     $attach['ext'] = zzfileext($attach['name']);
     $attach['isimage'] = zzis_image_ext($attach['ext']);
    
     $attach['extension'] = zzget_target_extension($attach['ext']);
     
//     $attach['attachdir'] = $this->get_target_dir($thistype, $extid);
//     $attach['attachment'] = $attach['attachdir'].$this->get_target_filename($this->type, $this->extid, $this->forcename).'.'.$attach['extension'];
     $attach['attachment'] = $filename;
     $attach['target'] = getglobal('setting/attachdir').'./'.$thistype.'/'.$attach['attachment'];
     $attach['size'] = intval(filesize($attach['target']));

  
//     if($upload->error()) {
//      $this->uploadmsg(2);
//     }
//  
//     $allowupload = !$_G['group']['maxattachnum'] || $_G['group']['maxattachnum'] && $_G['group']['maxattachnum'] > DB::result_first("SELECT count(*) FROM ".DB::table('forum_attachment')." WHERE uid='$_G[uid]' AND dateline>'$_G[timestamp]'-86400");
//     if(!$allowupload) {
//      $this->uploadmsg(9);
//     }
  
//     if($_G['group']['attachextensions'] && (!preg_match("/(^|\s|,)".preg_quote($upload->attach['ext'], '/')."($|\s|,)/i", $_G['group']['attachextensions']) || !$upload->attach['ext'])) {
//      $this->uploadmsg(1);
//     }
  
//     if(empty($upload->attach['size'])) {
//      $this->uploadmsg(2);
//     }
  
//     if($_G['group']['maxattachsize'] && $upload->attach['size'] > $_G['group']['maxattachsize']) {
//      $this->uploadmsg(3);
//     }
//  
//     if($type = DB::fetch_first("SELECT maxsize FROM ".DB::table('forum_attachtype')." WHERE extension='".addslashes($upload->attach['ext'])."'")) {
//      if($type['maxsize'] == 0) {
//       $this->uploadmsg(4);
//      } elseif($upload->attach['size'] > $type['maxsize']) {
//       $this->uploadmsg(5);
//      }
//     }
  
//     if($upload->attach['size'] && $_G['group']['maxsizeperday']) {
//      $todaysize = intval(DB::result_first("SELECT SUM(filesize) FROM ".DB::table('forum_attachment')." WHERE uid='$_G[uid]' AND dateline>'$_G[timestamp]'-86400"));
//      $todaysize += $upload->attach['size'];
//      if($todaysize >= $_G['group']['maxsizeperday']) {
//       $this->uploadmsg(6);
//      }
//     }
//     $upload->save();
//     if($upload->error() == -103) {
//      $this->uploadmsg(8);
//     } elseif($upload->error()) {
//      $this->uploadmsg(9);
//     }
  $thumb = $remote = $width = 0;
  if($attach['isimage']) {
        $zzattachtype=2;
        require_once libfile('class/image');
        $image = new image;    
        
        
        if($_G['setting']['thumbstatus']) {
        //$thumb = $image->Thumb($upload->attach['target'], '', $_G['setting']['thumbwidth'], $_G['setting']['thumbheight'], $_G['setting']['thumbstatus'], $_G['setting']['thumbsource']) ? 1 : 0;
        $thumb = $image->Thumb($attach['target'], '', $_G['setting']['thumbwidth'], $_G['setting']['thumbheight'], $_G['setting']['thumbstatus'], $_G['setting']['thumbsource']) ? 1 : 0;
        
        }
        if($_G['setting']['watermarkstatus'] && empty($_G['forum']['disablewatermark'])) {
            $image->Watermark($attach['target']);
        }    
         
   $width = $image->imginfo['width'];
   if($_G['setting']['thumbsource'] || !$_G['setting']['thumbstatus']) {
    list($width) = @getimagesize($attach['target']);
   }
   
  }
//     if(!$zzsimple) {
//      $attach['name'] = diconv($attach['name'], 'utf-8');
//     }
//     if($_G['gp_type'] != 'image' && $attach['isimage']) {
//      $attach['isimage'] = -1;
//     }
  $zzaid=getattachnewaid($zzuid);

  DB::query("INSERT INTO ".DB::table('forum_attachment_unused')." (aid, dateline, filename, filesize, attachment, isimage, uid, thumb, remote, width)
   VALUES ('$zzaid', '$_G[timestamp]', '".$attach['name']."', '".$attach['size']."', '".$attach['attachment']."', '".$attach['isimage']."', '".$zzuid."', '$thumb', '$remote', '$width')");
 
     return $zzaid;
//     $this->uploadmsg(0);
  
   }

 foreach ($curalist as $key => $value) {
  $oldvalue=$value;
  $value=str_replace($ashowurl,'',$value);
  $aid=zzforum_upload($value);
  $message=str_replace(']'.$oldvalue.'[',']'.$aid.'[',$message);
	$message=str_replace("attach://".$oldvalue,'attach://'.$aid.'.'.zzfileext($oldvalue),$message);
	
  $aids[]=$aid;

 }
 
	C::t('forum_thread')->update($tid, array('attachment'=>$zzattachtype));

	C::t('forum_post')->update('tid:'.$tid, $pid, array('message' => $message,'attachment' => $zzattachtype), true);

 foreach($aids as $key => $value){
  convertunusedattach($value,$tid,$pid); 
 }
 if(getglobal('setting/ftp/on')){
  ftpupload($aids,intval($_G['uid']));
 }
} 
//zzcity add attachment close


 $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']))) {
//    if($attachnum){
//        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' => '');
//    $param = array();

    if($_G['forum']['picstyle']) {
        setthreadcover($pid, 0, $threadimageaid);
    }

    if($threadimageaid>0) {
        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'],
        ));
    }


 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'], $modthread->tid);
		}
	}
	if(!$modthread->param('modnewthreads') && !empty($_GET['addfeed'])) {
		$modthread->feed();
	}

//	if(!empty($_G['setting']['rewriterule']['forum_viewthread']) && in_array('forum_viewthread', $_G['setting']['rewritestatus'])) {
//		$returnurl = rewriteoutput('forum_viewthread', 1, '', $modthread->tid, 1, '', $extra);
//	} else {
//		$returnurl = "forum.php?mod=viewthread&tid={$modthread->tid}&extra=$extra";
//	}
//	$values = array('fid' => $modthread->forum('fid'), 'tid' => $modthread->tid, 'pid' => $modthread->pid, 'coverimg' => '', 'sechash' => !empty($_GET['sechash']) ? $_GET['sechash'] : '');
	//showmessage($return, $returnurl, array_merge($values, (array)$modthread->param('values')), $modthread->param('param'));

 exit('[reply]tid='.$tid.';pid='.$modthread->pid.'[/reply]'); //zzcityadd

//}
//require_once libfile('post/newthread', 'include');替换结束




function check_allow_action($action = 'allowpost') {
 global $_G;
// if(isset($_G['forum'][$action]) && $_G['forum'][$action] == -1) {
//  showmessage('forum_access_disallow');
// }
}

function recent_use_tag() {
    $tagarray = $stringarray = array();
    $string = '';
    $i = 0;
    $query = C::t('common_tagitem')->select(0, 0, 'tid', 'itemid', 'DESC', 10);
    foreach($query as $result) {
        if($i > 4) {
            break;
        }
        if($tagarray[$result['tagid']] == '') {
            $i++;
        }
        $tagarray[$result['tagid']] = 1;
    }
    if($tagarray) {
        $query = C::t('common_tag')->fetch_all(array_keys($tagarray));
        foreach($query as $result) {
            $tagarray[$result[tagid]] = $result['tagname'];
        }
    }
    return $tagarray;
}



//require DISCUZ_ROOT.'./source/module/forum/forum_'.$mod.'.php';替换结束

?>
