示例#1
0
        public override GroupPowers GetAgentPowers(UGI group, UUI agent)
        {
            if (!Members.ContainsKey(agent, group, agent))
            {
                return(GroupPowers.None);
            }

            GroupPowers powers;

            if (!TryGetGroupRoleRights(agent, group, UUID.Zero, out powers))
            {
                return(GroupPowers.None);
            }

            using (var conn = new MySqlConnection(m_ConnectionString))
            {
                conn.Open();
                using (var cmd = new MySqlCommand(
                           "SELECT Powers FROM roles AS r INNER JOIN " +
                           "((grouprolemembers AS rm INNER JOIN groupmembers AS m ON rm.GroupID = m.GroupID AND rm.PrincipalID = m.PrincipalID) ON " +
                           "r.RoleID = rm.RoleID WHERE rm.GroupID = @groupid AND rm.PrincipalID = @principalid", conn))
                {
                    cmd.Parameters.AddParameter("@groupid", group.ID);
                    cmd.Parameters.AddParameter("@principalid", agent.ID);
                    using (MySqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            powers |= reader.GetEnum <GroupPowers>("Powers");
                        }
                    }
                }
            }
            return(powers);
        }
示例#2
0
 bool IGroupMembershipsInterface.TryGetValue(UUI requestingAgent, UGI group, UUI principal, out GroupMembership gmem)
 {
     gmem = null;
     using (var conn = new MySqlConnection(m_ConnectionString))
     {
         conn.Open();
         using (var cmd = new MySqlCommand(
                    "SELECT g.*, m.PrincipalID, m.SelectedRoleID AS ActiveRoleID, m.Contribution, m.ListInProfile, m.AcceptNotices, m.AccessToken, " +
                    "r.RoleID, r.Name AS RoleName, r.Description AS RoleDescription, r.Title as RoleTitle, r.Powers as RolePowers, " +
                    RCountQuery + "," + MCountQuery + " FROM (groupmemberships AS m INNER JOIN groups AS g ON m.GroupID = g.GroupID) " +
                    "INNER JOIN grouproles AS r ON m.SelectedRoleID = r.RoleID " +
                    "WHERE m.PrincipalID = @principalid", conn))
         {
             cmd.Parameters.AddParameter("@principalid", principal.ID);
             using (MySqlDataReader reader = cmd.ExecuteReader())
             {
                 if (reader.Read())
                 {
                     gmem = MembershipFromReader(reader, requestingAgent);
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
示例#3
0
 bool IUserPreferencesInterface.TryGetValue(UUI user, out ProfilePreferences prefs)
 {
     using (var conn = new MySqlConnection(m_ConnectionString))
     {
         conn.Open();
         using (var cmd = new MySqlCommand("SELECT * FROM usersettings where useruuid = @uuid", conn))
         {
             cmd.Parameters.AddParameter("@uuid", user.ID);
             using (MySqlDataReader reader = cmd.ExecuteReader())
             {
                 if (reader.Read())
                 {
                     prefs = new ProfilePreferences()
                     {
                         User       = user,
                         IMviaEmail = reader.GetBool("imviaemail"),
                         Visible    = reader.GetBool("visible")
                     };
                     return(true);
                 }
                 else
                 {
                     prefs = new ProfilePreferences()
                     {
                         User       = user,
                         IMviaEmail = false,
                         Visible    = false
                     };
                     return(true);
                 }
             }
         }
     }
 }
        bool IPicksInterface.TryGetValue(UUI user, UUID id, out ProfilePick pick)
        {
            using (var conn = new MySqlConnection(m_ConnectionString))
            {
                conn.Open();
                using (var cmd = new MySqlCommand("SELECT * FROM userpicks WHERE pickuuid = @uuid", conn))
                {
                    cmd.Parameters.AddParameter("@uuid", id);
                    using (MySqlDataReader reader = cmd.ExecuteReader())
                    {
                        if (reader.Read())
                        {
                            pick                = new ProfilePick();
                            pick.Creator.ID     = reader.GetUUID("creatoruuid");
                            pick.Description    = reader.GetString("description");
                            pick.Enabled        = reader.GetBoolean("enabled");
                            pick.Name           = reader.GetString("name");
                            pick.OriginalName   = reader.GetString("originalname");
                            pick.ParcelID       = reader.GetParcelID("parceluuid");
                            pick.PickID         = reader.GetUUID("pickuuid");
                            pick.SimName        = reader.GetString("simname");
                            pick.SnapshotID     = reader.GetUUID("snapshotuuid");
                            pick.SortOrder      = reader.GetInt32("sortorder");
                            pick.TopPick        = reader.GetBoolean("toppick");
                            pick.GlobalPosition = reader.GetVector3("posglobal");
                            pick.ParcelName     = reader.GetString("parcelname");
                            return(true);
                        }
                    }
                }
            }

            pick = default(ProfilePick);
            return(false);
        }
 List <UUID> IExperienceAdminInterface.this[UUI agent]
 {
     get
     {
         var result = new List <UUID>();
         using (var conn = new MySqlConnection(m_ConnectionString))
         {
             conn.Open();
             using (var cmd = new MySqlCommand("SELECT ExperienceID, Admin FROM experienceadmins WHERE Admin LIKE @admin", conn))
             {
                 cmd.Parameters.AddParameter("@admin", agent.ID.ToString() + "%");
                 using (MySqlDataReader reader = cmd.ExecuteReader())
                 {
                     while (reader.Read())
                     {
                         if (reader.GetUUI("Admin").EqualsGrid(agent))
                         {
                             result.Add(reader.GetUUID("ExperienceID"));
                         }
                     }
                 }
             }
         }
         return(result);
     }
 }
        bool IExperiencePermissionsInterface.this[UUID experienceID, UUI agent]
        {
            get
            {
                bool ret;
                if (!Permissions.TryGetValue(experienceID, agent, out ret))
                {
                    throw new KeyNotFoundException();
                }
                return(ret);
            }

            set
            {
                var vals = new Dictionary <string, object>
                {
                    ["ExperienceID"] = experienceID,
                    ["User"]         = agent,
                    ["IsAllowed"]    = value
                };
                using (var conn = new MySqlConnection(m_ConnectionString))
                {
                    conn.Open();
                    conn.ReplaceInto("experienceusers", vals);
                }
            }
        }
示例#7
0
    private void Awake()
    {
        button        = GetComponent <Button>();
        label         = GetComponentInChildren <TextMeshProUGUI>();
        input         = transform.parent.GetComponent <InputScreen>();
        buttonImage   = GetComponent <Image>();
        enabledSprite = buttonImage.sprite;

        Texture2D disabledTexture = UUI.LoadTextureFromFile("UI_Button_disabled.png");

        disabledSprite = Sprite.Create(disabledTexture, new Rect(0, 0, disabledTexture.width, disabledTexture.height), new Vector2(0.5f, 0.5f), 100f);

        button.onClick.AddListener(() =>
        {
            if (isBackspace)
            {
                input.Backspace();
            }
            else if (isPaste)
            {
                input.Paste();
            }
            else
            {
                input.SendKeyPress(key);
            }
        });
    }
        bool IExperiencePermissionsInterface.TryGetValue(UUID experienceID, UUI agent, out bool allowed)
        {
            using (var conn = new MySqlConnection(m_ConnectionString))
            {
                conn.Open();
                using (var cmd = new MySqlCommand("SELECT User,IsAllowed FROM experienceusers WHERE ExperienceID = @experienceid AND User LIKE @user", conn))
                {
                    cmd.Parameters.AddParameter("@experienceid", experienceID);
                    cmd.Parameters.AddParameter("@user", agent.ID.ToString() + "%");
                    using (MySqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            UUI ret = reader.GetUUI("User");
                            if (ret.EqualsGrid(agent))
                            {
                                allowed = reader.GetBool("IsAllowed");
                                return(true);
                            }
                        }
                    }
                }
            }

            allowed = false;
            return(false);
        }
        Dictionary <UUID, bool> IExperiencePermissionsInterface.this[UUI agent]
        {
            get
            {
                var result = new Dictionary <UUID, bool>();
                using (var conn = new MySqlConnection(m_ConnectionString))
                {
                    conn.Open();
                    using (var cmd = new MySqlCommand("SELECT ExperienceID,User,IsAllowed FROM experienceusers WHERE User LIKE @user", conn))
                    {
                        cmd.Parameters.AddParameter("@user", agent.ID.ToString() + "%");
                        using (MySqlDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                UUI ret = reader.GetUUI("User");
                                if (ret.EqualsGrid(agent))
                                {
                                    result.Add(reader.GetUUID("ExperienceID"), reader.GetBool("IsAllowed"));
                                }
                            }
                        }
                    }
                }

                return(result);
            }
        }
        GroupMember IGroupMembersInterface.Add(UUI requestingAgent, UGI group, UUI principal, UUID roleID, string accessToken)
        {
            var vals = new Dictionary <string, object>
            {
                ["GroupID"]        = group.ID,
                ["PrincipalID"]    = principal.ID,
                ["SelectedRoleID"] = roleID,
                ["AccessToken"]    = accessToken
            };

            using (var conn = new MySqlConnection(m_ConnectionString))
            {
                conn.Open();
                conn.InsertInto("groupmemberships", vals);
            }

            return(new GroupMember()
            {
                Principal = principal,
                Group = group,
                IsAcceptNotices = true,
                IsListInProfile = true,
                AccessToken = accessToken,
                SelectedRoleID = roleID
            });
        }
示例#11
0
 string INotesInterface.this[UUI user, UUI target]
 {
     get
     {
         string notes;
         if (!Notes.TryGetValue(user, target, out notes))
         {
             throw new KeyNotFoundException();
         }
         return(notes);
     }
     set
     {
         var replaceVals = new Dictionary <string, object>
         {
             ["user"]   = user.ID,
             ["target"] = target.ID,
             ["notes"]  = value
         };
         using (var conn = new MySqlConnection(m_ConnectionString))
         {
             conn.Open();
             conn.ReplaceInto("usernotes", replaceVals);
         }
     }
 }
 List <GroupMember> IGroupMembersInterface.this[UUI requestingAgent, UGI group]
 {
     get
     {
         var members = new List <GroupMember>();
         using (var conn = new MySqlConnection(m_ConnectionString))
         {
             conn.Open();
             using (var cmd = new MySqlCommand("SELECT m.* FROM groupmemberships AS m WHERE m.GroupID = @groupid", conn))
             {
                 cmd.Parameters.AddParameter("@groupid", group.ID);
                 using (MySqlDataReader reader = cmd.ExecuteReader())
                 {
                     while (reader.Read())
                     {
                         GroupMember gmem = reader.ToGroupMember();
                         gmem.Group     = ResolveName(requestingAgent, gmem.Group);
                         gmem.Principal = ResolveName(gmem.Principal);
                         members.Add(gmem);
                     }
                 }
             }
         }
         return(members);
     }
 }
示例#13
0
 List <uint> IEstateOwnerServiceInterface.this[UUI owner]
 {
     get
     {
         var estates = new List <uint>();
         using (var conn = new MySqlConnection(m_ConnectionString))
         {
             conn.Open();
             using (var cmd = new MySqlCommand("SELECT ID, Owner FROM estates WHERE Owner LIKE @agentid", conn))
             {
                 cmd.Parameters.AddParameter("@id", owner.ID);
                 cmd.Parameters.AddParameter("@agentid", owner.ID.ToString() + "%");
                 using (MySqlDataReader reader = cmd.ExecuteReader())
                 {
                     while (reader.Read())
                     {
                         UUI uui = reader.GetUUI("Owner");
                         if (uui.EqualsGrid(owner))
                         {
                             estates.Add(reader.GetUInt32("ID"));
                         }
                     }
                     return(estates);
                 }
             }
         }
     }
 }
 List <GroupInvite> IGroupInvitesInterface.this[UUI requestingAgent, UGI group, UUID roleID, UUI principal]
 {
     get
     {
         using (var conn = new MySqlConnection(m_ConnectionString))
         {
             conn.Open();
             using (var cmd = new MySqlCommand("SELECT * from groupinvites WHERE PrincipalID = @principalid AND GroupID = @groupid AND RoleID = @roleid", conn))
             {
                 cmd.Parameters.AddParameter("@principalid", principal.ID);
                 cmd.Parameters.AddParameter("@roleid", roleID);
                 cmd.Parameters.AddParameter("@groupid", group.ID);
                 using (MySqlDataReader reader = cmd.ExecuteReader())
                 {
                     var invites = new List <GroupInvite>();
                     while (reader.Read())
                     {
                         GroupInvite invite = reader.ToGroupInvite();
                         invite.Principal = ResolveName(invite.Principal);
                         invite.Group     = ResolveName(requestingAgent, invite.Group);
                         invites.Add(invite);
                     }
                     return(invites);
                 }
             }
         }
     }
 }
        bool IGroupNoticesInterface.TryGetValue(UUI requestingAgent, UUID groupNoticeID, out GroupNotice groupNotice)
        {
            GroupNotice notice;

            using (var conn = new MySqlConnection(m_ConnectionString))
            {
                conn.Open();
                using (var cmd = new MySqlCommand("SELECT * FROM groupnotices WHERE NoticeID = @noticeid", conn))
                {
                    cmd.Parameters.AddParameter("@noticeid", groupNoticeID);
                    using (MySqlDataReader reader = cmd.ExecuteReader())
                    {
                        if (!reader.Read())
                        {
                            groupNotice = null;
                            return(false);
                        }
                        notice       = reader.ToGroupNotice();
                        notice.Group = ResolveName(requestingAgent, notice.Group);
                    }
                }
            }

            groupNotice = notice;
            return(true);
        }
示例#16
0
 List <GroupMembership> IGroupMembershipsInterface.this[UUI requestingAgent, UUI principal]
 {
     get
     {
         var memberships = new List <GroupMembership>();
         using (var conn = new MySqlConnection(m_ConnectionString))
         {
             conn.Open();
             using (var cmd = new MySqlCommand(
                        "SELECT g.*, m.AccessToken as AccessToken, m.SelectedRoleID AS ActiveRoleID, m.PrincipalID, m.SelectedRoleID, m.Contribution, m.ListInProfile, m.AcceptNotices, m.AccessToken, " +
                        "r.RoleID, r.Name AS RoleName, r.Description AS RoleDescription, r.Title as RoleTitle, r.Powers as RolePowers, " +
                        RCountQuery + "," + MCountQuery + " FROM (groupmemberships AS m INNER JOIN groups AS g ON m.GroupID = g.GroupID) " +
                        "INNER JOIN grouproles AS r ON m.SelectedRoleID = r.RoleID " +
                        "WHERE m.PrincipalID = @principalid", conn))
             {
                 cmd.Parameters.AddParameter("@principalid", principal.ID);
                 using (MySqlDataReader reader = cmd.ExecuteReader())
                 {
                     while (reader.Read())
                     {
                         memberships.Add(MembershipFromReader(reader, requestingAgent));
                     }
                 }
             }
         }
         return(memberships);
     }
 }
示例#17
0
        public override List <FriendInfo> this[UUI user]
        {
            get
            {
                var fis = new List <FriendInfo>();
                using (var connection = new MySqlConnection(m_ConnectionString))
                {
                    connection.Open();
                    using (var cmd = new MySqlCommand(m_InnerJoinSelectFull + "WHERE A.UserID = @id", connection))
                    {
                        cmd.Parameters.AddParameter("@id", user.ID);
                        using (MySqlDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                FriendInfo fi = reader.ToFriendInfo();
                                ResolveUUI(fi);
                                fis.Add(fi);
                            }
                        }
                    }
                }

                return(fis);
            }
        }
示例#18
0
        List <DirGroupInfo> IGroupsInterface.GetGroupsByName(UUI requestingAgent, string query)
        {
            var groups = new List <DirGroupInfo>();

            using (var conn = new MySqlConnection(m_ConnectionString))
            {
                conn.Open();
                using (var cmd = new MySqlCommand("SELECT g.GroupID, g.`Name`, g.Location, " + GCountQuery + " FROM groups AS g WHERE g.Name LIKE @value", conn))
                {
                    cmd.Parameters.AddParameter("@value", "%" + query + "%");
                    using (MySqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            DirGroupInfo info = new DirGroupInfo();
                            info.ID.ID        = reader.GetUUID("GroupID");
                            info.ID.GroupName = reader.GetString("Name");
                            string uri = reader.GetString("Location");
                            if (!string.IsNullOrEmpty(uri))
                            {
                                info.ID.HomeURI = new Uri(uri, UriKind.Absolute);
                            }
                            info.MemberCount = reader.GetInt32("MemberCount");
                            groups.Add(info);
                        }
                    }
                }
            }
            return(groups);
        }
示例#19
0
 bool IGroupsInterface.TryGetValue(UUI requestingAgent, UUID groupID, out UGI ugi)
 {
     ugi = default(UGI);
     using (var conn = new MySqlConnection(m_ConnectionString))
     {
         conn.Open();
         using (var cmd = new MySqlCommand("SELECT `Name`, Location FROM groups WHERE GroupID = @groupid", conn))
         {
             cmd.Parameters.AddParameter("@groupid", groupID);
             using (MySqlDataReader reader = cmd.ExecuteReader())
             {
                 if (reader.Read())
                 {
                     ugi = new UGI()
                     {
                         ID = groupID
                     };
                     string uri = reader.GetString("Location");
                     if (!string.IsNullOrEmpty(uri))
                     {
                         ugi.HomeURI = new Uri(uri, UriKind.Absolute);
                     }
                     ugi.GroupName = reader.GetString("Name");
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
示例#20
0
        GroupInfo IGroupsInterface.Create(UUI requestingAgent, GroupInfo group)
        {
            var vals = new Dictionary <string, object>
            {
                ["GroupID"]  = group.ID.ID,
                ["Location"] = group.ID.HomeURI != null?group.ID.HomeURI.ToString() : string.Empty,
                                   ["Name"]           = group.ID.GroupName,
                                   ["Charter"]        = group.Charter,
                                   ["InsigniaID"]     = group.InsigniaID,
                                   ["FounderID"]      = group.Founder.ID,
                                   ["MembershipFee"]  = group.MembershipFee,
                                   ["OpenEnrollment"] = group.IsOpenEnrollment,
                                   ["ShowInList"]     = group.IsShownInList,
                                   ["AllowPublish"]   = group.IsAllowPublish,
                                   ["MaturePublish"]  = group.IsMaturePublish,
                                   ["OwnerRoleID"]    = group.OwnerRoleID
            };

            using (var conn = new MySqlConnection(m_ConnectionString))
            {
                conn.Open();
                conn.InsertInto("groups", vals);
            }
            return(group);
        }
示例#21
0
        void IGroupsInterface.Delete(UUI requestingAgent, UGI group)
        {
            var tablenames = new string[] { "grouproles", "grouprolememberships", "groupnotices", "groupmemberships", "groupinvites", "groups" };

            using (var conn = new MySqlConnection(m_ConnectionString))
            {
                conn.Open();
                conn.InsideTransaction((transaction) =>
                {
                    using (var cmd = new MySqlCommand("DELETE FROM activegroup WHERE ActiveGroupID = @groupid", conn)
                    {
                        Transaction = transaction
                    })
                    {
                        cmd.Parameters.AddParameter("@groupid", group.ID);
                        cmd.ExecuteNonQuery();
                    }
                    foreach (string table in tablenames)
                    {
                        using (var cmd = new MySqlCommand("DELETE FROM " + table + " WHERE GroupID = @groupid", conn)
                        {
                            Transaction = transaction
                        })
                        {
                            cmd.Parameters.AddParameter("@groupid", group.ID);
                            cmd.ExecuteNonQuery();
                        }
                    }
                });
            }
        }
 List <GroupRole> IGroupRolesInterface.this[UUI requestingAgent, UGI group, UUI principal]
 {
     get
     {
         var roles = new List <GroupRole>();
         using (var conn = new MySqlConnection(m_ConnectionString))
         {
             conn.Open();
             using (var cmd = new MySqlCommand("SELECT r.*," + RCountQuery + " FROM grouprolememberships AS rm INNER JOIN grouproles AS r ON rm.GroupID AND r.GroupID AND rm.RoleID = r.RoleID WHERE r.GroupID = @groupid AND rm.PrincipalID = @principalid", conn))
             {
                 cmd.Parameters.AddParameter("@groupid", group.ID);
                 cmd.Parameters.AddParameter("@principalid", principal.ID);
                 using (MySqlDataReader reader = cmd.ExecuteReader())
                 {
                     while (reader.Read())
                     {
                         GroupRole role = reader.ToGroupRole();
                         role.Group = ResolveName(requestingAgent, role.Group);
                         roles.Add(role);
                     }
                 }
             }
         }
         return(roles);
     }
 }
        void IGroupRolesInterface.Delete(UUI requestingAgent, UGI group, UUID roleID)
        {
            var tablenames = new string[] { "groupinvites", "grouprolememberships", "grouproles" };

            using (var conn = new MySqlConnection(m_ConnectionString))
            {
                conn.Open();
                conn.InsideTransaction((transaction) =>
                {
                    using (var cmd = new MySqlCommand("UPDATE groupmemberships SET SelectedRoleID=@zeroid WHERE SelectedRoleID = @roleid", conn)
                    {
                        Transaction = transaction
                    })
                    {
                        cmd.Parameters.AddParameter("@zeroid", UUID.Zero);
                        cmd.Parameters.AddParameter("@roleid", roleID);
                        cmd.ExecuteNonQuery();
                    }

                    foreach (string table in tablenames)
                    {
                        using (var cmd = new MySqlCommand("DELETE FROM " + table + " WHERE GroupID = @groupid AND RoleID = @roleid", conn)
                        {
                            Transaction = transaction
                        })
                        {
                            cmd.Parameters.AddParameter("@groupid", group.ID);
                            cmd.Parameters.AddParameter("@roleid", roleID);
                            cmd.ExecuteNonQuery();
                        }
                    }
                });
            }
        }
        /* get/set active role id */
        UUID IGroupSelectInterface.this[UUI requestingAgent, UGI group, UUI principal]
        {
            get
            {
                UUID id;
                if (!ActiveGroup.TryGetValue(requestingAgent, group, principal, out id))
                {
                    id = UUID.Zero;
                }
                return(id);
            }

            set
            {
                using (var conn = new MySqlConnection(m_ConnectionString))
                {
                    conn.Open();
                    using (var cmd = new MySqlCommand("UPDATE groupmemberships SET SelectedRoleID=@roleid WHERE PrincipalID = @principalid AND GroupID = @groupid", conn))
                    {
                        cmd.Parameters.AddParameter("@roleid", value);
                        cmd.Parameters.AddParameter("@groupid", group.ID);
                        cmd.Parameters.AddParameter("@principalid", principal.ID);
                        cmd.ExecuteNonQuery();
                    }
                }
            }
        }
示例#25
0
 public bool this[UUID regionID, UUID parcelID, UUI accessor]
 {
     get
     {
         ParcelAccessEntry e;
         return(TryGetValue(regionID, parcelID, accessor, out e));
     }
 }
        List <GroupRolemember> IGroupRolemembersInterface.this[UUI requestingAgent, UGI group, UUID roleID]
        {
            get
            {
                var rolemembers = new List <GroupRolemember>();

                if (UUID.Zero == roleID)
                {
                    GroupRole groupRole;
                    if (!Roles.TryGetValue(requestingAgent, group, roleID, out groupRole))
                    {
                        return(rolemembers);
                    }

                    using (var conn = new MySqlConnection(m_ConnectionString))
                    {
                        conn.Open();
                        using (var cmd = new MySqlCommand("SELECT * FROM groupmemberships WHERE rm.GroupID = @groupid", conn))
                        {
                            cmd.Parameters.AddParameter("@groupid", group.ID);
                            using (MySqlDataReader reader = cmd.ExecuteReader())
                            {
                                while (reader.Read())
                                {
                                    GroupRolemember grolemem = reader.ToGroupRolememberEveryone(groupRole.Powers);
                                    grolemem.Principal = ResolveName(grolemem.Principal);
                                    grolemem.Group     = ResolveName(requestingAgent, grolemem.Group);
                                    rolemembers.Add(grolemem);
                                }
                            }
                        }
                    }
                }
                else
                {
                    using (var conn = new MySqlConnection(m_ConnectionString))
                    {
                        conn.Open();
                        using (var cmd = new MySqlCommand("SELECT rm.*, r.Powers FROM grouprolememberships AS rm INNER JOIN grouproles AS r ON rm.GroupID = r.GroupID AND rm.RoleID = r.RoleID WHERE rm.GroupID = @groupid AND rm.RoleID = @roleid", conn))
                        {
                            cmd.Parameters.AddParameter("@groupid", group.ID);
                            cmd.Parameters.AddParameter("@roleid", roleID);
                            using (MySqlDataReader reader = cmd.ExecuteReader())
                            {
                                while (reader.Read())
                                {
                                    GroupRolemember grolemem = reader.ToGroupRolemember();
                                    grolemem.Principal = ResolveName(grolemem.Principal);
                                    grolemem.Group     = ResolveName(requestingAgent, grolemem.Group);
                                    rolemembers.Add(grolemem);
                                }
                            }
                        }
                    }
                }
                return(rolemembers);
            }
        }
示例#27
0
    private void Awake()
    {
        btn           = GetComponent <Button>();
        btnImage      = btn.GetComponent <Image>();
        enabledSprite = btnImage.sprite;
        Texture2D disabledTexture = UUI.LoadTextureFromFile("UI_Button_disabled.png");

        disabledSprite = Sprite.Create(disabledTexture, new Rect(0, 0, disabledTexture.width, disabledTexture.height), new Vector2(0.5f, 0.5f), 100f);
    }
示例#28
0
        private UUI ResolveName(UUI uui)
        {
            UUI resultuui;

            if (m_AvatarNameService.TryGetValue(uui, out resultuui))
            {
                return(resultuui);
            }
            return(uui);
        }
示例#29
0
 public bool Remove(UUID regionID, UUID parcelID, UUI accessor)
 {
     using (var connection = new MySqlConnection(m_ConnectionString))
     {
         connection.Open();
         using (var cmd = new MySqlCommand("DELETE FROM " + m_TableName + " WHERE RegionID = '" + regionID.ToString() + "' AND ParcelID = '" + parcelID.ToString() + "' AND Accessor LIKE \"" + accessor.ID.ToString() + "%\"", connection))
         {
             return(cmd.ExecuteNonQuery() > 0);
         }
     }
 }
示例#30
0
        public void ExtendExpiry(UUID regionID, UUID parcelID, UUI accessor, ulong extendseconds)
        {
            bool success = false;

            using (var connection = new MySqlConnection(m_ConnectionString))
            {
                connection.Open();
                connection.InsideTransaction((transaction) =>
                {
                    using (var cmd = new MySqlCommand("DELETE FROM " + m_TableName + " WHERE ExpiresAt <= " + Date.GetUnixTime().ToString() + " AND ExpiresAt > 0", connection)
                    {
                        Transaction = transaction
                    })
                    {
                        cmd.ExecuteNonQuery();
                    }

                    using (var cmd = new MySqlCommand("INSERT IGNORE " + m_TableName + " (RegionID, ParcelID, Accessor, ExpiresAt) VALUES (@RegionID, @ParcelID, @Accessor, @ExpiresAt)", connection)
                    {
                        Transaction = transaction
                    })
                    {
                        cmd.Parameters.AddParameter("@RegionID", regionID);
                        cmd.Parameters.AddParameter("@ParcelID", parcelID);
                        cmd.Parameters.AddParameter("@Accessor", accessor);
                        cmd.Parameters.AddParameter("@ExpiresAt", Date.Now);
                        if (cmd.ExecuteNonQuery() > 0)
                        {
                            success = true;
                        }
                    }

                    using (var cmd = new MySqlCommand("UPDATE " + m_TableName + " SET ExpiresAt = ExpiresAt + @extendseconds WHERE RegionID = @RegionID AND ParcelID = @ParcelID AND Accessor = @Accessor AND ExpiresAt > 0", connection)
                    {
                        Transaction = transaction
                    })
                    {
                        cmd.Parameters.AddParameter("@RegionID", regionID);
                        cmd.Parameters.AddParameter("@ParcelID", parcelID);
                        cmd.Parameters.AddParameter("@Accessor", accessor);
                        cmd.Parameters.AddParameter("@extendseconds", extendseconds);
                        if (cmd.ExecuteNonQuery() > 0)
                        {
                            success = true;
                        }
                    }
                });
            }

            if (!success)
            {
                throw new ExtendExpiryFailedException();
            }
        }