I noticed a very heated debate going on about the need for anonymous posting. About 1 year ago, the company I work for needed a forum with exactly that feature. We needed a forum to exchange ideas(technical,business, HR, etc). The feature was needed to remove "halo" effect from posts. If a manager posted something, it would get plenty of "good idea!", "you're brilliant" kind of responses. If a junior developer floated the same idea, it would get shot down in five difference colors.
To make the long story short, listed below is my solution for Anonymous posting. The solution does not require binary change so it will work in ISP scenario. It also does not modify any tables or stored procedures released by DNN Forum project. As a result, the solution has been working through many dnn software upgrades. This solution also works in multi-portal scenario. So here it goes:
1) create user with username 'Anonymous'
2) write down the GUID of the portal for which you want to enable anonymous posting.
3) connect to the database that hosts DNN and run the following(prior to runnning, make sure to replace 'GUID from step 2 goes here' with the GUID from step 2):
CREATE TRIGGER [dbo].[trgAudit] ON [dbo].[Forum_Posts] AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @uid int, @pid int
select @uid = userid from users where username='Anonymous'
SELECT
@pid = portals.portalid
FROM
inserted
join
forum_threads
on inserted.threadid = forum_threads.threadid
join
forum_forums
on forum_forums.forumid = forum_threads.forumid
join
forum_groups
on forum_groups.groupid = forum_forums.groupid
join
portals
on portals.portalid = forum_groups.portalid
join
userportals
on userportals.userid = @uid and userportals.portalid = portals.portalid
where
portals.guid='GUID from step 2 goes here'
IF @uid IS NOT NULL AND @pid IS NOT NULL
BEGIN
exec dbo.Forum_UserAdd
@UserId = @uid
,@Alias = NULL
,@UserAvatar = NULL
,@Avatar = NULL
,@AdditionalAvatars = NULL
,@Signature = NULL
,@Occupation = NULL
,@Interests = NULL
,@MSN = NULL
,@Yahoo = NULL
,@AIM = NULL
,@ICQ = NULL
,@Skin = NULL
,@IsTrusted = NULL
,@EnableThreadTracking = NULL
,@EnableDisplayUnreadThreadsOnly = NULL
,@EnableDisplayInMemberList = NULL
,@EnableOnlineStatus = NULL
,@ThreadsPerPage = NULL
,@PostsPerPage = NULL
,@WhatsNewScrollDirection = NULL
,@WhatsNewNumberOfThread = NULL
,@WhatsNewScrollDelay = NULL
,@WhatsNewScrollAmount = NULL
,@WhatsNewTrackingType = NULL
,@WhatsNewTrackingDuration = NULL
,@DefaultForumID = NULL
,@CollapseGroups = NULL
,@IsGlobalModerator = 0
,@ModeratorReturn = 0
,@EnablePM = 0
,@EnablePMNotifications = 0
update forum_posts
set userid = @uid
from
forum_posts
join
inserted
ON inserted.postid = forum_posts.postid
where
inserted.userid <> @uid
END
END
GO
This solution has worked for me for a year now without a hitch. Of course, your mileage may vary