public GroupReference AddToGroup(GroupDB.Group ThisGroup)
                {
                    if (Groups.Select(x => x.Group).Contains(ThisGroup))
                    {
                        foreach (GroupReference ThisGroupReference in Groups)
                        {
                            if (ThisGroupReference.Group == ThisGroup)
                            {
                                return(ThisGroupReference);
                            }
                        }
                    }
                    GroupReference output = new GroupReference();

                    if (ThisGroup == GroupDB.NoGroup)
                    {
                        Logger.Log.SystemMessage("Tried to add user \"" + Name + "\" to the NULL Group placeholder.");
                        return(NoGroupReference);
                    }
                    output.Group = ThisGroup;
                    if (ThisGroup.Ranks.Count() >= 1)
                    {
                        output.Rank = ThisGroup.Ranks[0];
                    }
                    else
                    {
                        output.Rank = Database.GroupDB.NoRank;
                    }
                    output.RankDate = DateTime.Now;
                    output.Parent   = this;
                    Groups.Add(output);
                    return(output);
                }
Exemple #2
0
 public bool RemoveFromGroup(GroupDB.Group ThisGroup)
 {
     try
     {
         List <GroupReference> CachedGroupList = Groups.ToArray().ToList();
         foreach (GroupReference ThisGroupReference in CachedGroupList)
         {
             if (ThisGroupReference.Group == ThisGroup)
             {
                 Groups.Remove(ThisGroupReference);
             }
         }
         if (GroupRepresented == ThisGroup)
         {
             GroupRepresented = GroupDB.NoGroup;
         }
         return(true);
     }
     catch (Exception e)
     {
         Logger.Log.Bug(e, "Tried to remove user \"" + Name + "\" from a group");
         return(false);
     }
 }
Exemple #3
0
                public void LoadAll()
                {
                    string InputFile = "./Database/Users/" + Name + "/Info.Dat";

                    Utilities.IO.PrepareDirectory("./Database/");
                    Utilities.IO.PrepareDirectory("./Database/Users/");
                    Utilities.IO.PrepareDirectory("./Database/Users/" + Name);
                    Utilities.IO.PrepareFile(InputFile);
                    string[] InfoFileContents = Utilities.IO.ReadAllLines(InputFile);
                    Logger.Log.SystemMessage("Loading Values for User \"" + Name + "\"...");
                    foreach (string line in InfoFileContents)
                    {
                        #region GetDataCouplets
                        string ThisLine = line;
                        if (!(ThisLine.Contains("\t")))
                        {
                            continue;
                        }
                        while (ThisLine.Contains("\t\t"))
                        {
                            ThisLine = ThisLine.Replace("\t\t", "\t");
                        }
                        string Header    = ThisLine.Split('\t')[0];
                        string Data      = ThisLine.Remove(0, ((Header.Length) + 1));
                        var    Converted = Utilities.IO.StringToVariable(Data);
                        //NOTE: These WILL Bypass GUI mode if enabled, as the GUI setting is turned on until it is read.
                        //if (Converted is Boolean) Logger.Console.WriteLine(String.Format("Bool: {0}", Data));
                        //if (Converted is IPAddress) Logger.Console.WriteLine(String.Format("IPAddress: {0}", Data));
                        //if (Converted is Decimal) Logger.Console.WriteLine(String.Format("Decimal: {0}", Data));
                        //if (Converted is Int32) Logger.Console.WriteLine(String.Format("Int32: {0}", Data));
                        //if (Converted is String) Logger.Console.WriteLine(String.Format("String: {0}", Data));
                        #endregion
                        #region SkipComments
                        if (Header.ToUpperInvariant().StartsWith("REM") || (Header.ToUpperInvariant().StartsWith("#")) || (Header.ToUpperInvariant().StartsWith("//")))
                        {
                            //We don't worry abbout Comments or remarks.
                            continue;
                        }
                        #endregion

                        object inputvalue = null;
                        //Logger.Console.WriteLine(Converted.ToString());
                        //Console.WriteLine(Converted);
                        try
                        {
                            if (Data == "")
                            {
                                continue;
                            }
                            if (Header.ToUpperInvariant() == "GROUP")
                            {
                                //try
                                //{
                                string        GroupString = Data;
                                GroupDB.Group ThisGroup   = GroupDB.FindGroup(GroupString);
                                if (ThisGroup == GroupDB.NoGroup)
                                {
                                    throw new System.ArgumentException("Group Not Found: \"" + GroupString + "\".");
                                }
                                GroupReference ThisGroupReference = AddToGroup(ThisGroup);
                                ThisGroupReference.LoadAll();
                                //}
                                //catch (Exception e) { Logger.Log.Bug(e, Strings.OthersKicked + " given is NOT a group reference."); }
                                continue;
                            }

                            Type temp = this.GetType().GetField(Header.ToUpperInvariant(), System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.IgnoreCase).FieldType;
                            if (temp == typeof(IPAddress))
                            {
                                inputvalue = IPAddress.Parse(Data);
                            }
                            else if (temp == typeof(Database.GroupDB.Group))
                            {
                                inputvalue = Database.GroupDB.FindGroup(Data);
                            }
                            else if (temp == typeof(Database.UserDB.User))
                            {
                                inputvalue = Database.UserDB.Find(Data);
                            }
                            else if (temp == typeof(DateTime))
                            {
                                try
                                {
                                    inputvalue = Data.ToDateTime();
                                }
                                catch (Exception e)
                                {
                                    //throw new System.ArgumentException(Header + ", " + Data, e);
                                }
                            }
                            else if (temp == typeof(TimeSpan))
                            {
                                inputvalue = TimeSpan.Parse(Data);
                            }
                            else
                            {
                                inputvalue = Convert.ChangeType(Data, temp);
                            }
                            this.GetType().GetField(Header.ToUpperInvariant(), System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.IgnoreCase).SetValue(this, inputvalue);
                            //Logger.Console.WriteLine(this.GetType().GetField(Header.ToUpperInvariant(), System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.IgnoreCase).Name.SuffixTabs(4) + Data);
                        }
                        catch (Exception e)
                        {
                            ///*
                            Logger.Console.WriteLine("&cERROR&e " + e);
                            Logger.Console.WriteLine(String.Format("Unrecognised Value: {0}", Header.ToUpperInvariant()));
                            Logger.Console.WriteLine(String.Format("Unrecognised Value: {0}", Data.ToUpperInvariant()));
                            //Thread.Sleep(50000);
                            //*/
                            //System.Console.WriteLine(e);
                            Logger.Log.SystemMessage(String.Format("Unrecognised Value: {0}", Header.ToUpperInvariant()));
                            //Unrecognised Value.
                            continue;
                        }
                    }
                    //Load All Permissions for this user.
                    //  As permissions in it's own right is a suboject,
                    //  Capabable of it's own specific Load() one var only,
                    //  we can do that instead if a specific permission needs to be reloaded.
                    InputFile = "./Database/Users/" + Name + "/Permissions.Dat";
                    Utilities.IO.PrepareDirectory("./Database/");
                    Utilities.IO.PrepareDirectory("./Database/Users/");
                    Utilities.IO.PrepareDirectory("./Database/Users/" + Name);
                    Utilities.IO.PrepareFile(InputFile);
                    this.Permissions.LoadAll(InputFile);

                    Logger.Log.SystemMessage("Loaded Values for User \"" + Name + "\".");
                    //end of loading is here.
                }