@@ -99,25 +99,33 @@ private void StoreOldRoute(IContent entity, OldRoutesDictionary oldRoutes)
99
99
{
100
100
return ;
101
101
}
102
- var contentCache = publishedSnapshot . Content ;
103
- var entityContent = contentCache ? . GetById ( entity . Id ) ;
102
+
103
+ IPublishedContentCache contentCache = publishedSnapshot . Content ;
104
+ IPublishedContent entityContent = contentCache ? . GetById ( entity . Id ) ;
104
105
if ( entityContent == null )
106
+ {
105
107
return ;
108
+ }
106
109
107
110
// get the default affected cultures by going up the tree until we find the first culture variant entity (default to no cultures)
108
111
var defaultCultures = entityContent . AncestorsOrSelf ( ) ? . FirstOrDefault ( a => a . Cultures . Any ( ) ) ? . Cultures . Keys . ToArray ( )
109
112
?? new [ ] { ( string ) null } ;
110
- foreach ( var x in entityContent . DescendantsOrSelf ( _variationContextAccessor ) )
113
+
114
+ foreach ( IPublishedContent publishedContent in entityContent . DescendantsOrSelf ( _variationContextAccessor ) )
111
115
{
112
116
// if this entity defines specific cultures, use those instead of the default ones
113
- var cultures = x . Cultures . Any ( ) ? x . Cultures . Keys : defaultCultures ;
117
+ IEnumerable < string > cultures = publishedContent . Cultures . Any ( ) ? publishedContent . Cultures . Keys : defaultCultures ;
114
118
115
119
foreach ( var culture in cultures )
116
120
{
117
- var route = contentCache . GetRouteById ( x . Id , culture ) ;
121
+ var checkedCulture = string . IsNullOrEmpty ( culture ) ? null : culture ;
122
+ var route = contentCache . GetRouteById ( publishedContent . Id , checkedCulture ) ;
118
123
if ( IsNotRoute ( route ) )
124
+ {
119
125
continue ;
120
- oldRoutes [ new ContentIdAndCulture ( x . Id , culture ) ] = new ContentKeyAndOldRoute ( x . Key , route ) ;
126
+ }
127
+
128
+ oldRoutes [ new ContentIdAndCulture ( publishedContent . Id , culture ) ] = new ContentKeyAndOldRoute ( publishedContent . Key , route ) ;
121
129
}
122
130
}
123
131
}
@@ -135,14 +143,18 @@ private void CreateRedirects(OldRoutesDictionary oldRoutes)
135
143
{
136
144
_logger . LogWarning ( "Could not track redirects because there is no current published snapshot available." ) ;
137
145
return ;
138
- }
146
+ }
139
147
140
- foreach ( var oldRoute in oldRoutes )
148
+ foreach ( KeyValuePair < ContentIdAndCulture , ContentKeyAndOldRoute > oldRoute in oldRoutes )
141
149
{
142
- var newRoute = contentCache . GetRouteById ( oldRoute . Key . ContentId , oldRoute . Key . Culture ) ;
150
+ var culture = string . IsNullOrWhiteSpace ( oldRoute . Key . Culture ) ? null : oldRoute . Key . Culture ;
151
+ var newRoute = contentCache . GetRouteById ( oldRoute . Key . ContentId , culture ) ;
143
152
if ( IsNotRoute ( newRoute ) || oldRoute . Value . OldRoute == newRoute )
153
+ {
144
154
continue ;
145
- _redirectUrlService . Register ( oldRoute . Value . OldRoute , oldRoute . Value . ContentKey , oldRoute . Key . Culture ) ;
155
+ }
156
+
157
+ _redirectUrlService . Register ( oldRoute . Value . OldRoute , oldRoute . Value . ContentKey , culture ) ;
146
158
}
147
159
}
148
160
0 commit comments