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); }
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); }
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); } } }
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. }
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); }
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); }