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); }
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); }
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); } } }
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 }); }
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); } }
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); }
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); } }
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); } }
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); }
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); }
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); }
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(); } } } }
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); } }
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); }
private UUI ResolveName(UUI uui) { UUI resultuui; if (m_AvatarNameService.TryGetValue(uui, out resultuui)) { return(resultuui); } return(uui); }
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); } } }
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(); } }