@@ -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