/// <summary> /// Method to delete specific version based on version number /// </summary> /// <param name="clientContext">SPO Client Context</param> /// <param name="deleteDocumentRequest">Request model for delete operation</param> /// <param name="LoggerId">MessageId used for logging information</param> private void DeleteByVersion(ClientContext clientContext, DeleteDocumentRequest deleteDocumentRequest, string LoggerId) { try { Log.DebugFormat("In DeleteByVersion method for MessageId - {0} DocumentId :{1}", LoggerId, deleteDocumentRequest.DocumentId.ToString()); //Retrieve the file based on DocumentId File file = clientContext.Web.GetFileById(deleteDocumentRequest.DocumentId); //Load file version collection FileVersionCollection fileVersions = file.Versions; clientContext.Load(file); clientContext.Load(fileVersions); //Recycle file based on version label fileVersions.RecycleByLabel(deleteDocumentRequest.Version); clientContext.ExecuteQueryWithRetry(Convert.ToInt32(ConfigurationManager.AppSettings.Get(ExecuteQueryConstants.RetryCount)), Convert.ToInt32(ConfigurationManager.AppSettings.Get(ExecuteQueryConstants.RetryDelayTime)), LoggerId); Log.DebugFormat("In DeleteByVersion after ExecuteQueryWithRetry for MessageId - {0} - Document Deleted for Version {1}", LoggerId, deleteDocumentRequest.Version); } catch (Exception e) { Log.ErrorFormat("Exception in DeleteByVersion method for MessageId - {0} :{1}", LoggerId, e.Message); throw; } }
//Comentar a sukis que tiene que hablar sobre limites, storage metrics, versionamiento public ActionResult ObtenerTamano() { Double totalSize = 0; var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext); using (var clientContext = spContext.CreateUserClientContextForSPHost()) { Web web = clientContext.Web; List oList = clientContext.Web.Lists.GetByTitle("Documentos"); CamlQuery oQuery = new CamlQuery(); FileCollection allFile = oList.RootFolder.Files; clientContext.Load(allFile); clientContext.ExecuteQuery(); foreach (File file in allFile) { FileVersionCollection versions = file.Versions; totalSize += file.Length; clientContext.Load(versions); clientContext.ExecuteQuery(); foreach (FileVersion fileVersion in versions) { totalSize += fileVersion.Size; } } } ViewBag.TotalSize = Math.Round(totalSize / 1024, 2); return(View("Index")); }
public ArrayList GetLibraryHistoricItem(int idItem) { CamlQuery query = new CamlQuery(); //ListItemCollection colItems = libraryList.GetItems(CamlQuery.CreateAllItemsQuery()); ListItem colItems = libraryList.GetItemById(idItem); clientContext.Load(colItems); /* * clientContext.Load(colItems, * items => items.Include( * item => item.Id, * item => item["Pagina"], * item => item["Adquiriente"] * ) * ); */ clientContext.ExecuteQuery(); FileVersionCollection versions = colItems.File.Versions; clientContext.Load(versions); IEnumerable <Microsoft.SharePoint.Client.FileVersion> oldVersions; oldVersions = clientContext.LoadQuery(versions.Where(v => v != null)); clientContext.ExecuteQuery(); ArrayList arlVersiones = new ArrayList(); if (oldVersions != null) { foreach (FileVersion version in oldVersions) { int versionID = version.ID; bool isCurrentVersion = version.IsCurrentVersion; string url = version.Url; string versionLabel = version.VersionLabel; arlVersiones.Add(clientContext.Url + "/" + url + "|" + versionLabel); } } return(arlVersiones); }
public void Prueba() { ClientContext clientContext = new ClientContext("http://servidors04/sitios/digitalizacion"); Web site = clientContext.Web; clientContext.Load(site); clientContext.ExecuteQuery(); //htp://servidors04/sitios/digitalizacion/_vti_history/512/seccion%20primera/Libro_2384_0001.tif Microsoft.SharePoint.Client.File file = site.GetFileByServerRelativeUrl("/sitios/digitalizacion/Seccion Primera/Libro_2384_0001.tif"); clientContext.Load(file); clientContext.ExecuteQuery(); ListItem currentItem = file.ListItemAllFields; clientContext.Load(currentItem); clientContext.ExecuteQuery(); FileVersionCollection versions = file.Versions; clientContext.Load(versions); clientContext.ExecuteQuery(); if (versions != null) { foreach (FileVersion oldFileVersion in versions) { if (oldFileVersion.VersionLabel == "1.0") { Microsoft.SharePoint.Client.ListCollection lists = site.Lists; clientContext.Load(lists); clientContext.ExecuteQuery(); } } } }
static void DeleteOldDocumentVersions(string siteUrl, string userName, string userPassword, string csvFilePath) { try { int maxDocumentVersions = 15;//this is the maximum number of document versions that will be stored in the document library //get client context ClientContext context = GetUserContext(siteUrl, userName, userPassword); //get web Web web = context.Site.RootWeb; context.Load(web, w => w.Webs); //include subwebs context.ExecuteQuery(); //caml query to get all documents in the library CamlQuery camlQuery = new CamlQuery(); camlQuery.ViewXml = "<View Scope='RecursiveAll'></View>"; //create StringBuilder object for storing documents info StringBuilder docsCSVFile = new StringBuilder(); docsCSVFile.AppendLine("Title, URL, Versions"); // Loop through all the webs foreach (Web subWeb in web.Webs) { context.Load(subWeb, subw => subw.Webs); //include title and all webs context.ExecuteQuery(); Console.WriteLine("Processing site -> {0}", subWeb.Url); // Loop through all webs in subwebs foreach (Web subsubWeb in subWeb.Webs) { context.Load(subsubWeb, subsubw => subsubw.Title); //include title context.ExecuteQuery(); Console.WriteLine("Processing site -> {0}", subsubWeb.Url); //get list List list = subsubWeb.Lists.GetByTitle("Documents"); context.Load(list); context.ExecuteQuery(); //get all documents in the list ListItemCollection collListItem = list.GetItems(camlQuery); context.Load(collListItem, items => items.Include( item => item.Id, item => item["Title"], item => item["FileRef"])); context.ExecuteQuery(); if (collListItem.Count > 0) { foreach (ListItem oListItem in collListItem) { //get list item context.Load(oListItem, listItem => listItem.File, listItem => listItem.FileSystemObjectType); context.ExecuteQuery(); //get file associated with list item Microsoft.SharePoint.Client.File file = oListItem.File; context.Load(file, f => f.CheckOutType, f => f.Versions); context.ExecuteQuery(); if (oListItem.FileSystemObjectType == FileSystemObjectType.File) //check if it is a File. { if (file.CheckOutType == CheckOutType.None) //only process the file if it is not checked out { //get file version collection FileVersionCollection fvCollection = file.Versions; context.Load(fvCollection); context.ExecuteQuery(); Console.WriteLine("Versions count for file {0} is {1} ", file.Name, file.Versions.Count.ToString()); //check if current number of versions is greater than the max number of versions if (file.Versions.Count + 1 > maxDocumentVersions) //add 1 to versions count, since it is zero index based { Console.WriteLine("Processing document titled, {0}, with URL {1} and {2} versions", oListItem["Title"], oListItem["FileRef"], (file.Versions.Count + 1).ToString()); docsCSVFile.AppendLine(oListItem["Title"] + "," + oListItem["FileRef"] + "," + (file.Versions.Count + 1).ToString()); int versionsToDelete = (file.Versions.Count + 1) - maxDocumentVersions; //add 1 to versions count, since it is zero index based //loop through collection and delete old versions for (int i = 0; i < versionsToDelete; i++) { FileVersion fileVersion = fvCollection[0];//always delete the first (i.e. oldest) verion Console.WriteLine("fileVersion with label {0} created on {1} {2} will be deleted", fileVersion.VersionLabel, fileVersion.Created.ToShortDateString(), fileVersion.Created.ToShortTimeString()); fileVersion.DeleteObject(); } oListItem.SystemUpdate(); context.ExecuteQuery(); } //check for number of document versions } //check for file checkout } //check if it is a file and not a folder } //loop through documents } //check if library has documents } //loop through subWeb.Webs } //loop through web.webs //Write docs info to CSV file System.IO.File.AppendAllText(csvFilePath, docsCSVFile.ToString()); } catch (ClientRequestException clientEx) { Console.WriteLine("Client side error occurred: {0} \n{1} " + clientEx.Message + clientEx.InnerException); throw clientEx; } catch (ServerException serverEx) { Console.WriteLine("Server side error occurred: {0} \n{1} " + serverEx.Message + serverEx.InnerException); throw serverEx; } }