public SharePointSiteDiskSpace[] CalculateSiteCollectionDiskSpace(Uri root, string[] urls) { WindowsImpersonationContext wic = null; try { wic = WindowsIdentity.GetCurrent().Impersonate(); SPWebApplication rootWebApplication = SPWebApplication.Lookup(root); List <SharePointSiteDiskSpace> ret = new List <SharePointSiteDiskSpace>(); foreach (string url in urls) { SharePointSiteDiskSpace siteDiskSpace = new SharePointSiteDiskSpace(); rootWebApplication.Sites[url].RecalculateStorageUsed(); siteDiskSpace.Url = url; siteDiskSpace.DiskSpace = (long)Math.Round(rootWebApplication.Sites[url].Usage.Storage / 1024.0 / 1024.0); ret.Add(siteDiskSpace); } return(ret.ToArray()); } catch (Exception ex) { HostedSolutionLog.LogError(ex); throw; } finally { if (wic != null) { wic.Undo(); } } }
public static SharePointSiteDiskSpace[] CalculateSharePointSitesDiskSpace(int itemId, out int errorCode) { SharePointSiteDiskSpace[] retDiskSpace = null; errorCode = 0; // check account int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); if (accountCheck < 0) { errorCode = accountCheck; return(null); } // place log record TaskManager.StartTask("HOSTED_SHAREPOINT_ENTERPRISE", "CALCULATE_DISK_SPACE", itemId); try { Organization org = (Organization)PackageController.GetPackageItem(itemId); if (org == null) { return(null); } int serviceId = GetHostedSharePointServiceId(org.PackageId); HostedSharePointServerEnt hostedSharePointServer = GetHostedSharePointServer(serviceId); List <SharePointEnterpriseSiteCollection> currentOrgSiteCollection = GetOrganizationSharePointEnterpriseSiteCollections(org.Id); List <string> urls = new List <string>(); foreach (SharePointEnterpriseSiteCollection siteCollection in currentOrgSiteCollection) { urls.Add(siteCollection.PhysicalAddress); } if (urls.Count > 0) { retDiskSpace = hostedSharePointServer.Enterprise_CalculateSiteCollectionsDiskSpace(urls.ToArray()); } else { retDiskSpace = new SharePointSiteDiskSpace[1]; retDiskSpace[0] = new SharePointSiteDiskSpace(); retDiskSpace[0].DiskSpace = 0; retDiskSpace[0].Url = string.Empty; } } catch (Exception ex) { throw TaskManager.WriteError(ex); } finally { TaskManager.CompleteTask(); } return(retDiskSpace); }