/** * 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()); } }