X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fdrush%2Fdrush%2Fcommands%2Fcore%2Fdrupal%2Fpm.inc;fp=vendor%2Fdrush%2Fdrush%2Fcommands%2Fcore%2Fdrupal%2Fpm.inc;h=0a64d2d6f5f78d699b18c0c33adc0dad4ac7fffa;hp=0000000000000000000000000000000000000000;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad diff --git a/vendor/drush/drush/commands/core/drupal/pm.inc b/vendor/drush/drush/commands/core/drupal/pm.inc new file mode 100644 index 000000000..0a64d2d6f --- /dev/null +++ b/vendor/drush/drush/commands/core/drupal/pm.inc @@ -0,0 +1,162 @@ + $name)), LogLevel::WARNING); + } + + // Discard already disabled extensions. + foreach ($extensions as $name) { + if (!$extension_info[$name]->status) { + if ($extension_info[$name]->type == 'module') { + unset($modules[$name]); + } + else { + unset($themes[$name]); + } + drush_log(dt('!extension is already disabled.', array('!extension' => $name)), LogLevel::OK); + } + } + + // Discard default theme. + if (!empty($themes)) { + $default_theme = drush_theme_get_default(); + if (in_array($default_theme, $themes)) { + unset($themes[$default_theme]); + drush_log(dt('!theme is the default theme and can\'t be disabled.', array('!theme' => $default_theme)), LogLevel::OK); + } + } + + if (!empty($modules)) { + // Add enabled dependents to the list of modules to disable. + $dependents = drush_module_dependents($modules, $extension_info); + $dependents = array_intersect($dependents, drush_module_list()); + $modules = array_merge($modules, $dependents); + + // Discard required modules. + $required = drush_drupal_required_modules($extension_info); + foreach ($required as $module) { + if (isset($modules[$module])) { + unset($modules[$module]); + $info = $extension_info[$module]->info; + // No message for hidden modules. + if (!isset($info['hidden'])) { + $explanation = !empty($info['explanation']) ? ' ' . dt('Reason: !explanation.', array('!explanation' => strip_tags($info['explanation']))) : ''; + drush_log(dt('!module is a required module and can\'t be disabled.', array('!module' => $module)) . $explanation, LogLevel::OK); + } + } + } + } + + // Inform the user which extensions will finally be disabled. + $extensions = array_merge($modules, $themes); + if (empty($extensions)) { + return drush_log(dt('There were no extensions that could be disabled.'), LogLevel::OK); + } + else { + drush_print(dt('The following extensions will be disabled: !extensions', array('!extensions' => implode(', ', $extensions)))); + if(!drush_confirm(dt('Do you really want to continue?'))) { + return drush_user_abort(); + } + } + + // Disable themes. + if (!empty($themes)) { + drush_theme_disable($themes); + } + + // Disable modules and pass dependency validation in form submit. + if (!empty($modules)) { + drush_module_disable($modules); + } + + // Inform the user of final status. + $result_extensions = drush_get_named_extensions_list($extensions); + $problem_extensions = array(); + foreach ($result_extensions as $extension) { + if (!$extension->status) { + drush_log(dt('!extension was disabled successfully.', array('!extension' => $extension->name)), LogLevel::OK); + } + else { + $problem_extensions[] = $extension->name; + } + } + if (!empty($problem_extensions)) { + return drush_set_error('DRUSH_PM_DISABLE_EXTENSION_ISSUE', dt('There was a problem disabling !extension.', array('!extension' => implode(',', $problem_extensions)))); + } +} + +/** + * Command callback. Uninstall one or more modules. + */ +function _drush_pm_uninstall($modules) { + drush_include_engine('drupal', 'environment'); + $module_info = drush_get_modules(); + $required = drush_drupal_required_modules($module_info); + + // Discards modules which are enabled, not found or already uninstalled. + foreach ($modules as $key => $module) { + if (!isset($module_info[$module])) { + // The module does not exist in the system. + unset($modules[$key]); + drush_log(dt('Module !module was not found and will not be uninstalled.', array('!module' => $module)), LogLevel::WARNING); + } + else if ($module_info[$module]->status) { + // The module is enabled. + unset($modules[$key]); + drush_log(dt('!module is not disabled. Use `pm-disable` command before `pm-uninstall`.', array('!module' => $module)), LogLevel::WARNING); + } + else if ($module_info[$module]->schema_version == -1) { // SCHEMA_UNINSTALLED + // The module is uninstalled. + unset($modules[$key]); + drush_log(dt('!module is already uninstalled.', array('!module' => $module)), LogLevel::OK); + } + else { + $dependents = array(); + foreach (drush_module_dependents(array($module), $module_info) as $dependent) { + if (!in_array($dependent, $required) && ($module_info[$dependent]->schema_version != -1)) { + $dependents[] = $dependent; + } + } + if (count($dependents)) { + drush_log(dt('To uninstall !module, the following modules must be uninstalled first: !required', array('!module' => $module, '!required' => implode(', ', $dependents))), LogLevel::ERROR); + unset($modules[$key]); + } + } + } + + // Inform the user which modules will finally be uninstalled. + if (empty($modules)) { + return drush_log(dt('There were no modules that could be uninstalled.'), LogLevel::OK); + } + else { + drush_print(dt('The following modules will be uninstalled: !modules', array('!modules' => implode(', ', $modules)))); + if(!drush_confirm(dt('Do you really want to continue?'))) { + return drush_user_abort(); + } + } + + // Uninstall the modules. + drush_module_uninstall($modules); + + // Inform the user of final status. + foreach ($modules as $module) { + drush_log(dt('!module was successfully uninstalled.', array('!module' => $module)), LogLevel::OK); + } +} +