mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 03:25:23 +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) {
|
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;
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user