/
home
/
u303693141
/
public_html
/
wp-content
/
plugins
/
tidio-live-chat
/
src
/
Admin
/
Upload File
HOME
<?php namespace TidioLiveChat\Admin; if (!defined('WPINC')) { die('File loaded directly. Exiting.'); } use Exception; use TidioLiveChat\IntegrationState; use TidioLiveChat\Config; use TidioLiveChat\WooCommerceSdk\WooCommerceIntegrationService; class IframeSetup { /** * @var IntegrationState */ private $integrationState; /** * @var WooCommerceIntegrationService */ private $wooCommerceIntegrationService; /** * @param IntegrationState $integrationState */ public function __construct($integrationState, $wooCommerceIntegrationService) { $this->integrationState = $integrationState; $this->wooCommerceIntegrationService = $wooCommerceIntegrationService; } /** * @return string */ public function prepareAuthenticationIframeUrl() { $userId = get_current_user_id(); $userName = get_user_meta($userId, 'first_name', true); $queryParams = array_merge( [ 'pluginUrl' => AdminRouting::getEndpointForIntegrateProjectAction(), 'name' => $userName, 'refId' => $this->readRefIdFromFile() ], $this->getDefaultIframeQueryParams() ); $iframeBaseUrl = Config::getPanelUrl() . '/register-platforms'; return sprintf('%s?%s', $iframeBaseUrl, http_build_query($queryParams)); } /** * @return string */ public function prepareIntegrationSuccessIframeUrl() { $queryParams = array_merge( [ 'panelUrl' => $this->getPanelRedirectUrl(), 'reintegrationRoute' => $this->prepareReintegrationIframeRoute() ], $this->getDefaultIframeQueryParams(), $this->wooCommerceIntegrationService->getIntegrationData()->toIframeData() ); $iframeBaseUrl = Config::getPanelUrl() . '/integration-success'; return sprintf('%s?%s', $iframeBaseUrl, http_build_query($queryParams)); } /** * @return string */ private function prepareReintegrationIframeRoute() { $queryParams = array_merge( [ 'pluginUrl' => AdminRouting::getEndpointForIntegrateProjectAction() ], $this->getDefaultIframeQueryParams() ); return sprintf('/login-platforms?%s', http_build_query($queryParams)); } /** * @return array<string, string> */ private function getDefaultIframeQueryParams() { $userId = get_current_user_id(); $localeCode = get_user_locale($userId); return [ 'siteUrl' => get_home_url(), 'localeCode' => $localeCode, 'language' => substr($localeCode, 0, 2), 'utm_source' => 'platform', 'utm_medium' => 'wordpress', ]; } /** * @return string|null */ private function readRefIdFromFile() { try { $loadedRefIdFromFile = @file_get_contents(AFFILIATE_CONFIG_FILE_PATH); return trim($loadedRefIdFromFile); } catch (Exception $e) { return null; } } /** * @return string */ private function getPanelRedirectUrl() { $queryParams = [ 'utm_source' => 'platform', 'utm_medium' => 'wordpress' ]; if ($this->integrationState->hasProjectPrivateKey()) { $queryParams['privateKey'] = $this->integrationState->getProjectPrivateKey(); return sprintf('%s/external-access?%s', Config::getPanelUrl(), http_build_query($queryParams)); } return sprintf('%s?%s', Config::getPanelUrl(), http_build_query($queryParams)); } }