SPWeb.GetChanges method (SPChangeToken, SPChangeToken)
Gets the changes logged over a specified period of time.
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
public SPChangeCollection GetChanges(
SPChangeToken changeToken,
SPChangeToken changeTokenEnd
)
Parameters
- changeToken
- Type: Microsoft.SharePoint.SPChangeToken
The change token specifying the point in the change log where that change and changes after are returned.
- changeTokenEnd
- Type: Microsoft.SharePoint.SPChangeToken
The change token specifying the point in the change log where that change and preceding changes are returned.
| Exception | Condition |
|---|---|
| SPException | changeToken or changeTokenEnd refers to a point before the start of the current change log. |
To construct the SPChangeToken object for this method, pass SPChangeCollection.CollectionScope Web as the constructor’s first argument, the value of the current object’s SPWeb.ID property as the second argument, and a DateTime object as the third argument.
In addition, the following rules apply:
If the position of changeTokenEnd in the change log is before the position of changeToken in the change log, this method returns an empty collection.
If changeToken is null , the change collection that is returned starts at the beginning of the current change log.
If changeTokenEnd is null , the change collection that is returned includes all changes after the position specified by changeToken, up to the limit for a single collection. If more changes occurred in this period, the first batch is returned.
Note
|
|---|
By default, the change log retains data for 60 days. To change the default retention period, set the ChangeLogRetentionPeriod property. |
The following example is a console application that queries the change log for changes that took place during a period of seven days. The application then prints information about each change to the console.
using System; using Microsoft.SharePoint; namespace Test { class ConsoleApp { static void Main(string[] args) { using (SPSite siteCollection = new SPSite("http://localhost")) { using (SPWeb webSite = siteCollection.RootWeb) { SPTimeZone timeZone = webSite.RegionalSettings.TimeZone; long total = 0; SPChangeToken startToken = new SPChangeToken( SPChangeCollection.CollectionScope.Web, webSite.ID, new DateTime(2008, 11, 17)); SPChangeToken endToken = new SPChangeToken( SPChangeCollection.CollectionScope.Web, webSite.ID, new DateTime(2008, 11, 23)); SPChangeCollection changes = webSite.GetChanges(startToken, endToken); while (changes.Count > 0) { total += changes.Count; foreach (SPChange change in changes) { Console.WriteLine("\nDate: {0}", timeZone.UTCToLocalTime(change.Time).ToString()); Console.WriteLine("Object type: {0}", change.GetType().ToString()); Console.WriteLine("Change type: {0}", change.ChangeType); } startToken = changes.LastChangeToken; changes = webSite.GetChanges(startToken, endToken); } Console.WriteLine("\nTotal changes = {0:#,#}", total); } } Console.Write("\nPress ENTER to continue..."); Console.ReadLine(); } } }
Note