/// <summary> /// Updates the current Group or creates new if no GroupID is present. /// </summary> public void SaveData() { // Check banned IP if (!BannedIPInfoProvider.IsAllowed(SiteContext.CurrentSiteName, BanControlEnum.AllNonComplete)) { ShowError(GetString("General.BannedIP")); return; } // Validate form entries string errorMessage = ValidateForm(); if (errorMessage == string.Empty) { try { codeName = GetSafeCodeName(); codeName = GetUniqueCodeName(codeName); GroupInfo group = new GroupInfo(); group.GroupDisplayName = txtDisplayName.Text; group.GroupName = codeName; group.GroupDescription = txtDescription.Text; group.GroupAccess = GetGroupAccess(); group.GroupSiteID = mSiteId; group.GroupApproveMembers = GetGroupApproveMembers(); // Set columns GroupCreatedByUserID and GroupApprovedByUserID to current user var user = MembershipContext.AuthenticatedUser; if (user != null) { group.GroupCreatedByUserID = user.UserID; if ((!RequireApproval) || (CurrentUserIsAdmin())) { group.GroupApprovedByUserID = user.UserID; group.GroupApproved = true; } } // Save Group in the database GroupInfoProvider.SetGroupInfo(group); // Create group admin role RoleInfo roleInfo = new RoleInfo(); roleInfo.DisplayName = "Group admin"; roleInfo.RoleName = group.GroupName + "_groupadmin"; roleInfo.RoleGroupID = group.GroupID; roleInfo.RoleIsGroupAdministrator = true; roleInfo.SiteID = mSiteId; // Save group admin role RoleInfoProvider.SetRoleInfo(roleInfo); if (user != null) { // Set user as member of group GroupMemberInfo gmi = new GroupMemberInfo(); gmi.MemberUserID = user.UserID; gmi.MemberGroupID = group.GroupID; gmi.MemberJoined = DateTime.Now; gmi.MemberStatus = GroupMemberStatus.Approved; gmi.MemberApprovedWhen = DateTime.Now; gmi.MemberApprovedByUserID = user.UserID; // Save user as member of group GroupMemberInfoProvider.SetGroupMemberInfo(gmi); // Set user as member of admin group role UserRoleInfo userRole = new UserRoleInfo(); userRole.UserID = user.UserID; userRole.RoleID = roleInfo.RoleID; // Save user as member of admin group role UserRoleInfoProvider.SetUserRoleInfo(userRole); } // Clear user session a request MembershipContext.AuthenticatedUser.Generalized.Invalidate(false); MembershipContext.AuthenticatedUser = null; string culture = CultureHelper.EnglishCulture.ToString(); if (DocumentContext.CurrentDocument != null) { culture = DocumentContext.CurrentDocument.DocumentCulture; } // Copy document errorMessage = GroupInfoProvider.CopyGroupDocument(group, GroupTemplateSourceAliasPath, GroupTemplateTargetAliasPath, GroupProfileURLPath, culture, CombineWithDefaultCulture, MembershipContext.AuthenticatedUser, roleInfo); if (!String.IsNullOrEmpty(errorMessage)) { // Display error message ShowError(errorMessage); return; } // Create group forum if (CreateForum) { CreateGroupForum(group); // Create group forum search index if (CreateSearchIndexes) { CreateGroupForumSearchIndex(group); } } // Create group media library if (CreateMediaLibrary) { CreateGroupMediaLibrary(group); } // Create search index for group documents if (CreateSearchIndexes) { CreateGroupContentSearchIndex(group); } // Display information on success ShowConfirmation(GetString("group.group.createdinfo")); // If URL is set, redirect user to specified page if (!String.IsNullOrEmpty(RedirectToURL)) { URLHelper.Redirect(ResolveUrl(DocumentURLProvider.GetUrl(RedirectToURL))); } // After registration message if ((RequireApproval) && (!CurrentUserIsAdmin())) { ShowConfirmation(SuccessfullRegistrationWaitingForApprovalText); // Send approval email to admin if (!String.IsNullOrEmpty(SendWaitingForApprovalEmailTo)) { // Create the message EmailTemplateInfo eti = EmailTemplateProvider.GetEmailTemplate("Groups.WaitingForApproval", SiteContext.CurrentSiteName); if (eti != null) { EmailMessage message = new EmailMessage(); if (String.IsNullOrEmpty(eti.TemplateFrom)) { message.From = SettingsKeyInfoProvider.GetStringValue(SiteContext.CurrentSiteName + ".CMSSendEmailNotificationsFrom"); } else { message.From = eti.TemplateFrom; } MacroResolver resolver = MacroContext.CurrentResolver; resolver.SetAnonymousSourceData(group); resolver.SetNamedSourceData("Group", group); message.Recipients = SendWaitingForApprovalEmailTo; message.Subject = resolver.ResolveMacros(eti.TemplateSubject); message.Body = resolver.ResolveMacros(eti.TemplateText); resolver.Settings.EncodeResolvedValues = false; message.PlainTextBody = resolver.ResolveMacros(eti.TemplatePlainText); // Send the message using email engine EmailSender.SendEmail(message); } } } else { string groupPath = SettingsKeyInfoProvider.GetStringValue(SiteContext.CurrentSiteName + ".CMSGroupProfilePath"); string url = String.Empty; if (!String.IsNullOrEmpty(groupPath)) { url = DocumentURLProvider.GetUrl(groupPath.Replace("{GroupName}", group.GroupName)); } ShowConfirmation(String.Format(SuccessfullRegistrationText, url)); } // Hide form if (HideFormAfterRegistration) { plcForm.Visible = false; } else { ClearForm(); } } catch (Exception ex) { // Display error message ShowError(GetString("general.saveerror"), ex.Message, null); } } else { // Display error message ShowError(errorMessage); } }