stringUtils = $stringUtils; $this->storeManager = $storeManager; parent::__construct($context); } /** * Authorization link for OAUTH. * * @param int $website * * @return string */ public function getAuthorizeLink($website = 0) { //base url, check for custom oauth domain if ($this->isAuthorizeCustomDomain($website)) { $baseUrl = $this->getWebsiteConfig(self::XML_PATH_CONNECTOR_CUSTOM_DOMAIN) . self::API_CONNECTOR_OAUTH_URL_AUTHORISE; } else { $baseUrl = $this->getRegionAuthorize($website) . self::API_CONNECTOR_OAUTH_URL_AUTHORISE; } return $baseUrl; } /** * Is authorization link for custom domain set. * * @param int $website * * @return bool */ private function isAuthorizeCustomDomain($website = 0) { $website = $this->storeManager->getWebsite($website); $customDomain = $website->getConfig( self::XML_PATH_CONNECTOR_CUSTOM_DOMAIN ); return (bool)$customDomain; } /** * Region aware authorize link. * * @param \Magento\Store\Api\Data\WebsiteInterface|int $website * * @return string|array */ private function getRegionAuthorize($website) { $website = $this->storeManager->getWebsite($website); $apiEndpoint = $this->getWebsiteConfig(self::PATH_FOR_API_ENDPOINT, $website) . '/'; //replace the api with the app prefix from the domain name $regionBaseUrl = str_replace('api', 'app', $apiEndpoint); return $regionBaseUrl; } /** * Callback authorization url. * * @return string */ public function getCallbackUrl() { if ($callback = $this->scopeConfig->getValue(self::XML_PATH_CONNECTOR_CUSTOM_AUTHORIZATION)) { return $callback; } return $this->storeManager->getStore()->getBaseUrl( \Magento\Framework\UrlInterface::URL_TYPE_WEB, true ); } /** * Token url for OAUTH. * * @param int $website * * @return string */ public function getTokenUrl($website = 0) { if ($this->isAuthorizeCustomDomain($website)) { $website = $this->storeManager->getWebsite($website); $tokenUrl = $website->getConfig(self::XML_PATH_CONNECTOR_CUSTOM_DOMAIN) . self::API_CONNECTOR_OAUTH_URL_TOKEN; } else { $tokenUrl = $this->getRegionAuthorize($website) . self::API_CONNECTOR_OAUTH_URL_TOKEN; } return $tokenUrl; } /** * Get login user url with for OAUTH. * * @param int $website * * @return string */ public function getLogUserUrl($website = 0) { if ($this->isAuthorizeCustomDomain($website)) { $logUserUrl = $this->getWebsiteConfig(self::XML_PATH_CONNECTOR_CUSTOM_DOMAIN) . self::API_CONNECTOR_OAUTH_URL_LOG_USER; } else { $logUserUrl = $this->getRegionAuthorize($website) . self::API_CONNECTOR_OAUTH_URL_LOG_USER; } return $logUserUrl; } /** * @param \Magento\Store\Api\Data\StoreInterface $store * @return string */ public function getOptInType($store) { $needToConfirm = $store->getConfig( \Magento\Newsletter\Model\Subscriber::XML_PATH_CONFIRMATION_FLAG ); $optInType = ($needToConfirm)? 'Double' : 'Single'; return $optInType; } /** * @param string $path * @param int $website * @param string $scope * @return int|string|boolean|float */ public function getWebsiteConfig($path, $website = 0, $scope = \Magento\Store\Model\ScopeInterface::SCOPE_WEBSITE) { return $this->scopeConfig->getValue( $path, $scope, $website ); } /** * @param int $websiteId * @return string */ public function getConsentCustomerText($websiteId) { return $this->limitLength( $this->getWebsiteConfig(self::XML_PATH_DOTMAILER_CONSENT_CUSTOMER_TEXT, $websiteId) ); } /** * @param int $websiteId * @return string|boolean */ public function isConsentSubscriberEnabled($websiteId) { return $this->getWebsiteConfig(self::XML_PATH_DOTMAILER_CONSENT_SUBSCRIBER_ENABLED, $websiteId); } /** * @param int $websiteId * @return string|boolean */ public function getConsentSubscriberText($websiteId) { return $this->limitLength( $this->getWebsiteConfig(self::XML_PATH_DOTMAILER_CONSENT_SUBSCRIBER_TEXT, $websiteId) ); } /** * @param string $value * @return string */ private function limitLength($value) { if ($this->stringUtils->strlen($value) > \Dotdigitalgroup\Email\Model\Consent::CONSENT_TEXT_LIMIT) { $value = $this->stringUtils->substr($value, 0, \Dotdigitalgroup\Email\Model\Consent::CONSENT_TEXT_LIMIT); } return $value; } }