Beispiel #1
0
 protected function uninstallExtension(Vtiger_Request $request)
 {
     $extensionName = $request->get('extensionName');
     $extensionInstance = Settings_ExtensionStore_Extension_Model::getModuleFromExtnName($extensionName);
     $extnType = $extensionInstance->get('extnType');
     $response = new Vtiger_Response();
     if ($extnType == 'module') {
         $extensionInstance->delete();
         //Remove extension files
         global $root_directory;
         $deletePaths = array();
         $pathToExtensionLayouts = $root_directory . "layouts/vlayout/modules/{$extensionName}";
         $layoutDirAccessible = isFileAccessible($pathToExtensionLayouts);
         if ($layoutDirAccessible) {
             $deletePaths['layouts'] = $pathToExtensionLayouts;
         }
         $pathToExtensionModule = $root_directory . "modules/{$extensionName}";
         $moduleDirAccessible = isFileAccessible($pathToExtensionModule);
         if ($moduleDirAccessible) {
             $deletePaths['modules'] = $pathToExtensionModule;
         }
         foreach ($deletePaths as $dirName) {
             $this->deleteRecursively($dirName);
         }
         $response->setResult(array('success' => true, 'message' => 'extension deleted'));
     } else {
         if ($extnType == 'language') {
             $languageInstance = Settings_ExtensionStore_Extension_Model::getLanguageInstance($extensionName);
             if ($languageInstance) {
                 $langPrefix = $languageInstance->get('prefix');
                 Vtiger_Language::deregister($langPrefix);
                 //remove files
                 $langDir = "languages/{$langPrefix}";
                 if (isFileAccessible($langDir)) {
                     $this->deleteRecursively($langDir);
                 }
             }
             $response->setResult(array('success' => true, 'message' => 'extension deleted'));
         } else {
             $response->setError('Error in deleting extension');
         }
     }
     $response->emit();
 }