📄 bbsapplication.java
字号:
/* * 作者: 胡李青 * qq: 31703299 * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的,如有技术问题请与本人联系! * */package biz.tbuy.bbs;import biz.tbuy.common.pool.ProxyConn;import biz.tbuy.common.logs.Elog;import biz.tbuy.bbs.bean.BaseBean;import biz.tbuy.common.Auth;import biz.tbuy.common.Visitor;import biz.tbuy.share.XmlOper;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.Set;import javax.faces.model.SelectItem;import javax.faces.model.SelectItemGroup;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;/** * @author huliqing * <p><b>qq:</b>31703299 * <p><b>E-mail:</b> * <a href="mailto:huliqing.cn@gmail.com">huliqing.cn@gmail.com</a> * <p><b>Homepage:</b> * <a href="http://www.tbuy.biz/">http://www.tbuy.biz/</a> * * 用于BBS的全局信息,版主列表,专区列表,讨论区列表 */public class BBSApplication extends BaseBean{ // BBS display private boolean _face; // 是否启用自定义头像 private boolean _bgsound; // 是否启用主题背景音乐 private boolean _signable; // 是否启用个性签名 private boolean _rss; // 是否启用文章订阅 private boolean _articleSearch; // 是否启用文章搜索 private boolean _showArticleInfo;// 是否显示文章信息 private boolean _showMemberInfo; // 是否显示会员信息 private boolean _showFriendLink; // 是否显示友情链接 // 版主、用户组、bgsound private Map<Integer, List<String>> _masters; // 管理“版主”信息的HashMap private Map<String, Map<String, String>> _groups; // 包含BBS的用户组信息 private List<SelectItem> _bgsounds; // BBS主题可用的背景音乐列表 // 以下几个是一起初始化及reload的 private Map<Integer, ZoneModel> _zonesMap; // BBS的所有专区Map private Map<Integer, ForumModel>_forumsMap; // BBS的讨论区Map private Map<Integer, AuthModel> _zonesAuthMap; // 专区所对应的权限类型 private Map<Integer, AuthModel> _forumsAuthMap; // 讨论区所对应的权限类型 private Map<Integer, List<ForumModel>> _forumsGroup;// 讨论区列表,key为zoneId private List<SelectItemGroup> _forums; // 包含BBS的讨论区列表 // BBS的文章信息 private ArticleInfo _articleInfo; // 文章类型 private Map<Integer, String[]> _topicTypes; private List<SelectItem> _topicTypesForItems; /** Creates a new instance of BBSApplication */ public BBSApplication() {} // -------------------------------------------------- BBSApplication init /** * 关于BBSApplication的初始化 * .载入BBS displays开关配置 * .载入BBS版主信息 * .载入BBS的用户组信息 * .载入BBS主题可用的背景音乐列表 * .载入BBS的授权验证信息 * .载入专区及讨论区列表信息 * .载入BBS的文章信息 * .载入BBS主题类型配置信息 */ public void init() { initConfigs(); initMasters(); initGroups(); initBgsounds(); initAuths(); initZonsAndForums(); initArticleInfo(); } // -------------------------------------------------- BBS display private void initConfigs() { out("---------------load:bbs displays"); BBSConfigOper configOper = new BBSConfigOper(); Map<String, Boolean> displays = configOper.loadDisplay(); _face = displays.get("face"); _bgsound = displays.get("bgsound"); _signable = displays.get("signable"); _rss = displays.get("rss"); _articleSearch = displays.get("articleSearch"); _showArticleInfo = displays.get("showArticleInfo"); _showMemberInfo = displays.get("showMemberInfo"); _showFriendLink = displays.get("showFriendLink"); out("face:" + _face); out("bgsound:" + _bgsound); out("signable:" + _signable); out("rss:" + _rss); out("articleSearch:" + _articleSearch); out("showArticleInfo:" + _showArticleInfo); out("showMemberInfo:" + _showMemberInfo); out("showFriendLink:" + _showFriendLink); } /** * 重新载入BBS displays信息 * @see biz.tbuy.bbs.BBSConfigOper#loadDisplay */ public void reloadConfigs() { initConfigs(); } /** 是否开启自定义头像 */ public boolean isFace() { return _face; } /** 是否启用主题背景音乐 */ public boolean isBgsound() { return _bgsound; } /** 是否启用个性签名 */ public boolean isSignable() { return _signable; } /** 是否启用文章订阅 */ public boolean isRss() { return _rss; } /** 是否启用文章搜索 */ public boolean isArticleSearch() { return _articleSearch; } /** 是否显示文章信息 */ public boolean isShowArticleInfo() { return _showArticleInfo; } /** 是否显示会员信息 */ public boolean isShowMemberInfo() { return _showMemberInfo; } /** 是否显示友情链接 */ public boolean isShowFriendLink() { return _showFriendLink; } // -------------------------------------------------- BBS masters /** * 以下关于版主信息的实始化、获取、reload<br> * 该方法用于获取BBS的"master"版主信息列表,HashMap类型,key为相应讨论区的id, * value为list类型的版主集合,获取数据:<br> * masters.get("forumId") -> ArrayList master列表 * @return _masters */ public Map<Integer, List<String>> getMasters() { if (_masters == null) { reloadMasters(); } return _masters; } /** * 初始化版主列表信息,将版主信息设置为map类型<br> * masters格式:masters<forumId,List<userId>>; */ public void initMasters() { System.out.println("---------------Configure(BBS):initMasters"); try { _masters = new HashMap<Integer, List<String>>(); String sql = "select * from master"; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); while (rs.next()) { int forumId = rs.getInt("m_byForum"); String userId = rs.getString("m_user"); // 选检查该版主是否已经添加 if (!_masters.containsKey(forumId)) { List<String> fMasters = new ArrayList<String>(); fMasters.add(userId); _masters.put(forumId, fMasters); } else { List<String> fMasters = _masters.get(forumId); if (!fMasters.contains(userId)) { fMasters.add(userId); } } } } catch (SQLException sqle) { Elog.log("BBSApplication.initMasters()/" + sqle.getMessage()); } finally { myConn.close(); } Set<Integer> keys = _masters.keySet(); for (Integer key : keys) { System.out.print("forum:" + key); List<String> masters = _masters.get(key); for (String master : masters) { System.out.print(":" + master); } } } catch (Exception e) { Elog.log("载入版主信息出错!"); } } /** * 重新装载版主列表信息 */ public void reloadMasters() { initMasters(); } /** * 判断用户是否该特定讨论区的版主 * @param userId 需要判断是否为版主的用户id * @param forumId 讨论区的id * @return true 如果用户userId是该讨论区forumId的版主。否则返回false */ public boolean isMaster(String userId, int forumId) { List<String> tMasters = null; try { tMasters = this.getMasters().get(forumId); } catch (Exception e) { Elog.debug("BBSApplication:isMaster:" + e.getMessage()); } if (tMasters != null) { return tMasters.contains(userId) ? true : false; } return false; } /** * 判断用户是否为版主身份,该方法只判断是否为版主,而不 * 考滤是否为特点讨论区的版主 * @param userId 用户的id * @return true 如果用户身分为版主,否则返回false */ public boolean isMaster(String userId) { Set<Integer> forums = null; try { forums = this.getMasters().keySet(); } catch (Exception e) { Elog.debug("BBSApplication:isMaster:" + e.getMessage()); } if (forums != null) { for (Integer forumId : forums) { if (isMaster(userId, forumId)) return true; } } return false; } // -------------------------------------------------- BBS groups /** * 关于BBS用户组的初始化及reload<br> * 该方法主要用于加载BBS的用户组相关信息 */ private void initGroups() { try { System.out.println("---------------Configure(BBS):groups"); _groups = new LinkedHashMap<String, Map<String, String>>(); String appConfig = getComApplication(). getServletContextPath() + BBSGroups.PATH_APPCONFIG; Document doc = XmlOper.getDocument(appConfig); Element root = doc.getDocumentElement(); Element groupsE = (Element)root.getElementsByTagName("groups").item(0); NodeList groups = groupsE.getElementsByTagName("group"); int len = groups.getLength(); for (int i = 0; i < len; i++) { Element group = (Element) groups.item(i); String name = group.getElementsByTagName("name").item(0). getTextContent().trim(); String label = group.getElementsByTagName("label").item(0). getTextContent().trim(); String value = group.getElementsByTagName("value").item(0). getTextContent().trim(); Map<String, String> obj = new HashMap<String, String>(3); obj.put("id", name); obj.put("label", label); obj.put("value", value); _groups.put(name, obj); System.out.println("group:" + obj.get("id") + ":" + obj.get("label") + ":" + obj.get("value")); } } catch (Exception e) { Elog.log("Exception:BBSApplication:initGroups:" + e.getMessage()); } } /** * 重新载入BBS的用户组信息。 */ public void reloadGroups() { initGroups(); } /** * 返回当前BBS系统所使用的用户组信息,groups为HashMap类型,<br/> * 内容格式如下:<br/> * groups.get(id)取得特定用户组group * 由group可获得id,label,value for example: <br/> * group.get("id")<br/> * group.get("label")<br/> * group.get("value")<br/> * @return groups */ public Map<String, Map<String, String>> getGroups() { return _groups; } // -------------------------------------------------- BBS bgsound /** * 载入BBS主题可用的背景音乐列表信息 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -