Skip to content

Commit

Permalink
Merge pull request #776 from johnhenley/dev81/8-issues/modUser-permis…
Browse files Browse the repository at this point in the history
…sion-for-social-group

FIX: Insert missing security option for social group in module settings
  • Loading branch information
WillStrohl committed May 2, 2024
2 parents 0db9b21 + dfac523 commit 5741a6e
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 22 deletions.
4 changes: 2 additions & 2 deletions Dnn.CommunityForums/ForumSettings.ascx.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ protected override void OnLoad(EventArgs e)
{
rdEnableURLRewriter.SelectedIndex = 1;
rdEnableURLRewriter.Enabled = false;
}
var u = DotNetNuke.Entities.Users.UserController.Instance.GetCurrentUserInfo();
}
var u = DotNetNuke.Entities.Users.UserController.Instance.GetCurrentUserInfo();
if (u.IsSuperUser & (HttpRuntime.IISVersion.Major >= 7) &!(PortalSettings.PortalAlias.HTTPAlias.Contains("/")))
{
if (Utilities.IsRewriteLoaded())
Expand Down
23 changes: 3 additions & 20 deletions Dnn.CommunityForums/components/Common/ForumSettingsBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,22 +24,6 @@ namespace DotNetNuke.Modules.ActiveForums
{
public class ForumSettingsBase : ModuleSettingsBase
{
/// <summary>
/// This method is only needed because of an issue in DNN as of 8.0.4 where settings don't get updated if they are equal when compared case insensitively
/// </summary>
/// <param name="key"></param>
/// <param name="newValue"></param>
private void UpdateTabModuleSettingCaseSensitive(string key, string newValue)
{
var oldValue = Settings.GetString(key);
if (oldValue != null && oldValue != newValue && oldValue.ToLowerInvariant() == newValue.ToLowerInvariant())
{
// changed but case-insensitive identical: empty the setting first
UpdateTabModuleSettingCaseSensitive(key, "");
}
DotNetNuke.Entities.Modules.ModuleController.Instance.UpdateTabModuleSetting(TabModuleId, key, newValue);
}

/// <summary>
/// This method is only needed because of an issue in DNN as of 8.0.4 where settings don't get updated if they are equal when compared case insensitively
/// </summary>
Expand All @@ -64,7 +48,7 @@ public string Mode
}
set
{
UpdateTabModuleSettingCaseSensitive(SettingKeys.Mode, value);
UpdateModuleSettingCaseSensitive(SettingKeys.Mode, value);
}
}

Expand Down Expand Up @@ -407,8 +391,7 @@ public int ForumGroupTemplate
}
set
{
//Use Tab Module Setting
UpdateTabModuleSettingCaseSensitive("ForumGroupTemplate", value.ToString());
UpdateModuleSettingCaseSensitive("ForumGroupTemplate", value.ToString());
}
}

Expand All @@ -420,7 +403,7 @@ public string ForumConfig
}
set
{
UpdateTabModuleSettingCaseSensitive("ForumConfig", value);
UpdateModuleSettingCaseSensitive("ForumConfig", value);
}
}

Expand Down
48 changes: 48 additions & 0 deletions Dnn.CommunityForums/components/Helpers/UpgradeModuleSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
// DEALINGS IN THE SOFTWARE.
//

using System.Reflection;
using System.Web.UI;
using System.Xml;
using DotNetNuke.Common.Utilities;
using DotNetNuke.Entities.Modules;
using DotNetNuke.Entities.Portals;
using DotNetNuke.Instrumentation;
Expand Down Expand Up @@ -133,6 +137,50 @@ internal static void DeleteObsoleteModuleSettings_080100()
}
}
}
internal static void UpgradeSocialGroupForumConfigModuleSettings_080100()
{
foreach (DotNetNuke.Abstractions.Portals.IPortalInfo portal in DotNetNuke.Entities.Portals.PortalController.Instance.GetPortals())
{
foreach (ModuleInfo module in DotNetNuke.Entities.Modules.ModuleController.Instance.GetModules(portal.PortalId))
{
if (module.DesktopModule.ModuleName.Trim().ToLowerInvariant() == Globals.ModuleName.ToLowerInvariant())
{
/*remove four settings previously stored in both TabModuleSettings *and* ModuleSettings -- just store in ModuleSettings */
DotNetNuke.Entities.Modules.ModuleController.Instance.DeleteTabModuleSetting(module.TabModuleID, "ForumConfig");
DotNetNuke.Entities.Modules.ModuleController.Instance.DeleteTabModuleSetting(module.TabModuleID, "ForumGroupTemplate");
DotNetNuke.Entities.Modules.ModuleController.Instance.DeleteTabModuleSetting(module.TabModuleID, "MODE");
DotNetNuke.Entities.Modules.ModuleController.Instance.DeleteTabModuleSetting(module.TabModuleID, "AllowIndex");
DataCache.ClearAllCacheForTabId(module.TabID);
DataCache.ClearAllCache(module.ModuleID);
var ForumConfig = module.ModuleSettings.GetString("ForumConfig", string.Empty);
if (!string.IsNullOrEmpty(ForumConfig))
{
var xDoc = new XmlDocument();
xDoc.LoadXml(ForumConfig);
if (xDoc != null)
{
string[] secTypes = { "groupadmin", "groupmember", "registereduser", "anon" };
foreach (string secType in secTypes)
{
string xpath = $"//defaultforums/forum/security[@type='{secType}']";

if (xDoc.DocumentElement.SelectSingleNode(xpath).ChildNodes.Count == 16)
{
xDoc.DocumentElement.SelectSingleNode(xpath).AddElement("moduser", string.Empty);
xDoc.DocumentElement.SelectSingleNode(xpath).SelectSingleNode("moduser").AddAttribute("value", "false");
}
}
ForumConfig = xDoc.OuterXml;
DotNetNuke.Entities.Modules.ModuleController.Instance.DeleteModuleSetting(module.ModuleID, "ForumConfig");
DotNetNuke.Entities.Modules.ModuleController.Instance.UpdateModuleSetting(module.ModuleID, "ForumConfig", ForumConfig);
DataCache.ClearAllCacheForTabId(module.TabID);
DataCache.ClearAllCache(module.ModuleID);
}
}
}
}
}
}
}
}

Expand Down
1 change: 1 addition & 0 deletions Dnn.CommunityForums/components/Topics/TopicsController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ public string UpgradeModule(string Version)
try
{
DotNetNuke.Modules.ActiveForums.Helpers.UpgradeModuleSettings.DeleteObsoleteModuleSettings_080100();
DotNetNuke.Modules.ActiveForums.Helpers.UpgradeModuleSettings.UpgradeSocialGroupForumConfigModuleSettings_080100();
ForumsConfig.Install_BanUser_NotificationType_080100();
}
catch (Exception ex)
Expand Down

0 comments on commit 5741a6e

Please sign in to comment.