/// <summary> /// 发帖权限控制 /// </summary> /// <param name="forum">版块信息</param> /// <param name="usergroupinfo">当前用户的用户组信息</param> /// <param name="userId">当前用户Id</param> /// <returns></returns> public static bool PostAuthority(ForumInfo forum, UserGroupInfo userGroupInfo, int userId, ref string msg) { if (!Forums.AllowPostByUserID(forum.Permuserlist, userId)) //判断当前用户在当前版块发主题权限 { if (string.IsNullOrEmpty(forum.Postperm)) //权限设置为空时,根据用户组权限判断 { // 验证用户是否有发表主题的权限 if (userGroupInfo.Allowpost != 1) { msg = "您当前的身份 \"" + userGroupInfo.Grouptitle + "\" 没有发表主题的权限"; return(false); } } else//权限设置不为空时,根据板块权限判断 { if (!Forums.AllowPost(forum.Postperm, userGroupInfo.Groupid)) { msg = "您没有在该版块发表主题的权限"; return(false); } } } //当用户拥有发帖权限但版块只允许发布特殊主题时,需要判断用户是否能发布特殊主题 if (forum.Allowspecialonly > 0) { //当版块设置了只允许特殊主题,但又没有开启任何特殊主题类型,则相当于关闭了版块的发主题功能 if (forum.Allowpostspecial <= 0) { msg = "您没有在该版块发表特殊主题的权限"; return(false); } if ((forum.Allowpostspecial & 1) == 1 && userGroupInfo.Allowpostpoll != 1) { msg = "您当前的身份 \"" + userGroupInfo.Grouptitle + "\" 没有发布投票的权限"; } else { return(true); } if ((forum.Allowpostspecial & 4) == 4 && userGroupInfo.Allowbonus != 1) { msg = "您当前的身份 \"" + userGroupInfo.Grouptitle + "\" 没有发布悬赏的权限"; } else { return(true); } if ((forum.Allowpostspecial & 16) == 16 && userGroupInfo.Allowdebate != 1) { msg = "您当前的身份 \"" + userGroupInfo.Grouptitle + "\" 没有发起辩论的权限"; } else { return(true); } return(false); } return(true); }