/// <summary> /// Returns list of packages from online gallery for a single page /// </summary> /// <param name="pkgType">Theme, Widget or Extension</param> /// <param name="page">Current page</param> /// <param name="sortOrder">Order - newest, most downloaded etc.</param> /// <param name="searchVal">Search term if it is search request</param> /// <returns>List of packages</returns> public static List<JsonPackage> FromGallery(string pkgType, int page = 0, Gallery.OrderType sortOrder = Gallery.OrderType.Newest, string searchVal = "") { var packages = new List<JsonPackage>(); var gallery = CachedPackages.Where(p => p.Location == "G" || p.Location == "I"); if (pkgType != "all") gallery = gallery.Where(p => p.PackageType == pkgType).ToList(); foreach (var pkg in gallery) { if (string.IsNullOrEmpty(searchVal)) { packages.Add(pkg); } else { if (pkg.Title.IndexOf(searchVal, StringComparison.OrdinalIgnoreCase) != -1 || pkg.Description.IndexOf(searchVal, StringComparison.OrdinalIgnoreCase) != -1 || (!string.IsNullOrWhiteSpace(pkg.Tags) && pkg.Tags.IndexOf(searchVal, StringComparison.OrdinalIgnoreCase) != -1)) { packages.Add(pkg); } } } Gallery.GalleryPager = new Pager(page, packages.Count, pkgType); CultureInfo culture; try { culture = new CultureInfo(BlogSettings.Instance.Culture); } catch (Exception) { culture = Utils.GetDefaultCulture(); } if (packages.Count > 0) { switch (sortOrder) { case Gallery.OrderType.Downloads: packages = packages.OrderByDescending(p => p.DownloadCount).ThenBy(p => p.Title).ToList(); break; case Gallery.OrderType.Rating: packages = packages.OrderByDescending(p => p.Rating).ThenBy(p => p.Title).ToList(); break; case Gallery.OrderType.Newest: packages = packages.OrderByDescending(p => Convert.ToDateTime(p.LastUpdated, CultureInfo.InvariantCulture)).ThenBy(p => p.Title).ToList(); break; case Gallery.OrderType.Alphanumeric: packages = packages.OrderBy(p => p.Title).ToList(); break; } } return packages.Skip(page * Constants.PageSize).Take(Constants.PageSize).ToList(); }
public static IEnumerable LoadGalleryPage(string pkgType, int page, Gallery.OrderType sortOrder, string searchVal) { if (!WebUtils.CheckRightsForAdminSettingsPage(false)) { return null; } if (!WebUtils.CheckIfPrimaryBlog(false)) { return null; } return PackageRepository.FromGallery(pkgType, page, sortOrder, searchVal); }