From a553e6f67ce2595868ceba0184f730af640961cf Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Tue, 4 Dec 2007 16:07:59 +0000 Subject: * Avatar picker works in grid mode now. * To test, click the communicate button, then click the 'add' button and type a name. You will get a list of closely matching avatar names. * Before this'll work on your sim in grid mode, the UGA needs to be updated. If it isn't updated, then you'll get a message on the sim console when searching like, 'got invalid queryid'. --- OpenSim/Framework/Data.MySQL/MySQLGridData.cs | 17 ++++++++++------- OpenSim/Framework/Data.MySQL/MySQLUserData.cs | 27 +++++++++++++++------------ 2 files changed, 25 insertions(+), 19 deletions(-) (limited to 'OpenSim/Framework/Data.MySQL') diff --git a/OpenSim/Framework/Data.MySQL/MySQLGridData.cs b/OpenSim/Framework/Data.MySQL/MySQLGridData.cs index 930b3f4..4d65ee9 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLGridData.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLGridData.cs @@ -176,20 +176,24 @@ namespace OpenSim.Framework.Data.MySQL public List GeneratePickerResults(LLUUID queryID, string query) { List returnlist = new List(); + + System.Text.RegularExpressions.Regex objAlphaNumericPattern = new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9]"); + string[] querysplit; querysplit = query.Split(' '); if (querysplit.Length == 2) { + Dictionary param = new Dictionary(); + param["?first"] = objAlphaNumericPattern.Replace(querysplit[0],"") + "%"; + param["?second"] = objAlphaNumericPattern.Replace(querysplit[1], "") + "%"; try { lock (database) { - Dictionary param = new Dictionary(); - param["?first"] = querysplit[0]; - param["?second"] = querysplit[1]; + IDbCommand result = - database.Query("SELECT UUID,username,surname FROM users WHERE username = ?first AND lastname = ?second", param); + database.Query("SELECT UUID,username,surname FROM users WHERE username like ?first AND lastname like ?second LIMIT 100", param); IDataReader reader = result.ExecuteReader(); @@ -224,11 +228,10 @@ namespace OpenSim.Framework.Data.MySQL lock (database) { Dictionary param = new Dictionary(); - param["?first"] = querysplit[0]; - param["?second"] = querysplit[1]; + param["?first"] = objAlphaNumericPattern.Replace(querysplit[0],"") + "%"; IDbCommand result = - database.Query("SELECT UUID,username,surname FROM users WHERE username = ?first OR lastname = ?second", param); + database.Query("SELECT UUID,username,surname FROM users WHERE username like ?first OR lastname like ?second", param); IDataReader reader = result.ExecuteReader(); diff --git a/OpenSim/Framework/Data.MySQL/MySQLUserData.cs b/OpenSim/Framework/Data.MySQL/MySQLUserData.cs index 3ae1fba..3138911 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLUserData.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLUserData.cs @@ -110,31 +110,35 @@ namespace OpenSim.Framework.Data.MySQL public List GeneratePickerResults(LLUUID queryID, string query) { List returnlist = new List(); + + System.Text.RegularExpressions.Regex objAlphaNumericPattern = new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9]"); + string[] querysplit; querysplit = query.Split(' '); if (querysplit.Length == 2) { + Dictionary param = new Dictionary(); + param["?first"] = objAlphaNumericPattern.Replace(querysplit[0], "") + "%"; + param["?second"] = objAlphaNumericPattern.Replace(querysplit[1], "") + "%"; try { lock (database) { - Dictionary param = new Dictionary(); - param["?first"] = querysplit[0]; - param["?second"] = querysplit[1]; + IDbCommand result = - database.Query("SELECT UUID,username,surname FROM users WHERE username = ?first AND lastname = ?second", param); + database.Query("SELECT UUID,username,lastname FROM users WHERE username like ?first AND lastname like ?second LIMIT 100", param); IDataReader reader = result.ExecuteReader(); - + while (reader.Read()) { OpenSim.Framework.AvatarPickerAvatar user = new OpenSim.Framework.AvatarPickerAvatar(); user.AvatarID = new LLUUID((string)reader["UUID"]); user.firstName = (string)reader["username"]; - user.lastName = (string)reader["surname"]; + user.lastName = (string)reader["lastname"]; returnlist.Add(user); - + } reader.Close(); result.Dispose(); @@ -148,7 +152,7 @@ namespace OpenSim.Framework.Data.MySQL } - + } else if (querysplit.Length == 1) { @@ -158,11 +162,10 @@ namespace OpenSim.Framework.Data.MySQL lock (database) { Dictionary param = new Dictionary(); - param["?first"] = querysplit[0]; - param["?second"] = querysplit[1]; + param["?first"] = objAlphaNumericPattern.Replace(querysplit[0], "") + "%"; IDbCommand result = - database.Query("SELECT UUID,username,surname FROM users WHERE username = ?first OR lastname = ?second", param); + database.Query("SELECT UUID,username,lastname FROM users WHERE username like ?first OR lastname like ?first LIMIT 100", param); IDataReader reader = result.ExecuteReader(); @@ -171,7 +174,7 @@ namespace OpenSim.Framework.Data.MySQL OpenSim.Framework.AvatarPickerAvatar user = new OpenSim.Framework.AvatarPickerAvatar(); user.AvatarID = new LLUUID((string)reader["UUID"]); user.firstName = (string)reader["username"]; - user.lastName = (string)reader["surname"]; + user.lastName = (string)reader["lastname"]; returnlist.Add(user); } -- cgit v1.1