using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.SiteProvider; using CMS.UIControls; public partial class CMSModules_Membership_Pages_Roles_Role_Edit_Memberships : CMSRolesPage { #region "Variables" private string currentValues = String.Empty; private int mRoleID = 0; #endregion #region "Properties" /// /// Current role ID. /// private int RoleID { get { if (mRoleID == 0) { mRoleID = QueryHelper.GetInteger("roleid", 0); } return mRoleID; } } #endregion #region "Methods" protected void Page_Load(object sender, EventArgs e) { CurrentUserInfo user = CMSContext.CurrentUser; // Check UI profile for membership if (!user.IsAuthorizedPerUIElement("CMS.Administration", "Membership")) { RedirectToCMSDeskUIElementAccessDenied("CMS.Administration", "Membership"); } // Check "read" permission if (!user.IsAuthorizedPerResource("CMS.Membership", "Read")) { RedirectToAccessDenied("CMS.Membership", "Read"); } DataSet ds = MembershipRoleInfoProvider.GetMembershipRoles("RoleID = " + RoleID, String.Empty); if (!DataHelper.DataSourceIsEmpty(ds)) { currentValues = TextHelper.Join(";", SystemDataHelper.GetStringValues(ds.Tables[0], "MembershipID")); } if (!RequestHelper.IsPostBack()) { // Set values usMemberships.Value = currentValues; } // Init uni selector usMemberships.ReturnColumnName = "MembershipID"; usMemberships.DynamicColumnName = true; usMemberships.OnSelectionChanged += new EventHandler(usMemberships_OnSelectionChanged); string siteWhere = (SiteID <= 0) ? "MembershipSiteID IS NULL" : "MembershipSiteID =" + SiteID; usMemberships.ListingWhereCondition = SqlHelperClass.AddWhereCondition(usMemberships.ListingWhereCondition, siteWhere); usMemberships.WhereCondition = SqlHelperClass.AddWhereCondition(usMemberships.WhereCondition, siteWhere); } protected void usMemberships_OnSelectionChanged(object sender, EventArgs ea) { SaveData(); } /// /// Store selected (unselected) memberships. /// private void SaveData() { bool saved = false; // Check permission for manage membership if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Membership", "Modify")) { RedirectToAccessDenied("CMS.Membership", "Modify"); } // Remove old items string newValues = ValidationHelper.GetString(usMemberships.Value, null); string items = DataHelper.GetNewItemsInList(newValues, currentValues); if (!String.IsNullOrEmpty(items)) { string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (newItems != null) { foreach (string item in newItems) { int membershipID = ValidationHelper.GetInteger(item, 0); MembershipRoleInfoProvider.RemoveMembershipFromRole(membershipID, RoleID); MembershipInfoProvider.InvalidateMembershipUsers(membershipID); saved = true; } } } // Add new items items = DataHelper.GetNewItemsInList(currentValues, newValues); if (!String.IsNullOrEmpty(items)) { string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (newItems != null) { // Add all new items to membership foreach (string item in newItems) { int membershipID = ValidationHelper.GetInteger(item, 0); MembershipRoleInfoProvider.AddMembershipToRole(membershipID, RoleID); MembershipInfoProvider.InvalidateMembershipUsers(membershipID); saved = true; } } } if (saved) { usMemberships.Reload(true); ShowChangesSaved(); } } #endregion }