aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Data
diff options
context:
space:
mode:
authorBlueWall2013-12-06 02:52:13 -0500
committerBlueWall2013-12-06 02:52:13 -0500
commit1842388bb4dcf5ecd57732ffa877b6ca1a3dec7b (patch)
tree0d1feaac1a3ae79aa11cc435553f086a3d581581 /OpenSim/Data
parentAdding profile partners fix to SQLite and PgSQL drivers (diff)
downloadopensim-SC-1842388bb4dcf5ecd57732ffa877b6ca1a3dec7b.zip
opensim-SC-1842388bb4dcf5ecd57732ffa877b6ca1a3dec7b.tar.gz
opensim-SC-1842388bb4dcf5ecd57732ffa877b6ca1a3dec7b.tar.bz2
opensim-SC-1842388bb4dcf5ecd57732ffa877b6ca1a3dec7b.tar.xz
Add support for user preferences (im via email)
Diffstat (limited to '')
-rw-r--r--OpenSim/Data/IProfilesData.cs2
-rw-r--r--OpenSim/Data/MySQL/MySQLUserProfilesData.cs39
-rw-r--r--OpenSim/Data/MySQL/Resources/UserProfiles.migrations10
-rw-r--r--OpenSim/Data/PGSQL/PGSQLUserProfilesData.cs29
-rw-r--r--OpenSim/Data/PGSQL/Resources/UserProfiles.migrations9
-rw-r--r--OpenSim/Data/SQLite/Resources/UserProfiles.migrations12
-rw-r--r--OpenSim/Data/SQLite/SQLiteUserProfilesData.cs83
7 files changed, 148 insertions, 36 deletions
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
48 bool UpdateAvatarProperties(ref UserProfileProperties props, ref string result); 48 bool UpdateAvatarProperties(ref UserProfileProperties props, ref string result);
49 bool UpdateAvatarInterests(UserProfileProperties up, ref string result); 49 bool UpdateAvatarInterests(UserProfileProperties up, ref string result);
50 bool GetClassifiedInfo(ref UserClassifiedAdd ad, ref string result); 50 bool GetClassifiedInfo(ref UserClassifiedAdd ad, ref string result);
51 bool UpdateUserPreferences(ref UserPreferences pref, ref string result);
52 bool GetUserPreferences(ref UserPreferences pref, ref string result);
51 bool GetUserAppData(ref UserAppData props, ref string result); 53 bool GetUserAppData(ref UserAppData props, ref string result);
52 bool SetUserAppData(UserAppData props, ref string result); 54 bool SetUserAppData(UserAppData props, ref string result);
53 OSDArray GetUserImageAssets(UUID avatarId); 55 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
895 } 895 }
896 896
897 #region User Preferences 897 #region User Preferences
898 public OSDArray GetUserPreferences(UUID avatarId) 898 public bool GetUserPreferences(ref UserPreferences pref, ref string result)
899 { 899 {
900 string query = string.Empty; 900 string query = string.Empty;
901 901
@@ -912,19 +912,16 @@ namespace OpenSim.Data.MySQL
912 dbcon.Open(); 912 dbcon.Open();
913 using (MySqlCommand cmd = new MySqlCommand(query, dbcon)) 913 using (MySqlCommand cmd = new MySqlCommand(query, dbcon))
914 { 914 {
915 cmd.Parameters.AddWithValue("?Id", avatarId.ToString()); 915 cmd.Parameters.AddWithValue("?Id", pref.UserId.ToString());
916 916
917 using (MySqlDataReader reader = cmd.ExecuteReader()) 917 using (MySqlDataReader reader = cmd.ExecuteReader())
918 { 918 {
919 if(reader.HasRows) 919 if(reader.HasRows)
920 { 920 {
921 reader.Read(); 921 reader.Read();
922 OSDMap record = new OSDMap(); 922 bool.TryParse((string)reader["imviaemail"], out pref.IMViaEmail);
923 923 bool.TryParse((string)reader["visible"], out pref.Visible);
924 record.Add("imviaemail",OSD.FromString((string)reader["imviaemail"])); 924 pref.EMail = (string)reader["email"];
925 record.Add("visible",OSD.FromString((string)reader["visible"]));
926 record.Add("email",OSD.FromString((string)reader["email"]));
927 data.Add(record);
928 } 925 }
929 else 926 else
930 { 927 {
@@ -947,17 +944,19 @@ namespace OpenSim.Data.MySQL
947 { 944 {
948 m_log.DebugFormat("[PROFILES_DATA]" + 945 m_log.DebugFormat("[PROFILES_DATA]" +
949 ": Get preferences exception {0}", e.Message); 946 ": Get preferences exception {0}", e.Message);
947 result = e.Message;
948 return false;
950 } 949 }
951 return data; 950 return true;
952 } 951 }
953 952
954 public bool UpdateUserPreferences(bool emailIm, bool visible, UUID avatarId ) 953 public bool UpdateUserPreferences(ref UserPreferences pref, ref string result)
955 { 954 {
956 string query = string.Empty; 955 string query = string.Empty;
957 956
958 query += "UPDATE userpsettings SET "; 957 query += "UPDATE usersettings SET ";
959 query += "imviaemail=?ImViaEmail, "; 958 query += "imviaemail=?ImViaEmail, ";
960 query += "visible=?Visible,"; 959 query += "visible=?Visible ";
961 query += "WHERE useruuid=?uuid"; 960 query += "WHERE useruuid=?uuid";
962 961
963 try 962 try
@@ -967,14 +966,11 @@ namespace OpenSim.Data.MySQL
967 dbcon.Open(); 966 dbcon.Open();
968 using (MySqlCommand cmd = new MySqlCommand(query, dbcon)) 967 using (MySqlCommand cmd = new MySqlCommand(query, dbcon))
969 { 968 {
970 cmd.Parameters.AddWithValue("?ImViaEmail", emailIm.ToString().ToLower ()); 969 cmd.Parameters.AddWithValue("?ImViaEmail", pref.IMViaEmail);
971 cmd.Parameters.AddWithValue("?WantText", visible.ToString().ToLower ()); 970 cmd.Parameters.AddWithValue("?Visible", pref.Visible);
972 cmd.Parameters.AddWithValue("?uuid", avatarId.ToString()); 971 cmd.Parameters.AddWithValue("?uuid", pref.UserId.ToString());
973 972
974 lock(Lock) 973 cmd.ExecuteNonQuery();
975 {
976 cmd.ExecuteNonQuery();
977 }
978 } 974 }
979 } 975 }
980 } 976 }
@@ -982,6 +978,7 @@ namespace OpenSim.Data.MySQL
982 { 978 {
983 m_log.DebugFormat("[PROFILES_DATA]" + 979 m_log.DebugFormat("[PROFILES_DATA]" +
984 ": AgentInterestsUpdate exception {0}", e.Message); 980 ": AgentInterestsUpdate exception {0}", e.Message);
981 result = e.Message;
985 return false; 982 return false;
986 } 983 }
987 return true; 984 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` (
81 81
82commit; 82commit;
83 83
84:VERSION 3 # -------------------------------
85begin;
86CREATE TABLE IF NOT EXISTS `usersettings` (
87 `useruuid` varchar(36) NOT NULL,
88 `imviaemail` enum('true','false') NOT NULL,
89 `visible` enum('true','false') NOT NULL,
90 `email` varchar(254) NOT NULL,
91 PRIMARY KEY (`useruuid`)
92) ENGINE=MyISAM DEFAULT CHARSET=latin1;
93commit; \ 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
874 } 874 }
875 875
876 #region User Preferences 876 #region User Preferences
877 public OSDArray GetUserPreferences(UUID avatarId) 877 public bool GetUserPreferences(ref UserPreferences pref, ref string result)
878 { 878 {
879 string query = string.Empty; 879 string query = string.Empty;
880 880
@@ -891,19 +891,16 @@ namespace OpenSim.Data.PGSQL
891 dbcon.Open(); 891 dbcon.Open();
892 using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) 892 using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
893 { 893 {
894 cmd.Parameters.AddWithValue("Id", avatarId.ToString()); 894 cmd.Parameters.AddWithValue("Id", pref.UserId.ToString());
895 895
896 using (NpgsqlDataReader reader = cmd.ExecuteReader()) 896 using (NpgsqlDataReader reader = cmd.ExecuteReader())
897 { 897 {
898 if(reader.HasRows) 898 if(reader.HasRows)
899 { 899 {
900 reader.Read(); 900 reader.Read();
901 OSDMap record = new OSDMap(); 901 bool.TryParse((string)reader["imviaemail"], out pref.IMViaEmail);
902 902 bool.TryParse((string)reader["visible"], out pref.Visible);
903 record.Add("imviaemail",OSD.FromString((string)reader["imviaemail"])); 903 pref.EMail = (string)reader["email"];
904 record.Add("visible",OSD.FromString((string)reader["visible"]));
905 record.Add("email",OSD.FromString((string)reader["email"]));
906 data.Add(record);
907 } 904 }
908 else 905 else
909 { 906 {
@@ -926,15 +923,16 @@ namespace OpenSim.Data.PGSQL
926 { 923 {
927 m_log.DebugFormat("[PROFILES_DATA]" + 924 m_log.DebugFormat("[PROFILES_DATA]" +
928 ": Get preferences exception {0}", e.Message); 925 ": Get preferences exception {0}", e.Message);
926 result = e.Message;
929 } 927 }
930 return data; 928 return true;
931 } 929 }
932 930
933 public bool UpdateUserPreferences(bool emailIm, bool visible, UUID avatarId ) 931 public bool UpdateUserPreferences(ref UserPreferences pref, ref string result)
934 { 932 {
935 string query = string.Empty; 933 string query = string.Empty;
936 934
937 query += "UPDATE userpsettings SET "; 935 query += "UPDATE usersettings SET ";
938 query += "imviaemail=:ImViaEmail, "; 936 query += "imviaemail=:ImViaEmail, ";
939 query += "visible=:Visible,"; 937 query += "visible=:Visible,";
940 query += "WHERE useruuid=:uuid"; 938 query += "WHERE useruuid=:uuid";
@@ -946,9 +944,9 @@ namespace OpenSim.Data.PGSQL
946 dbcon.Open(); 944 dbcon.Open();
947 using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) 945 using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
948 { 946 {
949 cmd.Parameters.AddWithValue("ImViaEmail", emailIm.ToString().ToLower ()); 947 cmd.Parameters.AddWithValue("ImViaEmail", pref.IMViaEmail.ToString().ToLower ());
950 cmd.Parameters.AddWithValue("WantText", visible.ToString().ToLower ()); 948 cmd.Parameters.AddWithValue("Visible", pref.Visible.ToString().ToLower ());
951 cmd.Parameters.AddWithValue("uuid", avatarId.ToString()); 949 cmd.Parameters.AddWithValue("uuid", pref.UserId.ToString());
952 950
953 lock(Lock) 951 lock(Lock)
954 { 952 {
@@ -961,6 +959,7 @@ namespace OpenSim.Data.PGSQL
961 { 959 {
962 m_log.DebugFormat("[PROFILES_DATA]" + 960 m_log.DebugFormat("[PROFILES_DATA]" +
963 ": AgentInterestsUpdate exception {0}", e.Message); 961 ": AgentInterestsUpdate exception {0}", e.Message);
962 result = e.Message;
964 return false; 963 return false;
965 } 964 }
966 return true; 965 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 (
81 81
82commit; 82commit;
83 83
84:VERSION 3 # -------------------------------
85begin;
86CREATE TABLE usersettings (
87 "useruuid" char(36) NOT NULL,
88 "imviaemail" bytea NOT NULL,
89 "visible" bytea NOT NULL,
90 PRIMARY KEY ("useruuid")
91);
92commit; \ 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 (
88 88
89commit; 89commit;
90 90
91
92:VERSION 3 # -------------------------------
93
94begin;
95CREATE TABLE IF NOT EXISTS usersettings (
96 useruuid char(36) NOT NULL,
97 imviaemail binary(1) NOT NULL,
98 visible binary(1) NOT NULL,
99 email varchar(254) NOT NULL,
100 PRIMARY KEY (useruuid)
101)
102commit; \ 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
747 } 747 }
748 return true; 748 return true;
749 } 749 }
750
751 public bool UpdateUserPreferences(ref UserPreferences pref, ref string result)
752 {
753 string query = string.Empty;
754
755 query += "UPDATE usersettings SET ";
756 query += "imviaemail=:ImViaEmail, ";
757 query += "visible=:Visible ";
758 query += "WHERE useruuid=:uuid";
759
760 try
761 {
762 using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand())
763 {
764 cmd.CommandText = query;
765 cmd.Parameters.AddWithValue(":ImViaEmail", pref.IMViaEmail);
766 cmd.Parameters.AddWithValue(":Visible", pref.Visible);
767 cmd.Parameters.AddWithValue(":uuid", pref.UserId.ToString());
768
769 cmd.ExecuteNonQuery();
770 }
771 }
772 catch (Exception e)
773 {
774 m_log.DebugFormat("[PROFILES_DATA]" +
775 ": AgentInterestsUpdate exception {0}", e.Message);
776 result = e.Message;
777 return false;
778 }
779 return true;
780 }
781
782 public bool GetUserPreferences(ref UserPreferences pref, ref string result)
783 {
784 IDataReader reader = null;
785 string query = string.Empty;
786
787 query += "SELECT imviaemail,visible,email FROM ";
788 query += "usersettings WHERE ";
789 query += "useruuid = :Id";
790
791 OSDArray data = new OSDArray();
792
793 try
794 {
795 using (SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand())
796 {
797 cmd.CommandText = query;
798 cmd.Parameters.AddWithValue("?Id", pref.UserId.ToString());
799
800 using (reader = cmd.ExecuteReader(CommandBehavior.SingleRow))
801 {
802 if(reader.Read())
803 {
804 bool.TryParse((string)reader["imviaemail"], out pref.IMViaEmail);
805 bool.TryParse((string)reader["visible"], out pref.Visible);
806 pref.EMail = (string)reader["email"];
807 }
808 else
809 {
810 query = "INSERT INTO usersettings VALUES ";
811 query += "(:Id,'false','false', '')";
812
813 using (SqliteCommand put = (SqliteCommand)m_connection.CreateCommand())
814 {
815 put.Parameters.AddWithValue(":Id", pref.UserId.ToString());
816 put.ExecuteNonQuery();
817
818 }
819 }
820 }
821 }
822 }
823 catch (Exception e)
824 {
825 m_log.DebugFormat("[PROFILES_DATA]" +
826 ": Get preferences exception {0}", e.Message);
827 result = e.Message;
828 return false;
829 }
830 return true;
831 }
832
750 public bool GetUserAppData(ref UserAppData props, ref string result) 833 public bool GetUserAppData(ref UserAppData props, ref string result)
751 { 834 {
752 IDataReader reader = null; 835 IDataReader reader = null;