Przywracanie features za pomocą kodu PHP

Przywracanie features za pomocą kodu PHP

Jeśli zarządzamy wersjami naszej aplikacji za pomocą hook_update_N oraz używamy modułu Features to często pojawia się konieczność przywrócenia nowych ustawień z plików. Można to zrobić ręcznie klikając na stronie administracyjnej modułu Features w poszczególne moduły, których status chcemy przywrócić. Szybszą metodą jest jeszcze użycie Drusha oraz komendy:

drush fra -y

Jeszcze jedna opcja to użycie kodu PHP. Kod taki można umieścić w hook_update_N i wraz z wywołaniem skryptu update.php wszystkie moduły typu features zostaną przywrócone do stanu domyślnego.

 

 

/** * List of all features. */ function application_features_list() { $features = array( 'application', 'page', 'layout', 'userprofile', ); return $features; } /** * Revert specified features. */ function application_features_revert($modules) { module_load_include('inc', 'features', 'features.export'); features_include(); foreach ($modules as $module) { if (($feature = feature_load($module, TRUE)) && module_exists($module)) { $components = array(); // Forcefully revert all components of a feature. foreach (array_keys($feature->info['features']) as $component) { if (features_hook($component, 'features_revert')) { $components[] = $component; } } } foreach ($components as $component) { features_revert(array($module => array($component))); } } } /** * Application update * 2013-03-25 */ function application_update_7107() { application_features_revert(application_features_list()); }

Powyższy kod umieszczamy w pliku nazwamodułu.install. W Droptica nasi programiści takie zmiany zapisują zawsze w module o nazwie Application. Jest to główny moduł naszej aplikacji, który służy m.in. do zarządzania wersjami aplikacji.