📄 forummanageaction.java
字号:
request.setAttribute("errorInfo", "您没有选择要复制的源版块,请返回修改。");
return mapping.findForward("error");
}
}else{
String[] target = request.getParameterValues("target");
StringBuffer fids=new StringBuffer();
fids.append("0");
if(target!=null){
for(String fid:target){
if(!fid.equals(source)){
fids.append(","+fid);
}
}
}
if (fids.length()<=1) {
request.setAttribute("errorInfo", "您没有选择要复制的目标版块,请返回修改。");
return mapping.findForward("error");
}
Map<String,String> forumoptions=null;
String[] options = request.getParameterValues("options");
if (options == null) {
request.setAttribute("errorInfo", "您没有选择要复制的项目,请返回修改。");
return mapping.findForward("error");
}else{
String forumopt=",modnewposts,recyclebin,allowshare,allowhtml,allowbbcode,allowimgcode,allowmediacode,allowsmilies,jammer,allowanonymous,disablewatermark,allowpostspecial,";
String forumfieldopt=",postcredits,replycredits,password,viewperm,postperm,replyperm,getattachperm,postattachperm,formulaperm,threadtypes,attachextensions,modrecommend,tradetypes,";
StringBuffer forumSb=new StringBuffer();
StringBuffer forumfieldSb=new StringBuffer();
for(String option:options){
if(forumopt.contains(","+option+",")){
forumSb.append(","+option);
}else if(forumfieldopt.contains(","+option+",")){
forumfieldSb.append(","+option);
}
}
forumoptions=new HashMap<String,String>();
forumoptions.put("jrun_forums", forumSb.length()>0?forumSb.substring(1):null);
forumoptions.put("jrun_forumfields", forumfieldSb.length()>0?forumfieldSb.substring(1):null);
}
Set<String> tables=forumoptions.keySet();
for(String table:tables){
String option=forumoptions.get(table);
if(option!=null){
Map<String,String> sourceforum=dataBaseService.executeQuery("SELECT "+option+" FROM "+table+" WHERE fid='"+source+"'").get(0);
if(sourceforum!=null&&sourceforum.size()>0){
StringBuffer updatequery=new StringBuffer();
updatequery.append("fid=fid");
Set<String> keys =sourceforum.keySet();
for(String key:keys){
updatequery.append(","+key+"='"+sourceforum.get(key)+"'");
}
dataBaseService.runQuery("UPDATE "+table+" SET "+updatequery+" WHERE fid IN ("+fids+")",true);
}else{
request.setAttribute("errorInfo", "您没有选择要复制的目标版块,请返回修改。");
return mapping.findForward("error");
}
}
}
this.updateForumCache();
request.setAttribute("successInfo", "版块设置成功复制。");
request.setAttribute("requestPath", "admincp.jsp?action=forumsedit");
return mapping.findForward("success");
}
}
@SuppressWarnings("unchecked")
public ActionForward removeForum(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
short fid = Short.valueOf(request.getParameter("fid"));
Map<String,String> forumcount=dataBaseService.executeQuery("SELECT count(*) AS count FROM jrun_forums WHERE fup='"+fid+"'").get(0);
if(forumcount!=null&&!"0".equals(forumcount.get("count"))){
request.setAttribute("errorInfo","下级版块不为空,请先返回删除本分类或版块的下级论坛。");
return mapping.findForward("error");
}else {
String hasconfirmed = request.getParameter("hasconfirmed");
if (hasconfirmed != null && "yes".equals(hasconfirmed)) {
String realPath = servlet.getServletContext().getRealPath("/");
List<Map<String,String>> threadList=dataBaseService.executeQuery("SELECT tid FROM jrun_threads WHERE fid='"+fid+"'", new String[]{"tid"});
StringBuffer tids=new StringBuffer();
tids.append("0");
if(threadList!=null&&threadList.size()>0){
for (Map<String, String> map : threadList) {
tids.append(","+map.get("tid"));
}
}
if(tids.length()>1)
{
List<Map<String,String>> attachmentList=dataBaseService.executeQuery("SELECT attachment, thumb, remote FROM jrun_attachments WHERE tid IN ("+tids+")");
if(attachmentList!=null&&attachmentList.size()>0)
{
Map<String,String> settings=ForumInit.settings;
String filePath= realPath+settings.get("attachdir");
for (Map<String, String> attachment : attachmentList) {
Common.dunlink(attachment.get("attachment"), Byte.valueOf(attachment.get("thumb")), Byte.valueOf(attachment.get("remote")), filePath);
}
}
String []tableNames={"threads", "threadsmod", "relatedthreads", "posts", "polls", "polloptions", "trades", "activities", "activityapplies", "debates", "debateposts", "videos", "attachments", "favorites", "mythreads", "myposts", "subscriptions", "typeoptionvars", "forumrecommend"};
for (String tableName : tableNames) {
dataBaseService.runQuery("DELETE FROM jrun_"+tableName+" WHERE tid IN ("+tids+")",true);
}
}
dataBaseService.runQuery("DELETE FROM jrun_forums WHERE fid='"+fid+"'",true);
dataBaseService.runQuery("DELETE FROM jrun_forumfields WHERE fid='"+fid+"'",true);
dataBaseService.runQuery("DELETE FROM jrun_moderators WHERE fid='"+fid+"'",true);
dataBaseService.runQuery("DELETE FROM jrun_access WHERE fid='"+fid+"'",true);
this.updateForumCache();
request.setAttribute("successInfo", "版块成功删除。");
request.setAttribute("requestPath", "admincp.jsp?action=forumsedit");
return mapping.findForward("success");
} else {
request.setAttribute("confirmInfo","本操作不可恢复,您确定要删除该版块,清除其中帖子和附件吗?");
request.setAttribute("otherInfo","注意: 删除论坛并不会更新用户发帖数和积分<br>");
request.setAttribute("commitPath", request.getContextPath()+ "/forumsedit.do?action=removeForum&fid=" + fid);
return mapping.findForward("confirm");
}
}
}
public ActionForward moderators(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
short fid = Short.valueOf(request.getParameter("fid"));
String modsubmit=request.getParameter("modsubmit");
if(modsubmit==null){
Map<String,String> forum=dataBaseService.executeQuery("SELECT fid,name,type FROM jrun_forums WHERE fid='"+fid+"'").get(0);
List<Map<String,String>> moderators=dataBaseService.executeQuery("SELECT m.username, mo.* FROM jrun_members m, jrun_moderators mo WHERE mo.fid='"+fid+"' AND m.uid=mo.uid ORDER BY mo.inherited, mo.displayorder");
request.setAttribute("moderators", moderators);
request.setAttribute("forum", forum);
return mapping.findForward("toModerators");
}else{
String newmoderator = request.getParameter("newmoderator");
String newInheritedmod = request.getParameter("newInheritedmod");
String[] delete= request.getParameterValues("delete");
byte inheritedmodnew=0;
if(newInheritedmod!=null){
inheritedmodnew=Byte.valueOf(newInheritedmod);
}
Forums forum = forumService.findById(fid);
if("group".equals(forum.getType())){
inheritedmodnew=1;
}
else if("sub".equals(forum.getType())){
inheritedmodnew=0;
}
List<Map<String,String>> moderators=dataBaseService.executeQuery("SELECT uid,displayorder FROM jrun_moderators where fid='"+fid+"'");
if (moderators != null) {
for (Map<String,String> moderator : moderators) {
String value = request.getParameter("displayorder_"+moderator.get("uid"));
if (value!=null&&!value.equals(moderator.get("displayorder"))) {
dataBaseService.runQuery("UPDATE jrun_moderators SET displayorder='"+toDisPlayOrder(value)+"' WHERE fid='"+fid+"' AND uid='"+moderator.get("uid")+"'");
}
}
}
if(delete!=null||(newmoderator != null && !newmoderator.equals(""))||forum.getInheritedmod()!=inheritedmodnew){
StringBuffer fidarray=new StringBuffer();
fidarray.append("0");
if("group".equals(forum.getType())){
List<Map<String,String>> forumlist=dataBaseService.executeQuery("SELECT fid FROM jrun_forums WHERE type='forum' AND fup='"+fid+"'");
if(forumlist!=null&&forumlist.size()>0){
for (Map<String, String> map : forumlist) {
fidarray.append(","+map.get("fid"));
}
List<Map<String,String>> sublist=dataBaseService.executeQuery("SELECT fid FROM jrun_forums WHERE type='sub' AND fup IN ("+fidarray+")");
if(sublist!=null&&sublist.size()>0)
{
for (Map<String, String> map : sublist) {
fidarray.append(","+map.get("fid"));
}
}
}
}
else if("forum".equals(forum.getType()))
{
List<Map<String,String>> sublist=dataBaseService.executeQuery("SELECT fid FROM jrun_forums WHERE type='sub' AND fup='"+fid+"'");
if(sublist!=null&&sublist.size()>0)
{
for (Map<String, String> map : sublist) {
fidarray.append(","+map.get("fid"));
}
}
}
if(delete!=null){
String deleteuids ="0";
for (String uid : delete) {
deleteuids+=","+uid;
dataBaseService.runQuery("DELETE FROM jrun_moderators WHERE uid='"+uid+"' AND ((fid='"+fid+"' AND inherited='0') OR (fid IN ("+fidarray+") AND inherited='1'))",true);
}
Map<Short,Usergroups> usergroups=new HashMap<Short, Usergroups>();
List<Usergroups> usergroupList=userGroupService.findAllGroups();
if(usergroupList!=null&&usergroupList.size()>0){
for (Usergroups usergroup : usergroupList) {
usergroups.put(usergroup.getGroupid(), usergroup);
}
}
String excludeuids="0";
List<Map<String,String>> moderatorslist=dataBaseService.executeQuery("SELECT uid FROM jrun_moderators WHERE uid IN ("+deleteuids+")");
if(moderatorslist!=null&&moderatorslist.size()>0){
for (Map<String, String> map : moderatorslist) {
excludeuids+=","+map.get("uid");
}
}
List<Map<String,String>> memberlist=dataBaseService.executeQuery("SELECT uid, groupid, credits FROM jrun_members WHERE uid IN ("+deleteuids+") AND uid NOT IN ("+excludeuids+") AND adminid NOT IN (1,2)");
if(memberlist!=null&&memberlist.size()>0){
for (Map<String, String> member : memberlist) {
int adminidnew=0;
int groupidnew=7;
short groupid=Short.valueOf(member.get("groupid"));
Usergroups usergroup=usergroups.get(groupid);
if(usergroup.getType().equals("special")&&usergroup.getRadminid()!=3){
adminidnew=-1;
groupidnew=groupid;
}
else{
Set<Short> keys=usergroups.keySet();
for (Short key : keys) {
Usergroups group=usergroups.get(key);
Short credits=Short.valueOf(member.get("credits"));
if(group.getType().equals("member")&&credits>=group.getCreditshigher()&&credits<group.getCreditslower())
{
groupidnew=key;
break;
}
}
}
dataBaseService.runQuery("UPDATE jrun_members SET adminid='"+adminidnew+"', groupid='"+groupidnew+"' WHERE uid='"+member.get("uid")+"'",true);
}
}
}
StringBuffer newmodarray=new StringBuffer();
newmodarray.append("0");
StringBuffer origmodarray=new StringBuffer();
origmodarray.append("0");
if(forum.getInheritedmod()!=inheritedmodnew){
List<Map<String,String>> moderatorlist=dataBaseService.executeQuery("SELECT uid FROM jrun_moderators WHERE fid='"+fid+"' AND inherited='0'");
if(moderatorlist!=null&&moderatorlist.size()>0){
for (Map<String, String> map : moderatorlist) {
origmodarray.append(","+map.get("uid"));
if(forum.getInheritedmod()==0&&inheritedmodnew>0){
newmodarray.append(","+map.get("uid"));
}
}
if(forum.getInheritedmod()>0&&inheritedmodnew==0)
{
dataBaseService.runQuery("DELETE FROM jrun_moderators WHERE uid IN ("+origmodarray+") AND fid IN ("+fidarray+") AND inherited='1'",true);
}
}
}
short newdisplayorder = toDisPlayOrder(request.getParameter("newdisplayorder"));
if (!newmoderator.equals("")) {
List<Map<String,String>> members=dataBaseService.executeQuery("SELECT uid FROM jrun_members WHERE username='"+newmoderator+"'");
if (members != null&&members.size()>0) {
String uid=members.get(0).get("uid");
newmodarray.append(","+uid);
dataBaseService.runQuery("UPDATE jrun_members SET groupid='3' WHERE uid='"+uid+"' AND adminid NOT IN (1,2,3,4,5,6,7,8,-1)",true);
dataBaseService.runQuery("UPDATE jrun_members SET adminid='3' WHERE uid='"+uid+"' AND adminid NOT IN (1,2)",true);
dataBaseService.runQuery("REPLACE INTO jrun_moderators (uid, fid, displayorder, inherited) VALUES ('"+uid+"', '"+fid+"', '"+newdisplayorder+"', '0')",true);
} else {
request.setAttribute("errorInfo", "指定用户不存在,请返回。");
return mapping.findForward("error");
}
}
String[] newmods=newmodarray.toString().split(",");
for (String uid : newmods) {
uid=uid.trim();
if(!uid.equals("0"))
{
dataBaseService.runQuery("REPLACE INTO jrun_moderators (uid, fid, displayorder, inherited) VALUES ('"+uid+"', '"+fid+"', '"+newdisplayorder+"', '0')",true);
if(inheritedmodnew>0)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -