From 97286e0a52e852b2edbca4b60550cf71ae644881 Mon Sep 17 00:00:00 2001 From: Andre Rodrigues Date: Mon, 4 Apr 2011 12:58:17 -0700 Subject: [PATCH] #17553 / #17464: Avoid to get the screenshots for the packages everytime a package information is downloaded from the gallery. --HG-- branch : 1.x --- .../RecipeHandlers/ModuleRecipeHandlerTest.cs | 2 +- .../Controllers/GalleryController.cs | 2 +- .../Services/IPackagingSourceManager.cs | 3 ++- .../Services/PackageUpdateManager.cs | 2 +- .../Services/PackagingSourceManager.cs | 13 ++++++++----- .../RecipeHandlers/ModuleRecipeHandler.cs | 4 ++-- .../RecipeHandlers/ThemeRecipeHandler.cs | 4 ++-- 7 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/Orchard.Tests.Modules/Recipes/RecipeHandlers/ModuleRecipeHandlerTest.cs b/src/Orchard.Tests.Modules/Recipes/RecipeHandlers/ModuleRecipeHandlerTest.cs index e128fbd5b..e436f311d 100644 --- a/src/Orchard.Tests.Modules/Recipes/RecipeHandlers/ModuleRecipeHandlerTest.cs +++ b/src/Orchard.Tests.Modules/Recipes/RecipeHandlers/ModuleRecipeHandlerTest.cs @@ -126,7 +126,7 @@ Features: throw new NotImplementedException(); } - public IEnumerable GetExtensionList(PackagingSource packagingSource = null, Func, IQueryable> query = null) { + public IEnumerable GetExtensionList(bool includeScreenshots, PackagingSource packagingSource = null, Func, IQueryable> query = null) { return new[] { new PackagingEntry { PackageId = "Orchard.Module.SuperWiki", diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs index 6dd387b4d..516a24179 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs @@ -146,7 +146,7 @@ namespace Orchard.Packaging.Controllers { int totalCount = 0; foreach (var source in sources) { try { - var sourceExtensions = _packagingSourceManager.GetExtensionList( + var sourceExtensions = _packagingSourceManager.GetExtensionList(true, source, packages => { packages = packages.Where(p => p.PackageType == packageType && diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Services/IPackagingSourceManager.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Services/IPackagingSourceManager.cs index 044b170f1..10deda629 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Services/IPackagingSourceManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Services/IPackagingSourceManager.cs @@ -32,10 +32,11 @@ namespace Orchard.Packaging.Services { /// /// Retrieves the list of extensions from a feed source. /// + /// Specifies if screenshots should be included in the result. /// The packaging source from where to get the extensions. /// The optional query to retrieve the extensions. /// The list of extensions. - IEnumerable GetExtensionList(PackagingSource packagingSource = null, Func, IQueryable> query = null); + IEnumerable GetExtensionList(bool includeScreenshots, PackagingSource packagingSource = null, Func, IQueryable> query = null); /// /// Retrieves the number of extensions from a feed source. diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageUpdateManager.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageUpdateManager.cs index 7580c5fcd..53ea45d0a 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageUpdateManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageUpdateManager.cs @@ -92,7 +92,7 @@ namespace Orchard.Packaging.Services { GetOrAddEntry(list, packageId).ExtensionsDescriptor = extension; } - var packages = _packagingSourceManager.GetExtensionList(packagingSource) + var packages = _packagingSourceManager.GetExtensionList(false, packagingSource) .ToList() .GroupBy(p => p.PackageId, StringComparer.OrdinalIgnoreCase); diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackagingSourceManager.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackagingSourceManager.cs index d844fd84b..2058367c1 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackagingSourceManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackagingSourceManager.cs @@ -64,10 +64,11 @@ namespace Orchard.Packaging.Services { /// /// Retrieves the list of extensions from a feed source. /// + /// Specifies if screenshots should be included in the result. /// The packaging source from where to get the extensions. /// The optional query to retrieve the extensions. /// The list of extensions. - public IEnumerable GetExtensionList(PackagingSource packagingSource = null, Func, IQueryable> query = null) { + public IEnumerable GetExtensionList(bool includeScreenshots, PackagingSource packagingSource = null, Func, IQueryable> query = null) { return (packagingSource == null ? GetSources() : new[] {packagingSource}) .SelectMany( source => { @@ -80,10 +81,12 @@ namespace Orchard.Packaging.Services { return packages.ToList().Select( p => { - PublishedScreenshot firstScreenshot = galleryFeedContext.Screenshots - .Where(s => s.PublishedPackageId == p.Id && s.PublishedPackageVersion == p.Version) - .ToList() - .FirstOrDefault(); + PublishedScreenshot firstScreenshot = includeScreenshots + ? galleryFeedContext.Screenshots + .Where(s => s.PublishedPackageId == p.Id && s.PublishedPackageVersion == p.Version) + .ToList() + .FirstOrDefault() + : null; return CreatePackageEntry(p, firstScreenshot, packagingSource, galleryFeedContext.GetReadStreamUri(p)); }); } diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/ModuleRecipeHandler.cs b/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/ModuleRecipeHandler.cs index 6ec620226..17ac870d6 100644 --- a/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/ModuleRecipeHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/ModuleRecipeHandler.cs @@ -72,14 +72,14 @@ namespace Orchard.Recipes.RecipeHandlers { } if (enforceVersion) { - packagingEntry = _packagingSourceManager.GetExtensionList(packagingSource, + packagingEntry = _packagingSourceManager.GetExtensionList(false, packagingSource, packages => packages.Where(package => package.PackageType.Equals(DefaultExtensionTypes.Module) && package.Id.Equals(packageId, StringComparison.OrdinalIgnoreCase) && package.Version.Equals(version, StringComparison.OrdinalIgnoreCase))).FirstOrDefault(); } else { - packagingEntry = _packagingSourceManager.GetExtensionList(packagingSource, + packagingEntry = _packagingSourceManager.GetExtensionList(false, packagingSource, packages => packages.Where(package => package.PackageType.Equals(DefaultExtensionTypes.Module) && package.Id.Equals(packageId, StringComparison.OrdinalIgnoreCase) && diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/ThemeRecipeHandler.cs b/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/ThemeRecipeHandler.cs index 1b3217e24..3dafe44ef 100644 --- a/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/ThemeRecipeHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/ThemeRecipeHandler.cs @@ -86,14 +86,14 @@ namespace Orchard.Recipes.RecipeHandlers { } if (enforceVersion) { - packagingEntry = _packagingSourceManager.GetExtensionList(packagingSource, + packagingEntry = _packagingSourceManager.GetExtensionList(false, packagingSource, packages => packages.Where(package => package.PackageType.Equals(DefaultExtensionTypes.Theme) && package.Id.Equals(packageId, StringComparison.OrdinalIgnoreCase) && package.Version.Equals(version, StringComparison.OrdinalIgnoreCase))).FirstOrDefault(); } else { - packagingEntry = _packagingSourceManager.GetExtensionList(packagingSource, + packagingEntry = _packagingSourceManager.GetExtensionList(false, packagingSource, packages => packages.Where(package => package.PackageType.Equals(DefaultExtensionTypes.Theme) && package.Id.Equals(packageId, StringComparison.OrdinalIgnoreCase) &&