/// <summary> /// Imports the users. /// </summary> /// <param name="boardId">The board id.</param> /// <param name="portalId">The portal id.</param> /// <param name="portalGUID">The portal unique identifier.</param> /// <param name="info">The information text.</param> /// <returns> /// Returns the Number of Users that where imported /// </returns> public static int ImportUsers(int boardId, int portalId, Guid portalGUID, out string info) { var newUserCount = 0; var users = UserController.GetUsers(portalId); users.Sort(new UserComparer()); // Load Yaf Board Settings if needed var boardSettings = YafContext.Current == null ? new YafLoadBoardSettings(boardId) : YafContext.Current.Get <YafBoardSettings>(); var rolesChanged = false; try { foreach (UserInfo dnnUserInfo in users) { var dnnUser = Membership.GetUser(dnnUserInfo.Username, true); if (dnnUser == null) { continue; } if (dnnUserInfo.IsDeleted) { // TODO : Delete user in yaf continue; } var yafUserId = LegacyDb.user_get(boardId, dnnUser.ProviderUserKey); if (yafUserId.Equals(0)) { // Create user if Not Exist yafUserId = CreateYafUser(dnnUserInfo, dnnUser, boardId, portalId, boardSettings); newUserCount++; } else { ProfileSyncronizer.UpdateUserProfile( yafUserId, YafUserProfile.GetProfile(dnnUser.UserName), new CustomCombinedUserDataHelper(dnnUser, yafUserId, boardId), dnnUserInfo, dnnUser, portalId, portalGUID, boardSettings, true); } rolesChanged = RoleSyncronizer.SynchronizeUserRoles(boardId, portalId, yafUserId, dnnUserInfo); // super admin check... if (dnnUserInfo.IsSuperUser) { CreateYafHostUser(yafUserId, boardId); } } YafContext.Current.Get <IDataCache>().Clear(); DataCache.ClearCache(); } catch (Exception ex) { Exceptions.LogException(ex); } info = "{0} User(s) Imported, all user profiles are synchronized{1}".FormatWith( newUserCount, rolesChanged ? ", but all User Roles are synchronized!" : ", User Roles already synchronized!"); return(newUserCount); }
/// <summary> /// Creates the YAF user. /// </summary> /// <param name="dnnUserInfo">The DNN user info.</param> /// <param name="dnnUser">The DNN user.</param> /// <param name="boardId">The board ID.</param> /// <param name="portalId">The portal identifier.</param> /// <param name="boardSettings">The board settings.</param> /// <returns> /// Returns the User ID of the new User /// </returns> public static int CreateYafUser( UserInfo dnnUserInfo, MembershipUser dnnUser, int boardId, int portalId, YafBoardSettings boardSettings) { // setup roles RoleMembershipHelper.SetupUserRoles(boardId, dnnUser.UserName); // create the user in the YAF DB so profile can gets created... var yafUserId = RoleMembershipHelper.CreateForumUser(dnnUser, dnnUserInfo.DisplayName, boardId); if (yafUserId == null) { return(0); } // create profile var userProfile = YafUserProfile.GetProfile(dnnUser.UserName); // setup their initial profile information userProfile.Initialize(dnnUser.UserName, true); if (dnnUserInfo.Profile.FullName.IsSet()) { userProfile.RealName = dnnUserInfo.Profile.FullName; } if (dnnUserInfo.Profile.Country.IsSet() && !dnnUserInfo.Profile.Country.Equals("N/A")) { var regionInfo = ProfileSyncronizer.GetRegionInfoFromCountryName(dnnUserInfo.Profile.Country); if (regionInfo != null) { userProfile.Country = regionInfo.TwoLetterISORegionName; } } if (dnnUserInfo.Profile.City.IsSet()) { userProfile.City = dnnUserInfo.Profile.City; } if (dnnUserInfo.Profile.Website.IsSet()) { userProfile.Homepage = dnnUserInfo.Profile.Website; } userProfile.Save(); var autoWatchTopicsEnabled = boardSettings.DefaultNotificationSetting.Equals(UserNotificationSetting.TopicsIPostToOrSubscribeTo); // Save User LegacyDb.user_save( userID: yafUserId, boardID: boardId, userName: dnnUserInfo.Username, displayName: dnnUserInfo.DisplayName, email: dnnUserInfo.Email, timeZone: dnnUserInfo.Profile.PreferredTimeZone.Id, languageFile: null, culture: null, themeFile: null, textEditor: null, useMobileTheme: null, approved: null, pmNotification: boardSettings.DefaultNotificationSetting, autoWatchTopics: autoWatchTopicsEnabled, dSTUser: dnnUserInfo.Profile.PreferredTimeZone.SupportsDaylightSavingTime, hideUser: null, notificationType: null); // save notification Settings LegacyDb.user_savenotification( yafUserId, true, autoWatchTopicsEnabled, boardSettings.DefaultNotificationSetting, boardSettings.DefaultSendDigestEmail); RoleSyncronizer.SynchronizeUserRoles(boardId, portalId, yafUserId.ToType <int>(), dnnUserInfo); return(yafUserId.ToType <int>()); }
/// <summary> /// Creates the YAF user. /// </summary> /// <param name="dnnUserInfo">The DNN user info.</param> /// <param name="dnnUser">The DNN user.</param> /// <param name="boardID">The board ID.</param> /// <param name="portalID">The portal identifier.</param> /// <param name="boardSettings">The board settings.</param> /// <returns> /// Returns the User ID of the new User /// </returns> public static int CreateYafUser( UserInfo dnnUserInfo, MembershipUser dnnUser, int boardID, int portalID, YafBoardSettings boardSettings) { // setup roles RoleMembershipHelper.SetupUserRoles(boardID, dnnUser.UserName); // create the user in the YAF DB so profile can gets created... var yafUserId = RoleMembershipHelper.CreateForumUser(dnnUser, dnnUserInfo.DisplayName, boardID); if (yafUserId == null) { return(0); } // create profile var userProfile = YafUserProfile.GetProfile(dnnUser.UserName); // setup their initial profile information userProfile.Initialize(dnnUser.UserName, true); if (dnnUserInfo.Profile.FullName.IsSet()) { userProfile.RealName = dnnUserInfo.Profile.FullName; } if (dnnUserInfo.Profile.Country.IsSet() && !dnnUserInfo.Profile.Country.Equals("N/A")) { var regionInfo = ProfileSyncronizer.GetRegionInfoFromCountryName(dnnUserInfo.Profile.Country); if (regionInfo != null) { userProfile.Country = regionInfo.TwoLetterISORegionName; } } if (dnnUserInfo.Profile.City.IsSet()) { userProfile.City = dnnUserInfo.Profile.City; } if (dnnUserInfo.Profile.Website.IsSet()) { userProfile.Homepage = dnnUserInfo.Profile.Website; } userProfile.Save(); // Save User LegacyDb.user_save( yafUserId, boardID, dnnUserInfo.Username, dnnUserInfo.DisplayName, dnnUserInfo.Email, 0, null, null, null, null, null, null, null, null, null, null, null); var autoWatchTopicsEnabled = boardSettings.DefaultNotificationSetting.Equals(UserNotificationSetting.TopicsIPostToOrSubscribeTo); // save notification Settings LegacyDb.user_savenotification( yafUserId, true, autoWatchTopicsEnabled, boardSettings.DefaultNotificationSetting, boardSettings.DefaultSendDigestEmail); RoleSyncronizer.SynchronizeUserRoles(boardID, portalID, yafUserId.ToType <int>(), dnnUserInfo); return(yafUserId.ToType <int>()); }
/// <summary> /// Imports the users. /// </summary> /// <param name="boardId">The board id.</param> /// <param name="portalId">The portal id.</param> /// <param name="info">The information text.</param> /// <returns> /// Returns the Number of Users that where imported /// </returns> public static int ImportUsers(int boardId, int portalId, out string info) { var newUserCount = 0; var users = UserController.GetUsers(portalId); // Inject SU here users.AddRange(UserController.GetUsers(false, true, Null.NullInteger)); users.Sort(new UserComparer()); // Load Yaf Board Settings if needed var boardSettings = BoardContext.Current == null ? new LoadBoardSettings(boardId) : BoardContext.Current.Get <BoardSettings>(); var rolesChanged = false; try { foreach (UserInfo dnnUserInfo in users) { var dnnUser = Membership.GetUser(dnnUserInfo.Username, true); if (dnnUser == null) { continue; } // un-approve soft deleted user in yaf if (dnnUserInfo.IsDeleted && dnnUser.IsApproved) { dnnUser.IsApproved = false; Membership.UpdateUser(dnnUser); continue; } if (!dnnUserInfo.IsDeleted && !dnnUser.IsApproved) { dnnUser.IsApproved = true; Membership.UpdateUser(dnnUser); } var yafUserId = BoardContext.Current.GetRepository <User>().GetUserId(boardId, dnnUser.ProviderUserKey.ToString()); if (yafUserId.Equals(0)) { // Create user if Not Exist yafUserId = CreateYafUser(dnnUserInfo, dnnUser, boardId, portalId, boardSettings); newUserCount++; } else { ProfileSyncronizer.UpdateUserProfile( yafUserId, YAF.Utils.UserProfile.GetProfile(dnnUser.UserName), new CustomCombinedUserDataHelper(dnnUser, yafUserId, boardId), dnnUserInfo, boardSettings, true); } rolesChanged = RoleSyncronizer.SynchronizeUserRoles(boardId, portalId, yafUserId, dnnUserInfo); // super admin check... if (dnnUserInfo.IsSuperUser) { SetYafHostUser(yafUserId, boardId); } } BoardContext.Current.Get <IDataCache>().Clear(); DataCache.ClearCache(); } catch (Exception ex) { Exceptions.LogException(ex); } info = $"{newUserCount} User(s) Imported, all user profiles are synchronized{(rolesChanged ? ", but all User Roles are synchronized!" : ", User Roles already synchronized!")}"; return(newUserCount); }