⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 forummanageaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
				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 + -