显示楼层的实现和楼主的方式大体一致,只是位置不同。
为每个版面显示版主用户名的方法如下:
--------------------------------------
功能实现:
1、修改模版文件forum_show.htm
... ...
<td valign="top" align="left">
<#include "folder_descriptions.htm"/>
</td>
<#assign moderators = forum.getModeratorUsersList()/>
<#if (moderators.size() > 0)>
<td align="right" class="gensmall">
${I18n.getMessage("ForumIndex.forumAdmins")}:
<b>
<#list moderators as m>
<a href="${JForumContext.encodeURL("/user/profile/${m.id}")}">${m.name?html}</a>
</#list>
</b>
</td>
</#if>
2、在代码文件net.jforum.entities.Forum中实现函数:
public List<ModeratorInfo> getModeratorUsersList()
{
return ForumRepository.getModeratorUsersList(this.id);
}
3、在代码文件 net.jforum.repository.ForumRepository中实现函数:
public static List<ModeratorInfo> getModeratorUsersList(final int forumId)
{
//TODO... 添加缓存功能
List<ModeratorInfo> list = null;
if (list == null) {
synchronized (MUTEX_FQN_MODERATORS_USERS) {
try {
list =DataAccessDriver.getInstance().newForumDAO()
.getModeratorUserList(forumId);
}
catch (Exception e) {
throw new DatabaseException(e);
}
}//end of synchronized
}
return list;
}
4、为ForumDAO添加新的接口getModeratorUserList;
5、为GenericForumDAO 实现接口getModeratorUserList;
/**
* @see net.jforum.dao.ForumDAO#getModeratorUserList(int)
*/
public List<ModeratorInfo> getModeratorUserList(int forumId) {
List<ModeratorInfo> list = new ArrayList<ModeratorInfo>();
PreparedStatement pstmt = null;
ResultSet resultSet = null;
try {
pstmt = JForumExecutionContext.getConnection().prepareStatement(
SystemGlobals.getSql("ForumModel.getModeratorUserList"));
pstmt.setInt(1, forumId);
resultSet = pstmt.executeQuery();
while (resultSet.next()) {
ModeratorInfo moderatorInfo = new ModeratorInfo();
moderatorInfo.setId(resultSet.getInt("id"));
moderatorInfo.setName(resultSet.getString("name"));
list.add(moderatorInfo);
}
return list;
}
catch (SQLException e) {
throw new DatabaseException(e);
}
finally {
DbUtils.close(resultSet, pstmt);
}
}
6、为ForumModel.getModeratorUserList添加mysql语句:
ForumModel.getModeratorUserList = SELECT u.user_id AS id, u.username AS name \
FROM jforum_groups g, jforum_roles r, jforum_role_values rv, jforum_roles r2, jforum_users u, jforum_user_groups ug \
WHERE g.group_id = r.group_id \
AND r.role_id = rv.role_id \
AND r.name = 'perm_moderation_forums' \
AND rv.role_value = ? \
AND r2.name = 'perm_moderation' \
AND r2.group_id = g.group_id \
AND g.group_id = ug.group_id \
AND ug.user_id = u.user_id
---------------------------------------------------