Looks like the DB table that you need to work with is this:
CREATE TABLE [dbo].[Nop_Forums_Subscription]
(
[SubscriptionID] [int] IDENTITY(1,1) NOT NULL,
[SubscriptionGUID] [uniqueidentifier] NOT NULL,
[UserID] [int] NOT NULL,
[ForumID] [int] NOT NULL,
[TopicID] [int] NOT NULL,
[CreatedOn] [datetime] NOT NULL
)
In ForumsPostEdit.ascx, you would have to re-do your code to look like:
protected void btnSubmit_Click(object sender, EventArgs e)
{
try
{
string text = string.Empty;
switch (ForumManager.ForumEditor)
{
case EditorTypeEnum.SimpleTextBox:
{
text = txtTopicBodySimple.Text.Trim();
}
break;
case EditorTypeEnum.BBCodeEditor:
{
text = txtTopicBodyBBCode.Text.Trim();
}
break;
case EditorTypeEnum.HtmlEditor:
{
text = txtTopicBodyHtml.Content;
}
break;
default:
break;
}
string subject = txtTopicTitle.Text;
var topicType = ForumTopicTypeEnum.Normal;
bool subscribe = true;
string IPAddress = string.Empty;
if (HttpContext.Current != null && HttpContext.Current.Request != null)
IPAddress = HttpContext.Current.Request.UserHostAddress;
DateTime nowDT = DateTime.Now;
if (ForumManager.IsUserAllowedToSetTopicPriority(NopContext.Current.User))
{
topicType = (ForumTopicTypeEnum)Enum.ToObject(typeof(ForumTopicTypeEnum), int.Parse(ddlPriority.SelectedItem.Value));
}
text = text.Trim();
if (String.IsNullOrEmpty(text))
throw new NopException(GetLocaleResourceString("Forum.TextCannotBeEmpty"));
if (this.AddTopic)
{
#region Adding topic
var forum = ForumManager.GetForumById(this.ForumId);
if (forum == null)
{
Response.Redirect(SEOHelper.GetForumMainUrl());
}
if (!ForumManager.IsUserAllowedToCreateTopic(NopContext.Current.User, forum))
{
string loginURL = SEOHelper.GetLoginPageUrl(true);
Response.Redirect(loginURL);
}
subject = subject.Trim();
if (String.IsNullOrEmpty(subject))
throw new NopException(GetLocaleResourceString("Forum.TopicSubjectCannotBeEmpty"));
var forumTopic = ForumManager.InsertTopic(forum.ForumId, NopContext.Current.User.CustomerId,
topicType, subject, 0, 0, 0, 0, null, nowDT, nowDT, true);
var forumPost = ForumManager.InsertPost(forumTopic.ForumTopicId, NopContext.Current.User.CustomerId,
text, IPAddress, nowDT, nowDT, false);
forumTopic = ForumManager.UpdateTopic(forumTopic.ForumTopicId, forumTopic.ForumId,
forumTopic.UserId, forumTopic.TopicType, forumTopic.Subject, 1,
0, forumPost.ForumPostId, forumTopic.UserId,
forumPost.CreatedOn, forumTopic.CreatedOn, nowDT);
//subscription
if (ForumManager.IsUserAllowedToSubscribe(NopContext.Current.User))
{
if (subscribe)
{
var forumSubscription = ForumManager.InsertSubscription(Guid.NewGuid(),
NopContext.Current.User.CustomerId, 0, forumTopic.ForumTopicId, nowDT);
}
}
string topicURL = SEOHelper.GetForumTopicUrl(forumTopic.ForumTopicId);
Response.Redirect(topicURL);
#endregion
}
else if (this.EditTopic)
{
#region Editing topic
var forumTopic = ForumManager.GetTopicById(this.ForumTopicId);
if (forumTopic == null)
{
Response.Redirect(SEOHelper.GetForumMainUrl());
}
if (!ForumManager.IsUserAllowedToEditTopic(NopContext.Current.User, forumTopic))
{
string loginURL = SEOHelper.GetLoginPageUrl(true);
Response.Redirect(loginURL);
}
subject = subject.Trim();
if (String.IsNullOrEmpty(subject))
throw new NopException(GetLocaleResourceString("Forum.TopicSubjectCannotBeEmpty"));
forumTopic = ForumManager.UpdateTopic(forumTopic.ForumTopicId, forumTopic.ForumId,
forumTopic.UserId, topicType, subject, forumTopic.NumPosts,
forumTopic.Views, forumTopic.LastPostId, forumTopic.LastPostUserId,
forumTopic.LastPostTime, forumTopic.CreatedOn, nowDT);
var firstPost = forumTopic.FirstPost;
if (firstPost != null)
{
firstPost = ForumManager.UpdatePost(firstPost.ForumPostId, firstPost.TopicId,
firstPost.UserId, text, firstPost.IPAddress, firstPost.CreatedOn, nowDT);
}
else
{
//error
firstPost = ForumManager.InsertPost(forumTopic.ForumTopicId,
forumTopic.UserId, text, IPAddress, forumTopic.CreatedOn, nowDT, false);
}
//subscription
if (ForumManager.IsUserAllowedToSubscribe(NopContext.Current.User.CustomerId))
{
var forumSubscription = ForumManager.GetAllSubscriptions(NopContext.Current.User.CustomerId,
0, forumTopic.ForumTopicId, 1, 0).FirstOrDefault();
if (subscribe)
{
if (forumSubscription == null)
{
forumSubscription = ForumManager.InsertSubscription(Guid.NewGuid(),
NopContext.Current.User.CustomerId, 0, forumTopic.ForumTopicId, nowDT);
}
}
else
{
if (forumSubscription != null)
{
ForumManager.DeleteSubscription(forumSubscription.ForumSubscriptionId);
}
}
}
string topicURL = SEOHelper.GetForumTopicUrl(forumTopic.ForumTopicId);
Response.Redirect(topicURL);
#endregion
}
else if (this.AddPost)
{
#region Adding post
var forumTopic = ForumManager.GetTopicById(this.ForumTopicId);
if (forumTopic == null)
{
Response.Redirect(SEOHelper.GetForumMainUrl());
}
if (!ForumManager.IsUserAllowedToCreatePost(NopContext.Current.User, forumTopic))
{
string loginURL = SEOHelper.GetLoginPageUrl(true);
Response.Redirect(loginURL);
}
var forumPost = ForumManager.InsertPost(this.ForumTopicId, NopContext.Current.User.CustomerId,
text, IPAddress, nowDT, nowDT, true);
//subscription
if (ForumManager.IsUserAllowedToSubscribe(NopContext.Current.User.CustomerId))
{
var forumSubscription = ForumManager.GetAllSubscriptions(NopContext.Current.User.CustomerId,
0, forumPost.TopicId, 1, 0).FirstOrDefault();
if (subscribe)
{
if (forumSubscription == null)
{
forumSubscription = ForumManager.InsertSubscription(Guid.NewGuid(),
NopContext.Current.User.CustomerId, 0, forumPost.TopicId, nowDT);
}
}
else
{
if (forumSubscription != null)
{
ForumManager.DeleteSubscription(forumSubscription.ForumSubscriptionId);
}
}
}
int pageSize = 10;
if (ForumManager.PostsPageSize > 0)
{
pageSize = ForumManager.PostsPageSize;
}
int pageIndex = ForumManager.CalculateTopicPageIndex(forumPost.TopicId, pageSize, forumPost.ForumPostId);
string topicURL = SEOHelper.GetForumTopicUrl(forumPost.TopicId, "p", pageIndex + 1, forumPost.ForumPostId);
Response.Redirect(topicURL);
#endregion
}
else if (this.EditPost)
{
#region Editing post
var forumPost = ForumManager.GetPostById(this.ForumPostId);
if (forumPost == null)
{
Response.Redirect(SEOHelper.GetForumMainUrl());
}
if (!ForumManager.IsUserAllowedToEditPost(NopContext.Current.User, forumPost))
{
string loginURL = SEOHelper.GetLoginPageUrl(true);
Response.Redirect(loginURL);
}
forumPost = ForumManager.UpdatePost(forumPost.ForumPostId, forumPost.TopicId,
forumPost.UserId, text, forumPost.IPAddress, forumPost.CreatedOn, nowDT);
//subscription
if (ForumManager.IsUserAllowedToSubscribe(NopContext.Current.User.CustomerId))
{
var forumSubscription = ForumManager.GetAllSubscriptions(NopContext.Current.User.CustomerId,
0, forumPost.TopicId, 1, 0).FirstOrDefault();
if (cbSubscribe.Checked)
{
if (forumSubscription == null)
{
forumSubscription = ForumManager.InsertSubscription(Guid.NewGuid(),
NopContext.Current.User.CustomerId, 0, forumPost.TopicId, nowDT);
}
}
else
{
if (forumSubscription != null)
{
ForumManager.DeleteSubscription(forumSubscription.ForumSubscriptionId);
}
}
}
int pageSize = 10;
if (ForumManager.PostsPageSize > 0)
{
pageSize = ForumManager.PostsPageSize;
}
int pageIndex = ForumManager.CalculateTopicPageIndex(forumPost.TopicId, pageSize, forumPost.ForumPostId);
string topicURL = SEOHelper.GetForumTopicUrl(forumPost.TopicId, "p", pageIndex + 1, forumPost.ForumPostId);
Response.Redirect(topicURL);
#endregion
}
}
catch (Exception exc)
{
pnlError.Visible = true;
lErrorMessage.Text = Server.HtmlEncode(exc.Message);
}
}