Esempio n. 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            m_AdminForm = AdminBlogArticleFilter.GetFromFilter("filter");
            int userid = _Request.Get <int>("userid", Method.Get, 0);

            if (userid > 0)
            {
                m_AdminForm.AuthorID = userid;
            }

            if (_Request.IsClick("advancedsearch"))
            {
                SearchAlbums();
            }
            else if (_Request.IsClick("deletechecked"))
            {
                DeleteChecked();
            }
            else if (_Request.IsClick("deletesearched"))
            {
                DeleteSearched();
                //DeletedSearchResult();
            }

            using (ErrorScope es = new ErrorScope())
            {
                int pageNumber = _Request.Get <int>("page", 0);

                m_ArticleListPageSize = m_AdminForm.PageSize;

                m_ArticleList = BlogBO.Instance.GetBlogArticlesForAdmin(MyUserID, m_AdminForm, pageNumber);

                if (m_ArticleList != null)
                {
                    m_TotalArticleCount = m_ArticleList.TotalRecords;

                    UserBO.Instance.WaitForFillSimpleUsers <BlogArticle>(m_ArticleList);
                }

                if (es.HasUnCatchedError)
                {
                    es.CatchError <ErrorInfo>(delegate(ErrorInfo error) {
                        ShowError(error);
                    });
                }
            }
        }
Esempio n. 2
0
        public override bool BeforeExecute(int operatorUserID, string param, ref long offset, ref int totalCount, out string title)
        {
            StringList paramData = StringList.Parse(param);

            AdminBlogArticleFilter filter = AdminBlogArticleFilter.Parse(paramData[0]);

            //只取一条数据测试下就可以
            filter.PageSize = 1;

            BlogArticleCollection articles = BlogBO.Instance.GetBlogArticlesForAdmin(operatorUserID, filter, 1);

            if (articles == null || articles.Count == 0)
            {
                title = "没有数据可以删除";
                return(false);
            }

            totalCount = articles.TotalRecords;

            title = "将删除 " + totalCount + " 篇日志";

            return(true);
        }
Esempio n. 3
0
        public override void AfterExecute(int operatorUserID, string param, bool success, int totalCount, int finishedCount, out string title)
        {
            if (success)
            {
                title = "删除日志成功,共删除 " + finishedCount + " 篇日志";

                StringList paramData = StringList.Parse(param);

                AdminBlogArticleFilter filter = AdminBlogArticleFilter.Parse(paramData[0]);

                if (success)
                {
                    User operatorUser = UserBO.Instance.GetUser(operatorUserID, GetUserOption.WithAll);

                    Logs.LogManager.LogOperation(
                        new Blog_DeleteBlogArticleBySearch(operatorUserID, operatorUser.Name, IPUtil.GetCurrentIP(), filter, finishedCount)
                        );
                }
            }
            else
            {
                title = "删除日志失败";
            }
        }
Esempio n. 4
0
        public override bool StepExecute(int operatorUserID, string param, ref long offset, ref int totalCount, ref int finishedCount, out string title, out bool isLastStep)
        {
            StringList paramData = StringList.Parse(param);

            AdminBlogArticleFilter filter = AdminBlogArticleFilter.Parse(paramData[0]);

            int stepCount;

            if (BlogBO.Instance.DeleteBlogArticlesForAdmin(operatorUserID, filter, paramData[1] == "1", stepDeleteCount, out stepCount)) // .DeleteDoingsBySearch(filter, 200);
            {
                finishedCount += stepCount;

                isLastStep = stepCount < stepDeleteCount;

                title = "正在删除日志,总数 " + totalCount + ",已删 " + finishedCount;
            }
            else
            {
                isLastStep = true;
                title      = string.Empty;
            }

            return(true);
        }
Esempio n. 5
0
        private string BuildConditionsByFilter(SqlQuery query, AdminBlogArticleFilter filter, int operatorUserID, IEnumerable<Guid> excludeRoleIDs, bool startWithWhere)
        {
            StringBuffer sqlConditions = new StringBuffer();

            if (string.IsNullOrEmpty(filter.SearchKey) == false)
            {
                switch (filter.SearchMode)
                {
                    case SearchArticleMethod.Subject: //标题筛选
                        sqlConditions += " AND [Subject] LIKE '%' + @Keywords + '%'";
                        break;

                    case SearchArticleMethod.FullText: //正文筛选
                        sqlConditions += " AND [Content] LIKE '%' + @Keywords + '%'";
                        break;

                    default:
                        sqlConditions += " AND ([Subject] LIKE '%' + @Keywords + '%' OR [Content] LIKE '%' + @Keywords + '%')";
                        break;
                }
                query.CreateParameter<string>("@Keywords", filter.SearchKey, SqlDbType.NVarChar, 1000);
            }

            if (string.IsNullOrEmpty(filter.CreateIP) == false)
            {
                sqlConditions += " AND [CreateIP] LIKE '%' + @CreateIP + '%'";
                query.CreateParameter<string>("@CreateIP", filter.CreateIP, SqlDbType.VarChar, 50);
            }

            if (filter.ArticleID != null)
            {
                sqlConditions += " AND [ArticleID] = @ArticleID";
                query.CreateParameter<int?>("@ArticleID", filter.ArticleID, SqlDbType.Int);
            }

            if (filter.AuthorID != null)
            {
                sqlConditions += " AND [UserID] = @UserID";
                query.CreateParameter<int?>("@UserID", filter.AuthorID, SqlDbType.Int);
            }

            if (filter.BeginDate != null)
            {
                sqlConditions += " AND [CreateDate] >= @BeginDate";
                query.CreateParameter<DateTime?>("@BeginDate", filter.BeginDate, SqlDbType.DateTime);
            }

            if (filter.EndDate != null)
            {
                sqlConditions += " AND [CreateDate] <= @EndDate";
                query.CreateParameter<DateTime?>("@EndDate", filter.EndDate, SqlDbType.DateTime);
            }

            if (filter.TotaLViewsScopeBegin != null && filter.TotalViewsScopeEnd != null)
            {
                sqlConditions += " AND ([TotalViews] >= @TotalViewsScopeBegin AND [TotalViews] <= @TotalViewsScopeEnd)";
                query.CreateParameter<int?>("@TotalViewsScopeBegin", filter.TotaLViewsScopeBegin, SqlDbType.Int);
                query.CreateParameter<int?>("@TotalViewsScopeEnd", filter.TotalViewsScopeEnd, SqlDbType.Int);
            }

            if (filter.TotalCommentsScopeBegin != null && filter.TotalCommentsScopeEnd != null)
            {
                sqlConditions += " AND ([TotalComments] >= @TotalCommentsScopeBegin AND [TotalComments] <= @TotalCommentsScopeEnd)";
                query.CreateParameter<int?>("@TotalCommentsScopeBegin", filter.TotalCommentsScopeBegin, SqlDbType.Int);
                query.CreateParameter<int?>("@TotalCommentsScopeEnd", filter.TotalCommentsScopeEnd, SqlDbType.Int);

            }

            if (string.IsNullOrEmpty(filter.Username) == false)
            {
                sqlConditions += " AND [UserID] = (SELECT [UserID] FROM [bx_Users] WHERE [Username] = @Username)";
                query.CreateParameter<string>("@Username", filter.Username, SqlDbType.NVarChar, 50);
            }

            string excludeRoleSQL = DaoUtil.GetExcludeRoleSQL("[UserID]", "[LastEditUserID]", operatorUserID, excludeRoleIDs, query);

            if (string.IsNullOrEmpty(excludeRoleSQL) == false)
            {
                sqlConditions += " AND " + excludeRoleSQL;
            }

            if (sqlConditions.Length > 0)
            {
                sqlConditions.Remove(0, 5);
                if (startWithWhere)
                    sqlConditions.InnerBuilder.Insert(0, " WHERE ");
            }

            return sqlConditions.ToString();
        }
Esempio n. 6
0
        public override DeleteResult DeleteBlogArticlesBySearch(AdminBlogArticleFilter filter, int operatorUserID, IEnumerable<Guid> excludeRoleIDs, int topCount, out int deletedCount)
        {

            deletedCount = 0;

            using (SqlQuery query = new SqlQuery())
            {
                string conditions = BuildConditionsByFilter(query, filter, operatorUserID, excludeRoleIDs, true);

                StringBuffer sql = new StringBuffer();

                sql += @"
DECLARE @DeleteData table (UserID int, ArticleID int);

INSERT INTO @DeleteData SELECT TOP (@TopCount) [UserID],[ArticleID] FROM [bx_BlogArticles] " + conditions + @";

DELETE [bx_BlogArticles] WHERE ArticleID IN (SELECT [ArticleID] FROM @DeleteData);

SELECT @@ROWCOUNT;

SELECT [UserID],COUNT(*) AS [Count] FROM @DeleteData GROUP BY [UserID];";

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

                query.CommandText = sql.ToString();

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    if (reader.Read())
                        deletedCount = reader.Get<int>(0);

                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            deleteResult.Add(reader.Get<int>("UserID"), reader.Get<int>("Count"));
                        }
                    }

                    return deleteResult;
                }
            }

        }
Esempio n. 7
0
        public override BlogArticleCollection GetBlogArticlesBySearch(int operatorID, Guid[] excludeRoleIDs, AdminBlogArticleFilter filter, int pageNumber)
        {
            using (SqlQuery query = new SqlQuery())
            {
                string conditions = BuildConditionsByFilter(query, filter, operatorID, excludeRoleIDs, false);

                query.Pager.TableName = "[bx_BlogArticles]";

                query.Pager.SortField = filter.Order.ToString();

                if (filter.Order != AdminBlogArticleFilter.OrderBy.ArticleID)
                {
                    query.Pager.PrimaryKey = "ArticleID";
                }

                query.Pager.IsDesc = filter.IsDesc;
                query.Pager.PageNumber = pageNumber;
                query.Pager.PageSize = filter.PageSize;
                query.Pager.SelectCount = true;

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

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    BlogArticleCollection articles = new BlogArticleCollection(reader);

                    if (reader.NextResult())
                    {
                        if (reader.Read())
                        {
                            articles.TotalRecords = reader.Get<int>(0);
                        }
                    }

                    return articles;
                }
            }
        }
Esempio n. 8
0
 /// <summary>
 /// 删除搜索结果
 /// </summary>
 /// <param name="filter">搜索条件</param>
 /// <param name="operatorID">操作者ID</param>
 /// <param name="excludeRoleIDs">操作者没有权限管理的用户组ID</param>
 /// <param name="isGetDeleteResult">是否获取删除结果</param>
 /// <param name="topCount">删除搜索结果的前几条</param>
 /// <param name="deletedCount">真实删除的条数</param>
 /// <returns></returns>
 public abstract DeleteResult DeleteBlogArticlesBySearch(AdminBlogArticleFilter filter, int operatorID, IEnumerable <Guid> excludeRoleIDs, int topCount, out int deletedCount);
Esempio n. 9
0
 /// <summary>
 /// 搜索博客日志(后台管理用)
 /// </summary>
 /// <param name="operatorID">操作者ID</param>
 /// <param name="excludeRoleIDs">在返回结果中要排除哪些用户组成员发布的日志</param>
 /// <param name="filter">搜索条件</param>
 /// <param name="pageNumber">数据分页页码</param>
 ///
 /// <returns></returns>
 public abstract BlogArticleCollection GetBlogArticlesBySearch(int operatorID, Guid[] excludeRoleIDs, AdminBlogArticleFilter filter, int pageNumber);
Esempio n. 10
0
        private void SearchAlbums()
        {
            AdminBlogArticleFilter filter = AdminBlogArticleFilter.GetFromForm();

            filter.Apply("filter", "page");
        }