Ejemplo n.º 1
0
 /**
  * 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();
 }