public override void SavePersonalizationState(PersonalizationState state) { // Take care of the unexpected personalization behavior, when User scope is not used, we need to ensure that scope is able to be changed to shared scope. // 1. check web.config authorization section that enterSharedScope is allowed to * users. // 2. misconfigured authorization section leads to data loss due to the personalization data becomes user scope before saving the state if (state.WebPartManager.Personalization.Scope == PersonalizationScope.User) { try { SenseNetPersonalizationProvider.WriteLog(string.Format("SavePersonalizationState --> Personalization.Scope = PersonalizationScope.User: trying to ToggleScope();")); state.WebPartManager.Personalization.ToggleScope(); } catch (InvalidOperationException exc) //logged { Logger.WriteException(exc); } catch (ArgumentOutOfRangeException exc) //logged { Logger.WriteException(exc); } } try { base.SavePersonalizationState(state); } catch (InvalidContentActionException ex) { //not enough permissions to save page state, never mind Logger.WriteException(ex); } }
public static void SaveBlob(string path, byte[] sharedDataBlob) { if (SNP.Page.Current == null || String.IsNullOrEmpty(SNP.Page.Current.Path)) { throw new PersonalizationException("No page loaded."); } var p = SNP.Page.Current; if (p.PersonalizationSettings != null) { if (sharedDataBlob.Length == 0) { SenseNetPersonalizationProvider.WriteLog(String.Format("SaveBlob --> missing personalization settings at {0} path.", SNP.Page.Current.Path)); } p.PersonalizationSettings.SetStream(new MemoryStream(sharedDataBlob)); } else { BinaryData binaryPers = new BinaryData(); binaryPers.SetStream(new MemoryStream(sharedDataBlob)); p.PersonalizationSettings = binaryPers; } p.Save(); }
public override int ResetUserState(string path, DateTime userInactiveSinceDate) { SenseNetPersonalizationProvider.WriteLog(String.Concat("SenseNetPersonalizationProvider.ResetUserState called.")); return(0); }
public override int ResetState(PersonalizationScope scope, string[] paths, string[] usernames) { SenseNetPersonalizationProvider.WriteLog(String.Concat("SenseNetPersonalizationProvider.ResetState called.")); return(0); }
protected override void SavePersonalizationBlob(WebPartManager webPartManager, string path, string userName, byte[] dataBlob) { SenseNetPersonalizationProvider.SaveBlob(path, dataBlob); }
protected override void LoadPersonalizationBlobs(WebPartManager webPartManager, string path, string userName, ref byte[] sharedDataBlob, ref byte[] userDataBlob) { sharedDataBlob = SenseNetPersonalizationProvider.LoadBlob(path); }