In DNN5, code that calls DotNetNuke.Entities.Users.UserController.GetUser() etc will return a UserInfo object even if the user is deleted. Therefore you may have to check the UserInfo.IsDeleted property every time you get a user.
I would have not have implemented it this way. I'd keep the DNN4 functionality and have extra API calls to find deleted users. I wonder: does the DNN core code always check IsDeleted now?
Anyway, UserInfo.IsDeleted is not available in DNN4. As I do not want different versions of my code for DNN4 and DNN5, I have written this isUserDeleted() static method that uses reflection to detect if the IsDeleted property is available and if so calls it. It returns true if the UserInfo is null. After that, for DNN4 it always returns false.
public static bool isUserDeleted(UserInfo ui)
{
if (ui == null) return true;
try {
Type tUserInfo = ui.GetType();
PropertyInfo piIsDeleted = tUserInfo.GetProperty("IsDeleted");
if (piIsDeleted != null)
{
bool IsDeleted = (bool)piIsDeleted.GetValue(ui, null);
return IsDeleted;
}
}
catch (Exception) { }
return false;
}
No comments:
Post a Comment