コード例 #1
0
 /**
  * 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;
 }