config = $config; $this->cookieCategories = $cookieCategories; $this->globalPrivacyControlConfig = $globalPrivacyControlConfig; $this->configUtils = $configUtils; } /** * @return bool */ public function isEnabled(): bool { if (! $this->config->isModuleEnabled()) { return false; } if (! $this->globalPrivacyControlConfig->isModuleEnabled()) { return false; } return true; } /** * @param $store * @return bool */ public function shouldDeclineAllCategories($store = null): bool { return CookieConsentBehavior::DECLINE_ALL_CATEGORIES === $this->configUtils->getStoreConfig(self::XML_PATH_COOKIE_CONSENT_BEHAVIOR, $store); } /** * Get non-essential cookie categories to decline * * @param null $store * @return array */ public function getCategoriesToDecline($store = null): array { $categoriesToDecline = $this->shouldDeclineAllCategories() ? array_keys($this->cookieCategories->toOptionHash()) : $this->configUtils->prepareMultiselectValue( $this->configUtils->getStoreConfig(self::XML_PATH_COOKIE_CATEGORIES_TO_DECLINE, $store) ); $essentialCategories = []; foreach ($this->cookieCategories->toOptionArray() as $option) { if ($option['isEssential']) { $essentialCategories[] = $option['value']; } } return array_diff($categoriesToDecline, $essentialCategories); } }