Example #1
0
        public override ThreadCollectionV5 GetThreads(ThreadSortField sortType, int count, IEnumerable<int> forumIDs)
        {
            using (SqlQuery query = new SqlQuery())
            {
                if (forumIDs != null && ValidateUtil.HasItems<int>(forumIDs))
                {
                    query.CommandText = @"
SELECT TOP(@TopCount) " + ThreadFields + @" FROM bx_Threads WITH(NOLOCK) WHERE ForumID in(@ForumIDs) AND ThreadStatus = 1 ORDER BY " + GetSortField(sortType) + @" DESC;
";
                    query.CreateInParameter<int>("@ForumIDs", forumIDs);
                }
                else
                {
                    query.CommandText = @"
SELECT TOP(@TopCount) " + ThreadFields + @" FROM bx_Threads WITH(NOLOCK) WHERE ThreadStatus = 1 ORDER BY " + GetSortField(sortType) + @" DESC;
";
                }

                query.CreateTopParameter("@TopCount", count);

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    return new ThreadCollectionV5(reader);
                }
            }
        }
Example #2
0
        private void SaveSettings2()
        {
            MessageDisplay msgDisplay = CreateMessageDisplay("PostContentLengths", "PostSubjectLengths", "PolemizeValidDays", "PollValidDays", "QuestionValidDays",
                                                             "RecycleOwnThreadsIntervals", "UpdateThreadSortOrderIntervals", "CreatePostIntervals", "DeleteOwnThreadsIntervals", "AllowFileExtensions",
                                                             "new_PostContentLengths", "new_PostSubjectLengths", "new_PolemizeValidDays", "new_PollValidDays", "new_QuestionValidDays",
                                                             "new_RecycleOwnThreadsIntervals", "new_UpdateThreadSortOrderIntervals", "new_CreatePostIntervals", "new_DeleteOwnThreadsIntervals", "new_AllowFileExtensions"
                                                             , "AllowAttachment", "AllowImageAttachment", "CreatePostAllowAudioTag", "CreatePostAllowEmoticon", "CreatePostAllowFlashTag", "CreatePostAllowHTML"
                                                             , "CreatePostAllowImageTag", "CreatePostAllowMaxcode", "CreatePostAllowTableTag", "CreatePostAllowUrlTag", "CreatePostAllowVideoTag", "MaxPostAttachmentCount"
                                                             , "MaxTopicAttachmentCount", "MaxSignleAttachmentSize", "ShowSignatureInThread", "ShowSignatureInPost", "CreateThreadNeedApprove", "ReplyNeedApprove"
                                                             , "new_AllowAttachment", "new_AllowImageAttachment", "new_CreatePostAllowAudioTag", "new_CreatePostAllowEmoticon", "new_CreatePostAllowFlashTag", "new_CreatePostAllowHTML"
                                                             , "new_CreatePostAllowImageTag", "new_CreatePostAllowMaxcode", "new_CreatePostAllowTableTag", "new_CreatePostAllowUrlTag", "new_CreatePostAllowVideoTag", "new_MaxPostAttachmentCount"
                                                             , "new_MaxTopicAttachmentCount", "new_MaxSignleAttachmentSize", "new_ShowSignatureInThread", "new_ShowSignatureInPost", "new_CreateThreadNeedApprove", "new_ReplyNeedApprove"
                                                             , "UpdateOwnPostIntervals", "new_UpdateOwnPostIntervals"
                                                             , "EnableSellThread", "new_EnableSellThread"
                                                             , "EnableSellAttachment", "new_EnableSellAttachment"
                                                             , "DisplayInList", "new_DisplayInList"
                                                             , "VisitForum", "new_VisitForum"
                                                             , "SellAttachmentDays"
                                                             , "SellThreadDays"
                                                             , "ReplyReturnThreadLastPage"
                                                             , "ThreadSortField"
                                                             );


            if (_Request.Get("inheritType", Method.Post, "False").ToLower() == "true")//继承上级
            {
                ForumSettings tempSetting = AllSettings.Current.ForumSettings.Clone();

                ForumSettingItemCollection tempItems = new ForumSettingItemCollection();

                for (int i = 0; i < tempSetting.Items.Count; i++)
                {
                    if (tempSetting.Items[i].ForumID == ForumID)
                    {
                    }
                    else
                    {
                        tempItems.Add(tempSetting.Items[i]);
                    }
                }

                tempSetting.Items = tempItems;
                try
                {
                    if (!SettingManager.SaveSettings(tempSetting))
                    {
                        CatchError <ErrorInfo>(delegate(ErrorInfo error)
                        {
                            msgDisplay.AddError(error);
                        });
                        m_Success = false;
                    }
                    else
                    {
                        BbsRouter.JumpToUrl(Request.RawUrl, "success=true");
                    }
                }
                catch (Exception ex)
                {
                    m_Success = false;
                    msgDisplay.AddError(ex.Message);
                }
                return;
            }



            ForumSettingItem forumSetItem = new ForumSettingItem();

            ExceptableItem_Int32scope    int32scope    = new ExceptableItem_Int32scope();
            ExceptableItem_Second <long> second_long   = new ExceptableItem_Second <long>();
            ExceptableItem_Second <int>  second_int    = new ExceptableItem_Second <int>();
            ExceptableItem_ExtensionList extensionList = new ExceptableItem_ExtensionList();

            forumSetItem.ForumID                        = ForumID;
            forumSetItem.PostContentLengths             = int32scope.GetExceptable("PostContentLengths", msgDisplay); //GetInt32Exceptable("PostContentLengths",msgDisplay);
            forumSetItem.PostSubjectLengths             = int32scope.GetExceptable("PostSubjectLengths", msgDisplay); //GetInt32Exceptable("PostSubjectLengths",msgDisplay);
            forumSetItem.PolemizeValidDays              = second_long.GetExceptable("PolemizeValidDays", msgDisplay);
            forumSetItem.PollValidDays                  = second_long.GetExceptable("PollValidDays", msgDisplay);
            forumSetItem.QuestionValidDays              = second_long.GetExceptable("QuestionValidDays", msgDisplay);
            forumSetItem.RecycleOwnThreadsIntervals     = second_int.GetExceptable("RecycleOwnThreadsIntervals", msgDisplay);
            forumSetItem.UpdateThreadSortOrderIntervals = second_int.GetExceptable("UpdateThreadSortOrderIntervals", msgDisplay);
            forumSetItem.UpdateOwnPostIntervals         = second_int.GetExceptable("UpdateOwnPostIntervals", msgDisplay);
            forumSetItem.CreatePostIntervals            = second_int.GetExceptable("CreatePostIntervals", msgDisplay);
            forumSetItem.DeleteOwnThreadsIntervals      = second_int.GetExceptable("DeleteOwnThreadsIntervals", msgDisplay);
            forumSetItem.AllowFileExtensions            = extensionList.GetExceptable("AllowFileExtensions", msgDisplay);

            forumSetItem.AllowAttachment         = new ExceptableItem_bool().GetExceptable("AllowAttachment", msgDisplay);
            forumSetItem.AllowImageAttachment    = new ExceptableItem_bool().GetExceptable("AllowImageAttachment", msgDisplay);
            forumSetItem.CreatePostAllowAudioTag = new ExceptableItem_bool().GetExceptable("CreatePostAllowAudioTag", msgDisplay);
            forumSetItem.CreatePostAllowEmoticon = new ExceptableItem_bool().GetExceptable("CreatePostAllowEmoticon", msgDisplay);
            forumSetItem.CreatePostAllowFlashTag = new ExceptableItem_bool().GetExceptable("CreatePostAllowFlashTag", msgDisplay);
            forumSetItem.CreatePostAllowHTML     = new ExceptableItem_bool().GetExceptable("CreatePostAllowHTML", msgDisplay);
            forumSetItem.CreatePostAllowImageTag = new ExceptableItem_bool().GetExceptable("CreatePostAllowImageTag", msgDisplay);
            forumSetItem.CreatePostAllowMaxcode  = new ExceptableItem_bool().GetExceptable("CreatePostAllowMaxcode", msgDisplay);
            forumSetItem.CreatePostAllowTableTag = new ExceptableItem_bool().GetExceptable("CreatePostAllowTableTag", msgDisplay);
            forumSetItem.CreatePostAllowUrlTag   = new ExceptableItem_bool().GetExceptable("CreatePostAllowUrlTag", msgDisplay);
            forumSetItem.CreatePostAllowVideoTag = new ExceptableItem_bool().GetExceptable("CreatePostAllowVideoTag", msgDisplay);
            forumSetItem.MaxPostAttachmentCount  = new ExceptableItem_Int_MoreThenZero().GetExceptable("MaxPostAttachmentCount", msgDisplay);
            forumSetItem.MaxTopicAttachmentCount = new ExceptableItem_Int_MoreThenZero().GetExceptable("MaxTopicAttachmentCount", msgDisplay);
            forumSetItem.MaxSignleAttachmentSize = new ExceptableItem_FileSize().GetExceptable("MaxSignleAttachmentSize", msgDisplay);
            forumSetItem.ShowSignatureInPost     = new ExceptableItem_bool().GetExceptable("ShowSignatureInPost", msgDisplay);
            forumSetItem.ShowSignatureInThread   = new ExceptableItem_bool().GetExceptable("ShowSignatureInThread", msgDisplay);
            forumSetItem.CreateThreadNeedApprove = new ExceptableItem_bool().GetExceptable("CreateThreadNeedApprove", msgDisplay);
            forumSetItem.ReplyNeedApprove        = new ExceptableItem_bool().GetExceptable("ReplyNeedApprove", msgDisplay);
            forumSetItem.EnableSellThread        = new ExceptableItem_bool().GetExceptable("EnableSellThread", msgDisplay);
            forumSetItem.EnableSellAttachment    = new ExceptableItem_bool().GetExceptable("EnableSellAttachment", msgDisplay);
            forumSetItem.EnableHiddenTag         = _Request.Get <bool>("enableHiddenTag", Method.Post, true);
            forumSetItem.EnableThreadRank        = _Request.Get <bool>("EnableThreadRank", Method.Post, true);
            forumSetItem.DefaultThreadSortField  = _Request.Get <ThreadSortField>("ThreadSortField", Method.Post, ThreadSortField.LastReplyDate);


            ThreadSortField oldThreadSortField = ForumSetting.DefaultThreadSortField;
            ThreadSortField newThreadSortField = forumSetItem.DefaultThreadSortField;


            forumSetItem.AllowGuestVisitForum  = _Request.Get <bool>("AllowGuestVisitForum", Method.Post, true);
            forumSetItem.DisplayInListForGuest = _Request.Get <bool>("DisplayInListForGuest", Method.Post, true);
            forumSetItem.VisitForum            = new ExceptableItem_bool().GetExceptable("VisitForum", msgDisplay);
            forumSetItem.DisplayInList         = new ExceptableItem_bool().GetExceptable("DisplayInList", msgDisplay);



            forumSetItem.SellThreadDays     = GetSeconds("SellThreadDays", msgDisplay);
            forumSetItem.SellAttachmentDays = GetSeconds("SellAttachmentDays", msgDisplay);

            forumSetItem.ReplyReturnThreadLastPage = _Request.Get <bool>("ReplyReturnThreadLastPage", Method.Post, false);

            if (msgDisplay.HasAnyError())
            {
                m_Success = false;
                return;
            }

            ForumSettings settings           = AllSettings.Current.ForumSettings.Clone();
            ForumSettingItemCollection items = new ForumSettingItemCollection();


            bool hasAdd     = false;
            bool hasTopItem = false;//是否有ForumID为0的设置

            foreach (ForumSettingItem item in settings.Items)
            {
                if (item.ForumID == forumSetItem.ForumID)
                {
                    items.Add(forumSetItem);
                    hasAdd = true;
                }
                else
                {
                    ProcessApplyAllForumSetting(item, forumSetItem);

                    items.Add(item);
                }
                if (item.ForumID == 0)
                {
                    hasTopItem = true;
                }
            }
            if (hasAdd == false)
            {
                items.Add(forumSetItem);
            }


            if (hasTopItem == false)//如果没有 加入
            {
                ForumSettingItem tempItem = new ForumSettingItem();
                ProcessApplyAllForumSetting(tempItem, forumSetItem);
                items.Add(tempItem);
            }

            settings.Items = items;

            try
            {
                using (new ErrorScope())
                {
                    bool success = SettingManager.SaveSettings(settings);

                    if (!success)
                    {
                        CatchError <ErrorInfo>(delegate(ErrorInfo error)
                        {
                            msgDisplay.AddError(error);
                        });
                        m_Success = false;
                    }
                    else
                    {
                        if (_Request.Get <bool>("ThreadSortField_aplyallnode", Method.Post, false))
                        {
                            ThreadCachePool.ClearAllCache();
                        }
                        else if (oldThreadSortField != newThreadSortField)
                        {
                            ThreadCachePool.ClearAllCache();
                        }

                        string rawUrl = Request.RawUrl;

                        BbsRouter.JumpToUrl(rawUrl, "success=true");
                    }
                }
            }
            catch (Exception ex)
            {
                m_Success = false;
                msgDisplay.AddError(ex.Message);
            }
        }
Example #3
0
        public override ThreadCollectionV5 GetHotThreads(IEnumerable<int> forumIDs, int reqireReplies, int pageNumber, int pageSize, ThreadSortField? sortType, DateTime? beginDate, DateTime? endDate, bool isDesc, bool returnTotalThreads, out int totalThreads)
        {
            using (SqlQuery query = new SqlQuery())
            {
                query.Pager.IsDesc = isDesc;
                query.Pager.ResultFields = ThreadFields;

                ProcessSortField(query, sortType);

                query.Pager.PageNumber = pageNumber;
                query.Pager.PageSize = pageSize;
                //query.Pager.TotalRecords = totalThreads;
                query.Pager.SelectCount = returnTotalThreads;
                query.Pager.TableName = "[bx_Threads]";

                StringBuilder condition = new StringBuilder();

                if (forumIDs != null)
                {
                    int forumID = 0;

                    int count = 0;
                    foreach (int tempForumID in forumIDs)
                    {
                        forumID = tempForumID;
                        count++;
                        if (count == 2)
                            break;
                    }

                    if (count == 1)
                    {
                        condition.Append(" [ForumID]=@ForumID ");
                        query.CreateParameter<int>("@ForumID", forumID, SqlDbType.Int);
                    }
                    else if (count > 1)
                    {
                        condition.Append(" [ForumID] IN(@ForumIDs) ");
                        query.CreateInParameter<int>("@ForumIDs", forumIDs);
                    }

                }

                if (condition.Length > 0)
                    condition.Append(" AND ");

                condition.Append(" [ThreadStatus] = 1 ");

                if (reqireReplies > 0)
                {
                    condition.Append(" AND [TotalReplies] >= @Replies ");
                    query.CreateParameter<int>("@Replies", reqireReplies, SqlDbType.Int);
                }
                else if (reqireReplies == 0)
                {
                    condition.Append(" AND [TotalReplies] > 0 ");
                }

                ProcessThreadDateScope(beginDate, endDate, query, condition);

                //if (beginDate != null)
                //{
                //    condition.Append(" AND [CreateDate] >= @BeginDate ");
                //    query.CreateParameter<DateTime>("@BeginDate", beginDate.Value, SqlDbType.DateTime);
                //}

                //if (endDate != null)
                //{
                //    condition.Append(" AND [CreateDate] <= @EndDate ");
                //    query.CreateParameter<DateTime>("@EndDate", endDate.Value, SqlDbType.DateTime);
                //}

                query.Pager.Condition = condition.ToString();

                totalThreads = 0;
                ThreadCollectionV5 threads = new ThreadCollectionV5();
                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        threads.Add(GetThread(reader,null));
                    }
                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            totalThreads = reader.Get<int>(0);
                        }
                    }
                }

                return threads;
            }
        }
Example #4
0
        public override ThreadCollectionV5 GetThreadsByStatus(ThreadStatus status, int? forumID, ThreadSortField? sortType, DateTime? beginDate, DateTime? endDate, bool isDesc, int pageNumber, int pageSize, ref int totalCount)
        {
            using (SqlQuery query = new SqlQuery())
            {
                query.Pager.IsDesc = isDesc;
                query.Pager.ResultFields = ThreadFields;
                ProcessSortField(query, sortType);

                query.Pager.PageNumber = pageNumber;
                query.Pager.PageSize = pageSize;
                query.Pager.TotalRecords = totalCount;
                query.Pager.SelectCount = true;
                query.Pager.TableName = "[bx_Threads]";

                StringBuilder condition = new StringBuilder();

                if (forumID != null)
                {
                    condition.Append(" [ForumID] = @ForumID ");
                    query.CreateParameter<int>("@ForumID", forumID.Value, SqlDbType.Int);
                }

                if (condition.Length != 0)
                    condition.Append(" AND ");


                condition.Append(" [ThreadStatus] = @ThreadStatus ");
                query.CreateParameter<int>("@ThreadStatus", (int)status, SqlDbType.TinyInt);
                //switch (status)
                //{
                //    case ThreadStatus.Normal:
                //        condition.Append(" [ThreadStatus] = 1 ");
                //        break;
                //    case ThreadStatus.Sticky:
                //        condition.Append(" [ThreadStatus] = 2 ");
                //        break;
                //    case ThreadStatus.GlobalSticky:
                //        condition.Append(" [ThreadStatus] = 3 ");
                //        break;
                //    case ThreadStatus.Recycled:
                //        condition.Append(" [ThreadStatus] = 4 ");
                //        break;
                //    default:
                //        condition.Append(" [ThreadStatus] = 5 ");
                //        break;
                //}

                if (beginDate != null)
                {
                    condition.Append(" AND [CreateDate] >= @BeginDate ");
                    query.CreateParameter<DateTime>("@BeginDate", beginDate.Value, SqlDbType.DateTime);
                }

                if (endDate != null)
                {
                    condition.Append(" AND [CreateDate] <= @EndDate ");
                    query.CreateParameter<DateTime>("@EndDate", endDate.Value, SqlDbType.DateTime);
                }

                query.Pager.Condition = condition.ToString();

                ThreadCollectionV5 threads = new ThreadCollectionV5();
                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        threads.Add(GetThread(reader, null));
                    }
                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            totalCount = reader.Get<int>(0);
                        }
                    }
                }

                return threads;
            }
        }
Example #5
0
        public override ThreadCollectionV5 GetThreads(int forumID, ThreadType threadType, int pageNumber, int pageSize, ThreadSortField? sortType, DateTime? beginDate, DateTime? endDate, bool isDesc, bool returnTotalThreads, int offset, out int totalThreads)
        {
            using (SqlQuery query = new SqlQuery())
            {
                query.Pager.IsDesc = isDesc;
                query.Pager.ResultFields = ThreadFields;
                ProcessSortField(query, sortType);

                query.Pager.PageNumber = pageNumber;
                query.Pager.PageSize = pageSize;
                //query.Pager.TotalRecords = totalThreads;
                query.Pager.SelectCount = returnTotalThreads;
                query.Pager.TableName = "[bx_Threads]";
                query.Pager.Offset = offset;

                StringBuilder condition = new StringBuilder();

                condition.Append(" [ThreadType]=@ThreadType ");
                query.CreateParameter<int>("@ThreadType", (int)threadType, SqlDbType.TinyInt);

                condition.Append(" AND [ForumID]=@ForumID ");
                query.CreateParameter<int>("@ForumID", forumID, SqlDbType.Int);

                //置顶在缓存中取
                //condition.Append(" AND [ThreadStatus] < 4 ");
                condition.Append(" AND [ThreadStatus] = 1 ");


                ProcessThreadDateScope(beginDate, endDate, query, condition);

                //if (beginDate != null)
                //{
                //    condition.Append(" AND [CreateDate] >= @BeginDate ");
                //    query.CreateParameter<DateTime>("@BeginDate", beginDate.Value, SqlDbType.DateTime);
                //}

                //if (endDate != null)
                //{
                //    condition.Append(" AND [CreateDate] <= @EndDate ");
                //    query.CreateParameter<DateTime>("@EndDate", endDate.Value, SqlDbType.DateTime);
                //}

                query.Pager.Condition = condition.ToString();

                totalThreads = 0;
                ThreadCollectionV5 threads = new ThreadCollectionV5();
                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        threads.Add(GetThread(reader, null));
                    }
                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            totalThreads = reader.Get<int>(0);
                        }
                    }
                }

                return threads;
            }
        }
Example #6
0
 private string GetSortField(ThreadSortField? sortType)
 {
     if (sortType == null)
     {
         return "[SortOrder]";
     }
     else if (sortType.Value == ThreadSortField.CreateDate)
     {
         return "[ThreadID]";
     }
     else if (sortType.Value == ThreadSortField.Replies)
     {
         return "[TotalReplies]";
     }
     else if (sortType.Value == ThreadSortField.Views)
     {
         return "[TotalViews]";
     }
     else if (sortType.Value == ThreadSortField.LastReplyDate)
     {
         return "[LastPostID]";
     }
     else
         return "[SortOrder]";
 }
Example #7
0
        private void ProcessSortField(SqlQuery query, ThreadSortField? sortType)
        {
            query.Pager.SortField = GetSortField(sortType);

            if (sortType!=null && (sortType.Value == ThreadSortField.Replies
                || sortType.Value == ThreadSortField.Views))
            {
                query.Pager.PrimaryKey = "[ThreadID]";
            }
        }
Example #8
0
        public override ThreadCollectionV5 GetThreads(int? forumID, ThreadSortField? sortType, DateTime? beginDate, DateTime? endDate, bool isDesc, int offSet, bool includeStick, int pageNumber, int pageSize, ref int totalCount)
        {
            using (SqlQuery query = new SqlQuery())
            {
                query.Pager.IsDesc = isDesc;
                query.Pager.ResultFields = ThreadFields;

                ProcessSortField(query, sortType);

                query.Pager.PageNumber = pageNumber;
                query.Pager.PageSize = pageSize;
                query.Pager.TotalRecords = totalCount;
                query.Pager.SelectCount = true;
                query.Pager.Offset = offSet;
                query.Pager.TableName = "[bx_Threads]";

                StringBuilder condition = new StringBuilder();

                if (forumID != null)
                {
                    condition.Append(" [ForumID]=@ForumID ");
                    query.CreateParameter<int>("@ForumID", forumID.Value, SqlDbType.Int);
                }

                if (condition.Length != 0)
                    condition.Append(" AND ");
                //置顶在缓存中取
                //if (includeStick)
                    //condition.Append(" [ThreadStatus] < 4 ");
                //else
                    condition.Append(" [ThreadStatus] = 1 ");

                if (forumID != null)
                {
                    ProcessThreadDateScope(beginDate, endDate, query, condition);
                }
                else
                {
                    if (beginDate != null)
                    {
                        condition.Append(" AND [CreateDate] >= @BeginDate ");
                        query.CreateParameter<DateTime>("@BeginDate", beginDate.Value, SqlDbType.DateTime);
                    }

                    if (endDate != null)
                    {
                        condition.Append(" AND [CreateDate] <= @EndDate ");
                        query.CreateParameter<DateTime>("@EndDate", endDate.Value, SqlDbType.DateTime);
                    }
                }
                query.Pager.Condition = condition.ToString();

                ThreadCollectionV5 threads = new ThreadCollectionV5();
                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        threads.Add(GetThread(reader,null));
                    }
                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            totalCount = reader.Get<int>(0);
                        }
                    }
                }

                return threads;
            }
        }
Example #9
0
 public abstract ThreadCollectionV5 GetThreads(ThreadSortField sortType, int count, IEnumerable <int> forumIDs);