diff --git a/Dnn.CommunityForums/DnnCommunityForums.csproj b/Dnn.CommunityForums/DnnCommunityForums.csproj index 428029f5a..124102fa4 100644 --- a/Dnn.CommunityForums/DnnCommunityForums.csproj +++ b/Dnn.CommunityForums/DnnCommunityForums.csproj @@ -12,8 +12,8 @@ Discussion Forum Module for DNN dnncommunity.org dnncommunity.org - 09.01.00.00 - 09.01.00.00 + 09.01.01.00 + 09.01.01.00 False True diff --git a/Dnn.CommunityForums/DnnCommunityForums.dnn b/Dnn.CommunityForums/DnnCommunityForums.dnn index 37076b790..25eeaebdc 100644 --- a/Dnn.CommunityForums/DnnCommunityForums.dnn +++ b/Dnn.CommunityForums/DnnCommunityForums.dnn @@ -1,6 +1,6 @@  - + DNN Community Forums DNN Community Forums: The official online forums module for the DNN Community. DesktopModules/ActiveForums/images/branding/logo/DNN-Community-Forums-Icon-64px.png @@ -86,7 +86,7 @@ DotNetNuke.Modules.ActiveForums.dll bin\DotNetNuke.Modules.ActiveForums.dll - 09.01.00 + 09.01.01 @@ -486,7 +486,7 @@ - + DNN Community Forums What's New ActiveForumsWhatsNew DNN Community Forums: Display the most recent topics or replies from selected forums on any page within your site. @@ -555,7 +555,7 @@ - + DNN Community Forums Forums Viewer ActiveForumsViewer DNN Community Forums: Display any forum topic view on any page within your site. diff --git a/Dnn.CommunityForums/DnnCommunityForums_Symbols.dnn b/Dnn.CommunityForums/DnnCommunityForums_Symbols.dnn index 14f1603c5..7a9340c9a 100644 --- a/Dnn.CommunityForums/DnnCommunityForums_Symbols.dnn +++ b/Dnn.CommunityForums/DnnCommunityForums_Symbols.dnn @@ -1,6 +1,6 @@  - + DNN Community Forums Symbols DNN Community Forums: The official online forums module for the DNN Community. DesktopModules/ActiveForums/images/branding/logo/DNN-Community-Forums-Icon-64px.png @@ -14,7 +14,7 @@ True - Active Forums + Active Forums diff --git a/Dnn.CommunityForums/ReleaseNotes.txt b/Dnn.CommunityForums/ReleaseNotes.txt index 59a60fb78..429149212 100644 --- a/Dnn.CommunityForums/ReleaseNotes.txt +++ b/Dnn.CommunityForums/ReleaseNotes.txt @@ -46,8 +46,9 @@ DNN Community Forums Release Notes

- 09.01.00 + 09.01.01

+
  • UPDATE: Improved handling of XML & HTML in posts (Issue 1385)
  • UPDATE: Changed "subscribe" to tokenized controls in topic and topics views to allow checkboxes or buttons (Issue 1556 & Issue 1568)
  • -
  • None at this time.
  • --->

    Bug Fixes

      -
    • FIX: Update indexes on forum/topic tracking tables for uniqueness; upgrade script to detect and remove duplicates, keeping the latest entries (Issue 1434)
    • -
    • FIX: Friendly URLs updated to working correctly with Forum Viewer and/or localized sites (Issue 1557)
    • -
    • FIX: Incorrect logic in permissions checking for attachments (Issue 1559)
    • -
    • FIX: Non-Admin/Non-Moderator is unable to edit their own post when edit interval/spam control feature used (Issue 1562)
    • -
    • FIX: Subscribe controls not working from viewer module (Issue 1572)
    • +
    • FIX: Poor performance for avatar refresh queue on large sites (Issue 1584)
    • +
    • None at this time.

    diff --git a/Dnn.CommunityForums/Services/Avatars/AvatarRefreshQueue.cs b/Dnn.CommunityForums/Services/Avatars/AvatarRefreshQueue.cs index c878c8237..e83e92f9e 100644 --- a/Dnn.CommunityForums/Services/Avatars/AvatarRefreshQueue.cs +++ b/Dnn.CommunityForums/Services/Avatars/AvatarRefreshQueue.cs @@ -25,9 +25,12 @@ namespace DotNetNuke.Modules.ActiveForums.Services.Avatars using System; using System.Collections.Generic; using System.Linq; + + using DotNetNuke.Data; using DotNetNuke.Entities.Modules; using DotNetNuke.Services.Log.EventLog; using DotNetNuke.Services.Scheduling; + using DotNetNuke.UI.UserControls; public class AvatarRefreshQueue : DotNetNuke.Services.Scheduling.SchedulerClient { @@ -96,10 +99,28 @@ private static int RefreshGravatars(int portalId, int moduleId) { try { - return new DotNetNuke.Modules.ActiveForums.Controllers.ForumUserController(moduleId: moduleId).Get().Where(u => (u.PortalId == portalId && !u.UserInfo.IsDeleted && !u.AvatarDisabled && !u.PrefBlockAvatars) && - ((string.IsNullOrEmpty(u.UserInfo.Profile.GetPropertyValue("Photo")) && !u.AvatarLastRefresh.HasValue) || /* anyone without an avatar who has never had their avatar refreshed */ - (u.AvatarLastRefresh.HasValue && DateTime.UtcNow.Subtract(u.AvatarLastRefresh.Value).TotalDays > 90))) /* or anyone whose avatar was last refreshed more than 90 days ago */ - .OrderByDescending(u => u.AvatarLastRefresh).Take(50).ToList(); + var forumUserController = new DotNetNuke.Modules.ActiveForums.Controllers.ForumUserController(moduleId: moduleId); + string sSql = "SELECT TOP 50 fup.UserId FROM {databaseOwner}{objectQualifier}activeforums_UserProfiles fup "; + sSql += "INNER JOIN {databaseOwner}{objectQualifier}UserPortals as up ON up.PortalId = fup.PortalId AND up.UserId = fup.UserId AND up.IsDeleted = 0 "; + sSql += "INNER JOIN {databaseOwner}{objectQualifier}ProfilePropertyDefinition ppd ON ppd.PortalID = @0 AND ppd.PropertyName = 'Photo' "; + sSql += "LEFT OUTER JOIN {databaseOwner}{objectQualifier}UserProfile as upr ON upr.UserId = fup.UserId AND upr.PropertyDefinitionID = ppd.PropertyDefinitionID "; + sSql += "WHERE fup.PortalId = @0 AND fup.AvatarDisabled = 0 AND fup.PrefBlockAvatars = 0 "; + sSql += "AND ( (fup.AvatarLastRefresh IS NULL AND upr.PropertyValue IS NULL) "; + sSql += " OR (fup.AvatarLastRefresh IS NOT NULL AND DATEDIFF(dd,GETUTCDATE(),fup.AvatarLastRefresh) > 90) ) "; + sSql += "ORDER BY fup.AvatarLastRefresh DESC"; + var userIds = DotNetNuke.Data.DataContext.Instance().ExecuteQuery(System.Data.CommandType.Text, sSql, portalId); + + var users = new List(); + foreach (var userId in userIds) + { + var forumUser = forumUserController.GetByUserId(portalId: portalId, userId: userId); + if (forumUser != null) + { + users.Add(forumUser); + } + } + + return users; } catch (Exception ex) { diff --git a/README.md b/README.md index ca921f67f..e8ec99f72 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Community Forums Module +# DNN Community Forums Module ![DNN Community Forums Module Logo](Dnn.CommunityForums/images/Branding/Logo/DNN-Community-Forums-Logo-Horizontal.png?raw=true "DNN Community Forums Module Logo") diff --git a/ResXManager.config.xml b/ResXManager.config.xml deleted file mode 100644 index 18e3c612b..000000000 --- a/ResXManager.config.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - False - \ No newline at end of file