mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-14 10:54:50 +08:00
Fires Install and Enable events in reverse order for the sake of modules' data migration dependencies
--HG-- branch : 1.x
This commit is contained in:
@@ -58,16 +58,18 @@ namespace Orchard.Modules.Services {
|
||||
public void EnableFeatures(IEnumerable<string> features, bool force) {
|
||||
var shellDescriptor = _shellDescriptorManager.GetShellDescriptor();
|
||||
var enabledFeatures = shellDescriptor.Features.ToList();
|
||||
var availableFeatures = GetAvailableFeatures().ToList();
|
||||
|
||||
var featuresToEnable =
|
||||
features.Select(s => EnableFeature(s, GetAvailableFeatures(), force)).
|
||||
SelectMany(ies => ies.Select(s => s));
|
||||
var featuresToEnable = features
|
||||
.Select(s => EnableFeature(s, availableFeatures, force)).ToList()
|
||||
.SelectMany(ies => ies.Select(s => s));
|
||||
|
||||
if (featuresToEnable.Count() == 0)
|
||||
return;
|
||||
|
||||
foreach (var featureToEnable in featuresToEnable) {
|
||||
enabledFeatures.Add(new ShellFeature {Name = featureToEnable});
|
||||
var feature = featureToEnable;
|
||||
enabledFeatures.Add(new ShellFeature { Name = feature });
|
||||
Services.Notifier.Information(T("{0} was enabled", featureToEnable));
|
||||
}
|
||||
|
||||
@@ -84,9 +86,9 @@ namespace Orchard.Modules.Services {
|
||||
var enabledFeatures = shellDescriptor.Features.ToList();
|
||||
var availableFeatures = GetAvailableFeatures().ToList();
|
||||
|
||||
var featuresToDisable =
|
||||
features.Select(s => DisableFeature(s, availableFeatures, force)).SelectMany(
|
||||
ies => ies.Select(s => s));
|
||||
var featuresToDisable = features
|
||||
.Select(s => DisableFeature(s, availableFeatures, force)).ToList()
|
||||
.SelectMany(ies => ies.Select(s => s));
|
||||
|
||||
if (featuresToDisable.Count() == 0)
|
||||
return;
|
||||
|
@@ -171,7 +171,8 @@ namespace Orchard.Environment.State {
|
||||
}
|
||||
|
||||
// raise install and enabled states in order
|
||||
foreach (var entry in allEntries.Where(entry => IsRising(entry.FeatureState))) {
|
||||
foreach (var entry in allEntries.Reverse().Where(entry => IsRising(entry.FeatureState)))
|
||||
{
|
||||
if (entry.FeatureState.InstallState == ShellFeatureState.State.Rising) {
|
||||
Logger.Information("Installing feature '{0}'", entry.Feature.Descriptor.Id);
|
||||
_featureEvents.Installing(entry.Feature);
|
||||
|
Reference in New Issue
Block a user