using System;
using Microsoft.SharePoint;
using SharePointOfView.Diagnostics;
using SharePointOfView.ExtensionMethods;
namespace Phil.CheckOutFiles
{ class Program
{ private static SPUser _AnotherUser;
private static SPList _DocList;
private static string _DocListName;
private static string _ErrorCategory;
static void Main(string[] args)
{ using (SPSite site = new SPSite("http://localhost")) { using (SPWeb web = site.OpenWeb("Docs")) { _DocList = null;
_DocListName = "Documents";
_ErrorCategory = "CheckoutFiles Application";
if (!web.Lists.SovTryGet(_DocListName, out _DocList))
{ ULS.WriteError(String.Format("The list {0} should exist !, exiting...", _DocListName), _ErrorCategory); return;
}
ShowItemsCountDiff(_DocList);
if (_DocList.BaseType != SPBaseType.DocumentLibrary)
{ ULS.WriteError(String.Format("The list {0} BaseType should be DocumentLibrary, exiting...", _DocListName), _ErrorCategory); return;
}
SPDocumentLibrary docLib = _DocList as SPDocumentLibrary;
ShowFilesAndCheckOutStatus(docLib);
ShowCheckOutFiles(docLib);
SPQuery query = GetCheckOutFilesQuery();
ShowCheckOutFiles(_DocList, query);
_AnotherUser = web.AllUsers[@"DOMAIN\Philippe.Sentenac"];
}
}
using (SPSite site = new SPSite("http://localhost", _AnotherUser.UserToken)) { using (SPWeb web = site.OpenWeb("Docs")) { if (!web.Lists.SovTryGet(_DocListName, out _DocList))
{ ULS.WriteError(String.Format("The list {0} should exist !, exiting...", _DocListName), _ErrorCategory); return;
}
ShowItemsCountDiff(_DocList);
if (_DocList.BaseType != SPBaseType.DocumentLibrary)
{ ULS.WriteError(String.Format("The list {0} BaseType should be DocumentLibrary, exiting...", _DocListName), _ErrorCategory); return;
}
SPDocumentLibrary docLib = _DocList as SPDocumentLibrary;
ShowFilesAndCheckOutStatus(docLib);
ShowCheckOutFiles(docLib);
SPQuery query = GetCheckOutFilesQuery();
ShowCheckOutFiles(_DocList, query);
}
}
Console.ReadLine();
}
/// <summary>
/// Shows the difference using docList.ItemCount and docList.Items.Count
/// </summary>
/// <param name="docList">The doc list.</param>
private static void ShowItemsCountDiff(SPList docList)
{ Console.WriteLine("ShowItemsCountDiff, User : " + docList.ParentWeb.CurrentUser.LoginName);
Console.WriteLine("docList.ItemCount : " + docList.ItemCount); Console.WriteLine("docList.Items.Count :" + docList.Items.Count); Console.WriteLine();
}
/// <summary>
/// Shows the check out files.
/// Iterate on each SPCheckedOutFile in docLib.CheckedOutFiles
/// </summary>
/// <param name="docLib">The doc lib.</param>
private static void ShowCheckOutFiles(SPDocumentLibrary docLib)
{ Console.WriteLine("ShowCheckOutFiles, User : " + docLib.ParentWeb.CurrentUser.LoginName); try
{ Console.WriteLine("docLib.CheckedOutFiles.Count :" + docLib.CheckedOutFiles.Count); }
catch (Exception ex)
{ Console.WriteLine("Tried to execute : docLib.CheckedOutFiles.Count, {0}", ex.Message); Console.WriteLine();
return;
}
foreach (Microsoft.SharePoint.SPCheckedOutFile checkedOutFile in docLib.CheckedOutFiles)
{ Console.WriteLine("\t" + checkedOutFile.Url); Console.WriteLine("\t\t" + checkedOutFile.CheckedOutByName); }
Console.WriteLine();
}
/// <summary>
/// Shows the check out files and their check out status.
/// Iterate on each item and item.File in the docLib
/// </summary>
/// <param name="docLib">The doc lib.</param>
private static void ShowFilesAndCheckOutStatus(SPDocumentLibrary docLib)
{ Console.WriteLine("ShowFilesAndCheckOutStatus, User : " + docLib.ParentWeb.CurrentUser.LoginName); foreach (SPListItem item in docLib.Items)
{ Console.WriteLine("\t item.File.Url : " + item.File.Url); Console.WriteLine("\t item.File.CheckOutStatus : " + item.File.CheckOutStatus);
if (item.File.CheckOutStatus != SPFile.SPCheckOutStatus.None)
Console.WriteLine("\t\t item.File.CheckedOutBy.Name : " + item.File.CheckedOutBy.Name); }
Console.WriteLine();
}
/// <summary>
/// Shows the check out files and their check out status.
/// Iterate on each item and item.File in the docLib
/// </summary>
/// <param name="docList">The doc list.</param>
/// <param name="query">The query.</param>
private static void ShowCheckOutFiles(SPList docList, SPQuery query)
{ Console.WriteLine("ShowCheckOutFiles with Query, User : " + docList.ParentWeb.CurrentUser.LoginName);
SPListItemCollection result = docList.GetItems(query);
Console.WriteLine("SPListItemCollection.Count :" + result.Count);
foreach (SPListItem item in result)