Example #1
0
        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);
        }