$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 = ' '.$_G['setting']['navs'][3]['navname'].' '.$nav['nav']; } else { loadcache('forums'); $returnurl = 'forum.php?mod=forumdisplay&fid='.$_G['fid'].(!empty($_GET['extra']) ? '&'.preg_replace("/^(&)*/", '', $_GET['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 .= ' '.($_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 .= ' '.($_G['cache']['forums'][$fup]['name']).''; } $t_link = 'forum.php?mod=forumdisplay&fid='.$_G['fid'].($_GET['extra'] && !IS_ROBOT ? '&'.$_GET['extra'] : ''); $navigation .= ' '.($_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']; 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']))) : ''; $subject = !empty($subject) ? str_replace("\t", ' ', $subject) : $subject; $message = isset($_GET['message']) ? censor($_GET['message']) : ''; $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' => "tid}\">{$this->param['subject']}", '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 = 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 = 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("/]*?)".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($value),array("wma","mp3","ra","rm"))) { $message=preg_replace("/]*?)".preg_quote($value,"/")."([^<]*?)<\/embed>/i",'[audio=1]'.$value.'[/audio]',$message); $message=preg_replace("/]*?)".preg_quote($value,"/")."([^>]*?)>/i",'[audio=1]'.$value.'[/audio]',$message); }elseif (in_array(zzfileext($value), array('wmv','rmvb','avi','mov'))){ $message=preg_replace("/]*?)".preg_quote($value,"/")."([^<]*?)<\/embed>/i",'[media='.zzfileext($value).',500,375,1]'.$value.'[/media]',$message); $message=preg_replace("/]*?)".preg_quote($value,"/")."([^>]*?)>/i",'[media='.zzfileext($value).',500,375,1]'.$value.'[/media]',$message); }elseif (in_array(zzfileext($value), array('swf','flv'))){ $message=preg_replace("/]*?)".preg_quote($value,"/")."([^<]*?)<\/embed>/i",'[flash]'.$value.'[/flash]',$message); $message=preg_replace("/]*?)".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']) { if(!setthreadcover($pid, 0, $threadimageaid)) { preg_match_all("/(\[img\]|\[img=\d{1,4}[x|\,]\d{1,4}\])\s*([^\[\<\r\n]+?)\s*\[\/img\]/is", $message, $imglist, PREG_SET_ORDER); $values['coverimg'] = "

".lang('message', 'post_newthread_set_cover')."

"; $param['clean_msgforward'] = 1; $param['timeout'] = $param['refreshtime'] = 15; } } if($threadimageaid) { if(!$threadimage) { $threadimage = C::t('forum_attachment_n')->fetch('tid:'.$tid, $threadimageaid); } $threadimage = daddslashes($threadimage); C::t('forum_threadimage')->insert(array( 'tid' => $tid, 'attachment' => $threadimage['attachment'], 'remote' => $threadimage['remote'], )); } 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';替换结束 ?>