ScrewTurn.Wiki.UsersStorageProvider.RemoveUser C# (CSharp) Method

RemoveUser() public method

Removes a User.
If user is null.
public RemoveUser ( UserInfo user ) : bool
user UserInfo The User to remove.
return bool
        public bool RemoveUser(UserInfo user)
        {
            if(user == null) throw new ArgumentNullException("user");

            lock(this) {
                UserInfo[] users = GetUsers();
                UsernameComparer comp = new UsernameComparer();
                int idx = -1;
                for(int i = 0; i < users.Length; i++) {
                    if(comp.Compare(users[i], user) == 0) {
                        idx = i;
                        break;
                    }
                }
                if(idx < 0) return false;

                // Remove user's data
                string lowercaseUsername = user.Username.ToLowerInvariant();
                string[] lines = File.ReadAllLines(GetFullPath(UsersDataFile));
                List<string> newLines = new List<string>(lines.Length);
                string[] fields;
                for(int i = 0; i < lines.Length; i++) {
                    fields = lines[i].Split('|');
                    if(fields[0].ToLowerInvariant() != lowercaseUsername) {
                        newLines.Add(lines[i]);
                    }
                }
                File.WriteAllLines(GetFullPath(UsersDataFile), newLines.ToArray());

                // Remove user
                List<UserInfo> tmp = new List<UserInfo>(users);
                tmp.Remove(tmp[idx]);
                DumpUsers(tmp.ToArray());

                usersCache = null;
            }
            return true;
        }