fetch('tid:'.$_G['tid'], $_GET['pid']); if(!$post['tid']) { showmessage(lang('plugin/'.CURMODULE, 'replyfloor_post_nonexistence')); } if($post['tid'] != $_G['tid']) { showmessage(lang('plugin/'.CURMODULE, 'replyfloor_post_error')); } if($ac == 'index') { $_G['setting']['dateconvert'] = $setconfig['date_convert']; $msgid = intval($_GET['msgid']); if($msgid) { $msginfo = C::t('#'.CURMODULE.'#'.CURMODULE.'_message')->fetch_by_id($msgid); if(!$msginfo) { showmessage(lang('plugin/'.CURMODULE, 'message_nonexistence')); } $msginfo['message'] = replyfloor_discuzcode($msginfo['message']); if($setconfig['show_br']) { $msginfo['message'] = nl2br($msginfo['message']); } if($setconfig['show_location']) { $msginfo['location'] = replyfloor_location($msginfo['postip']); }else{ $msginfo['location'] = ''; } $msginfo['createtime'] = $setconfig['date_convert'] ? dgmdate($msginfo['createtime'], 'u', 9999, $setconfig['time_format']) : dgmdate($msginfo['createtime'], $setconfig['time_format']); if(file_exists(DISCUZ_ROOT.'./source/plugin/'.CURMODULE.'/extend/extend_hidenum.php')){ require_once libfile('extend/hidenum', 'plugin/replyfloor'); $msginfo['message'] = replyfloor_extend_hidenum($msginfo['message']); } $uids = array(); $uids[] = $msginfo['uid']; if($msginfo['ruid']){ $uids[] = $msginfo['ruid']; } if($uids) { loadcache('usergroups'); foreach(C::t('common_member')->fetch_all($uids) as $uid => $postuser) { if($msginfo['uid'] == $uid) { $msginfo['groupcolor'] = $_G['cache']['usergroups'][$postuser['groupid']]['color']; } if($msginfo['ruid'] == $uid) { $msginfo['rgroupcolor'] = $_G['cache']['usergroups'][$postuser['groupid']]['color']; } } } }else{ $page = max(1, $_G['page']); if(defined('IN_MOBILE')) { $shownum = $setconfig['shownum_mobile'] > 0 ? $setconfig['shownum_mobile'] : 5; $perpage = $setconfig['perpage_mobile'] > 0 ? $setconfig['perpage_mobile'] : 10; }else{ $shownum = $setconfig['shownum_pc'] > 0 ? $setconfig['shownum_pc'] : 5; $perpage = $setconfig['perpage_pc'] > 0 ? $setconfig['perpage_pc'] : 10; } $start = ($page-1)*$perpage; if((!defined('IN_MOBILE') && $setconfig['pagemode_pc']) || (defined('IN_MOBILE') && $setconfig['pagemode_mobile'])){ if($page == 1){ $perpage = $shownum; }else{ $start = ($page-2)*$perpage + $shownum; } } $mpurl = 'plugin.php?id='.CURMODULE.':index&tid='.$post['tid'].'&pid='.$post['pid'].($_GET['ordertype'] ? '&ordertype='.$_GET['ordertype'] : ''); $wherearr = array(); if($_G['uid']){ $wherearr[] = "(status = '0' or (status = '-1' and uid = '".$_G['uid']."'))"; }else{ $wherearr[] = "status = '0'"; } $wherearr[] = "pid = '".$post['pid']."'"; $count = C::t('#'.CURMODULE.'#'.CURMODULE.'_message')->count_by_search_where($wherearr); if(!$setconfig['order_type']){ $setconfig['order_type'] = empty($_GET['ordertype']) && getstatus($thread['status'], 4) ? 1 : intval($_GET['ordertype']); } $orderby = 'order by createtime desc'; if($setconfig['order_type'] == 2){ $orderby = 'order by createtime asc'; } $list = C::t('#'.CURMODULE.'#'.CURMODULE.'_message')->fetch_all_by_search_where($wherearr, $orderby, $start, $perpage); $uids = array(); foreach ($list as $key => $value) { $value['message'] = replyfloor_discuzcode($value['message']); if($setconfig['show_br']) { $value['message'] = nl2br($value['message']); } if($setconfig['show_location']) { $value['location'] = replyfloor_location($value['postip']); }else{ $value['location'] = ''; } $value['createtime'] = $setconfig['date_convert'] ? dgmdate($value['createtime'], 'u', 9999, $setconfig['time_format']) : dgmdate($value['createtime'], $setconfig['time_format']); $list[$key] = $value; $uids[] = $value['uid']; if($value['ruid']){ $uids[] = $value['ruid']; } } if(defined('IN_MOBILE')) { $multipage = multi($count, $perpage, $page, $mpurl, 0, 3, false, true); }else{ $multipage = multi($count, $perpage, $page, $mpurl); } if(file_exists(DISCUZ_ROOT.'./source/plugin/'.CURMODULE.'/extend/extend_hidenum.php')){ require_once libfile('extend/hidenum', 'plugin/replyfloor'); foreach ($list as $key => $value) { $value['message'] = replyfloor_extend_hidenum($value['message']); $list[$key] = $value; } } if($uids) { loadcache('usergroups'); foreach(C::t('common_member')->fetch_all($uids) as $uid => $postuser) { foreach ($list as $key => $value) { if($value['uid'] == $uid) { $value['groupcolor'] = $_G['cache']['usergroups'][$postuser['groupid']]['color']; } if($value['ruid'] == $uid) { $value['rgroupcolor'] = $_G['cache']['usergroups'][$postuser['groupid']]['color']; } $list[$key] = $value; } } } } include template(CURMODULE.':message'); } elseif($ac == 'post') { if(empty($_G['uid'])) { showmessage('to_login', '', array(), array('showmsg' => true)); } //新手回复见习期 cknewuser(); require_once libfile('function/post'); require_once libfile('function/forumlist'); $allowpostreply = ($_G['forum']['allowreply'] != -1) && (($_G['forum_thread']['isgroup'] || (!$_G['forum_thread']['closed'] && !checkautoclose($_G['forum_thread']))) || $_G['forum']['ismoderator']) && ((!$_G['forum']['replyperm'] && $_G['group']['allowreply']) || ($_G['forum']['replyperm'] && forumperm($_G['forum']['replyperm'])) || $_G['forum']['allowreply']); if(!$allowpostreply) { showmessage(lang('plugin/'.CURMODULE, 'replyfloor_no_permission_to_post')); } $ruid = 0; $rusername = ''; $_GET['msgid'] = intval($_GET['msgid']); if($_GET['msgid']) { $remsg = C::t('#'.CURMODULE.'#'.CURMODULE.'_message')->fetch_by_id($_GET['msgid']); if($remsg) { $ruid = $remsg['uid']; $rusername = $remsg['username']; } } $seccodecheck = in_array($_G['groupid'], $setconfig['open_seccheck']) ? 1 : 0; if(submitcheck('savesubmit', 0, $seccodecheck)) { if(file_exists(DISCUZ_ROOT.'./source/plugin/allowreply/extend/extend_replyfloor.php')){ @include_once libfile('extend/replyfloor', 'plugin/allowreply'); } $message = isset($_GET['message']) ? censor($_GET['message']) : ''; $attach = isset($_GET['attach']) ? $_GET['attach'] : array(); //$message = messagecutstr($message, 200, ''); if(strlen(preg_replace("/[\r\n]{1,2}/", "\n", $message)) < $setconfig['message_minsize']) { showmessage(lang('plugin/'.CURMODULE, 'message_message_tooshort'), '', array('message_minsize' => $setconfig['message_minsize'])); } if(strlen(preg_replace("/[\r\n]{1,2}/", "\n", $message)) > $setconfig['message_maxsize']) { showmessage(lang('plugin/'.CURMODULE, 'message_message_toolong'), '', array('message_maxsize' => $setconfig['message_maxsize'])); } //两次发表时间间隔 if(checkflood()) { showmessage('post_flood_ctrl', '', array('floodctrl' => $_G['setting']['floodctrl'])); } $modnewreplies = 0; if($setconfig['moderate_reply'] == 1) { list(, $modnewreplies) = threadmodstatus($message); }elseif($setconfig['moderate_reply'] == 2) { if(in_array($_G['groupid'], $setconfig['audit_users'])) { $modnewreplies = 1; } } $attachment = $usedattach = $queryattach = array(); if($attach){ $queryattach = C::t('#'.CURMODULE.'#'.CURMODULE.'_attachment_unused')->fetch_all_by_id($attach); foreach($attach as $aid){ if($queryattach[$aid]){ $usedattach[] = $queryattach[$aid]; if(in_array($queryattach[$aid]['fileext'], array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'webp'))){ $attachment[] = ($queryattach[$aid]['remote'] ? $_G['setting']['ftp']['attachurl'] : $_G['setting']['attachurl']) . 'replyfloor/'. $queryattach[$aid]['attachment']; } } } } if(empty($message) && empty($attachment)) { showmessage(lang('plugin/'.CURMODULE, 'message_message_empty')); } if(discuz_process::islocked("replyfloor_post_".$_G['uid'], 600)) { showmessage(lang('plugin/'.CURMODULE, 'replyfloor_request_error')); } $data = array( 'tid' => $post['tid'], 'pid' => $post['pid'], 'uid' => $_G['uid'], 'username' => $_G['username'], 'ruid' => $ruid, 'rusername' => $rusername, 'message' => $message, 'attachment' => implode("\t", $attachment), 'mobile' => defined('IN_MOBILE') ? IN_MOBILE : 0, 'createtime' => $_G['timestamp'], 'postip' => $_G['clientip'], 'status' => $modnewreplies ? -1 : 0, ); $msgid = C::t('#'.CURMODULE.'#'.CURMODULE.'_message')->insert($data, true); $i = 1; foreach($usedattach as $value){ $displayorder = in_array($value['fileext'], array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'webp')) ? $i : 0; $attachdata = array( 'id' => $value['id'], 'displayorder' => $displayorder, 'tid' => $post['tid'], 'pid' => $post['pid'], 'msgid' => $msgid, 'uid' => $value['uid'], 'username' => $value['username'], 'filename' => $value['filename'], 'filesize' => $value['filesize'], 'fileext' => $value['fileext'], 'attachment' => $value['attachment'], 'remote' => $value['remote'], 'width' => $value['width'], 'height' => $value['height'], 'dateline' => $value['dateline'], ); C::t('#'.CURMODULE.'#'.CURMODULE.'_attachment')->insert($attachdata, false, true); C::t('#'.CURMODULE.'#'.CURMODULE.'_attachment_unused')->delete_by_id($value['id']); $i++; } //更新帖子回复数 //C::t('forum_thread')->increase($_G['tid'], array('replies' => 1)); //更新版块帖子数 //C::t('forum_forum')->update_forum_counter($_G['fid'], 0, 1); //更新今日帖子数 if($setconfig['today_posts']) { C::t('forum_forum')->update_forum_counter($_G['fid'], 0, 0, 1); } //增加主题热度 if($setconfig['open_heatthread']) { update_threadpartake($_G['tid']); } discuz_process::unlock("replyfloor_post_".$_G['uid']); if($modnewreplies) { showmessage(lang('plugin/'.CURMODULE, 'replyfloor_post_mod_succeed'), dreferer(), array('tid' => $post['tid'], 'pid' => $post['pid'], 'msgid' => $msgid)); } if($setconfig['get_credit']) { updatepostcredits('+', $_G['uid'], 'reply', $_G['fid']); } if($setconfig['thread_bump']) { $expiration = $_G['timestamp']; if($thread['lastpost'] < $expiration){ C::t('forum_thread')->update($thread['tid'], array('lastpost'=>$expiration, 'lastposter'=>$_G['username']), true); }else{ C::t('forum_thread')->update($thread['tid'], array('lastposter'=>$_G['username']), true); } C::t('forum_forum')->update($_G['fid'], array('lastpost' => "$thread[tid]\t$thread[subject]\t$expiration\t$_G[username]")); $_G['forum']['threadcaches'] && deletethreadcaches($thread['tid']); } if($setconfig['notice_author'] == 1 || ($setconfig['notice_author'] == 2 && $_GET['notice_author'])) { $nauthorid = $ruid ? $ruid : $post['authorid']; if($nauthorid != $_G['uid']){ notification_add($nauthorid, 'post', 'replyfloor:replyfloor_noticeauthor', array( 'tid' => $thread['tid'], 'subject' => $thread['subject'], 'fid' => $_G['fid'], 'pid' => $post['pid'], 'from_id' => $post['tid'], 'from_idtype' => 'post', )); } } showmessage(lang('plugin/'.CURMODULE, 'replyfloor_post_succeed'), dreferer(), array('tid' => $post['tid'], 'pid' => $post['pid'], 'msgid' => $msgid)); } else { include template(CURMODULE.':post'); } } elseif($ac == 'delete') { if(empty($_G['uid'])) { showmessage('to_login', '', array(), array('showmsg' => true, 'login' => 1)); } $msgid = intval($_GET['msgid']); if(!$msgid) { showmessage(lang('plugin/'.CURMODULE, 'message_nonexistence')); } $msginfo = C::t('#'.CURMODULE.'#'.CURMODULE.'_message')->fetch_by_id($msgid); if(!$msginfo) { showmessage(lang('plugin/'.CURMODULE, 'message_nonexistence')); } if(!($_G['forum']['ismoderator'] && $_G['group']['allowdelpost']) && !($setconfig['allow_delete'] && $_G['uid'] && $_G['uid'] == $_G['thread']['authorid']) && !($setconfig['self_delete'] && $_G['uid'] && $_G['uid'] == $msginfo['uid'])){ showmessage(lang('plugin/'.CURMODULE, 'replyfloor_no_permission')); } require_once libfile('function/misc'); if(submitcheck('modsubmit')) { if($setconfig['get_credit']) { require_once libfile('function/post'); updatepostcredits('-', $msginfo['uid'], 'reply', $_G['fid']); } replyfloor_deletemessage(array($msgid), 'id', $setconfig['open_recycle']); $wherearr = array(); $wherearr[] = "status = '0'"; $wherearr[] = "pid = '".$post['pid']."'"; $count = C::t('#'.CURMODULE.'#'.CURMODULE.'_message')->count_by_search_where($wherearr); showmessage('', dreferer(), array('tid' => $post['tid'], 'pid' => $post['pid'], 'count' => $count)); } else { include template(CURMODULE.':delete'); } } elseif($ac == 'report') { if(empty($_G['uid'])) { showmessage('to_login', '', array(), array('showmsg' => true, 'login' => 1)); } $msgid = intval($_GET['msgid']); if(!$msgid) { showmessage(lang('plugin/'.CURMODULE, 'message_nonexistence')); } $msginfo = C::t('#'.CURMODULE.'#'.CURMODULE.'_message')->fetch_by_id($msgid); if(!$msginfo) { showmessage(lang('plugin/'.CURMODULE, 'message_nonexistence')); } if(submitcheck('savesubmit')) { $message = trim($_GET['message']); if(empty($message)) { showmessage(lang('plugin/'.CURMODULE, 'replyfloor_report_message')); } require_once libfile('class/upload', 'plugin/'.CURMODULE); $upload = new discuz_upload(); $images = array(); $filelist = $_FILES['filedata']; for ($i=0;$i $filelist["tmp_name"][$i], "name" => $filelist["name"][$i], "size" => $filelist["size"][$i], "type" => $filelist["type"][$i]); $upres = $upload->init($filedata, CURMODULE); if($upres && $upload->attach['isimage'] && $upload->save()) { $images[] = array("name" => $upload->attach['name'], "image" => $upload->attach['attachment']); } } $data = array( 'uid' => $_G['uid'], 'username' => $_G['username'], 'msgid' => $msginfo['id'], 'message' => dhtmlspecialchars($message), 'images' => serialize($images), 'createtime' => $_G['timestamp'], 'postip' => $_G['clientip'], ); C::t('#'.CURMODULE.'#'.CURMODULE.'_report')->insert($data); C::t('#'.CURMODULE.'#'.CURMODULE.'_message')->update_reportnum($msginfo['id']); //接受提醒 if($setconfig['report_remind']){ foreach(explode(',', $setconfig['report_remind']) as $userid){ if(preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $userid)){ require_once libfile('function/mail'); $res = sendmail($userid, lang('plugin/'.CURMODULE, 'replyfloor_newreport_title'), lang('plugin/'.CURMODULE, 'replyfloor_newreport_message')); }elseif(is_numeric($userid)){ notification_add($userid, 'report', 'replyfloor:replyfloor_newreport_notice', array('from_id' => 1, 'from_idtype' => 'newreport', 'username' => $_G['username']), 1); }else{ $getuser = C::t('common_member')->fetch_by_username($userid, 1); if($getuser){ notification_add($getuser['uid'], 'report', 'replyfloor:replyfloor_newreport_notice', array('from_id' => 1, 'from_idtype' => 'newreport', 'username' => $_G['username']), 1); } } } } showmessage(lang('plugin/'.CURMODULE, 'replyfloor_report_succeed'), dreferer(), array(), array('closetime' => true, 'showdialog' => 1, 'alert' => 'right')); } else { $navtitle = lang('plugin/'.CURMODULE, 'replyfloor_navtitle_report'); include template(CURMODULE.':report'); } }