diff options
author | Justin Clark-Casey (justincc) | 2012-11-06 22:39:54 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-11-06 23:40:33 +0000 |
commit | a8424490aea0c202cf95f0eac566a49d7670c691 (patch) | |
tree | ebcc271f7b07980db0862cc1a99b26fca5b3941e | |
parent | Change user message on TeskInventoryAccepted to let the viewer format it (diff) | |
download | opensim-SC-a8424490aea0c202cf95f0eac566a49d7670c691.zip opensim-SC-a8424490aea0c202cf95f0eac566a49d7670c691.tar.gz opensim-SC-a8424490aea0c202cf95f0eac566a49d7670c691.tar.bz2 opensim-SC-a8424490aea0c202cf95f0eac566a49d7670c691.tar.xz |
Increment version number of a folder when an object it contains is deleted.
Not doing this was allowing the viewer inventory cache to become out of sync if an item was directly deleted.
-rw-r--r-- | OpenSim/Data/MySQL/MySQLXInventoryData.cs | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/OpenSim/Data/MySQL/MySQLXInventoryData.cs b/OpenSim/Data/MySQL/MySQLXInventoryData.cs index caf18a4..189ee5e 100644 --- a/OpenSim/Data/MySQL/MySQLXInventoryData.cs +++ b/OpenSim/Data/MySQL/MySQLXInventoryData.cs | |||
@@ -123,11 +123,24 @@ namespace OpenSim.Data.MySQL | |||
123 | { | 123 | { |
124 | } | 124 | } |
125 | 125 | ||
126 | public override bool Delete(string field, string val) | ||
127 | { | ||
128 | XInventoryItem[] retrievedItems = Get(new string[] { field }, new string[] { val }); | ||
129 | if (retrievedItems.Length == 0) | ||
130 | return false; | ||
131 | |||
132 | if (!base.Delete(field, val)) | ||
133 | return false; | ||
134 | |||
135 | IncrementFolderVersion(retrievedItems[0].parentFolderID); | ||
136 | |||
137 | return true; | ||
138 | } | ||
139 | |||
126 | public bool MoveItem(string id, string newParent) | 140 | public bool MoveItem(string id, string newParent) |
127 | { | 141 | { |
128 | using (MySqlCommand cmd = new MySqlCommand()) | 142 | using (MySqlCommand cmd = new MySqlCommand()) |
129 | { | 143 | { |
130 | |||
131 | cmd.CommandText = String.Format("update {0} set parentFolderID = ?ParentFolderID where inventoryID = ?InventoryID", m_Realm); | 144 | cmd.CommandText = String.Format("update {0} set parentFolderID = ?ParentFolderID where inventoryID = ?InventoryID", m_Realm); |
132 | cmd.Parameters.AddWithValue("?ParentFolderID", newParent); | 145 | cmd.Parameters.AddWithValue("?ParentFolderID", newParent); |
133 | cmd.Parameters.AddWithValue("?InventoryID", id); | 146 | cmd.Parameters.AddWithValue("?InventoryID", id); |
@@ -184,6 +197,13 @@ namespace OpenSim.Data.MySQL | |||
184 | if (!base.Store(item)) | 197 | if (!base.Store(item)) |
185 | return false; | 198 | return false; |
186 | 199 | ||
200 | IncrementFolderVersion(item.parentFolderID); | ||
201 | |||
202 | return true; | ||
203 | } | ||
204 | |||
205 | private bool IncrementFolderVersion(UUID folderID) | ||
206 | { | ||
187 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 207 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
188 | { | 208 | { |
189 | dbcon.Open(); | 209 | dbcon.Open(); |
@@ -193,7 +213,7 @@ namespace OpenSim.Data.MySQL | |||
193 | cmd.Connection = dbcon; | 213 | cmd.Connection = dbcon; |
194 | 214 | ||
195 | cmd.CommandText = String.Format("update inventoryfolders set version=version+1 where folderID = ?folderID"); | 215 | cmd.CommandText = String.Format("update inventoryfolders set version=version+1 where folderID = ?folderID"); |
196 | cmd.Parameters.AddWithValue("?folderID", item.parentFolderID.ToString()); | 216 | cmd.Parameters.AddWithValue("?folderID", folderID.ToString()); |
197 | 217 | ||
198 | try | 218 | try |
199 | { | 219 | { |
@@ -205,9 +225,11 @@ namespace OpenSim.Data.MySQL | |||
205 | } | 225 | } |
206 | cmd.Dispose(); | 226 | cmd.Dispose(); |
207 | } | 227 | } |
228 | |||
208 | dbcon.Close(); | 229 | dbcon.Close(); |
209 | } | 230 | } |
231 | |||
210 | return true; | 232 | return true; |
211 | } | 233 | } |
212 | } | 234 | } |
213 | } | 235 | } \ No newline at end of file |