/** * Delete module */ public function deletemoduleAction() { $this->_checkCanEdit(); $module = Request::post('id', 'string', false); $removeRelated = Request::post('delete_related', 'boolean', false); $manager = new Backend_Modules_Manager(); $moduleName = $manager->getModuleName($module); if (!$module || !strlen($module) || !$manager->isValidModule($moduleName)) { Response::jsonError($this->_lang->WRONG_REQUEST); } $filesToDelete = array(); if ($removeRelated) { $item = $manager->getModuleConfig($moduleName); $classFile = './system/app/' . str_replace('_', '/', $item['class']) . '.php'; if (file_exists($classFile)) { $filesToDelete[] = $classFile; } if (!empty($item['designer'])) { if (file_exists($item['designer'])) { $filesToDelete[] = $item['designer']; } $crudJs = './js/app/system/crud/' . strtolower($manager->getModuleName($item['class'])) . '.js'; if (file_exists($crudJs)) { $filesToDelete[] = $crudJs; } $actionJs = './js/app/actions/' . strtolower($manager->getModuleName($item['class'])) . '.js'; if (file_exists($actionJs)) { $filesToDelete[] = $actionJs; } } } // check before deleting if (!empty($filesToDelete)) { $err = array(); foreach ($filesToDelete as $file) { if (!is_writable($file)) { $err[] = $file; } } if (!empty($err)) { Response::jsonError($this->_lang->CANT_WRITE_FS . "\n<br>" . implode(",\n<br>", $err)); } } $manager->removeModule($moduleName); if (!$manager->save()) { Response::jsonError($this->_lang->CANT_WRITE_FS . ' ' . $manager->getConfig()->getName()); } // try to delete if (!empty($filesToDelete)) { $err = array(); foreach ($filesToDelete as $file) { if (!unlink($file)) { $err[] = $file; } } if (!empty($err)) { Response::jsonError($this->_lang->CANT_WRITE_FS . "\n<br>" . implode(",\n<br>", $err)); } } Response::jsonSuccess(); }