filterByActivate(BaseModule::IS_ACTIVATED) ->orderByPosition() ->find(); } return self::$activated; } public static function resetActivated() { self::$activated = null; } /** * @param int $moduleType the module type : classic, payment or delivery. Use BaseModule constant here. * @param int $id the module id * @return ModuleQuery */ public function filterActivatedByTypeAndId($moduleType, $id) { return $this ->filterByType($moduleType) ->filterByActivate(BaseModule::IS_ACTIVATED) ->filterById($id); } /** * * if the container is provided, this method will found the module in the container. Reflection is used instead. * If it's possible use it with the container. * * return false if no delivery modules are found, an array of BaseModule otherwise. * * @param ContainerInterface $container optional * @return false|\Thelia\Module\BaseModule[] */ public function retrieveVirtualProductDelivery(ContainerInterface $container = null) { $modules = $this ->filterByType(BaseModule::DELIVERY_MODULE_TYPE) ->filterByActivate(BaseModule::IS_ACTIVATED) ->find() ; $result = []; /** @var \Thelia\Model\Module $module */ foreach ($modules as $module) { try { if (null !== $container) { $instance = $module->getDeliveryModuleInstance($container); } else { $instance = $module->createInstance(); } if (true === $instance->handleVirtualProductDelivery()) { $result[] = $instance; } } catch (\Exception $ex) { Tlog::getInstance()->addError("Failed to instantiate module ".$module->getCode(), $ex); } } return empty($result) ? false : $result; } } // ModuleQuery