Wer kennt es nicht? Kaum ist eine Solution installiert, ruft der Kunde an und beteuert dass irgendwelche Items aus einer Liste verschwunden sind… gelöscht hat sie aber niemand..
Mit der Klasse SPRecycleBinQuery kann man schnell über das SharePoint OM Abfragen auf den Papierkorb eines SPWeb´s absetzen und somit auch sehen wer etwas gelöscht hat und natürlich kann man die Items dann auch wieder schnell herstellen.
Hier ein kleines einfaches Beispiel das die Items wiederherstellt die vom bösen User mit der ID 4711 gelöscht wurden
1: using (SPSite site = new SPSite("http://localhost"))
2: {
3: using (SPWeb web = site.OpenWeb())
4: {
5: SPRecycleBinQuery query = new SPRecycleBinQuery();
6: query.RowLimit = 1000;
7: query.OrderBy = SPRecycleBinOrderBy.DeletedDate;
8: query.IsAscending = false;
9: SPRecycleBinItemCollection deletedItems
10: = web.GetRecycleBinItems(query);
11: foreach (SPRecycleBinItem deletedItem in deletedItems)
12: {
13: // if item was deleted by user with id 4711 :-)
14: // it should be restored
15: if (deletedItem.DeletedById == 4711)
16: deletedItem.Restore();
17: }
18: }
19: }
Viel Spaß beim wiederherstellen.