[ 'id' => 'woocommerce/woocommerce.php', 'name' => 'WooCommerce', ], DynamicSegmentFilterData::TYPE_WOOCOMMERCE_SUBSCRIPTION => [ 'id' => 'woocommerce-subscriptions/woocommerce-subscriptions.php', 'name' => 'WooCommerce Subscriptions', ], ]; /** @var WPFunctions */ private $wp; public function __construct(WPFunctions $wp) { $this->wp = $wp; } /** * @return string[] */ public function getMissingPluginsBySegment(SegmentEntity $segment): array { $missingPlugins = []; foreach ($segment->getDynamicFilters() as $dynamicFilter) { $missingPlugin = $this->getMissingPluginByFilter($dynamicFilter); if (!$missingPlugin) { continue; } $missingPlugins[] = $missingPlugin['name']; } return $missingPlugins; } public function getMissingPluginByFilter(DynamicSegmentFilterEntity $dynamicSegmentFilter): ?array { $requiredPlugin = $this->getRequiredPluginName($dynamicSegmentFilter); if (isset($requiredPlugin['id']) && !$this->wp->isPluginActive($requiredPlugin['id'])) { return $requiredPlugin; } return null; } private function getRequiredPluginName(DynamicSegmentFilterEntity $dynamicSegmentFilter): ?array { if (isset(self::REQUIRED_PLUGINS_BY_TYPE[$dynamicSegmentFilter->getFilterData()->getFilterType()])) { return self::REQUIRED_PLUGINS_BY_TYPE[$dynamicSegmentFilter->getFilterData()->getFilterType()]; } return null; } }