SPChangeUser.IsSiteAdminChange Property

Indicates whether the change adds or removes site administrator privileges.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Available in Sandboxed Solutions: Yes
Available in SharePoint Online

Syntax

'Declaration
Public ReadOnly Property IsSiteAdminChange As Boolean
    Get
'Usage
Dim instance As SPChangeUser
Dim value As Boolean

value = instance.IsSiteAdminChange
public bool IsSiteAdminChange { get; }

Property Value

Type: System.Boolean
true if the change adds or removes site administrator privileges; otherwise, false.

Examples

The following example shows a console application that queries the change log for changes to site collection users. It then enumerates the changes (if any), and prints the user name, date, and type of each change to the console. If the change to the site collection adds or removes site administrator privileges, the application prints that information to the console as well.

Imports System
Imports Microsoft.SharePoint

Module ConsoleApp
   Sub Main()
      Using siteCollection As SPSite = New SPSite("https://localhost")
         Using webSite As SPWeb = siteCollection.RootWeb

            ' Construct a query.
            Dim query As New SPChangeQuery(False, False)

            ' Object type.
            query.User = True

            ' Change types. 
            query.Add = True
            query.Delete = True
            query.Update = True

            ' Get the user collection.
            Dim users As SPUserCollection = webSite.AllUsers

            While True
               Dim changes As SPChangeCollection = siteCollection.ContentDatabase.GetChanges(query)

               For Each change As SPChange In changes
                  ' Process Change.
                  Dim userChange As SPChangeUser = CType(change, SPChangeUser)

                  Try
                     ' Throws an exception if not found.
                     Dim user As SPUser = users.GetByID(userChange.Id) 
                     Console.WriteLine(ControlChars.Lf + "User {0} was changed.", user.LoginName)

                     If user.IsSiteAdmin Then
                        Console.WriteLine("This user is a site admin.")
                     End If

                  Catch ex As SPException
                     Console.WriteLine(ControlChars.Lf + "User {0} cannot be found", userChange.Id)
                  End Try

                  Console.WriteLine("Type of change: {0}", userChange.ChangeType.ToString())

                  If userChange.IsSiteAdminChange Then
                     Console.WriteLine("This change added or removed site admin privileges.")
                  End If

                  Console.WriteLine("Date of change: {0}", userChange.Time.ToShortDateString())

               Next change

               ' Break out of the loop when we fetch the last batch of changes.
               If changes.Count < SPChangeCollection.CountLimit Then
                  Exit While
               End If

               ' Go get another batch of changes starting where we left off.
               query.ChangeTokenStart = changes((changes.Count - 1)).ChangeToken

            End While

         End Using
      End Using
      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()
   End Sub
End Module
using System;
using Microsoft.SharePoint;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite siteCollection = new SPSite("https://localhost"))
         {
            using (SPWeb webSite = siteCollection.RootWeb)
            {
               // Construct a query.
               SPChangeQuery query = new SPChangeQuery(false, false); 

               // Object type.
               query.User = true;

               // Change types. 
               query.Add = true;
               query.Delete = true;
               query.Update = true;

               // Get the user collection.
               SPUserCollection users = webSite.AllUsers;

               while (true)
               {
                  SPChangeCollection changes = siteCollection.ContentDatabase.GetChanges(query);

                  foreach (SPChange change in changes)
                  {
                     // Process change.
                     SPChangeUser userChange = (SPChangeUser)change;

                     try
                     {
                        SPUser user = users.GetByID(userChange.Id); // Throws an exception if not found
                        Console.WriteLine("\nUser {0} was changed.", user.LoginName);
                        if (user.IsSiteAdmin)
                        {
                           Console.WriteLine("This user is a site admin.");
                        }
                     }
                     catch (SPException)
                     {
                        Console.WriteLine("\nUser {0} cannot be found", userChange.Id);
                     }
                     Console.WriteLine("Type of change: {0}", userChange.ChangeType.ToString());
                     if (userChange.IsSiteAdminChange)
                        Console.WriteLine("This change added or removed site admin privileges.");
                     Console.WriteLine("Date of change: {0}", userChange.Time.ToShortDateString());
                  }

                  // Break out of the loop when we fetch the last batch of changes.
                  if (changes.Count < SPChangeCollection.CountLimit)
                     break;
                  // Go get another batch of changes starting where we left off.
                  query.ChangeTokenStart = changes[changes.Count - 1].ChangeToken;
               }
            }
         }
         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }
   }
}

See Also

Reference

SPChangeUser Class

SPChangeUser Members

Microsoft.SharePoint Namespace

IsSiteAdmin