From 9b76a46df0b93e57a1bcb2cfa28248998b8ed841 Mon Sep 17 00:00:00 2001
From: Fernando Oliveira
Date: Thu, 28 Nov 2013 00:10:36 -0200
Subject: Reversing back to the row["ColumnName"] case field name.
 http://opensimulator.org/mantis/view.php?id=6868

---
 OpenSim/Data/PGSQL/PGSQLRegionData.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'OpenSim/Data')

diff --git a/OpenSim/Data/PGSQL/PGSQLRegionData.cs b/OpenSim/Data/PGSQL/PGSQLRegionData.cs
index f3e4064..b3076f0 100644
--- a/OpenSim/Data/PGSQL/PGSQLRegionData.cs
+++ b/OpenSim/Data/PGSQL/PGSQLRegionData.cs
@@ -206,7 +206,7 @@ namespace OpenSim.Data.PGSQL
 
                     DataTable schemaTable = result.GetSchemaTable();
                     foreach (DataRow row in schemaTable.Rows)
-                        m_ColumnNames.Add(row["column_name"].ToString());
+                        m_ColumnNames.Add(row["ColumnName"].ToString());
                 }
 
                 foreach (string s in m_ColumnNames)
-- 
cgit v1.1


From 823a175f07297e7a8a973ddf0223e60d3ea7c933 Mon Sep 17 00:00:00 2001
From: BlueWall
Date: Thu, 5 Dec 2013 20:06:04 -0500
Subject: Stop writing partner id to record when updating profile data. This
 should be changed only by admin in backend.

---
 OpenSim/Data/MySQL/MySQLUserProfilesData.cs | 2 --
 1 file changed, 2 deletions(-)

(limited to 'OpenSim/Data')

diff --git a/OpenSim/Data/MySQL/MySQLUserProfilesData.cs b/OpenSim/Data/MySQL/MySQLUserProfilesData.cs
index 4c6c8e3..dc88f94 100644
--- a/OpenSim/Data/MySQL/MySQLUserProfilesData.cs
+++ b/OpenSim/Data/MySQL/MySQLUserProfilesData.cs
@@ -736,7 +736,6 @@ namespace OpenSim.Data.MySQL
             string query = string.Empty;
             
             query += "UPDATE userprofile SET ";
-            query += "profilePartner=?profilePartner, ";
             query += "profileURL=?profileURL, ";
             query += "profileImage=?image, ";
             query += "profileAboutText=?abouttext,";
@@ -752,7 +751,6 @@ namespace OpenSim.Data.MySQL
                     using (MySqlCommand cmd = new MySqlCommand(query, dbcon))
                     {
                         cmd.Parameters.AddWithValue("?profileURL", props.WebUrl);
-                        cmd.Parameters.AddWithValue("?profilePartner", props.PartnerId.ToString());
                         cmd.Parameters.AddWithValue("?image", props.ImageId.ToString());
                         cmd.Parameters.AddWithValue("?abouttext", props.AboutText);
                         cmd.Parameters.AddWithValue("?firstlifeimage", props.FirstLifeImageId.ToString());
-- 
cgit v1.1


From 04f8fc1ce91e1cda9294d2737ef10ab3fce06982 Mon Sep 17 00:00:00 2001
From: BlueWall
Date: Thu, 5 Dec 2013 20:25:28 -0500
Subject: Adding profile partners fix to SQLite and PgSQL drivers

---
 OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs   | 2 --
 OpenSim/Data/SQLite/SQLiteUserProfilesData.cs | 2 --
 2 files changed, 4 deletions(-)

(limited to 'OpenSim/Data')

diff --git a/OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs b/OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs
index e3cbf7f..f4e41b4 100644
--- a/OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs
+++ b/OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs
@@ -715,7 +715,6 @@ namespace OpenSim.Data.PGSQL
             string query = string.Empty;
             
             query += "UPDATE userprofile SET ";
-            query += "profilePartner=:profilePartner, ";
             query += "profileURL=:profileURL, ";
             query += "profileImage=:image, ";
             query += "profileAboutText=:abouttext,";
@@ -731,7 +730,6 @@ namespace OpenSim.Data.PGSQL
                     using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
                     {
                         cmd.Parameters.AddWithValue("profileURL", props.WebUrl);
-                        cmd.Parameters.AddWithValue("profilePartner", props.PartnerId.ToString());
                         cmd.Parameters.AddWithValue("image", props.ImageId.ToString());
                         cmd.Parameters.AddWithValue("abouttext", props.AboutText);
                         cmd.Parameters.AddWithValue("firstlifeimage", props.FirstLifeImageId.ToString());
diff --git a/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs b/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs
index cc1dac1..8c1bcd4 100644
--- a/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs
+++ b/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs
@@ -679,7 +679,6 @@ namespace OpenSim.Data.SQLite
             string query = string.Empty;
             
             query += "UPDATE userprofile SET ";
-            query += "profilePartner=:profilePartner, ";
             query += "profileURL=:profileURL, ";
             query += "profileImage=:image, ";
             query += "profileAboutText=:abouttext,";
@@ -693,7 +692,6 @@ namespace OpenSim.Data.SQLite
                 {
                     cmd.CommandText = query;
                     cmd.Parameters.AddWithValue(":profileURL", props.WebUrl);
-                    cmd.Parameters.AddWithValue(":profilePartner", props.PartnerId.ToString());
                     cmd.Parameters.AddWithValue(":image", props.ImageId.ToString());
                     cmd.Parameters.AddWithValue(":abouttext", props.AboutText);
                     cmd.Parameters.AddWithValue(":firstlifeimage", props.FirstLifeImageId.ToString());
-- 
cgit v1.1


From 1842388bb4dcf5ecd57732ffa877b6ca1a3dec7b Mon Sep 17 00:00:00 2001
From: BlueWall
Date: Fri, 6 Dec 2013 02:52:13 -0500
Subject: Add support for user preferences (im via email)

---
 OpenSim/Data/IProfilesData.cs                      |  2 +
 OpenSim/Data/MySQL/MySQLUserProfilesData.cs        | 39 +++++-----
 .../Data/MySQL/Resources/UserProfiles.migrations   | 10 +++
 OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs        | 29 ++++----
 .../Data/PGSQL/Resources/UserProfiles.migrations   |  9 +++
 .../Data/SQLite/Resources/UserProfiles.migrations  | 12 ++++
 OpenSim/Data/SQLite/SQLiteUserProfilesData.cs      | 83 ++++++++++++++++++++++
 7 files changed, 148 insertions(+), 36 deletions(-)

(limited to 'OpenSim/Data')

diff --git a/OpenSim/Data/IProfilesData.cs b/OpenSim/Data/IProfilesData.cs
index 0de7f68..7fb075d 100644
--- a/OpenSim/Data/IProfilesData.cs
+++ b/OpenSim/Data/IProfilesData.cs
@@ -48,6 +48,8 @@ namespace OpenSim.Data
         bool UpdateAvatarProperties(ref UserProfileProperties props, ref string result);
         bool UpdateAvatarInterests(UserProfileProperties up, ref string result);
         bool GetClassifiedInfo(ref UserClassifiedAdd ad, ref string result);
+        bool UpdateUserPreferences(ref UserPreferences pref,  ref string result);
+        bool GetUserPreferences(ref UserPreferences pref, ref string result);
         bool GetUserAppData(ref UserAppData props, ref string result);
         bool SetUserAppData(UserAppData props, ref string result);
         OSDArray GetUserImageAssets(UUID avatarId);
diff --git a/OpenSim/Data/MySQL/MySQLUserProfilesData.cs b/OpenSim/Data/MySQL/MySQLUserProfilesData.cs
index dc88f94..63492c2 100644
--- a/OpenSim/Data/MySQL/MySQLUserProfilesData.cs
+++ b/OpenSim/Data/MySQL/MySQLUserProfilesData.cs
@@ -895,7 +895,7 @@ namespace OpenSim.Data.MySQL
         }
         
         #region User Preferences
-        public OSDArray GetUserPreferences(UUID avatarId)
+        public bool GetUserPreferences(ref UserPreferences pref, ref string result)
         {
             string query = string.Empty;
             
@@ -912,19 +912,16 @@ namespace OpenSim.Data.MySQL
                     dbcon.Open();
                     using (MySqlCommand cmd = new MySqlCommand(query, dbcon))
                     {
-                        cmd.Parameters.AddWithValue("?Id", avatarId.ToString());
+                        cmd.Parameters.AddWithValue("?Id", pref.UserId.ToString());
                         
                         using (MySqlDataReader reader = cmd.ExecuteReader())
                         {
                             if(reader.HasRows)
                             {
                                 reader.Read();
-                                OSDMap record = new OSDMap();
-                                
-                                record.Add("imviaemail",OSD.FromString((string)reader["imviaemail"]));
-                                record.Add("visible",OSD.FromString((string)reader["visible"]));
-                                record.Add("email",OSD.FromString((string)reader["email"]));
-                                data.Add(record);
+                                bool.TryParse((string)reader["imviaemail"], out pref.IMViaEmail);
+                                bool.TryParse((string)reader["visible"], out pref.Visible);
+                                pref.EMail = (string)reader["email"];
                             }
                             else
                             {
@@ -947,17 +944,19 @@ namespace OpenSim.Data.MySQL
             {
                 m_log.DebugFormat("[PROFILES_DATA]" +
                                  ": Get preferences exception {0}", e.Message);
+                result = e.Message;
+                return false;
             }
-            return data;
+            return true;
         }
         
-        public bool UpdateUserPreferences(bool emailIm, bool visible, UUID avatarId )
+        public bool UpdateUserPreferences(ref UserPreferences pref, ref string result)
         {           
             string query = string.Empty;
-            
-            query += "UPDATE userpsettings SET ";
+
+            query += "UPDATE usersettings SET ";
             query += "imviaemail=?ImViaEmail, ";
-            query += "visible=?Visible,";
+            query += "visible=?Visible ";
             query += "WHERE useruuid=?uuid";
             
             try
@@ -967,14 +966,11 @@ namespace OpenSim.Data.MySQL
                     dbcon.Open();
                     using (MySqlCommand cmd = new MySqlCommand(query, dbcon))
                     {
-                        cmd.Parameters.AddWithValue("?ImViaEmail", emailIm.ToString().ToLower ());
-                        cmd.Parameters.AddWithValue("?WantText", visible.ToString().ToLower ());
-                        cmd.Parameters.AddWithValue("?uuid", avatarId.ToString());
-                        
-                        lock(Lock)
-                        {
-                            cmd.ExecuteNonQuery();
-                        }
+                        cmd.Parameters.AddWithValue("?ImViaEmail", pref.IMViaEmail);
+                        cmd.Parameters.AddWithValue("?Visible", pref.Visible);
+                        cmd.Parameters.AddWithValue("?uuid", pref.UserId.ToString());
+
+                        cmd.ExecuteNonQuery();
                     }
                 }
             }
@@ -982,6 +978,7 @@ namespace OpenSim.Data.MySQL
             {
                 m_log.DebugFormat("[PROFILES_DATA]" +
                                  ": AgentInterestsUpdate exception {0}", e.Message);
+                result = e.Message;
                 return false;
             }
             return true;
diff --git a/OpenSim/Data/MySQL/Resources/UserProfiles.migrations b/OpenSim/Data/MySQL/Resources/UserProfiles.migrations
index c29f1ab..bd325da 100644
--- a/OpenSim/Data/MySQL/Resources/UserProfiles.migrations
+++ b/OpenSim/Data/MySQL/Resources/UserProfiles.migrations
@@ -81,3 +81,13 @@ CREATE TABLE IF NOT EXISTS `userdata` (
 
 commit;
 
+:VERSION 3         # -------------------------------
+begin;
+CREATE TABLE IF NOT EXISTS `usersettings` (
+  `useruuid` varchar(36) NOT NULL,
+  `imviaemail` enum('true','false') NOT NULL,
+  `visible` enum('true','false') NOT NULL,
+  `email` varchar(254) NOT NULL,
+  PRIMARY KEY (`useruuid`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+commit;
\ No newline at end of file
diff --git a/OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs b/OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs
index f4e41b4..46f57d8 100644
--- a/OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs
+++ b/OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs
@@ -874,7 +874,7 @@ namespace OpenSim.Data.PGSQL
         }
         
         #region User Preferences
-        public OSDArray GetUserPreferences(UUID avatarId)
+        public bool GetUserPreferences(ref UserPreferences pref, ref string result)
         {
             string query = string.Empty;
             
@@ -891,19 +891,16 @@ namespace OpenSim.Data.PGSQL
                     dbcon.Open();
                     using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
                     {
-                        cmd.Parameters.AddWithValue("Id", avatarId.ToString());
+                        cmd.Parameters.AddWithValue("Id", pref.UserId.ToString());
                         
                         using (NpgsqlDataReader reader = cmd.ExecuteReader())
                         {
                             if(reader.HasRows)
                             {
                                 reader.Read();
-                                OSDMap record = new OSDMap();
-                                
-                                record.Add("imviaemail",OSD.FromString((string)reader["imviaemail"]));
-                                record.Add("visible",OSD.FromString((string)reader["visible"]));
-                                record.Add("email",OSD.FromString((string)reader["email"]));
-                                data.Add(record);
+                                bool.TryParse((string)reader["imviaemail"], out pref.IMViaEmail);
+                                bool.TryParse((string)reader["visible"], out pref.Visible);
+                                pref.EMail = (string)reader["email"];
                             }
                             else
                             {
@@ -926,15 +923,16 @@ namespace OpenSim.Data.PGSQL
             {
                 m_log.DebugFormat("[PROFILES_DATA]" +
                                  ": Get preferences exception {0}", e.Message);
+                result = e.Message;
             }
-            return data;
+            return true;
         }
-        
-        public bool UpdateUserPreferences(bool emailIm, bool visible, UUID avatarId )
+
+        public bool UpdateUserPreferences(ref UserPreferences pref,  ref string result)
         {           
             string query = string.Empty;
             
-            query += "UPDATE userpsettings SET ";
+            query += "UPDATE usersettings SET ";
             query += "imviaemail=:ImViaEmail, ";
             query += "visible=:Visible,";
             query += "WHERE useruuid=:uuid";
@@ -946,9 +944,9 @@ namespace OpenSim.Data.PGSQL
                     dbcon.Open();
                     using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
                     {
-                        cmd.Parameters.AddWithValue("ImViaEmail", emailIm.ToString().ToLower ());
-                        cmd.Parameters.AddWithValue("WantText", visible.ToString().ToLower ());
-                        cmd.Parameters.AddWithValue("uuid", avatarId.ToString());
+                        cmd.Parameters.AddWithValue("ImViaEmail", pref.IMViaEmail.ToString().ToLower ());
+                        cmd.Parameters.AddWithValue("Visible", pref.Visible.ToString().ToLower ());
+                        cmd.Parameters.AddWithValue("uuid", pref.UserId.ToString());
                         
                         lock(Lock)
                         {
@@ -961,6 +959,7 @@ namespace OpenSim.Data.PGSQL
             {
                 m_log.DebugFormat("[PROFILES_DATA]" +
                                  ": AgentInterestsUpdate exception {0}", e.Message);
+                result = e.Message;
                 return false;
             }
             return true;
diff --git a/OpenSim/Data/PGSQL/Resources/UserProfiles.migrations b/OpenSim/Data/PGSQL/Resources/UserProfiles.migrations
index f23c870..4fcaa8e 100644
--- a/OpenSim/Data/PGSQL/Resources/UserProfiles.migrations
+++ b/OpenSim/Data/PGSQL/Resources/UserProfiles.migrations
@@ -81,3 +81,12 @@ CREATE TABLE userdata (
 
 commit;
 
+:VERSION 3        # -------------------------------
+begin;
+CREATE TABLE usersettings (
+    "useruuid" char(36) NOT NULL,
+    "imviaemail" bytea NOT NULL,
+    "visible" bytea NOT NULL,
+    PRIMARY KEY ("useruuid")
+);
+commit;
\ No newline at end of file
diff --git a/OpenSim/Data/SQLite/Resources/UserProfiles.migrations b/OpenSim/Data/SQLite/Resources/UserProfiles.migrations
index 16581f6..86434e8 100644
--- a/OpenSim/Data/SQLite/Resources/UserProfiles.migrations
+++ b/OpenSim/Data/SQLite/Resources/UserProfiles.migrations
@@ -88,3 +88,15 @@ CREATE TABLE IF NOT EXISTS userdata (
 
 commit;
 
+
+:VERSION 3         # -------------------------------
+ 
+begin;
+CREATE TABLE IF NOT EXISTS usersettings (
+  useruuid char(36) NOT NULL,
+  imviaemail binary(1) NOT NULL,
+  visible binary(1) NOT NULL,
+  email varchar(254) NOT NULL,
+  PRIMARY KEY (useruuid)
+)
+commit;
\ No newline at end of file
diff --git a/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs b/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs
index 8c1bcd4..916a226 100644
--- a/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs
+++ b/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs
@@ -747,6 +747,89 @@ namespace OpenSim.Data.SQLite
             }
             return true;
         }
+
+        public bool UpdateUserPreferences(ref UserPreferences pref, ref string result)
+        {           
+            string query = string.Empty;
+            
+            query += "UPDATE usersettings SET ";
+            query += "imviaemail=:ImViaEmail, ";
+            query += "visible=:Visible ";
+            query += "WHERE useruuid=:uuid";
+            
+            try
+            {
+                using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand())
+                {
+                    cmd.CommandText = query;
+                    cmd.Parameters.AddWithValue(":ImViaEmail", pref.IMViaEmail);
+                    cmd.Parameters.AddWithValue(":Visible", pref.Visible);
+                    cmd.Parameters.AddWithValue(":uuid", pref.UserId.ToString());
+                        
+                    cmd.ExecuteNonQuery();
+                }
+            }
+            catch (Exception e)
+            {
+                m_log.DebugFormat("[PROFILES_DATA]" +
+                                  ": AgentInterestsUpdate exception {0}", e.Message);
+                result = e.Message;
+                return false;
+            }
+            return true;
+        }
+
+        public bool GetUserPreferences(ref UserPreferences pref, ref string result)
+        {
+            IDataReader reader = null;
+            string query = string.Empty;
+            
+            query += "SELECT imviaemail,visible,email FROM ";
+            query += "usersettings WHERE ";
+            query += "useruuid = :Id";
+            
+            OSDArray data = new OSDArray();
+            
+            try
+            {
+                using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand())
+                {
+                    cmd.CommandText = query;
+                    cmd.Parameters.AddWithValue("?Id", pref.UserId.ToString());
+                        
+                    using (reader = cmd.ExecuteReader(CommandBehavior.SingleRow))
+                    {
+                        if(reader.Read())
+                        {
+                            bool.TryParse((string)reader["imviaemail"], out pref.IMViaEmail);
+                            bool.TryParse((string)reader["visible"], out pref.Visible);
+                            pref.EMail = (string)reader["email"];
+                         }
+                         else
+                         {
+                            query = "INSERT INTO usersettings VALUES ";
+                            query += "(:Id,'false','false', '')";
+                            
+                            using (SqliteCommand put = (SqliteCommand)m_connection.CreateCommand())
+                            {
+                                put.Parameters.AddWithValue(":Id", pref.UserId.ToString());
+                                put.ExecuteNonQuery();
+                                    
+                            }
+                        }
+                    }
+                }
+            }
+            catch (Exception e)
+            {
+                m_log.DebugFormat("[PROFILES_DATA]" +
+                                  ": Get preferences exception {0}", e.Message);
+                result = e.Message;
+                return false;
+            }
+            return true;
+        }
+
         public bool GetUserAppData(ref UserAppData props, ref string result)
         {
             IDataReader reader = null;
-- 
cgit v1.1