Improve bulk module enable/disable handling in BO modules list

This commit is contained in:
Amit sharma
2026-04-08 12:13:48 +05:30
parent bfdbf3fb02
commit 85f88f5286
3 changed files with 72 additions and 61 deletions

View File

@@ -1066,49 +1066,68 @@ class AdminModulesControllerCore extends AdminController
}
}
public function postProcessBulkEnable()
public function postProcessBulk_Enable()
{
if ($this->tabAccess['edit'] === 1) {
$moduleStatus = Tools::getValue('type');
$moduleNames = array_unique(array_filter(
explode('|', strip_tags((string) Tools::getValue('modules')))
));
$modules = Tools::getValue('modules');
$module_status = Tools::getValue('type');
if (!empty($modules)) {
$modules = strip_tags($modules);
$modules = explode('|', $modules);
if (!is_array($modules)) {
$modules = (array)$modules;
}
if (is_array($modules)) {
foreach ($modules as $module_name) {
$module = Module::getInstanceByName($module_name);
if (Validate::isLoadedObject($module)) {
if (!$module->getPermission('configure')) {
$this->errors[] = Tools::displayError('You do not have the permission to use this module ') . ': ' . $module->displayName;
} else {
if($module_status == 'enabled') {
$module->enable();
} else {
$module->disable();
}
}
} else {
$this->errors[] = Tools::displayError('Cannot load the module\'s object ') . ': ' . $module_name;
}
}
if(!count($this->errors)) {
Configuration::updateValue('PS_SHOW_ENABLED_MODULES_' . (int)$this->id_employee, $module_status);
Tools::redirectAdmin($this->getCurrentUrl('bulkEnable'));
}
}
if (!in_array($moduleStatus, array('enabled', 'disabled'), true)) {
$this->errors[] = Tools::displayError('Invalid module status.');
return;
}
} else {
if (empty($moduleNames)) {
return;
}
$modules = array();
foreach ($moduleNames as $moduleName) {
if (!Validate::isModuleName($moduleName)) {
$this->errors[] = Tools::displayError('Invalid module name ') . ': ' . $moduleName;
continue;
}
if (!Module::isInstalled($moduleName)) {
$this->errors[] = Tools::displayError('This module is not installed ') . ': ' . $moduleName;
continue;
}
$module = Module::getInstanceByName($moduleName);
if (!Validate::isLoadedObject($module)) {
$this->errors[] = Tools::displayError('Cannot load the module\'s object ') . ': ' . $moduleName;
continue;
}
if (!$module->getPermission('configure')) {
$this->errors[] = Tools::displayError('You do not have the permission to use this module ') . ': ' . $module->displayName;
continue;
}
$modules[] = $module;
}
if (empty($this->errors)) {
foreach ($modules as $module) {
if ($moduleStatus === 'enabled') {
$module->enable();
} else {
$module->disable();
}
}
Configuration::updateValue('PS_SHOW_ENABLED_MODULES_' . (int)$this->id_employee, $moduleStatus);
Tools::redirectAdmin($this->getCurrentUrl(array('bulk_enable', 'type', 'modules')));
}
}else{
$this->errors[] = Tools::displayError('You do not have permission to add this.');
}
}
protected function getModulesByInstallation($tab_modules_list = null)
{
// $all_modules = Module::getModulesOnDisk(true, $this->logged_on_addons, $this->id_employee);
@@ -1172,7 +1191,7 @@ class AdminModulesControllerCore extends AdminController
// Execute filter or callback methods
$filter_methods = array('filterModules', 'resetFilterModules', 'filterCategory', 'unfilterCategory');
$callback_methods = array('reset', 'download', 'enable', 'delete', 'enable_device', 'disable_device', 'bulkEnable');
$callback_methods = array('reset', 'download', 'enable', 'delete', 'enable_device', 'disable_device', 'bulk_enable');
$post_process_methods_list = array_merge((array)$filter_methods, (array)$callback_methods);
foreach ($post_process_methods_list as $ppm) {
if (Tools::isSubmit($ppm)) {