📄 bbsapplication.java
字号:
private void initBgsounds() { try { List<MusicModel> musics = MusicAction.getMusics(); _bgsounds = new ArrayList<SelectItem>(); for (MusicModel music : musics) { _bgsounds.add(new SelectItem(music.getNum(), music.getTitle() + "/" + music.getSinger())); } } catch (Exception e) { Elog.log("BBSApplication:initBgsounds:" + e.getMessage()); } } /** * 重新载入BBS背景音乐列表 */ public void reloadBgsounds() { initBgsounds(); } /** * 获得BBS主题信息中可用的所有背景音乐列表 * @return bgsounds */ public List<SelectItem> getBgsounds() { if (_bgsounds == null) { reloadBgsounds(); } return _bgsounds; } // -------------------------------------------------- BBS authenticator page /** * 以下初始化BBS页面文件的授权设置,相关类 biz.tbuy.common.Auth, * 该方法获取BBS文件/WEB-INF/config/bbs/auth.xml中的授权信息,然后将其加入 * ComApplication中的authOper中,由authOper统一授权过滤 * 该BBS的权限访问配置文件位于 WEB-INF/config/bbs/auth.xml */ private void initAuths() { System.out.println("------Configure:auths(BBS)"); String authPath = getComApplication().getServletContextPath() + BBSGroups.PATH_AUTH; Auth auth = new Auth(authPath); getComApplication().getAuthOper().getAuths().putAll(auth.getAuths()); } // -------------------------------------------------- BBS zones and forums /** * 载入专区及讨论区信息,及其相应的权限设置信息,并设置专区与讨论区的对应关系。 * 1.该方法载入zoneId与zone forumId与forum的对应关系<br> * 2.载入zoneId与zone的AuthModel forumId与forum的AuthModel的对应关系<br> * 3.载入zoneId与forums的对应关系 * 4.将zone与forum组织为SelectItemGroup */ private void initZonsAndForums() { System.out.println("---------------Configure(BBS):initZonesAndForums"); try { _zonesMap = new LinkedHashMap<Integer, ZoneModel>(); _forumsMap = new LinkedHashMap<Integer, ForumModel>(); _zonesAuthMap = new HashMap<Integer, AuthModel>(); _forumsAuthMap = new HashMap<Integer, AuthModel>(); _forumsGroup = new LinkedHashMap<Integer, List<ForumModel>>(); _forums = new ArrayList<SelectItemGroup>(); List<ZoneModel> zones = ZoneAction.getZones(); if (zones != null && !zones.isEmpty()) { for (ZoneModel zone : zones) { _zonesMap.put(zone.getNum(), zone); AuthModel auth = AuthAction.getAuthByZoneId(zone.getNum()); if (auth != null) { _zonesAuthMap.put(zone.getNum(), auth); } List<ForumModel> forums = ForumAction.getForumsByZone(zone); if (forums != null && !forums.isEmpty()) { _forumsGroup.put(zone.getNum(), forums); for (ForumModel forum : forums) { _forumsMap.put(forum.getNum(), forum); AuthModel forumAuth = AuthAction.getAuthByForumId(forum.getNum()); if (forumAuth != null) { _forumsAuthMap.put(forum.getNum(), forumAuth); } } } } } // 组织SelectItemGroup Set<Integer> keys = _zonesMap.keySet(); if (keys != null && !keys.isEmpty()) { for (Integer key : keys) { ZoneModel zone = _zonesMap.get(key); SelectItemGroup zoneG = new SelectItemGroup(zone.getName()); List<ForumModel> theForums = _forumsGroup.get(zone.getNum()); if (theForums != null && !theForums.isEmpty()) { SelectItem[] items = new SelectItem[theForums.size()]; int n = 0; for (ForumModel forum : theForums) { items[n] = new SelectItem(forum.getNum(), forum.getName()); n++; } zoneG.setSelectItems(items); _forums.add(zoneG); } } } // 输出测试 Set<Integer> outZoneKeys = _zonesMap.keySet(); System.out.println("-----zonesMap and AuthMap and Groups"); for (Integer key : outZoneKeys) { System.out.println("zone:" + _zonesMap.get(key).getName()); System.out.println("auth:" + _zonesAuthMap.get(key)); List<ForumModel> outForums = _forumsGroup.get(key); if (outForums != null && !outForums.isEmpty()) { for (ForumModel forum : outForums) { System.out.println("Gforum:" + forum.getName()); } } } Set<Integer> outForumKeys = _forumsMap.keySet(); System.out.println("-----forumsMap and AuthMap"); if (outForumKeys != null && !outForumKeys.isEmpty()) { for (Integer key : outForumKeys) { System.out.println("forum:" + _forumsMap.get(key).getName()); System.out.println("auth:" + _forumsAuthMap.get(key)); } } } catch (Exception e) { Elog.log("BBSApplication:initZonsAndForums:" + e.getMessage()); } } /** * 重新载入专区及讨论区的信息,该方法还重新载入各专区及各讨论区的权限配置信息 * @see #getZonesMap * @see #getForumsMap * @see #getZonesAuthMap * @see #getForumsAuthMap */ public void reloadZonsAndForums() { initZonsAndForums(); } /** * 获取专区列表,Map类型,获取数据:<br> * zonesMap.get("zoneId") -> ZoneModel * @return zonesMap */ public Map<Integer, ZoneModel> getZonesMap() { if (_zonesMap == null || _zonesMap.isEmpty()) { reloadZonsAndForums(); } return _zonesMap; } /** * 获取讨论区列表,Map类型,获取数据:<br> * forumsMap.get("forumId") -> ForumModel * @return forumsMap */ public Map<Integer, ForumModel> getForumsMap() { if (_forumsMap == null || _forumsMap.isEmpty()) { reloadZonsAndForums(); } return _forumsMap; } /** * 获取专区的权限设置类型Map,这样获取数据<br> * zonesAuthMap.get("zoneId") -> 相应专区的权限设置,AuthModel * @return zonesAuthMap; */ public Map<Integer, AuthModel> getZonesAuthMap() { return _zonesAuthMap; } /** * 获取讨论区的权限设置类型Map, 这样获取数据<br> * forumsAuthMap.get("forumId") -> 相应讨论区的权限设置,AuthModel * @return forumsAuthMap */ public Map<Integer, AuthModel> getForumsAuthMap() { return _forumsAuthMap; } /** * 获取讨论区列表,该列表按zoneId分组,通过key(zoneId)可获得该专区下的讨论区 * 列表,for example:<br> * forumsGroup.get("zoneId") -> List<ForumModel>专区列表 * @return forumsGroup */ public Map<Integer, List<ForumModel>> getForumsGroup() { if (_forumsGroup == null || _forumsGroup.isEmpty()) { reloadZonsAndForums(); } return _forumsGroup; } /** * 该方法用于获取讨论区信息,返回以SelectItemGroup的形式 * @return forums */ public List<SelectItemGroup> getForums() { if (_forums == null || _forums.isEmpty()) { reloadZonsAndForums(); } return _forums; } // -------------------------------------------------- BBS article info /** * 载入BBS的文章信息,如文章总数,主题总数,今日贴数,今日主题数 */ private void initArticleInfo() { try { _articleInfo = new ArticleInfo(); _articleInfo.loadInfo(); } catch (Exception e) { Elog.log("BBSApplication:initArticleInfo:" + e.getMessage()); } } /** * 重新载入BBS的文章信息,该方法重新载入BBS的主题总数,文章总数, * 今天贴数。。。等等 */ public void reloadArticleInfo() { initArticleInfo(); } /** * 获取BBS的文章信息 * @return articleInfo */ public ArticleInfo getArticleInfo() { if (_articleInfo == null) { reloadArticleInfo(); } return _articleInfo; } // -------------------------------------------------- BBS topic types info /** * 获取主题类型信息,从主题类型中获得该主题的相关信息数组<br/> * topicTypes.get("主题类型") -> 相应的主题类型信息数组result[4]<br> * result[0] -> 所需权限值<br/> * result[1] -> 相应图标<br/> * result[2] -> 描述文字<br/> * @return */ public Map<Integer, String[]> getTopicTypes() { _topicTypes = BBSGroups.TOPIC_TYPE; return _topicTypes; } /** * 获取BBS主题类型,并以SelectItems的形式返回 * @return typeItems */ public List<SelectItem> getTopicTypesForItems() { if (_topicTypesForItems == null) { _topicTypesForItems = new ArrayList<SelectItem>(6); Map<Integer, String[]> topicTypes = getTopicTypes(); Set<Integer> keys = topicTypes.keySet(); for (Integer key : keys) { String[] type = topicTypes.get(key); _topicTypesForItems.add(new SelectItem(key, type[2])); } } return _topicTypesForItems; } // -------------------------------------------------- BBS get user power /** * 通过给定的visitor获取该用户的最高权限值,最高可为admin权限,最低为访客权限<br/> * 依次为:admin -> user -> guest * @param visitor * @return power */ public int getPower(Visitor visitor) { if (!visitor.isLogin()) return BBSGroups.POWER_GUEST; if (getComApplication().isAdmin(visitor.getUser().getId())) { return BBSGroups.POWER_ADMIN; } else { return BBSGroups.POWER_USER; } } /** * 通过给定的visitor及forum获取该用户的相对于该forum的最高权限值, * 最高为admin、最低为Guest,依次为:admin -> master -> user -> guest * @param visitor * @param forum * @return power */ public int getPower(Visitor visitor, ForumModel forum) { if (!visitor.isLogin()) return BBSGroups.POWER_GUEST; int power = getPower(visitor); int power2 = BBSGroups.POWER_GUEST; if (isMaster(visitor.getUser().getId(), forum.getNum())) { power2 = BBSGroups.POWER_MASTER; } return power > power2 ? power : power2; } /** * 通过给定的visitor及topic获取该用户对于该topic的最高权限,最高权限可为admin<br> * 依次为 admin -> master -> author(topic) -> user -> guest * @param visitor * @param topic * @return power */ public int getPower(Visitor visitor, TopicModel topic) { if (!visitor.isLogin()) return BBSGroups.POWER_GUEST; ForumModel forum = getForumsMap().get(topic.getByForum()); int power = getPower(visitor, forum); int power2 = BBSGroups.POWER_GUEST; if (visitor.getUser().getId().equals(topic.getByUser())) { power2 = BBSGroups.POWER_AUTHOR; } return power > power2 ? power : power2; } /** * 通过给定的visitor及topic及reply获取该用户对于该reply的最高权限,最高权限可为 * admin<br>依次为:admin -> master -> author(reply) -> user ->guest * @param visitor * @param topic * @param reply * @return power */ public int getPower(Visitor visitor, TopicModel topic, ReplyModel reply) { if (!visitor.isLogin()) return BBSGroups.POWER_GUEST; ForumModel forum = getForumsMap().get(topic.getByForum()); int power = getPower(visitor, forum); int power2 = BBSGroups.POWER_GUEST; if (visitor.getUser().getId().equals(reply.getByUser())) { power2 = BBSGroups.POWER_AUTHOR; } return power > power2 ? power : power2; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -