private Task <List <User> > GetUsersForProjectAsync(string projectKey, List <User> users) { return(Task.Run(() => { // Slightly complex - permissions can be granted via groups or directly on users // With no web service to retrieve aggregated data, we need to lookup group + user details List <GroupPermission> groupPermissions = ExecutePageableRequest <GroupPermissionsList, GroupPermission>($"permissions/groups?projectKey={projectKey}"); HashSet <string> groupKeys = groupPermissions .Where(groupPermission => groupPermission.Permissions.Count > 0) // Ignore empty entries .Where(groupPermission => groupPermission.GroupKey != "sonar-administrators") // Ignore admins (otherwise admin would be spammed with details for every project) .Where(groupPermission => !AdminGroups.Contains(groupPermission.GroupKey)) // See SNLX-1: supplemental admin groups .Select(groupPermission => groupPermission.GroupKey) .ToHashSet(); List <UserPermission> userPermissions = ExecutePageableRequest <UserPermissionsList, UserPermission>($"permissions/users?projectKey={projectKey}"); HashSet <string> userKeys = userPermissions .Where(userPermission => userPermission.Permissions.Count > 0) // Ignore empty entries .Select(userPermission => userPermission.UserKey) .ToHashSet(); return users.Where(user => userKeys.Contains(user.Key) || groupKeys.Intersect(user.Groups).Any()).ToList(); })); }
private void Load(int regionId) { List <SelectListItem> adminGroupList = new List <SelectListItem>(); adminGroupList.Add(new SelectListItem() { Text = "选择管理员组", Value = "0" }); foreach (AdminGroupInfo info in AdminGroups.GetAdminGroupList()) { adminGroupList.Add(new SelectListItem() { Text = info.Title, Value = info.AdminGid.ToString() }); } ViewData["adminGroupList"] = adminGroupList; RegionInfo regionInfo = Regions.GetRegionById(regionId); if (regionInfo != null) { ViewData["provinceId"] = regionInfo.ProvinceId; ViewData["cityId"] = regionInfo.CityId; ViewData["countyId"] = regionInfo.RegionId; } else { ViewData["provinceId"] = -1; ViewData["cityId"] = -1; ViewData["countyId"] = -1; } ViewData["referer"] = ShopUtils.GetAdminRefererCookie(); }
public ActionResult Delete(int id, [Bind(Include = "start,length,search")] RouteValue routeValue) { if (!MyHelp.CheckAuth("group", "index", EnumData.AuthType.Insert)) { return(RedirectToAction("index", "main")); } AdminGroups group = AdminGroups.Get(id); if (group == null) { return(HttpNotFound()); } group.IsEnable = false; AdminGroups.Update(group); AdminGroups.SaveChanges(); MyHelp.Log("AdminGroups", group.Id, "刪除管理員群組"); IEnumerable <AdminGroups> results = AdminGroups.GetAll().Where(g => g.IsEnable).OrderBy(g => g.Order).ToList(); if (results.Any()) { int order = 1; foreach (AdminGroups data in results) { data.Order = order++; AdminGroups.Update(data); } } AdminGroups.SaveChanges(); return(RedirectToAction("index", "group", routeValue)); }
public ActionResult Edit(AdminGroupModel model, int adminGid = -1) { if (adminGid < 3) { return(PromptView("内置管理员组不能修改")); } AdminGroupInfo adminGroupInfo = AdminGroups.GetAdminGroupById(adminGid); if (adminGroupInfo == null) { return(PromptView("管理员组不存在")); } int adminGid2 = AdminGroups.GetAdminGroupIdByTitle(model.AdminGroupTitle); if (adminGid2 > 0 && adminGid2 != adminGid) { ModelState.AddModelError("AdminGroupTitle", "名称已经存在"); } if (ModelState.IsValid) { adminGroupInfo.Title = model.AdminGroupTitle; adminGroupInfo.ActionList = CommonHelper.StringArrayToString(model.ActionList).ToLower(); AdminGroups.UpdateAdminGroup(adminGroupInfo); AddAdminOperateLog("修改管理员组", "修改管理员组,管理员组ID为:" + adminGid); return(PromptView("管理员组修改成功")); } Load(); return(View(model)); }
/// <summary> /// 用户列表 /// </summary> private ActionResult List(string userName, string email, string mobile, int userRid = 0, int adminGid = 0, int pageNumber = 1, int pageSize = 15) { string condition = AdminUsers.AdminGetUserListCondition(userName, email, mobile, userRid, adminGid); //管理员可以在后台修改自己的密码 //if (condition != "") // condition += " and owzx_users.uid<>" + WorkContext.Uid; //else // condition = " owzx_users.uid<>" + WorkContext.Uid; PageModel pageModel = new PageModel(pageSize, pageNumber, AdminUsers.AdminGetUserCount(condition)); List <SelectListItem> userRankList = new List <SelectListItem>(); userRankList.Add(new SelectListItem() { Text = "全部等级", Value = "0" }); foreach (UserRankInfo info in AdminUserRanks.GetUserRankList()) { userRankList.Add(new SelectListItem() { Text = info.Title, Value = info.UserRid.ToString() }); } List <SelectListItem> adminGroupList = new List <SelectListItem>(); adminGroupList.Add(new SelectListItem() { Text = "全部组", Value = "0" }); foreach (AdminGroupInfo info in AdminGroups.GetAdminGroupList()) { adminGroupList.Add(new SelectListItem() { Text = info.Title, Value = info.AdminGid.ToString() }); } UserListModel model = new UserListModel() { PageModel = pageModel, UserList = AdminUsers.AdminGetUserList(pageModel.PageSize, pageModel.PageNumber, condition), UserName = userName, Email = email, Mobile = mobile, UserRid = userRid, UserRankList = userRankList, AdminGid = adminGid, AdminGroupList = adminGroupList }; ShopUtils.SetAdminRefererCookie(string.Format("{0}?pageNumber={1}&pageSize={2}&userName={3}&email={4}&mobile={5}&userRid={6}&adminGid={7}", Url.Action("list"), pageModel.PageNumber, pageModel.PageSize, userName, email, mobile, userRid, adminGid)); return(View(model)); }
private bool CheckPermission(PostInfo post, int opinion) { ismoder = Moderators.IsModer(useradminid, userid, forumid); if (userid == post.Posterid && !ismoder) { if (post.Layer < 1 && topic.Replies > 0) { AddErrLine("已经被回复过的主帖不能被删除"); return(false); } if (Utils.StrDateDiffMinutes(post.Postdatetime, config.Edittimelimit) > 0 || post.Posterid != userid)//不是作者或者超过编辑时限 { AddErrLine("已经超过了编辑帖子时限,不能删除帖子"); return(false); } else { allowdelpost = true; } } else { AdminGroupInfo admininfo = AdminGroups.GetAdminGroupInfo(useradminid); if (admininfo != null) { // 如果所属管理组有删帖的管理权限 if (admininfo.Allowdelpost == 1) { // 如果是管理员或总版主 if (Moderators.IsModer(useradminid, userid, forumid)) { forumpath = Request.ApplicationPath + forumpath; forumpath = forumpath.Replace("//", "/"); allowdelpost = true; if (post.Layer == 0)//管理者跳转至删除主题 { HttpContext.Current.Response.Redirect(string.Format("{0}topicadmin.aspx?action=moderate&operat=del&forumid={1}&topicid={2}", forumpath, post.Fid, post.Tid)); return(false); } else//跳转至批量删帖 { HttpContext.Current.Response.Redirect(string.Format("{0}topicadmin.aspx?action=moderate&operat=delposts&forumid={1}&topicid={2}&postid={3}&opinion={4}", forumpath, post.Fid, post.Tid, post.Pid, opinion)); return(false); } } } } else { allowdelpost = false; } } return(true); }
private void DeleteUserGroupInf_Click(object sender, EventArgs e) { #region 除相关组信息 if (this.CheckCookie()) { if (AdminUserGroups.DeleteUserGroupInfo(DNTRequest.GetInt("groupid", -1))) { //删除举报组 GeneralConfigInfo __configinfo = GeneralConfigs.Deserialize(Server.MapPath("../../config/general.config")); string tempstr = ""; foreach (string report in __configinfo.Reportusergroup.Split(',')) { if (report != __usergroupinfo.Groupid.ToString()) { if (tempstr == "") { tempstr = report; } else { tempstr += "," + report; } } } __configinfo.Reportusergroup = tempstr; tempstr = ""; foreach (string photomangegroup in __configinfo.Photomangegroups.Split(',')) { if (photomangegroup != __usergroupinfo.Groupid.ToString()) { if (tempstr == "") { tempstr = photomangegroup; } else { tempstr += "," + photomangegroup; } } } __configinfo.Photomangegroups = tempstr; GeneralConfigs.Serialiaze(__configinfo, AppDomain.CurrentDomain.BaseDirectory + "config/general.config"); Discuz.Cache.DNTCache.GetCacheService().RemoveObject("/Forum/AdminGroupList"); AdminGroups.GetAdminGroupList(); AdminVistLogs.InsertLog(this.userid, this.username, this.usergroupid, this.grouptitle, this.ip, "后台删除管理组", "组ID:" + DNTRequest.GetInt("groupid", -1)); base.RegisterStartupScript("PAGE", "window.location.href='global_adminusergroupgrid.aspx';"); } else { base.RegisterStartupScript("", "<script>alert('操作失败');window.location.href='global_adminusergroupgrid.aspx';</script>"); } } #endregion }
/// <summary> /// 管理员组列表 /// </summary> public ActionResult List() { AdminGroupListModel model = new AdminGroupListModel() { AdminGroupList = AdminGroups.GetCustomerAdminGroupList() }; ShopUtils.SetAdminRefererCookie(Url.Action("list")); return(View(model)); }
/// <summary> /// 用户列表 /// </summary> public ActionResult List(string userName, string email, string mobile, int userRid = 0, int adminGid = 0, int pageNumber = 1, int pageSize = 15) { string condition = AdminUsers.AdminGetUserListCondition(userName, email, mobile, userRid, adminGid); string sort = AdminUsers.AdminGetUserListSort("", ""); PageModel pageModel = new PageModel(pageSize, pageNumber, AdminUsers.AdminGetUserCount(condition)); UserListModel model = new UserListModel() { UserList = AdminUsers.AdminGetUserList(pageModel.PageSize, pageModel.PageNumber, condition, sort), PageModel = pageModel, UserName = userName, Email = email, Mobile = mobile, UserRid = userRid, AdminGid = adminGid }; List <SelectListItem> userRankList = new List <SelectListItem>(); userRankList.Add(new SelectListItem() { Text = "全部等级", Value = "0" }); foreach (UserRankInfo info in AdminUserRanks.GetUserRankList()) { userRankList.Add(new SelectListItem() { Text = info.Title, Value = info.UserRid.ToString() }); } ViewData["userRankList"] = userRankList; List <SelectListItem> adminGroupList = new List <SelectListItem>(); adminGroupList.Add(new SelectListItem() { Text = "全部组", Value = "0" }); foreach (AdminGroupInfo info in AdminGroups.GetAdminGroupList()) { adminGroupList.Add(new SelectListItem() { Text = info.Title, Value = info.AdminGid.ToString() }); } ViewData["adminGroupList"] = adminGroupList; ShopUtils.SetAdminRefererCookie(string.Format("{0}?pageNumber={1}&pageSize={2}&userName={3}&email={4}&mobile={5}&userRid={6}&adminGid={7}", Url.Action("list"), pageModel.PageNumber, pageModel.PageSize, userName, email, mobile, userRid, adminGid)); return(View(model)); }
private void radminid_SelectedIndexChanged(object sender, EventArgs e) { #region 绑定关联组 //DataTable usergrouprightstable = Discuz.Data.DatabaseProvider.GetInstance().GetUserGroupInfoByGroupid(int.Parse(radminid.SelectedValue)); UserGroupInfo radminUserGroupInfo = UserGroups.GetUserGroupInfo(int.Parse(radminid.SelectedValue)); if (radminUserGroupInfo != null) { //设置管理组初始化信息 //DataRow usergrouprights = usergrouprightstable.Rows[0]; creditshigher.Text = radminUserGroupInfo.Creditslower.ToString(); creditslower.Text = radminUserGroupInfo.Creditslower.ToString(); stars.Text = radminUserGroupInfo.Stars.ToString(); color.Text = radminUserGroupInfo.Color; groupavatar.Text = radminUserGroupInfo.Groupavatar; readaccess.Text = radminUserGroupInfo.Readaccess.ToString(); maxprice.Text = radminUserGroupInfo.Maxprice.ToString(); maxpmnum.Text = radminUserGroupInfo.Maxpmnum.ToString(); maxsigsize.Text = radminUserGroupInfo.Maxsigsize.ToString(); maxattachsize.Text = radminUserGroupInfo.Maxattachsize.ToString(); maxsizeperday.Text = radminUserGroupInfo.Maxsizeperday.ToString(); DataTable dt = Attachments.GetAttachmentType(); attachextensions.AddTableData(dt, radminUserGroupInfo.Attachextensions); } AdminGroupInfo radminUserGroup = AdminGroups.GetAdminGroupInfo(int.Parse(radminid.SelectedValue)); if (radminUserGroup != null) { //设置管理权限组初始化信息 //DataRow dr = admingrouprights.Rows[0]; admingroupright.SelectedIndex = -1; admingroupright.Items[0].Selected = radminUserGroup.Alloweditpost == 1; admingroupright.Items[1].Selected = radminUserGroup.Alloweditpoll == 1; admingroupright.Items[2].Selected = radminUserGroup.Allowdelpost == 1; admingroupright.Items[3].Selected = radminUserGroup.Allowmassprune == 1; admingroupright.Items[4].Selected = radminUserGroup.Allowviewip == 1; admingroupright.Items[5].Selected = radminUserGroup.Allowedituser == 1; admingroupright.Items[6].Selected = radminUserGroup.Allowviewlog == 1; admingroupright.Items[7].Selected = radminUserGroup.Disablepostctrl == 1; admingroupright.Items[8].Selected = radminUserGroup.Allowviewrealname == 1; } if (radminid.SelectedValue == "1") { allowstickthread.Enabled = false; allowstickthread.SelectedValue = "3"; } else { allowstickthread.Enabled = true; } #endregion }
/// <summary> /// 检查是否具有版主的身份 /// </summary> public void IsModer() { // 检查是否具有版主的身份 if (useradminid != 0) { ismoder = Moderators.IsModer(useradminid, userid, forum.Fid) ? 1 : 0; admininfo = AdminGroups.GetAdminGroupInfo(usergroupid); //得到管理组信息 if (admininfo != null) { disablepostctrl = admininfo.Disablepostctrl; } } }
public ActionResult Create() { if (!MyHelp.CheckAuth("group", "index", EnumData.AuthType.Insert)) { return(RedirectToAction("index", "main")); } AdminGroups newGroup = new AdminGroups(); newGroup.Order = AdminGroups.GetAll().Where(g => g.IsEnable).Count() + 1; AdminGroups.Create(newGroup); AdminGroups.SaveChanges(); MyHelp.Log("AdminGroups", null, "新增管理員群組"); return(RedirectToAction("edit", new { ID = newGroup.Id })); }
/// <summary> /// 删除管理员组 /// </summary> public ActionResult Del(int adminGid = -1) { int result = AdminGroups.DeleteAdminGroupById(adminGid); if (result == -1) { return(PromptView("删除失败请先转移或删除此管理员组下的用户")); } else if (result == -2) { return(PromptView("内置管理员组不能删除")); } AddAdminOperateLog("删除管理员组", "删除管理员组,管理员组ID为:" + adminGid); return(PromptView("管理员组删除成功")); }
private void ComAdminUsergroup_Click(object sender, EventArgs e) { #region 合并管理组 if (this.CheckCookie()) { if ((sourceadminusergroup.SelectedIndex == 0) || (targetadminusergroup.SelectedIndex == 0)) { base.RegisterStartupScript("", "<script>alert('操作失败,请您选择有效的管理组!');</script>"); return; } if ((Convert.ToInt32(sourceadminusergroup.SelectedValue) <= 3) || (Convert.ToInt32(sourceadminusergroup.SelectedValue) <= 3)) { base.RegisterStartupScript("", "<script>alert('操作失败,您选择的组为系统初始化的管理组,这些组不允许合并!');</script>"); return; } if (sourceadminusergroup.SelectedValue == targetadminusergroup.SelectedValue) { base.RegisterStartupScript("", "<script>alert('操作失败,同一个管理组不能够合并!');</script>"); return; } //删除被合并的源用户组 //DatabaseProvider.GetInstance().DeleteAdminGroupInfo(int.Parse(sourceadminusergroup.SelectedValue)); AdminGroups.DeleteAdminGroupInfo(Convert.ToInt16(sourceadminusergroup.SelectedValue)); //删除被合并的源用户组 //DatabaseProvider.GetInstance().DeleteUserGroupInfo(int.Parse(sourceadminusergroup.SelectedValue)); UserGroups.DeleteUserGroupInfo(int.Parse(sourceadminusergroup.SelectedValue)); //更新用户组中的信息 //Data.DatabaseProvider.GetInstance().UpdateAdminUsergroup(targetadminusergroup.SelectedValue.ToString(), sourceadminusergroup.SelectedValue.ToString()); UserGroups.ChangeAllUserGroupId(int.Parse(sourceusergroup.SelectedValue), int.Parse(targetadminusergroup.SelectedValue)); //Data.DatabaseProvider.GetInstance().ChangeUsergroup(int.Parse(sourceadminusergroup.SelectedValue), int.Parse(targetadminusergroup.SelectedValue)); DNTCache.GetCacheService().RemoveObject("/Forum/UserGroupList"); AdminVistLogs.InsertLog(this.userid, this.username, this.usergroupid, this.grouptitle, this.ip, "合并管理组", "把组ID:" + sourceusergroup.SelectedIndex + " 合并到组ID:" + targetusergroup.SelectedIndex); base.RegisterStartupScript("PAGE", "window.location.href='global_adminusergroupgrid.aspx';"); } #endregion }
public ActionResult LowerList(string userName = "", string mobile = "", int usertype = -1, int pageNumber = 1, int pageSize = 15) { HashSet <string> actionlist = AdminGroups.GetAdminGroupActionHashSetNoCache(WorkContext.AdminGid); ShopUtils.SetAdminRefererCookie(string.Format("{0}?pageNumber={1}&pageSize={2}&userName={3}&mobile={4}&usertype={5}", Url.Action("list"), pageNumber, pageSize, userName, mobile, usertype)); StringBuilder strb = new StringBuilder(); strb.Append(" where 1=1"); if (userName != "") { strb.Append(" and a.nickname like '%" + userName + "%'"); } if (mobile != "") { strb.Append(" and a.parentid=(select top 1 uid from owzx_users where rtrim(mobile)=' " + mobile + "' ) "); } if (usertype > -1) { strb.Append(" and a.usertype=" + usertype + " "); } strb.Append(" order by a.uid desc"); DataTable dt = AdminUsers.GetUserParentList(pageSize, pageNumber, strb.ToString()); if (dt.Columns[0].ColumnName == "error") { return(PromptView("用户获取失败")); } UserListModel model = new UserListModel() { PageModel = new PageModel(pageSize, pageNumber, (dt != null && dt.Rows != null && dt.Rows.Count > 0 ? Convert.ToInt32(dt.Rows[0]["TotalCount"]) : 0)), UserList = dt, UserName = userName, Mobile = mobile }; return(View(model)); }
public ActionResult Edit(int?id, [Bind(Include = "start,length,search")] RouteValue routeValue) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } AdminGroups group = AdminGroups.Get(id.Value); if (group == null) { return(HttpNotFound()); } ViewBag.routeValue = routeValue; ViewBag.menuList = Menu.GetAll().Where(m => m.IsEnable == true && m.PrevId == 0).OrderBy(m => m.Order).ToList(); return(View("~/Views/admin/groups/edit.cshtml", group)); }
protected override void ShowPage() { pagetitle = "用户控制面板"; if (!IsLogin()) { return; } score1 = ((decimal)user.Extcredits1).ToString(); score2 = ((decimal)user.Extcredits2).ToString(); score3 = ((decimal)user.Extcredits3).ToString(); score4 = ((decimal)user.Extcredits4).ToString(); score5 = ((decimal)user.Extcredits5).ToString(); score6 = ((decimal)user.Extcredits6).ToString(); score7 = ((decimal)user.Extcredits7).ToString(); score8 = ((decimal)user.Extcredits8).ToString(); if (!IsErr() && useradminid > 0) { admingroupinfo = AdminGroups.GetAdminGroupInfo(usergroupid); } StringBuilder sbAttachmentTypeSelect = new StringBuilder(); if (!Utils.StrIsNullOrEmpty(usergroupinfo.Attachextensions)) { sbAttachmentTypeSelect.AppendFormat("[id] in ({0})", usergroupinfo.Attachextensions); } usergroupattachtype = Attachments.GetAttachmentTypeString(sbAttachmentTypeSelect.ToString()); newnoticecount = Notices.GetNewNoticeCountByUid(userid); //if (user.Avatar.Trim().ToLower().StartsWith("http://")) //{ // avatarurl = user.Avatar; // avatartype = 2; // avatarwidth = user.Avatarwidth; // avatarheight = user.Avatarheight; //} //else if (user.Avatar.ToLower().Trim().StartsWith(@"avatars\common\")) // avatartype = 0; }
/// <summary> /// 用户列表 /// </summary> public ActionResult List(string userName = "", string mobile = "", int userrid = -1, int pageNumber = 1, int pageSize = 15) { HashSet <string> actionlist = AdminGroups.GetAdminGroupActionHashSetNoCache(WorkContext.AdminGid); ShopUtils.SetAdminRefererCookie(string.Format("{0}?pageNumber={1}&pageSize={2}&userName={3}&mobile={4}&userrid={5}", Url.Action("list"), pageNumber, pageSize, userName, mobile, userrid)); StringBuilder strb = new StringBuilder(); strb.Append(" where 1=1"); if (userName != "") { strb.Append(" and a.nickname like '%" + userName + "%'"); } if (mobile != "") { strb.Append(" and a.mobile='" + mobile + "'"); } strb.Append("order by a.uid desc"); DataTable dt = AdminUsers.GetUserList(pageSize, pageNumber, strb.ToString()); if (dt.Columns[0].ColumnName == "error") { return(PromptView("用户获取失败")); } UserListModel model = new UserListModel() { PageModel = new PageModel(pageSize, pageNumber, dt.Rows.Count > 0 ? int.Parse(dt.Rows[0]["TotalCount"].ToString()) : 0), UserList = dt, UserName = userName, Mobile = mobile, UserRid = userrid }; return(View(model)); }
public ActionResult Edit(int adminGid = -1) { if (adminGid < 3) { return(PromptView("内置管理员组不能修改")); } AdminGroupInfo adminGroupInfo = AdminGroups.GetAdminGroupById(adminGid); if (adminGroupInfo == null) { return(PromptView("管理员组不存在")); } AdminGroupModel model = new AdminGroupModel(); model.AdminGroupTitle = adminGroupInfo.Title; model.ActionList = StringHelper.SplitString(adminGroupInfo.ActionList); Load(); return(View(model)); }
public ActionResult Add(AdminGroupModel model) { if (AdminGroups.GetAdminGroupIdByTitle(model.AdminGroupTitle) > 0) { ModelState.AddModelError("AdminGroupTitle", "名称已经存在"); } if (ModelState.IsValid) { AdminGroupInfo adminGroupInfo = new AdminGroupInfo() { Title = model.AdminGroupTitle, ActionList = CommonHelper.StringArrayToString(model.ActionList).ToLower() }; AdminGroups.CreateAdminGroup(adminGroupInfo); AddAdminOperateLog("添加管理员组", "添加管理员组,管理员组为:" + model.AdminGroupTitle); return(PromptView("管理员组添加成功")); } Load(); return(View(model)); }
public ActionResult Edit(int id, AdminGroups group, Dictionary <string, List <bool> > auth, [Bind(Include = "start,length,search")] RouteValue routeValue) { if (!MyHelp.CheckAuth("group", "index", EnumData.AuthType.Edit)) { return(RedirectToAction("index", "main")); } group.Auth = JsonConvert.SerializeObject(auth.ToDictionary(a => Convert.ToInt32(a.Key), a => a.Value)); if (group != null) { AdminGroups.Update(group); AdminGroups.SaveChanges(); routeValue.id = id; MyHelp.Log("AdminGroups", group.Id, "編輯管理員群組"); return(RedirectToAction("edit", "group", routeValue)); } ViewBag.routeValue = routeValue; ViewBag.menuList = Menu.GetAll().Where(m => m.IsEnable == true && m.PrevId == 0).OrderBy(m => m.Order).ToList(); return(View("~/Views/admin/groups/edit.cshtml", group)); }
/// <summary> /// 不论是否提交都有的权限检查 /// </summary> /// <returns></returns> private bool CheckPermission() { // 如果是受灌水限制用户, 则判断是否是灌水 AdminGroupInfo admininfo = AdminGroups.GetAdminGroupInfo(usergroupid); if (admininfo == null || admininfo.Disablepostctrl != 1) { int Interval = Utils.StrDateDiffSeconds(lastpostpmtime, config.Postinterval * 2); if (Interval < 0) { AddErrLine(string.Format("系统规定发帖或发短消息间隔为{0}秒, 您还需要等待 {1} 秒", (config.Postinterval * 2).ToString(), (Interval * -1).ToString())); return(false); } } if (!CreditsFacade.IsEnoughCreditsPM(userid)) { AddErrLine("您的积分不足, 不能发送短消息"); return(false); } return(true); }
/// <summary> /// 不论是否提交都有的权限检查 /// </summary> /// <returns></returns> private bool CheckPermission() { // 如果是受灌水限制用户, 则判断是否是灌水 AdminGroupInfo admininfo = AdminGroups.GetAdminGroupInfo(useradminid); if (admininfo == null || admininfo.Disablepostctrl != 1) { int Interval = Utils.StrDateDiffSeconds(lastpostpmtime, config.Postinterval * 2); if (Interval < 0) { AddErrLine(string.Format("系统规定发帖或发短消息间隔为{0}秒, 您还需要等待 {1} 秒", (config.Postinterval * 2).ToString(), (Interval * -1).ToString())); return(false); } } if (!UserCredits.CheckUserCreditsIsEnough(userid, 1, CreditsOperationType.SendMessage, -1)) { AddErrLine("您的金币不足, 不能发送短消息"); return(false); } return(true); }
private string condition = ""; //查询条件 protected override void ShowPage() { if (userid > 0 && useradminid > 0) { admingroupinfo = AdminGroups.GetAdminGroupInfo(usergroupid); } if (config.Rssstatus == 1) { AddLinkRss("tools/rss.aspx", "最新主题"); } #region 版块信息设置 //当所选论坛为多个时或全部时 if (forumid == -1) { //用户点选相应的论坛 forums = (!Utils.StrIsNullOrEmpty(DNTRequest.GetString("fidlist")) ? DNTRequest.GetString("fidlist") : DNTRequest.GetString("forums")).ToLower(); //如果是选择全部版块 forums = (forums == string.Empty || forums == "all") ? GetForums() : forums; forums = GetAllowviewForums(forums); } navhomemenu = Caches.GetForumListMenuDivCache(usergroupid, userid, config.Extname); if (forumid > 0) { forum = Forums.GetForumInfo(forumid); if (forum == null) { AddErrLine("不存在的版块ID"); return; } pagetitle = Utils.RemoveHtml(forum.Name); forumnav = ForumUtils.UpdatePathListExtname(forum.Pathlist.Trim(), config.Extname); showforumlogin = ShowForumLogin(); if (!UserAuthority.VisitAuthority(forum, usergroupinfo, userid, ref msg)) { AddErrLine(msg); return; } // 得到子版块列表 subforumlist = Forums.GetSubForumCollection(forumid, forum.Colcount, config.Hideprivate, usergroupid, config.Moddisplay); } #endregion //设置查询条件 SetCondition(); if (IsErr()) { return; } pagetitle = (type == "digest" ? "查看精华" : "查看新帖"); SetPageIdAndNumber(); topiclist = Topics.GetTopicListByCondition(tpp, pageid, 0, 10, config.Hottopic, forum.Autoclose, forum.Topictypeprefix, condition, GetOrder(), direct); OnlineUsers.UpdateAction(olid, UserAction.ShowForum.ActionID, forumid, config.Onlinetimeout); ForumUtils.UpdateVisitedForumsOptions(forumid); }
protected override void ShowPage() { //获取主题信息 topic = GetTopicInfo(); if (topic == null || IsErr()) { return; } topicid = topic.Tid; forumid = topic.Fid; forum = Forums.GetForumInfo(forumid); if (forum == null) { AddErrLine("不存在的版块ID"); return; } pagetitle = string.Format("{0} - {1}", topic.Title, Utils.RemoveHtml(forum.Name)); ///得到广告列表 GetForumAds(forum.Fid); // 检查是否具有版主的身份 if (useradminid != 0) { ismoder = Moderators.IsModer(useradminid, userid, forum.Fid) ? 1 : 0; admininfo = AdminGroups.GetAdminGroupInfo(usergroupid); //得到管理组信息 if (admininfo != null) { disablepostctrl = admininfo.Disablepostctrl; } } //验证不通过则返回 if (!ValidateInfo()) { return; } Caches.GetTopicTypeArray().TryGetValue(topic.Typeid, out topictypes); topictypes = topictypes != "" ? "[" + topictypes + "]" : ""; showratelog = GeneralConfigs.GetConfig().DisplayRateCount > 0 ? 1 : 0; score = Scoresets.GetValidScoreName(); scoreunit = Scoresets.GetValidScoreUnit(); //编辑器状态 EditorState(); navhomemenu = Caches.GetForumListMenuDivCache(usergroupid, userid, config.Extname); usesig = ForumUtils.GetCookie("sigstatus") == "0" ? 0 : 1; int price = 0; if (topic.Special != 4)//不是辩论帖,就跳转到showtopic页面显示 { HttpContext.Current.Response.Redirect(forumpath + this.ShowTopicAspxRewrite(topic.Tid, 1)); return; } if (topic.Moderated > 0) { moderactions = TopicAdmins.GetTopicListModeratorLog(topicid); } // 获取帖子总数 onlyauthor = Utils.StrIsNullOrEmpty(onlyauthor) ? "0" : onlyauthor; // 获取分页相关信息 BindPageCountAndId(); PostpramsInfo postpramsInfo = GetPostPramsInfo(price); //获取当前正反方列表 positivepostlist = Debates.GetPositivePostList(postpramsInfo, out attachmentlist, ismoder == 1); negativepostlist = Debates.GetNegativePostList(postpramsInfo, out attachmentlist, ismoder == 1); GetPostAds(postpramsInfo, positivepostlist.Count); //辩论帖 if (topic.Special == 4) { GetDebateInfo(postpramsInfo); } enabletag = (config.Enabletag & forum.Allowtag) == 1; if (enabletag) { relatedtopics = Topics.GetRelatedTopicList(topicid, 5); } //更新页面Meta信息 UpdateMetaInfo(Utils.RemoveHtml(debatepost.Message)); ///更新主题查看次数和在线用户信息 TopicStats.Track(topicid, 1); Topics.MarkOldTopic(topic); topicviews = topic.Views + 1 + (config.TopicQueueStats == 1 ? TopicStats.GetStoredTopicViewCount(topic.Tid) : 0); OnlineUsers.UpdateAction(olid, UserAction.ShowTopic.ActionID, forumid, forum.Name, topicid, topic.Title); BindDownloadAttachmentTip(); }
protected override void Initialize(RequestContext requestContext) { base.Initialize(requestContext); WorkContext.IsHttpAjax = WebHelper.IsAjax(); WorkContext.IP = WebHelper.GetIP(); WorkContext.RegionInfo = Regions.GetRegionByIP(WorkContext.IP); WorkContext.RegionId = WorkContext.RegionInfo.RegionId; WorkContext.Url = WebHelper.GetUrl(); WorkContext.UrlReferrer = WebHelper.GetUrlReferrer(); //获得用户唯一标示符sid WorkContext.Sid = ShopUtils.GetSidCookie(); if (WorkContext.Sid.Length == 0) { //生成sid WorkContext.Sid = Sessions.GenerateSid(); //将sid保存到cookie中 ShopUtils.SetSidCookie(WorkContext.Sid); } PartUserInfo partUserInfo; //获得用户id int uid = ShopUtils.GetUidCookie(); if (uid < 1)//当用户为游客时 { //创建游客 partUserInfo = Users.CreatePartGuest(); } else//当用户为会员时 { //获得保存在cookie中的密码 string encryptPwd = ShopUtils.GetCookiePassword(); //防止用户密码被篡改为危险字符 if (encryptPwd.Length == 0 || !SecureHelper.IsBase64String(encryptPwd)) { //创建游客 partUserInfo = Users.CreatePartGuest(); encryptPwd = string.Empty; ShopUtils.SetUidCookie(-1); ShopUtils.SetCookiePassword(""); } else { partUserInfo = Users.GetPartUserByUidAndPwd(uid, ShopUtils.DecryptCookiePassword(encryptPwd)); if (partUserInfo != null) { //发放登陆积分 Credits.SendLoginCredits(ref partUserInfo, DateTime.Now); } else//当会员的账号或密码不正确时,将用户置为游客 { partUserInfo = Users.CreatePartGuest(); encryptPwd = string.Empty; ShopUtils.SetUidCookie(-1); ShopUtils.SetCookiePassword(""); } } WorkContext.EncryptPwd = encryptPwd; } //设置用户等级 if (UserRanks.IsBanUserRank(partUserInfo.UserRid) && partUserInfo.LiftBanTime <= DateTime.Now) { UserRankInfo userRankInfo = UserRanks.GetUserRankByCredits(partUserInfo.PayCredits); Users.UpdateUserRankByUid(partUserInfo.Uid, userRankInfo.UserRid); partUserInfo.UserRid = userRankInfo.UserRid; } WorkContext.PartUserInfo = partUserInfo; WorkContext.Uid = partUserInfo.Uid; WorkContext.UserName = partUserInfo.UserName; WorkContext.UserEmail = partUserInfo.Email; WorkContext.UserMobile = partUserInfo.Mobile; WorkContext.Password = partUserInfo.Password; WorkContext.NickName = partUserInfo.NickName; WorkContext.Avatar = partUserInfo.Avatar; WorkContext.UserRid = partUserInfo.UserRid; WorkContext.UserRankInfo = UserRanks.GetUserRankById(partUserInfo.UserRid); WorkContext.UserRTitle = WorkContext.UserRankInfo.Title; //设置用户管理员组 WorkContext.AdminGid = partUserInfo.AdminGid; WorkContext.AdminGroupInfo = AdminGroups.GetAdminGroupById(partUserInfo.AdminGid); WorkContext.AdminGTitle = WorkContext.AdminGroupInfo.Title; //设置当前控制器类名 WorkContext.Controller = RouteData.Values["controller"].ToString().ToLower(); //设置当前动作方法名 WorkContext.Action = RouteData.Values["action"].ToString().ToLower(); WorkContext.PageKey = string.Format("/{0}/{1}", WorkContext.Controller, WorkContext.Action); }
protected override void OnAuthorization(AuthorizationContext filterContext) { //不能应用在子方法上 if (filterContext.IsChildAction) { return; } //当用户ip不在允许的后台访问ip列表时 if (!string.IsNullOrEmpty(WorkContext.ShopConfig.AdminAllowAccessIP) && !ValidateHelper.InIPList(WorkContext.IP, WorkContext.ShopConfig.AdminAllowAccessIP)) { if (WorkContext.IsHttpAjax) { filterContext.Result = AjaxResult("404", "您访问的网址不存在"); } else { filterContext.Result = new RedirectResult("/"); } return; } //当用户IP被禁止时 if (BannedIPs.CheckIP(WorkContext.IP)) { if (WorkContext.IsHttpAjax) { filterContext.Result = AjaxResult("404", "您访问的网址不存在"); } else { filterContext.Result = new RedirectResult("/"); } return; } //当用户等级是禁止访问等级时 if (WorkContext.UserRid == 1) { if (WorkContext.IsHttpAjax) { filterContext.Result = AjaxResult("404", "您访问的网址不存在"); } else { filterContext.Result = new RedirectResult("/"); } return; } //如果当前用户没有登录 if (WorkContext.Uid < 1) { if (WorkContext.IsHttpAjax) { filterContext.Result = AjaxResult("404", "您访问的网址不存在"); } else { filterContext.Result = new RedirectResult("/"); } return; } //如果当前用户不是管理员 if (WorkContext.AdminGid == 1) { if (WorkContext.IsHttpAjax) { filterContext.Result = AjaxResult("404", "您访问的网址不存在"); } else { filterContext.Result = new RedirectResult("/"); } return; } //判断当前用户是否有访问当前页面的权限 if (WorkContext.Controller != "home" && !AdminGroups.CheckAuthority(WorkContext.AdminGid, WorkContext.Controller, WorkContext.PageKey)) { if (WorkContext.IsHttpAjax) { filterContext.Result = AjaxResult("nopermit", "您没有当前操作的权限"); } else { filterContext.Result = PromptView("您没有当前操作的权限!"); } return; } }
protected override void ShowPage() { GetPostAds(forumid); if (userid > 0 && useradminid > 0) { AdminGroupInfo admingroupinfo = AdminGroups.GetAdminGroupInfo(usergroupid); if (admingroupinfo != null) { disablepostctrl = admingroupinfo.Disablepostctrl; } } #region 获取版块信息 if (forumid == -1) { AddLinkRss(forumpath + "tools/rss.aspx", "最新主题"); AddErrLine("无效的版块ID"); return; } forum = Forums.GetForumInfo(forumid); if (forum == null || forum.Fid < 1) { if (config.Rssstatus == 1) { AddLinkRss(forumpath + "tools/rss.aspx", Utils.EncodeHtml(config.Forumtitle) + " 最新主题"); } AddErrLine("不存在的版块ID"); return; } #endregion if (config.Rssstatus == 1) { AddLinkRss(forumpath + "tools/" + base.RssAspxRewrite(forum.Fid), Utils.EncodeHtml(forum.Name) + " 最新主题"); } if (JumpUrl(forum)) { return; } needaudit = UserAuthority.NeedAudit(forum, useradminid, userid, usergroupinfo); // 检查是否具有版主的身份 if (useradminid > 0) { ismoder = Moderators.IsModer(useradminid, userid, forumid); } //设置搜索和排序条件 SetSearchCondition(); showforumlogin = IsShowForumLogin(forum); pagetitle = Utils.RemoveHtml(forum.Name); navhomemenu = Caches.GetForumListMenuDivCache(usergroupid, userid, config.Extname); forumnav = ShowForumAspxRewrite(ForumUtils.UpdatePathListExtname(forum.Pathlist.Trim(), config.Extname).Replace("\"showforum", "\"" + forumurl + "showforum"), forumid, pageid); topicextcreditsinfo = Scoresets.GetScoreSet(Scoresets.GetTopicAttachCreditsTrans()); bonusextcreditsinfo = Scoresets.GetScoreSet(Scoresets.GetBonusCreditsTrans()); #region 主题分类设置 if (forum.Applytopictype == 1) //启用主题分类 { topictypeselectoptions = Forums.GetCurrentTopicTypesOption(forum.Fid, forum.Topictypes); } if (forum.Viewbytopictype == 1) //允许按类别浏览 { topictypeselectlink = Forums.GetCurrentTopicTypesLink(forum.Fid, forum.Topictypes, forumurl + "showforum.aspx"); } #endregion //更新页面Meta中的keyword,description项, 提高SEO友好性 UpdateMetaInfo(Utils.StrIsNullOrEmpty(forum.Seokeywords) ? config.Seokeywords : forum.Seokeywords, Utils.StrIsNullOrEmpty(forum.Seodescription) ? forum.Description : forum.Seodescription, config.Seohead); //设置编辑器状态 SetEditorState(); #region 访问和发帖权限校验 if (!UserAuthority.VisitAuthority(forum, usergroupinfo, userid, ref msg)) { AddErrLine(msg); needlogin = userid == -1; return; } canposttopic = UserAuthority.PostAuthority(forum, usergroupinfo, userid, ref msg); // 如果当前用户非管理员并且论坛设定了禁止发帖时间段,当前时间如果在其中的一个时间段内,不允许用户发帖 if (useradminid != 1 && usergroupinfo.Disableperiodctrl != 1) { string visittime = ""; if (canposttopic && Scoresets.BetweenTime(config.Postbanperiods, out visittime)) { canposttopic = false; } isnewbie = UserAuthority.CheckNewbieSpan(userid); } //是否显示快速发主题编辑器(全局权限判定,版块权限判定,是否是游客,游客需要显示,登录用户是否允许发主题且已过新手见习期) if ((config.Fastpost == 1 || config.Fastpost == 3) && forum.Allowspecialonly <= 0 && (userid < 0 || (canposttopic && !isnewbie))) { canquickpost = true; } #endregion // 得到子版块列表 if (forum.Subforumcount > 0) { subforumlist = Forums.GetSubForumCollection(forumid, forum.Colcount, config.Hideprivate, usergroupid, config.Moddisplay); } if (!forum.Rules.Equals("")) { forum.Rules = UBB.ParseSimpleUBB(forum.Rules);//替换版规中的UBB } //获取主题总数 topiccount = Topics.GetTopicCount(forumid, true, condition); #region 设置分页及主题列表信息 // 得到Tpp设置 if (tpp <= 0) { tpp = config.Tpp; } // 得到Ppp设置 if (ppp <= 0) { ppp = config.Ppp; } //修正请求页数中可能的错误 if (pageid < 1) { pageid = 1; } int toptopicpagecount = 0; if (forum.Layer > 0) { //获取当前页置顶主题列表 DataRow dr = Topics.GetTopTopicListID(forumid); if (dr != null && !Utils.StrIsNullOrEmpty(dr["tid"].ToString())) { topiccount = topiccount + TypeConverter.ObjectToInt(dr["tid0Count"]); } //获取总页数 pagecount = topiccount % tpp == 0 ? topiccount / tpp : topiccount / tpp + 1; if (pagecount == 0) { pagecount = 1; } if (pageid > pagecount) { pageid = pagecount; } if (dr != null && !Utils.StrIsNullOrEmpty(dr["tid"].ToString())) { toptopiccount = TypeConverter.ObjectToInt(dr["tidCount"]); if (toptopiccount > tpp * (pageid - 1)) { toptopiclist = Topics.GetTopTopicList(forumid, tpp, pageid, dr["tid"].ToString(), forum.Autoclose, forum.Topictypeprefix); toptopicpagecount = toptopiccount / tpp; } if (toptopicpagecount >= pageid || (pageid == 1 && toptopicpagecount != toptopiccount)) { topiclist = GetTopicInfoList(tpp - toptopiccount % tpp, pageid - toptopicpagecount, 0); } else { topiclist = GetTopicInfoList(tpp, pageid - toptopicpagecount, toptopiccount % tpp); } } else { toptopicpagecount = 0; topiclist = GetTopicInfoList(tpp, pageid, 0); } //如果topiclist为空则更新当前论坛帖数 if (topiclist == null || topiclist.Count == 0 || topiclist.Count > topiccount) { Forums.SetRealCurrentTopics(forum.Fid); } SetPageNumber(); //当版块数大于一个并且当版块数量为一个时不是版块自身时显示下拉菜单 showvisitedforumsmenu = visitedforums != null && ((visitedforums.Length == 1 && visitedforums[0].Fid != forumid) || visitedforums.Length > 1); SetVisitedForumsCookie(); //保存查看版块的页数 Utils.WriteCookie("forumpageid", pageid.ToString(), 30); //判断是否需要生成游客缓存页面 IsGuestCachePage(); } #endregion #region 替换版规中的UBB forum.Description = UBB.ParseSimpleUBB(forum.Description); #endregion #region 更新在线信息 OnlineUsers.UpdateAction(olid, UserAction.ShowForum.ActionID, forumid, forum.Name, -1, ""); if ((forumtotalonline < config.Maxonlinelist && (config.Whosonlinestatus == 2 || config.Whosonlinestatus == 3)) || DNTRequest.GetString("showonline") == "yes") { showforumonline = true; onlineuserlist = OnlineUsers.GetForumOnlineUserCollection(forumid, out forumtotalonline, out forumtotalonlineguest, out forumtotalonlineuser, out forumtotalonlineinvisibleuser); } //if (DNTRequest.GetString("showonline") != "no") //{ // showforumonline = false; //} if (DNTRequest.GetString("showonline") == "no") { showforumonline = false; } #endregion //修正版主列表 if (forum.Moderators.Trim() != "") { string moderHtml = string.Empty; foreach (string m in forum.Moderators.Split(',')) { moderHtml += string.Format("<a href=\"{0}userinfo.aspx?username={1}\">{2}</a>,", forumpath, Utils.UrlEncode(m), m); } forum.Moderators = moderHtml.TrimEnd(','); } ForumUtils.UpdateVisitedForumsOptions(forumid); }
protected override void ShowPage() { pagetitle = "用户管理"; if (userid == -1) { AddErrLine("请先登录"); return; } if (ForumUtils.IsCrossSitePost(DNTRequest.GetUrlReferrer(), DNTRequest.GetHost()) || Utils.StrIsNullOrEmpty(action)) { AddErrLine("非法提交"); return; } if (action == "") { AddErrLine("操作类型参数为空"); return; } // 如果拥有管理组身份 admininfo = AdminGroups.GetAdminGroupInfo(usergroupid); // 如果所属管理组不存在 if (admininfo == null) { AddErrLine("你没有管理权限"); return; } if (operateduid == -1) { AddErrLine("没有选择要操作的用户"); return; } operateduser = Users.GetShortUserInfo(operateduid); if (operateduser == null) { AddErrLine("选择的用户不存在"); return; } if (operateduser.Adminid > 0) { AddErrLine("无法对拥有管理权限的用户进行操作, 请管理员登录后台进行操作"); return; } operatedusername = operateduser.Username; if (!ispost) { Utils.WriteCookie("reurl", DNTRequest.GetUrlReferrer()); if (action == "banuser") { operationtitle = "禁止用户"; switch (operateduser.Groupid) { case 4: bantype = 1; groupexpiry = "(" + Utils.FormatDate(operateduser.Groupexpiry) + ")"; break; case 5: bantype = 2; groupexpiry = "(" + Utils.FormatDate(operateduser.Groupexpiry) + ")"; break; case 6: bantype = 3; groupexpiry = "(" + Utils.FormatDate(operateduser.Groupexpiry) + ")"; break; default: bantype = 0; break; } if (admininfo.Allowbanuser != 1) { AddErrLine("您没有禁止用户的权限"); return; } } } else if (action == "banuser") { operationtitle = "禁止用户"; DoBanUserOperation(); } }
protected override void ShowPage() { //pagetitle = "编辑帖子"; #region 判断是否是灌水 AdminGroupInfo admininfo = AdminGroups.GetAdminGroupInfo(usergroupid); this.disablepostctrl = 0; if (admininfo != null) { disablepostctrl = admininfo.Disablepostctrl; } #endregion if (userid == -1) { forum = new ForumInfo(); topic = new TopicInfo(); postinfo = new PostInfo(); AddErrLine("您尚未登录"); return; } #region 获取帖子和主题相关信息 // 如果帖子ID非数字 if (postid == -1) { AddErrLine("无效的帖子ID"); return; } postinfo = Posts.GetPostInfo(topicid, postid); // 如果帖子不存在 if (postinfo == null) { AddErrLine("不存在的帖子ID"); return; } pagetitle = (postinfo.Title == "") ? "编辑帖子" : postinfo.Title; htmlon = postinfo.Htmlon; message = postinfo.Message; isfirstpost = postinfo.Layer == 0; // 获取主题ID if (topicid != postinfo.Tid || postinfo.Tid == -1) { AddErrLine("无效的主题ID"); return; } // 获取该主题的信息 topic = Topics.GetTopicInfo(postinfo.Tid); // 如果该主题不存在 if (topic == null) { AddErrLine("不存在的主题ID"); return; } if (topic.Special == 1 && postinfo.Layer == 0) { pollinfo = Polls.GetPollInfo(topic.Tid); polloptionlist = Polls.GetPollOptionList(topic.Tid); } if (topic.Special == 4 && postinfo.Layer == 0) { debateinfo = Debates.GetDebateTopic(topic.Tid); } #endregion #region 获取并检查版块信息 ///得到所在版块信息 forumid = topic.Fid; forum = Forums.GetForumInfo(forumid); needaudit = UserAuthority.NeedAudit(forum, useradminid, topic, userid, disablepostctrl, usergroupinfo); // 如果该版块不存在 if (forum == null || forum.Layer == 0) { AddErrLine("版块已不存在"); forum = new ForumInfo(); return; } if (!Utils.StrIsNullOrEmpty(forum.Password) && Utils.MD5(forum.Password) != ForumUtils.GetCookie("forum" + forumid + "password")) { AddErrLine("本版块被管理员设置了密码"); SetBackLink(base.ShowForumAspxRewrite(forumid, 0)); return; } if (forum.Applytopictype == 1) //启用主题分类 { topictypeselectoptions = Forums.GetCurrentTopicTypesOption(forum.Fid, forum.Topictypes); } customeditbuttons = Caches.GetCustomEditButtonList(); #endregion //是否有编辑帖子的权限 if (!UserAuthority.CanEditPost(postinfo, userid, useradminid, ref msg)) { AddErrLine(msg); return; } #region 附件信息绑定 //得到用户可以上传的文件类型 string attachmentTypeSelect = Attachments.GetAllowAttachmentType(usergroupinfo, forum); attachextensions = Attachments.GetAttachmentTypeArray(attachmentTypeSelect); attachextensionsnosize = Attachments.GetAttachmentTypeString(attachmentTypeSelect); //得到今天允许用户上传的附件总大小(字节) int MaxTodaySize = (userid > 0 ? MaxTodaySize = Attachments.GetUploadFileSizeByuserid(userid) : 0); attachsize = usergroupinfo.Maxsizeperday - MaxTodaySize;//今天可上传得大小 //是否有上传附件的权限 canpostattach = UserAuthority.PostAttachAuthority(forum, usergroupinfo, userid, ref msg); userinfo = Users.GetShortUserInfo(userid); if (canpostattach && (config.Enablealbum == 1) && apb != null && (UserGroups.GetUserGroupInfo(userinfo.Groupid).Maxspacephotosize - apb.GetPhotoSizeByUserid(userid) > 0)) { caninsertalbum = true; albumlist = apb.GetSpaceAlbumByUserId(userid); } else { caninsertalbum = false; } attachmentlist = Attachments.GetAttachmentListByPid(postinfo.Pid); attachmentcount = attachmentlist.Rows.Count; //当前用户是否有允许下载附件权限 allowviewattach = UserAuthority.DownloadAttachment(forum, userid, usergroupinfo); #endregion smileyoff = (!DNTRequest.IsPost()) ? postinfo.Smileyoff : 1 - forum.Allowsmilies; allowimg = forum.Allowimgcode; parseurloff = postinfo.Parseurloff; bbcodeoff = (usergroupinfo.Allowcusbbcode == 1) ? postinfo.Bbcodeoff : 1; usesig = postinfo.Usesig; userextcreditsinfo = Scoresets.GetScoreSet(Scoresets.GetTopicAttachCreditsTrans()); if (bonusCreditsTrans > 0 && bonusCreditsTrans < 9) { bonusextcreditsinfo = Scoresets.GetScoreSet(bonusCreditsTrans); mybonustranscredits = Users.GetUserExtCredits(userid, bonusCreditsTrans); } //是否有访问当前版块的权限 if (!UserAuthority.VisitAuthority(forum, usergroupinfo, userid, ref msg)) { AddErrLine(msg); return; } // 判断当前用户是否有修改权限, 检查是否具有版主的身份 if (!Moderators.IsModer(useradminid, userid, forumid)) { if (postinfo.Posterid != userid) { AddErrLine("你并非作者, 且你当前的身份 \"" + usergroupinfo.Grouptitle + "\" 没有修改该帖的权限"); return; } else if (config.Edittimelimit > 0 && Utils.StrDateDiffMinutes(postinfo.Postdatetime, config.Edittimelimit) > 0) { AddErrLine("抱歉, 系统规定只能在帖子发表" + config.Edittimelimit + "分钟内才可以修改"); return; } else if (config.Edittimelimit == -1) { AddErrLine("抱歉,系统不允许修改帖子"); return; } } #region htmltitle标题 if (postinfo.Layer == 0) { canhtmltitle = usergroupinfo.Allowhtmltitle == 1; } if (Topics.GetMagicValue(topic.Magic, MagicType.HtmlTitle) == 1) { htmltitle = Topics.GetHtmlTitle(topic.Tid).Replace("\"", "\\\"").Replace("'", "\\'"); } #endregion #region tag信息 enabletag = (config.Enabletag & forum.Allowtag) == 1; if (enabletag && Topics.GetMagicValue(topic.Magic, MagicType.TopicTag) == 1) { foreach (TagInfo tag in ForumTags.GetTagsListByTopic(topic.Tid)) { if (tag.Orderid > -1) { topictags += string.Format(" {0}", tag.Tagname); } } topictags = topictags.Trim(); } #endregion userGroupInfoList.Sort(delegate(UserGroupInfo x, UserGroupInfo y) { return((x.Readaccess - y.Readaccess) + (y.Groupid - x.Groupid)); }); //如果是提交... if (ispost) { SetBackLink("editpost.aspx?topicid=" + postinfo.Tid + "&postid=" + postinfo.Pid); if (ForumUtils.IsCrossSitePost()) { AddErrLine("您的请求来路不正确,无法提交。如果您安装了某种默认屏蔽来路信息的个人防火墙软件(如 Norton Internet Security),请设置其不要禁止来路信息后再试。"); return; } //设置相关帖子信息 SetPostInfo(admininfo, userinfo, Utils.StrToInt(DNTRequest.GetString("htmlon"), 0) == 1); if (IsErr()) { return; } //通过验证的用户可以编辑帖子 Posts.UpdatePost(postinfo); //设置附件相关信息 System.Text.StringBuilder sb = SetAttachmentInfo(); if (IsErr()) { return; } UserCredits.UpdateUserCredits(userid); #region 设置提示信息和跳转链接 //辩论地址 if (topic.Special == 4) { SetUrl(Urls.ShowDebateAspxRewrite(topic.Tid)); } else if (DNTRequest.GetQueryString("referer") != "")//ajax快速回复将传递referer参数 { SetUrl(string.Format("showtopic.aspx?page=end&forumpage={2}&topicid={0}#{1}", topic.Tid, postinfo.Pid, forumpageid)); } else if (pageid != "")//如果不是ajax,则应该是带pageid的参数 { if (config.Aspxrewrite == 1) { SetUrl(string.Format("showtopic-{0}-{2}{1}#{3}", topic.Tid, config.Extname, DNTRequest.GetString("pageid"), postinfo.Pid)); } else { SetUrl(string.Format("showtopic.aspx?topicid={0}&forumpage={3}&page={2}#{1}", topic.Tid, postinfo.Pid, DNTRequest.GetString("pageid"), forumpageid)); } } else//如果都为空.就跳转到第一页(以免意外情况) { if (config.Aspxrewrite == 1) { SetUrl(string.Format("showtopic-{0}{1}", topic.Tid, config.Extname)); } else { SetUrl(string.Format("showtopic.aspx?topicid={0}&forumpage={1}", topic.Tid, forumpageid)); } } if (sb.Length > 0) { SetMetaRefresh(5); SetShowBackLink(true); if (infloat == 1) { AddErrLine(sb.ToString()); return; } else { sb.Insert(0, "<table cellspacing=\"0\" cellpadding=\"4\" border=\"0\"><tr><td colspan=2 align=\"left\"><span class=\"bold\"><nobr>编辑帖子成功,但图片/附件上传出现问题:</nobr></span><br /></td></tr>"); sb.Append("</table>"); AddMsgLine(sb.ToString()); } } else { //编辑主题和回复需要审核 if (postinfo.Layer == 0) { SetMetaRefresh(2, base.ShowForumAspxRewrite(forumid, forumpageid)); } else { SetMetaRefresh(); } SetShowBackLink(false); if (useradminid != 1 && (needaudit || topic.Displayorder == -2 || postinfo.Invisible == 1)) { if (postinfo.Layer == 0) { SetUrl(base.ShowForumAspxRewrite(forumid, forumpageid)); } else { SetUrl(base.ShowTopicAspxRewrite(topic.Tid, forumpageid)); } AddMsgLine("编辑成功, 但需要经过审核才可以显示"); } else { MsgForward("editpost_succeed"); AddMsgLine("编辑帖子成功, 返回该主题"); } } #endregion // 删除主题游客缓存 if (postinfo.Layer == 0) { ForumUtils.DeleteTopicCacheFile(topic.Tid); } } else { AddLinkCss(BaseConfigs.GetForumPath + "templates/" + templatepath + "/editor.css", "css"); } }