/** * Désinstallation d'un module (sans prendre en compte les dépendances) * * @param string $pModuleName Nom du module * @return true si success et message de l'exception sinon */ public static function deleteModule($pModuleName) { try { // evenement avant la désinstallation du module. si un listener retourne false, on annule la désinstallation $response = CopixEventNotifier::notify(new CopixEvent('beforeUninstallModule', array('moduleName' => $pModuleName))); foreach ($response->getResponse() as $listener) { if (isset($listener['uninstall']) && $listener['uninstall'] === false) { $message = isset($listener['message']) ? $listener['message'] : _i18n('copix:copixmodule.error.listenerNoMessage'); throw new CopixException(_i18n('copix:copixmodule.error.listenerCancelUninstall', array($pModuleName, $message))); } } $moduleInstaller = self::_getModuleInstaller($pModuleName); if ($moduleInstaller !== null) { $moduleInstaller->processPreDelete(); } $scriptFile = self::_getDeleteFile($pModuleName); if ($scriptFile) { $ct = CopixDB::getConnection(); $ct->doSQLScript($scriptFile); } self::$_arModuleList = false; self::_deleteModuleInDatabase($pModuleName); self::_loadModuleList(true); //on demande de rafrachir le cache PHP une fois termin. self::_clearRegistryCache(); CopixListenerFactory::clearCompiledFile(); if ($moduleInstaller !== null) { $moduleInstaller->processPostDelete(); } // evenement après la désinstallation du module $response = CopixEventNotifier::notify(new CopixEvent('afterUninstallModule', array('moduleName' => $pModuleName))); } catch (Exception $e) { return $e->getMessage(); } return true; }