* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\PrestashopFacebook\Manager; use PrestaShop\Module\PrestashopFacebook\Adapter\ConfigurationAdapter; use PrestaShop\Module\PrestashopFacebook\API\Client\FacebookClient; use PrestaShop\Module\PrestashopFacebook\Config\Config; use stdClass; class FbeFeatureManager { /** * @var ConfigurationAdapter */ private $configurationAdapter; /** * @var FacebookClient */ private $facebookClient; public function __construct(ConfigurationAdapter $configurationAdapter, FacebookClient $facebookClient) { $this->configurationAdapter = $configurationAdapter; $this->facebookClient = $facebookClient; } /** * @param string $featureName * @param bool $state * * @return array|false */ public function updateFeature($featureName, $state) { $featureConfiguration = $this->configurationAdapter->get(Config::FBE_FEATURE_CONFIGURATION . $featureName); $externalBusinessId = $this->configurationAdapter->get(Config::PS_FACEBOOK_EXTERNAL_BUSINESS_ID); if (!$featureConfiguration && !in_array($featureName, Config::CONFIGURABLE_FBE_FEATURES)) { return false; } $featureConfiguration = json_decode($featureConfiguration); if ($featureConfiguration === null) { $featureConfiguration = new stdClass(); } if ($featureName == 'messenger_chat') { unset($featureConfiguration->default_locale); /* @see https://developers.facebook.com/docs/facebook-business-extension/fbe/reference#FBEMessengerChatConfigData */ $featureConfiguration->domains = [ \Tools::getShopDomainSsl(true), ]; } $featureConfiguration->enabled = (bool) $state; $this->configurationAdapter->updateValue(Config::FBE_FEATURE_CONFIGURATION . $featureName, json_encode($featureConfiguration)); $configuration = [ $featureName => $featureConfiguration, ]; return $this->facebookClient->updateFeature($externalBusinessId, $configuration); } }