Skip to content

Commit a4533f7

Browse files
committed
Check for entire packages not in download (only applies to DNN core package)
1 parent d2c8fc0 commit a4533f7

1 file changed

Lines changed: 56 additions & 1 deletion

File tree

Server/Core/Services/Packages/PackageReader.cs

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class PackageReader
2424
public bool IsCore { get; set; } = false;
2525
public Manifest Manifest { get; set; } = null;
2626
private List<string> FoundFileKeys { get; set; } = new List<string>();
27+
private List<int> ProcessedPackageIds { get; set; } = new List<int>();
2728

2829
public PackageReader(int packageLinkId, int parentPackageVersionId, string zipFilePath)
2930
{
@@ -101,6 +102,11 @@ public void Process(DateTime releaseDate)
101102
catch (Exception ex)
102103
{
103104
}
105+
106+
if (this.IsCore)
107+
{
108+
this.CheckForEntirePackageDeprecation(this.PackageLinkId, this.UnzipResult.DnnVersion.ToNormalizedFormat());
109+
}
104110
}
105111

106112
private int ProcessPackage(string packageName, string folderName, string packageType, string friendlyName, Version pVersion, DateTime releaseDate, UnzipResult extraFiles = null)
@@ -121,6 +127,15 @@ private int ProcessPackage(string packageName, string folderName, string package
121127
};
122128
package.PackageId = PackageRepository.Instance.AddPackage(package.GetPackageBase()).PackageId;
123129
}
130+
if (!ProcessedPackageIds.Contains(package.PackageId))
131+
{
132+
ProcessedPackageIds.Add(package.PackageId);
133+
}
134+
else
135+
{
136+
// already processed this package in this run
137+
return -1;
138+
}
124139

125140
var packageVersion = PackageVersionRepository.Instance.GetPackageVersionsByPackage(package.PackageId).FirstOrDefault(pv => pv.Version == version);
126141
if (packageVersion == null)
@@ -303,7 +318,47 @@ private void CheckAndDeprecateEntireResourcesFiles(PackageVersion packageVersion
303318
}
304319
}
305320
}
321+
}
306322

323+
private void CheckForEntirePackageDeprecation(int packageLinkId, string parentVersion)
324+
{
325+
var packagesInDb = PackageRepository.Instance.GetPackagesByPackageLink(packageLinkId);
326+
foreach (var package in packagesInDb)
327+
{
328+
if (!ProcessedPackageIds.Contains(package.PackageId))
329+
{
330+
var allResourceFiles = ResourceFileRepository.Instance.GetResourceFilesByPackage(package.PackageId);
331+
if (allResourceFiles.Count() > 0)
332+
{
333+
var packageVersions = PackageVersionRepository.Instance.GetPackageVersionsByPackage(package.PackageId);
334+
var lastVersion = packageVersions.OrderByDescending(pv => pv.Version.ParseVersion()).FirstOrDefault();
335+
if (lastVersion != null && lastVersion.NrTexts.HasValue && lastVersion.NrTexts.Value > 0)
336+
{
337+
if (lastVersion == null || lastVersion.Version.ParseVersion().CompareTo(parentVersion.ParseVersion()) < 0)
338+
{
339+
lastVersion = new PackageVersion()
340+
{
341+
PackageId = package.PackageId,
342+
Version = parentVersion,
343+
ReleaseDate = DateTime.Now,
344+
Downloaded = DateTime.Now
345+
};
346+
lastVersion.PackageVersionId = PackageVersionRepository.Instance.AddPackageVersion(lastVersion.GetPackageVersionBase()).PackageVersionId;
347+
}
348+
349+
foreach (var resourceFile in allResourceFiles)
350+
{
351+
var textsInDb = TextRepository.Instance.GetTextsByResourceFile(resourceFile.ResourceFileId);
352+
foreach (var dbText in textsInDb.Where(t => t.DeprecatedInVersion == "99.99.99"))
353+
{
354+
dbText.DeprecatedInVersionId = lastVersion.PackageVersionId;
355+
TextRepository.Instance.UpdateText(dbText.GetTextBase());
356+
}
357+
}
358+
}
359+
}
360+
}
361+
}
307362
}
308363
}
309-
}
364+
}

0 commit comments

Comments
 (0)