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:
Sebastien Ros
2011-01-07 18:46:30 -08:00
parent 3969aed2ad
commit dddd756058
2 changed files with 11 additions and 8 deletions

View File

@@ -58,16 +58,18 @@ namespace Orchard.Modules.Services {
public void EnableFeatures(IEnumerable<string> features, bool force) { public void EnableFeatures(IEnumerable<string> features, bool force) {
var shellDescriptor = _shellDescriptorManager.GetShellDescriptor(); var shellDescriptor = _shellDescriptorManager.GetShellDescriptor();
var enabledFeatures = shellDescriptor.Features.ToList(); var enabledFeatures = shellDescriptor.Features.ToList();
var availableFeatures = GetAvailableFeatures().ToList();
var featuresToEnable = var featuresToEnable = features
features.Select(s => EnableFeature(s, GetAvailableFeatures(), force)). .Select(s => EnableFeature(s, availableFeatures, force)).ToList()
SelectMany(ies => ies.Select(s => s)); .SelectMany(ies => ies.Select(s => s));
if (featuresToEnable.Count() == 0) if (featuresToEnable.Count() == 0)
return; return;
foreach (var featureToEnable in featuresToEnable) { 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)); Services.Notifier.Information(T("{0} was enabled", featureToEnable));
} }
@@ -84,9 +86,9 @@ namespace Orchard.Modules.Services {
var enabledFeatures = shellDescriptor.Features.ToList(); var enabledFeatures = shellDescriptor.Features.ToList();
var availableFeatures = GetAvailableFeatures().ToList(); var availableFeatures = GetAvailableFeatures().ToList();
var featuresToDisable = var featuresToDisable = features
features.Select(s => DisableFeature(s, availableFeatures, force)).SelectMany( .Select(s => DisableFeature(s, availableFeatures, force)).ToList()
ies => ies.Select(s => s)); .SelectMany(ies => ies.Select(s => s));
if (featuresToDisable.Count() == 0) if (featuresToDisable.Count() == 0)
return; return;

View File

@@ -171,7 +171,8 @@ namespace Orchard.Environment.State {
} }
// raise install and enabled states in order // 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) { if (entry.FeatureState.InstallState == ShellFeatureState.State.Rising) {
Logger.Information("Installing feature '{0}'", entry.Feature.Descriptor.Id); Logger.Information("Installing feature '{0}'", entry.Feature.Descriptor.Id);
_featureEvents.Installing(entry.Feature); _featureEvents.Installing(entry.Feature);