internal static Dictionary <string, PublishingSiteScanResult> GeneratePublishingSiteResults(Mode mode, ConcurrentDictionary <string, PublishingWebScanResult> webScanResults, ConcurrentDictionary <string, PublishingPageScanResult> pageScanResults) { Dictionary <string, PublishingSiteScanResult> siteScanResults = new Dictionary <string, PublishingSiteScanResult>(500); // bail out when no work todo if (!Options.IncludePublishing(mode) || webScanResults.Count == 0) { return(null); } // iterate the web publishing results and consolidate into a single site level data line foreach (var item in webScanResults) { PublishingSiteScanResult siteResult = null; // Create or get the result instance if (!siteScanResults.ContainsKey(item.Value.SiteColUrl)) { siteResult = new PublishingSiteScanResult() { SiteColUrl = item.Value.SiteColUrl, SiteURL = item.Value.SiteURL, Classification = SiteComplexity.Simple }; siteScanResults.Add(item.Value.SiteColUrl, siteResult); } else { siteScanResults.TryGetValue(item.Value.SiteColUrl, out siteResult); } // Update the result instance siteResult.NumberOfWebs++; siteResult.NumberOfPages = siteResult.NumberOfPages + item.Value.PageCount; if (item.Value.SiteMasterPage != null && !siteResult.UsedSiteMasterPages.Contains(item.Value.SiteMasterPage)) { siteResult.UsedSiteMasterPages.Add(item.Value.SiteMasterPage); } if (item.Value.SystemMasterPage != null && !siteResult.UsedSystemMasterPages.Contains(item.Value.SystemMasterPage)) { siteResult.UsedSystemMasterPages.Add(item.Value.SystemMasterPage); } // If in a single site collection multiple languages are used then mark the publishing portal as complex if (!siteResult.UsedLanguages.Contains(item.Value.Language)) { siteResult.UsedLanguages.Add(item.Value.Language); } if (siteResult.UsedLanguages.Count > 1) { siteResult.Classification = SiteComplexity.Complex; } // Check the classification based upon the web level data var webClassification = item.Value.WebClassification; if (webClassification > siteResult.Classification) { siteResult.Classification = webClassification; } } // Iterate the publishing page results (if collected) and consolidate into a single site level data line if (Options.IncludePublishingWithPages(mode) && pageScanResults.Count > 0) { foreach (var item in pageScanResults) { // Get the previously created record siteScanResults.TryGetValue(item.Value.SiteColUrl, out PublishingSiteScanResult siteResult); if (siteResult == null) { // Should not be possible... continue; } // Update the result instance if (item.Value.PageLayout != null && !siteResult.UsedPageLayouts.Contains(item.Value.PageLayout)) { siteResult.UsedPageLayouts.Add(item.Value.PageLayout); } // Update last updated date if (item.Value.ModifiedAt != DateTime.MinValue && item.Value.ModifiedAt != DateTime.MaxValue) { if (siteResult.LastPageUpdateDate == null || item.Value.ModifiedAt > siteResult.LastPageUpdateDate) { siteResult.LastPageUpdateDate = item.Value.ModifiedAt; } } // Update complexity based upon data for the page // Customized page layouts var pageClassification = SiteComplexity.Simple; if (item.Value.PageLayoutWasCustomized) { pageClassification = SiteComplexity.Medium; } if (pageClassification > siteResult.Classification) { siteResult.Classification = pageClassification; } // Audiences used pageClassification = SiteComplexity.Simple; if ((item.Value.GlobalAudiences != null && item.Value.GlobalAudiences.Count > 0) || (item.Value.SecurityGroupAudiences != null && item.Value.SecurityGroupAudiences.Count > 0) || (item.Value.SharePointGroupAudiences != null && item.Value.SharePointGroupAudiences.Count > 0)) { pageClassification = SiteComplexity.Medium; } if (pageClassification > siteResult.Classification) { siteResult.Classification = pageClassification; } } } // Push back the site collection complexity level as a column of the web rows as that data is exported for the dashboard foreach (var item in webScanResults) { if (siteScanResults.TryGetValue(item.Value.SiteColUrl, out PublishingSiteScanResult site)) { item.Value.SiteClassification = site.Classification.ToString(); } } return(siteScanResults); }
internal static Dictionary <string, PublishingSiteScanResult> GeneratePublishingSiteResults(Mode mode, ConcurrentDictionary <string, PublishingWebScanResult> webScanResults, ConcurrentDictionary <string, PublishingPageScanResult> pageScanResults) { Dictionary <string, PublishingSiteScanResult> siteScanResults = new Dictionary <string, PublishingSiteScanResult>(500); // bail out when no work todo if (!Options.IncludePublishing(mode) || webScanResults.Count == 0) { return(null); } // iterate the web publishing results and consolidate into a single site level data line foreach (var item in webScanResults) { PublishingSiteScanResult siteResult = null; // Create or get the result instance if (!siteScanResults.ContainsKey(item.Value.SiteColUrl)) { siteResult = new PublishingSiteScanResult() { SiteColUrl = item.Value.SiteColUrl, SiteURL = item.Value.SiteURL, }; siteScanResults.Add(item.Value.SiteColUrl, siteResult); } else { siteScanResults.TryGetValue(item.Value.SiteColUrl, out siteResult); } // Update the result instance siteResult.NumberOfWebs++; siteResult.NumberOfPages = siteResult.NumberOfPages + item.Value.PageCount; if (item.Value.SiteMasterPage != null && !siteResult.UsedSiteMasterPages.Contains(item.Value.SiteMasterPage)) { siteResult.UsedSiteMasterPages.Add(item.Value.SiteMasterPage); } if (item.Value.SystemMasterPage != null && !siteResult.UsedSystemMasterPages.Contains(item.Value.SystemMasterPage)) { siteResult.UsedSystemMasterPages.Add(item.Value.SystemMasterPage); } } // Iterate the publishing page results (if collected) and consolidate into a single site level data line if (Options.IncludePublishingWithPages(mode) && pageScanResults.Count > 0) { foreach (var item in pageScanResults) { // Get the previously created record siteScanResults.TryGetValue(item.Value.SiteColUrl, out PublishingSiteScanResult siteResult); if (siteResult == null) { // Should not be possible... continue; } // Update the result instance if (item.Value.PageLayout != null && !siteResult.UsedPageLayouts.Contains(item.Value.PageLayout)) { siteResult.UsedPageLayouts.Add(item.Value.PageLayout); } // Update last updated date if (item.Value.ModifiedAt != DateTime.MinValue && item.Value.ModifiedAt != DateTime.MaxValue) { if (siteResult.LastPageUpdateDate == null || item.Value.ModifiedAt > siteResult.LastPageUpdateDate) { siteResult.LastPageUpdateDate = item.Value.ModifiedAt; } } } } return(siteScanResults); }