configHandler = $configHandler; $this->apiHandler = $apiHandler; } /** * @inheritdoc */ protected function doInit() { parent::doInit(); add_action('admin_menu', [$this, 'registerToAdminMenu']); } /*** * @return string */ public function getSlug() { return self::BLOCK_SLUG; } /** * Register to Admin Menu */ public function registerToAdminMenu() { add_options_page( __('CleverReach API Settings', AID_CF7CR_TEXTDOMAIN), __('All.In Data - Contact Form 7 CleverReach Integration', AID_CF7CR_TEXTDOMAIN), 'manage_options', $this->getSlug(), [$this, 'renderHtmlContent'] ); } /** * Load template */ public function renderHtmlContent() { load_template(AID_CF7CR_TEMPLATE_DIR . 'admin/settings-api.php'); } /** * @return string|null */ public function getApiToken() { return $this->configHandler->getApiToken()->getAccessToken(); } /** * @return string|null */ public function getApiClientId() { return $this->configHandler->getApiClientId(); } /** * @return string|null */ public function getApiClientSecret() { return $this->configHandler->getApiClientSecret(); } /** * @return string * @throws \Exception */ public function getApiTokenExpiryDate() { $expiryDate = $this->configHandler->getApiTokenExpiry(); if (!$expiryDate) { return ''; } return date_i18n(get_option( 'date_format' ), (new \DateTime($expiryDate))->getTimestamp()); } /** * @return string */ public function getFormSubmitUrl() { return esc_url(admin_url('admin-post.php')); } /** * @return string */ public function getFormNonce() { return wp_create_nonce( $this->getFormActionId()); } /** * @return string */ public function getFormRedirectTarget() { return esc_url('options-general.php?page='.$this->getSlug()); } /** * @return string */ public function getFormActionId() { return UpdateSettingsApiController::ACTION_ID; } /** * @return string */ public function getTokenRefreshRedirectTarget() { return esc_url(admin_url('admin-post.php?action=' . UpdateApiTokenController::ACTION_ID)); } /** * @return string */ public function getApiTokenRefreshUrl() { return $this->apiHandler->getAuthenticationUrl($this->getTokenRefreshRedirectTarget()); } }