Пример #1
0
        public static void SetBoardSetting(string board_id, string board_name)
        {
            TableResult        result = Warehouse.BoardListTable.Execute(TableOperation.Retrieve(board_id, EMPTY_ROW_KEY));
            DynamicTableEntity entity = (DynamicTableEntity)result.Result;

            // if (entity != null)		// let it throw null reference exception.
            int ec = RevisionStore.IncreaseEditCount(entity);

            string partition_key = SandId.CombineId(Warehouse.BoardListTable.Name, board_id);

            RevisionStore.CreateHistory(entity, partition_key, ec, "boardname");

            CreatorConverter.FillEntity(entity, CreatorConverter.Status.Editor, null);
            entity["boardname"].StringValue = board_name;

            Warehouse.BoardListTable.Execute(TableOperation.Replace(entity));                  // Throws StorageException ((412) Precondition Failed) if the entity is modified in between.
            //don't work for child action. //HttpResponse.RemoveOutputCacheItem("/boardlist");

            //List<string> selection_list = SelectionBoardListResult.GetSelectionList(board_id);

            //if (selection_list != null)
            //foreach (string selection_id in selection_list)
            //don't work for child action. //HttpResponse.RemoveOutputCacheItem("/discussionlist/" + selection_id);

            Warehouse.BsMapPond.Notify();
            Warehouse.DiscussionListPond.Notify(board_id);
            Warehouse.BoardSettingPond.Notify(board_id);
        }
Пример #2
0
        public static string /*board id*/ CreateBoard(string board_name)
        {
            int    next_id  = NextIdStore.Next(Warehouse.BoardListTable, null);
            string board_id = SandId.MakeBoardId(next_id);

            DynamicTableEntity entity = new DynamicTableEntity(board_id, EMPTY_ROW_KEY);

            entity["boardname"] = new EntityProperty(board_name);
            entity.OperateFlags(new FlagMergeOperation(SandFlags.MT_LOW_KEY + "1"));
#if OLD
            entity["createtime"] = new EntityProperty(DateTime.Now);

            entity["creatoruid"] = new EntityProperty(WebSecurity.CurrentUserId);
            entity["creatormid"] = new EntityProperty(UserStore.CurrentUserMId);
#else
            CreatorConverter.FillEntity(entity, CreatorConverter.Status.Editor, null);
#endif
            Warehouse.BoardListTable.Execute(TableOperation.Insert(entity));

            DiscussionListStore.CreateSkeleton(board_id);
            //don't work for child action. //HttpResponse.RemoveOutputCacheItem("/boardlist");
            Warehouse.BsMapPond.Notify();

            return(board_id);
        }
Пример #3
0
        public static void ModifyLetterFlags(DynamicTableEntity entity, string editor, string delta_flags)
        {
            entity.OperateFlags(new FlagMergeOperation(delta_flags));

            // don't count into last edit for delete/report/permanent delete.
            if (editor != null)
            {
                CreatorConverter.FillEntity(entity, CreatorConverter.Status.LastEditor, editor);

                if (CreatorConverter.IsCurrentUserCreator(entity))
                {
                    CreatorConverter.ChangeNickname(entity, CreatorConverter.Status.Creator, editor);
                }
            }
        }
Пример #4
0
        public static void CreateLetterEntity(DynamicTableEntity entity, string creator, string words,
                                              Subtype subtype, string delta_flags, string board_id, string discussion_id)
        {
            CreatorConverter.FillEntity(entity, CreatorConverter.Status.Creator, creator);

            entity["subtype"] = new EntityProperty(subtype.ToString());
#if OLD
            string flags = SandFlags.Merge("", delta_flags);

            if (flags.Length > 0)
            {
                entity["flags"] = new EntityProperty(flags);
            }
#else
            entity.OperateFlags(new FlagMergeOperation(delta_flags));
#endif
            fillWords(entity, words, board_id, discussion_id);                          // must be after flags modification so that encrypt flag is correct.
        }
Пример #5
0
        public static void SetBoardFlags(string board_id, string delta_flags)
        {
            TableResult        result = Warehouse.BoardListTable.Execute(TableOperation.Retrieve(board_id, EMPTY_ROW_KEY));
            DynamicTableEntity entity = (DynamicTableEntity)result.Result;

            int ec = RevisionStore.IncreaseEditCount(entity);

            string partition_key = SandId.CombineId(Warehouse.BoardListTable.Name, board_id);

            RevisionStore.CreateHistory(entity, partition_key, ec, "flags2");

            CreatorConverter.FillEntity(entity, CreatorConverter.Status.Editor, null);
            entity.OperateFlags(new FlagMergeOperation(delta_flags));

            Warehouse.BoardListTable.Execute(TableOperation.Replace(entity));                  // Throws StorageException ((412) Precondition Failed) if the entity is modified in between.

            Warehouse.BoardSettingPond.Notify(board_id);
        }
Пример #6
0
        public static string /*selection id*/ CreateSelection(string selection_name)
        {
            int    next_id      = NextIdStore.Next(Warehouse.SelectionListTable, null);
            string selection_id = SandId.MakeSelectionId(next_id);

            DynamicTableEntity entity = new DynamicTableEntity(selection_id, EMPTY_ROW_KEY);

            entity["selectionname"] = new EntityProperty(selection_name);
            entity["boardlist"]     = new EntityProperty(string.Empty);

            CreatorConverter.FillEntity(entity, CreatorConverter.Status.Editor, null);

            Warehouse.SelectionListTable.Execute(TableOperation.Insert(entity));

            //don't work for child action. //HttpResponse.RemoveOutputCacheItem("/boardlist");
            Warehouse.BsMapPond.Notify();

            return(selection_id);
        }