Esempio n. 1
0
 /**
  * Get modules having current module in dependence and deactivate it if needed
  *
  * @param ModuleToggleActivationEvent $event
  *
  */
 public function recursiveDeactivation(ModuleToggleActivationEvent $event)
 {
     if (null !== ($module = ModuleQuery::create()->findPk($event->getModuleId()))) {
         $moduleValidator = new ModuleValidator($module->getAbsoluteBaseDir());
         $dependencies = $moduleValidator->getModulesDependOf(true);
         foreach ($dependencies as $defMod) {
             $submodule = ModuleQuery::create()->findOneByCode($defMod["code"]);
             if ($submodule && $submodule->getActivate() == BaseModule::IS_ACTIVATED) {
                 $subevent = new ModuleToggleActivationEvent($submodule->getId());
                 $subevent->setRecursive(true);
                 $event->getDispatcher()->dispatch(TheliaEvents::MODULE_TOGGLE_ACTIVATION, $subevent);
             }
         }
     }
 }
Esempio n. 2
0
 /**
  * Check if module can be deactivated safely because other modules
  * could have dependencies to this module
  *
  * @param  \Thelia\Model\Module $module
  * @return bool true if the module can be deactivated, otherwise false
  */
 private function checkDeactivation($module)
 {
     $moduleValidator = new ModuleValidator($module->getAbsoluteBaseDir());
     $modules = $moduleValidator->getModulesDependOf();
     if (count($modules) > 0) {
         $moduleList = implode(', ', array_column($modules, 'code'));
         $message = count($modules) == 1 ? Translator::getInstance()->trans('%s has dependency to module %s. You have to deactivate this module before.') : Translator::getInstance()->trans('%s have dependencies to module %s. You have to deactivate these modules before.');
         throw new ModuleException(sprintf($message, $moduleList, $moduleValidator->getModuleDefinition()->getCode()));
     }
     return true;
 }