Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using Telerik.Sitefinity.Data;
- using Telerik.Sitefinity.Scheduling;
- using Telerik.Sitefinity.Security;
- namespace SitefinityWebApp
- {
- public class DeleteOrphanedUserProfilesTask : ScheduledTask
- {
- public DeleteOrphanedUserProfilesTask()
- {
- this.Key = TaskKey;
- }
- public override void ExecuteTask()
- {
- var transactionName = string.Concat("DeleteOrphanProfiles", Guid.NewGuid());
- var hasDeletionOccured = false;
- var providers = UserProfileManager.ProvidersCollection;
- foreach (var provider in providers)
- {
- var profileManager = UserProfileManager.GetManager(provider.Name, transactionName);
- var profiles = profileManager.GetUserProfiles();
- foreach (var profile in profiles)
- {
- if (profile.User == null)
- {
- profileManager.Delete(profile);
- hasDeletionOccured = true;
- }
- }
- }
- if (hasDeletionOccured)
- {
- TransactionManager.CommitTransaction(transactionName);
- }
- }
- public static void SheduleTask(DateTime executeTime)
- {
- var schedulingManager = SchedulingManager.GetManager();
- var existingTask = schedulingManager.GetTaskData().FirstOrDefault(x => x.Key == TaskKey);
- if (existingTask == null)
- {
- var newTask = new DeleteOrphanedUserProfilesTask()
- {
- ExecuteTime = executeTime
- };
- schedulingManager.AddTask(newTask);
- }
- else
- {
- existingTask.ExecuteTime = executeTime;
- }
- SchedulingManager.RescheduleNextRun();
- schedulingManager.SaveChanges();
- }
- public override string TaskName
- {
- get
- {
- return this.GetType().FullName;
- }
- }
- private static readonly string TaskKey = "8278E45E-9EBA-4EB9-9EE5-3201415A0AED";
- }
- }
Add Comment
Please, Sign In to add comment