public function getFilteredList(AddonListFilter $filter) { $filter->setType(AddonListFilterType::THEME); if (!isset($filter->status)) { $filter->setStatus(AddonListFilterStatus::ALL); } $themes = $this->getThemesOnDisk(); if (count($filter->exclude) > 0) { foreach ($filter->exclude as $name) { unset($themes[$name]); } } return $themes; }
public function notificationAction() { $translator = $this->get('translator'); $modulesProvider = $this->get('prestashop.core.admin.data_provider.module_interface'); $moduleRepository = $this->get('prestashop.core.admin.module.repository'); $filters = new AddonListFilter(); $filters->setType(AddonListFilterType::MODULE | AddonListFilterType::SERVICE)->setStatus(AddonListFilterStatus::INSTALLED); $installedProducts = $moduleRepository->getFilteredList($filters); $modules = new \stdClass(); foreach (array('to_configure', 'to_update') as $subpart) { $modules->{$subpart} = array(); } foreach ($installedProducts as $installedProduct) { $warnings = array(); $moduleProvider = $this->get('prestashop.adapter.data_provider.module'); $moduleName = $installedProduct->attributes->get('name'); if ($moduleProvider->isModuleMainClassValid($moduleName)) { require_once _PS_MODULE_DIR_ . $moduleName . '/' . $moduleName . '.php'; $module = \PrestaShop\PrestaShop\Adapter\ServiceLocator::get($moduleName); $warnings = $module->warning; } if (!empty($warnings)) { $modules->to_configure[] = (object) $installedProduct; } if ($installedProduct->canBeUpgraded()) { $modules->to_update[] = (object) $installedProduct; } } foreach ($modules as $moduleLabel => $modulesPart) { $modules->{$moduleLabel} = $modulesProvider->generateAddonsUrls($modulesPart); $modules->{$moduleLabel} = $this->getPresentedProducts($modulesPart); } return $this->render('PrestaShopBundle:Admin/Module:notifications.html.twig', array('layoutHeaderToolbarBtn' => $this->getToolbarButtons(), 'layoutTitle' => $translator->trans('Module notifications', array(), 'Admin.Modules.Feature'), 'modules' => $modules, 'requireAddonsSearch' => false, 'requireBulkActions' => false, 'enableSidebar' => true, 'help_link' => $this->generateSidebarLink('AdminModules'), 'requireFilterStatus' => false)); }
/** * @return AddonInterface[] retrieve the list of partners modules */ public function getPartnersModules() { $filter = new AddonListFilter(); $filter->setOrigin(AddonListFilterOrigin::ADDONS_NATIVE); $partnersModules = $this->getFilteredList($filter); foreach ($partnersModules as $key => $module) { $moduleAuthor = $module->attributes->get('author'); if (self::PARTNER_AUTHOR !== $moduleAuthor) { unset($partnersModules[$key]); } } return $partnersModules; }
public function test_should_not_be_able_to_return_theme() { $filters = new AddonListFilter(); $filters->setType(AddonListFilterType::THEME); $this->assertEquals(0, count($this->moduleRepositoryStub->getFilteredList($filters))); }