Merge pull request #7566 from stevemegson/v8/pr/migrations/convert-media-urls

Migrations - In ConvertTinyMceAndGridMediaUrlsToLocalLink, avoid unnecessary updates
This commit is contained in:
Shannon Deminick
2020-02-05 16:07:03 +11:00
committed by GitHub
@@ -44,6 +44,8 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_1_0
var value = property.TextValue;
if (string.IsNullOrWhiteSpace(value)) continue;
bool propertyChanged = false;
if (property.PropertyTypeDto.DataTypeDto.EditorAlias == Constants.PropertyEditors.Aliases.Grid)
{
try
@@ -56,7 +58,8 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_1_0
var controlValue = control["value"];
if (controlValue?.Type == JTokenType.String)
{
control["value"] = UpdateMediaUrls(mediaLinkPattern, controlValue.Value<string>());
control["value"] = UpdateMediaUrls(mediaLinkPattern, controlValue.Value<string>(), out var controlChanged);
propertyChanged |= controlChanged;
}
}
@@ -77,10 +80,11 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_1_0
}
else
{
property.TextValue = UpdateMediaUrls(mediaLinkPattern, value);
property.TextValue = UpdateMediaUrls(mediaLinkPattern, value, out propertyChanged);
}
Database.Update(property);
if (propertyChanged)
Database.Update(property);
}
@@ -92,10 +96,14 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_1_0
Context.AddPostMigration<RebuildPublishedSnapshot>();
}
private string UpdateMediaUrls(Regex mediaLinkPattern, string value)
private string UpdateMediaUrls(Regex mediaLinkPattern, string value, out bool changed)
{
return mediaLinkPattern.Replace(value, match =>
bool matched = false;
var result = mediaLinkPattern.Replace(value, match =>
{
matched = true;
// match groups:
// - 1 = from the beginning of the a tag until href attribute value begins
// - 2 = the href attribute value excluding the querystring (if present)
@@ -107,6 +115,10 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_1_0
? match.Value
: $"{match.Groups[1].Value}/{{localLink:{media.GetUdi()}}}{match.Groups[3].Value}";
});
changed = matched;
return result;
}
}
}