public static void CheckControlRight(string board_id, string discussion_id, string letter_id, ref string delta_flags, DynamicTableEntity entity) { Subtype subtype = LetterConverter.GetSubtype(entity); if (subtype == Subtype.d) { Util.ThrowUnauthorizedException("不能修改的類型。"); } bool auto_unreport = false; if (SandFlags.Check(delta_flags, SandFlags.MT_PERMANENT_DELETE, 1)) { GroupStore.CheckPermanentDeleteRight(board_id, discussion_id, letter_id, entity); auto_unreport = true; } int delete_num = SandFlags.GetNumber(delta_flags, SandFlags.MT_DELETED); if (delete_num == 1 || delete_num == -1) { //bool is_undelete = SandFlags.Check(delta_flags, SandFlags.DELETED_FLAG_CHAR, -1); int user_level = GroupStore.CheckDeleteRight(board_id, discussion_id, letter_id, entity, delete_num == -1); //delta_flags = SandFlags.DELETED_FLAG_CHAR + (delete_num * user_level).ToString(); //delta_flags = SandFlags.MultiplyNumber(delta_flags, SandFlags.DELETED_FLAG_CHAR, user_level); delta_flags = SandFlags.Operate(delta_flags, new FlagOperation { type = FlagOperation.Type.Multiply, MetaTitle = SandFlags.MT_DELETED, N = user_level }); string current_flags = entity.GetFlags(); SandFlags.CheckLevel(current_flags, SandFlags.MT_DELETED, delta_flags); auto_unreport = true; } if (SandFlags.Check(delta_flags, SandFlags.MT_REPORT, 0)) { GroupStore.CheckUnreportRight(board_id); } else if (SandFlags.Check(delta_flags, SandFlags.MT_REPORT, 1)) { } else { if (auto_unreport) { delta_flags = SandFlags.Add(delta_flags, SandFlags.MT_REPORT, 0); } } }
private static void moveForeMeta() { Regex regex = new Regex(@"^>>(.+?)\n", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant); //Regex regex = new Regex(@"^>>(.+?)$", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant); // some abstract contain only ">>(0,0)" and no "\n". string pkFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.GreaterThanOrEqual, ""); TableQuery query = new TableQuery().Where(pkFilter).Select(new string[] { "flags2", "abstract" }); int count = 0; foreach (DynamicTableEntity entity in Warehouse.DiscussionLoadTable.ExecuteQuery(query)) { string flags = null; string ab = LetterConverter.GetAbstract(entity); if (ab != null) { ab = regex.Replace(ab, (Match match) => { if (match.Groups[1].Value[0] == '(') { flags = entity.GetFlags(); flags = SandFlags.Add(flags, SandFlags.MT_COORDINATE, match.Groups[1].Value); } return(string.Empty); }); } if (flags != null) { count++; entity["flags2"] = new EntityProperty(flags); entity["abstract"] = new EntityProperty(ab); Warehouse.DiscussionLoadTable.Execute(TableOperation.Merge(entity)); //if (count > 0) // break; } } }
public static void TestMain() { #if false Debug.Assert(SandFlags.CheckWithin("", 'd') == true); Debug.Assert(SandFlags.CheckWithin(",l2,", 'l') == true); Debug.Assert(SandFlags.CheckWithin(",l2,", 'd', 'l') == true); Debug.Assert(SandFlags.CheckWithin(",l2,", 'd') == false); Debug.Assert(SandFlags.CheckWithin(",d1,l2,", 'd') == false); Debug.Assert(SandFlags.CheckWithin(",d1,l2,", 'd', 'l') == true); Debug.Assert(SandFlags.CheckWithin(",d1,l2,", 'l') == false); Debug.Assert(SandFlags.CheckWithin(",d1,l2,", 'd', 'l', 'e') == true); Debug.Assert(SandFlags.CheckWithin(",d1,l2,", 'f', 'l', 'e') == false); Debug.Assert(SandFlags.CheckWithin(",d1,l2,", 'd', 'f', 'e') == false); Debug.Assert(SandFlags.Check("", 'c') == false); Debug.Assert(SandFlags.Check(",", 'c') == false); Debug.Assert(SandFlags.Check(",c0,", 'c') == true); Debug.Assert(SandFlags.Check(",d5,", 'c') == false); Debug.Assert(SandFlags.Check(",d55555,e6,", 'c') == false); Debug.Assert(SandFlags.Check(",d5,e6666,c7,", 'c') == true); Debug.Assert(SandFlags.Check(",d5,e6,c77,f8,", 'c') == true); Debug.Assert(SandFlags.Check(",d5,e6,f88,", 'c') == false); Debug.Assert(SandFlags.Add("", "c3") == ",c3,"); Debug.Assert(SandFlags.Add(",", "c34") == ",c34,"); Debug.Assert(SandFlags.Add(",d4,", "c355") == ",d4,c355,"); Debug.Assert(SandFlags.Add(",d4,e5,", "c3666") == ",d4,e5,c3666,"); Debug.Assert(SandFlags.Remove("", 'c') == ""); Debug.Assert(SandFlags.Remove(",", 'c') == ""); Debug.Assert(SandFlags.Remove(",d5,", 'c') == ",d5,"); Debug.Assert(SandFlags.Remove(",d5,e6,", 'c') == ",d5,e6,"); Debug.Assert(SandFlags.Remove(",c2,", 'c') == ""); Debug.Assert(SandFlags.Remove(",c0,d5,", 'c') == ",d5,"); Debug.Assert(SandFlags.Remove(",d5,c1,", 'c') == ",d5,"); Debug.Assert(SandFlags.Remove(",d5,c18,f9,", 'c') == ",d5,f9,"); Debug.Assert(SandFlags.Remove(",c199,d5,f9,", 'c') == ",d5,f9,"); Debug.Assert(SandFlags.Remove(",d5,f9,c1777,", 'c') == ",d5,f9,"); Debug.Assert(SandFlags.Merge("", "") == ""); Debug.Assert(SandFlags.Merge(",g6,", "") == ",g6,"); Debug.Assert(SandFlags.Merge("", ",c1,") == ",c1,"); Debug.Assert(SandFlags.Merge(",g6,", ",c1,") == ",g6,c1,"); Debug.Assert(SandFlags.Merge("", ",c1,d2,") == ",c1,d2,"); Debug.Assert(SandFlags.Merge(",e3,", ",c1,d2,") == ",e3,c1,d2,"); Debug.Assert(SandFlags.Merge(",e3,f4,", ",c1,d2,") == ",e3,f4,c1,d2,"); Debug.Assert(SandFlags.Merge(",e3,f4,c99,", ",c1,d2,") == ",e3,f4,c1,d2,"); Debug.Assert(SandFlags.Merge(",c500,e3,f4,", ",c1,d2,") == ",e3,f4,c1,d2,"); Debug.Assert(SandFlags.Merge(",e3,f4,c88,", ",c1,d2,") == ",e3,f4,c1,d2,"); Debug.Assert(SandFlags.Merge(",d2,e3,f4,c88,", ",c1,d2,") == ",e3,f4,c1,d2,"); Debug.Assert(SandFlags.Merge(",e3,d77,f4,c88,", ",c1,d2,") == ",e3,f4,c1,d2,"); Debug.Assert(SandFlags.Merge(",e3,f4,d555,c88,", ",c1,d2,") == ",e3,f4,c1,d2,"); Debug.Assert(SandFlags.Merge("", ",h0,") == ""); Debug.Assert(SandFlags.Merge(",g6,", ",h0,") == ",g6,"); Debug.Assert(SandFlags.Merge(",g6,h0,", ",h0,") == ",g6,"); Debug.Assert(SandFlags.Merge(",h1,g6,", ",h0,") == ",g6,"); Debug.Assert(SandFlags.Merge(",k7,h335,g6,", ",h0,") == ",k7,g6,"); Debug.Assert(SandFlags.Merge(",k7,g666,h335,", ",h0,") == ",k7,g666,"); Debug.Assert(SandFlags.Merge(",h335,k77,g6,", ",h0,") == ",k77,g6,"); Debug.Assert(SandFlags.Merge(",h335,k77,g6,", ",h0,g0,") == ",k77,"); Debug.Assert(SandFlags.Merge(",h335,k77,g6,", ",k0,g0,") == ",h335,"); Debug.Assert(SandFlags.Merge(",h3,k7,g6,", ",k0,g7,h4,") == ",g7,h4,"); Debug.Assert(SandFlags.Merge(",h3,k7,g6,", ",k0,g7,h4,e9,") == ",g7,h4,e9,"); Debug.Assert(SandFlags.Merge(",a1,b2,c3,d4,e5,", ",g7,e1,d0,b0,a5,f6") == ",c3,g7,e1,a5,f6,"); Debug.Assert(SandId.CountBoardList("b3a") == -1); Debug.Assert(SandId.CountBoardList("ba") == -1); Debug.Assert(SandId.CountBoardList("c,b5") == -1); Debug.Assert(SandId.CountBoardList("b70,ba") == -1); Debug.Assert(SandId.CountBoardList("b70,ba,") == -1); Debug.Assert(SandId.CountBoardList("") == 0); Debug.Assert(SandId.CountBoardList(",") == -1); Debug.Assert(SandId.CountBoardList(",,") == -1); Debug.Assert(SandId.CountBoardList("c") == -1); Debug.Assert(SandId.CountBoardList("b") == -1); Debug.Assert(SandId.CountBoardList("b3") == 1); Debug.Assert(SandId.CountBoardList(",b3") == -1); Debug.Assert(SandId.CountBoardList("b3,") == 1); Debug.Assert(SandId.CountBoardList("b30") == 1); Debug.Assert(SandId.CountBoardList("b30,c") == -1); Debug.Assert(SandId.CountBoardList("b30,b") == -1); Debug.Assert(SandId.CountBoardList("b30,b50") == 2); Debug.Assert(SandId.CountBoardList(",b30,b50") == -1); Debug.Assert(SandId.CountBoardList("b30,b50,") == 2); Debug.Assert(SandId.CountBoardList("b30,,b50") == -1); Debug.Assert(SandId.CountBoardList("b30,b50,b800") == 3); LinkedList <string> list = new LinkedList <string>(); string text = Util.Serialize(list); LinkedList <string> list2 = Util.DeserializeToLinkedList(text); list.AddFirst("d"); text = Util.Serialize(list); list2 = Util.DeserializeToLinkedList(text); DiscussionSummary ds = new DiscussionSummary("b1026", "d11"); StringWriter sw = new StringWriter(); ds.Write(sw); string str = sw.ToString(); LinkedList <string> q = RollManager.GetLatest("b1026"); RollManager.PutLatest("b1026", "d90"); RollManager.PutLatest("b1026", "d3"); RollManager.PutLatest("b1026", "d77"); RollManager.PutLatest("b1026", "d10"); RollManager.PutLatest("b1026", "d77"); q = RollManager.GetLatest("b1000"); RollManager.PutLatest("b1000", "d1"); RollManager.PutLatest("b1000", "d1"); RollManager.PutLatest("b1000", "d10"); RollManager.PutLatest("b1000", "d5"); RollManager.PutLatest("b1000", "d1"); List <string> list = MvcWebRole1.Models.Store.GetLastDiscussions("b1026", 5); string board_id = Store.CreateBoard("測試板"); #endif }