2009-09-06 03:28:42 +00:00
/ *
* Copyright ( c ) Contributors , http : //opensimulator.org/
* See CONTRIBUTORS . TXT for a full list of copyright holders .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions are met :
* * Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
* * Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in the
* documentation and / or other materials provided with the distribution .
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission .
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ` ` AS IS ' ' AND ANY
* EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED . IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES
* ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ;
* LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
* ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
* /
using System ;
using System.Collections ;
using System.Collections.Generic ;
using System.Data ;
using OpenMetaverse ;
using OpenSim.Framework ;
using MySql.Data.MySqlClient ;
namespace OpenSim.Data.MySQL
{
2009-12-29 18:31:27 +00:00
public class MySqlUserAccountData : MySQLGenericTableHandler < UserAccountData > , IUserAccountData
2009-09-06 03:28:42 +00:00
{
public MySqlUserAccountData ( string connectionString , string realm )
2009-12-29 18:31:27 +00:00
: base ( connectionString , realm , "UserAccount" )
2009-09-06 03:28:42 +00:00
{
2009-12-29 21:27:21 +00:00
}
2009-12-30 22:23:17 +00:00
2009-12-31 02:26:00 +00:00
public UserAccountData [ ] GetUsers ( UUID scopeID , string query )
2009-12-29 21:27:21 +00:00
{
2009-12-31 02:26:00 +00:00
string [ ] words = query . Split ( new char [ ] { ' ' } ) ;
2011-04-21 20:34:49 +00:00
bool valid = false ;
2009-12-31 02:26:00 +00:00
for ( int i = 0 ; i < words . Length ; i + + )
{
2011-04-21 20:34:49 +00:00
if ( words [ i ] . Length > 2 )
valid = true ;
// if (words[i].Length < 3)
// {
// if (i != words.Length - 1)
// Array.Copy(words, i + 1, words, i, words.Length - i - 1);
// Array.Resize(ref words, words.Length - 1);
// }
2009-12-31 02:26:00 +00:00
}
2011-04-21 20:34:49 +00:00
if ( ( ! valid ) | | words . Length = = 0 )
2009-12-31 02:26:00 +00:00
return new UserAccountData [ 0 ] ;
if ( words . Length > 2 )
return new UserAccountData [ 0 ] ;
2012-04-30 14:54:35 +00:00
using ( MySqlCommand cmd = new MySqlCommand ( ) )
2009-12-31 02:26:00 +00:00
{
2012-04-30 14:54:35 +00:00
if ( words . Length = = 1 )
{
2012-04-30 18:04:38 +00:00
cmd . CommandText = String . Format ( "select * from {0} where (ScopeID=?ScopeID or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like ?search or LastName like ?search) and active=1" , m_Realm ) ;
2015-09-03 17:39:08 +00:00
cmd . Parameters . AddWithValue ( "?search" , "%" + words [ 0 ] + "%" ) ;
2012-04-30 14:54:35 +00:00
cmd . Parameters . AddWithValue ( "?ScopeID" , scopeID . ToString ( ) ) ;
}
else
{
2012-04-30 18:04:38 +00:00
cmd . CommandText = String . Format ( "select * from {0} where (ScopeID=?ScopeID or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like ?searchFirst and LastName like ?searchLast) and active=1" , m_Realm ) ;
2015-09-03 17:39:08 +00:00
cmd . Parameters . AddWithValue ( "?searchFirst" , "%" + words [ 0 ] + "%" ) ;
cmd . Parameters . AddWithValue ( "?searchLast" , "%" + words [ 1 ] + "%" ) ;
2012-04-30 14:54:35 +00:00
cmd . Parameters . AddWithValue ( "?ScopeID" , scopeID . ToString ( ) ) ;
}
2009-12-31 02:26:00 +00:00
2012-04-30 14:54:35 +00:00
return DoQuery ( cmd ) ;
}
2009-09-06 03:28:42 +00:00
}
2010-11-25 19:34:55 +00:00
public UserAccountData [ ] GetUsersWhere ( UUID scopeID , string where )
{
2012-04-30 18:04:38 +00:00
using ( MySqlCommand cmd = new MySqlCommand ( ) )
2010-11-25 19:34:55 +00:00
{
2012-04-30 18:04:38 +00:00
if ( scopeID ! = UUID . Zero )
{
where = "(ScopeID=?ScopeID or ScopeID='00000000-0000-0000-0000-000000000000') and (" + where + ")" ;
cmd . Parameters . AddWithValue ( "?ScopeID" , scopeID . ToString ( ) ) ;
}
2010-11-25 19:34:55 +00:00
2012-04-30 18:04:38 +00:00
cmd . CommandText = String . Format ( "select * from {0} where " + where , m_Realm ) ;
2010-11-25 19:34:55 +00:00
2012-04-30 18:04:38 +00:00
return DoQuery ( cmd ) ;
}
2010-11-25 19:34:55 +00:00
}
2009-09-06 03:28:42 +00:00
}
}