/**
  * delete all module in array if its possible
  * @params array $arToDeleteModules
  * @return array
  */
 function delete($arToDeleteModules)
 {
     $arError = array();
     $arInstalledModule = CopixModule::getList();
     foreach ($arToDeleteModules as $toDelete) {
         CopixModule::_deleteOneModule($toDelete, $arToDeleteModules, $arInstalledModule, $arError);
     }
     require_once COPIX_EVENTS_PATH . 'CopixListenerFactory.class.php';
     CopixListenerFactory::clearCompiledFile();
     return $arError;
 }
 public function testSingleton()
 {
     $singleton = CopixListenerFactory::instance();
     $singleton2 = CopixListenerFactory::instance();
     $this->assertSame($singleton, $singleton2);
 }
 /**
  * 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;
 }
 /**
  * Chargement des listeners qui réagissent à un événement donné
  * @param	CopixEvent	$event	l'événement pour lequel on souhaites charger les listener
  */
 private function _load($event)
 {
     $this->_listeners[$event->getName()] = CopixListenerFactory::createFor($event->getName());
 }
 /**
  * Load listeners for a given event
  * @param CopixEvent $event the event we wants to load the listeners for.
  */
 function _load(&$event)
 {
     require_once COPIX_EVENTS_PATH . 'CopixListenerFactory.class.php';
     $this->_listeners[$event->getName()] = CopixListenerFactory::createFor($event->getName());
 }
 /**
  * Creates listeners for the given eventName
  * @param string eventName the eventName we wants to create the listeners for
  */
 function _createForEvent($eventName)
 {
     if (!isset($this->_hashListened[$eventName])) {
         foreach ((array) $this->_eventInfos as $module => $events) {
             foreach ($events as $listenerName => $eventsInfos) {
                 if (in_array($eventName, $eventsInfos)) {
                     $this->_hashListened[$eventName][] =& CopixListenerFactory::create($module, $listenerName);
                 }
             }
         }
     }
 }
 /**
  * Supprime le fichier de cache
  */
 public static function clearCompiledFile()
 {
     if (is_file(CopixListenerFactory::_compiledFileName())) {
         unlink(CopixListenerFactory::_compiledFileName());
     }
 }