Пример #1
0
        /// <summary>
        /// 添加用户组信息
        /// </summary>
        /// <param name="userGroupInfo"></param>
        /// <returns></returns>
        public static bool AddUserGroupInfo(UserGroupInfo userGroupInfo)
        {
            try
            {
                int       Creditshigher = userGroupInfo.Creditshigher;
                int       Creditslower  = userGroupInfo.Creditslower;
                DataTable dt            = Discuz.Data.UserGroups.GetUserGroupByCreditsHigherAndLower(Creditshigher, Creditslower);
                if (dt.Rows.Count > 0)
                {
                    return(false);
                }

                if (userGroupInfo.Radminid == 0 && !SystemCheckCredits("add", ref Creditshigher, ref Creditslower, 0))
                {
                    return(false);
                }

                userGroupInfo.Creditshigher = Creditshigher;
                userGroupInfo.Creditslower  = Creditslower;
                Data.UserGroups.CreateUserGroup(userGroupInfo);
                Data.OnlineUsers.AddOnlineList(userGroupInfo.Grouptitle);

                Caches.ReSetAdminGroupList();
                Caches.ReSetUserGroupList();
                return(true);
            }
            catch
            {
                return(false);
            }
        }
Пример #2
0
        /// <summary>
        /// 更新用户组信息
        /// </summary>
        /// <param name="userGroupInfo">用户组信息</param>
        /// <returns></returns>
        public static bool UpdateUserGroupInfo(UserGroupInfo userGroupInfo)
        {
            int Creditshigher = userGroupInfo.Creditshigher;
            int Creditslower  = userGroupInfo.Creditslower;

            if ((userGroupInfo.Groupid >= 9) && (userGroupInfo.Radminid == 0))
            {
                //当已存在的用户组积分上下限不是当前组的时候,则不允许编辑
                DataTable dt = Discuz.Data.UserGroups.GetUserGroupByCreditsHigherAndLower(Creditshigher, Creditslower);
                if (dt.Rows.Count > 0 && userGroupInfo.Groupid.ToString() != dt.Rows[0][0].ToString())
                {
                    return(false);
                }

                if (!SystemCheckCredits("update", ref Creditshigher, ref Creditslower, userGroupInfo.Groupid))
                {
                    return(false);
                }
            }

            UserGroups.UpdateUserGroup(userGroupInfo);
            Discuz.Data.UserGroups.UpdateOnlineList(userGroupInfo);

            Caches.ReSetAdminGroupList();
            Caches.ReSetUserGroupList();
            return(true);
        }
Пример #3
0
        /// <summary>
        /// 删除指定用户组
        /// </summary>
        /// <param name="groupid"></param>
        /// <returns></returns>
        new public static bool DeleteUserGroupInfo(int groupid)
        {
            try
            {
                if (Discuz.Data.UserGroups.IsSystemOrTemplateUserGroup(groupid))
                {
                    //当为系统初始组或模板组时,则不允许删除
                    return(false);
                }

                //当为用户组时
                if (groupid >= 9)
                {
                    DataTable dt = UserGroups.GetUserGroupExceptGroupid(groupid);
                    if (dt.Rows.Count > 1)
                    {
                        UserGroupInfo info = UserGroups.GetUserGroupInfo(groupid);
                        if (info.Radminid == 0)
                        {
                            int creditshigher = info.Creditshigher;
                            int creditslower  = info.Creditslower;
                            SystemCheckCredits("delete", ref creditshigher, ref creditslower, groupid);
                        }
                    }
                    else
                    {
                        if (dt.Rows.Count == 1)
                        {
                            //当系统删除当前组后只有一个组存在时则直接设置唯一组下限,但不修改唯一组上限的值
                            Data.UserGroups.UpdateUserGroupLowerAndHigherToLimit(Utils.StrToInt(dt.Rows[0][0], 0));
                        }
                        else
                        {                         //系统中用户组只有一个时
                            opresult = "当前用户组为系统中唯一的用户组,因此系统无法删除";
                            return(false);
                        }
                    }
                }
                UserGroups.DeleteUserGroupInfo(groupid);
                AdminGroups.DeleteAdminGroupInfo(short.Parse(groupid.ToString()));
                Data.OnlineUsers.DeleteOnlineByUserGroup(groupid);
                Caches.ReSetAdminGroupList();
                Caches.ReSetUserGroupList();

                return(true);
            }
            catch
            {
                return(false);
            }
        }