* @since 1.48.0 */ namespace AdvancedAds\Modules\OneClick\Admin; use WP_Error; use AdvancedAds\Utilities\WordPress; use AdvancedAds\Modules\OneClick\Helpers; use AdvancedAds\Modules\OneClick\Options; use AdvancedAds\Framework\Utilities\Params; use AdvancedAds\Modules\OneClick\AdsTxt\Detector; use AdvancedAds\Framework\Interfaces\Integration_Interface; use AdvancedAds\Importers\Api_Ads; defined( 'ABSPATH' ) || exit; /** * Ajax. */ class Ajax implements Integration_Interface { /** * API URL * * Production: https://app.pubguru.com * Development: https://new-stagingtools5.pubguru.com * * @var string */ const API_URL = 'https://app.pubguru.com/'; /** * Hook into WordPress * * @return void */ public function hooks(): void { add_action( 'init', [ $this, 'init' ] ); add_action( 'wp_ajax_search_posts', [ $this, 'search_posts' ] ); add_action( 'wp_ajax_pubguru_connect', [ $this, 'pubguru_connect' ] ); add_action( 'wp_ajax_pubguru_disconnect', [ $this, 'pubguru_disconnect' ] ); add_action( 'wp_ajax_pubguru_module_change', [ $this, 'module_status_changed' ] ); add_action( 'wp_ajax_pubguru_backup_ads_txt', [ $this, 'backup_ads_txt' ] ); add_action( 'wp_ajax_update_oneclick_preview', [ $this, 'update_oneclick_preview' ] ); } /** * Init hook * * @return void */ public function init(): void { if ( Params::get( 'refresh_ads', false, FILTER_VALIDATE_BOOLEAN ) ) { $config = $this->pubguru_api_connect(); if ( is_wp_error( $config ) ) { wp_die( $config->get_error_message(), // phpcs:ignore esc_html__( 'Refreshing PubGuru Ads', 'advanced-ads' ), $config->get_error_data() // phpcs:ignore ); } } } /** * PubGuru Connect * * @return void */ public function pubguru_connect(): void { check_ajax_referer( 'pubguru_oneclick_security', 'nonce' ); $config = $this->pubguru_api_connect(); if ( is_wp_error( $config ) ) { wp_send_json( [ 'success' => false, 'code' => $config->get_error_code(), 'message' => $config->get_error_message(), ], $config->get_error_data() ); } // Default module enabled. Options::module( 'header_bidding', true ); wp_send_json_success( [ 'message' => esc_html__( 'We have successfully migrated your MonetizeMore PubGuru Ad Units to your WordPress site. The existing placements and ads have been paused.', 'advanced-ads' ), 'hasTrafficCop' => Helpers::has_traffic_cop( $config ), ] ); } /** * PubGuru Disconnect * * @return void */ public function pubguru_disconnect(): void { check_ajax_referer( 'pubguru_oneclick_security', 'nonce' ); Options::pubguru_config( 'delete' ); wp_send_json_success( [ 'message' => esc_html__( 'PubGuru successfully disconnected.', 'advanced-ads' ), ] ); } /** * Handle module status changes * * @return void */ public function module_status_changed(): void { check_ajax_referer( 'pubguru_oneclick_security', 'security' ); $module = Params::post( 'module', [] ); $status = Params::post( 'status', false, FILTER_VALIDATE_BOOLEAN ); Options::module( $module, $status ); $data = apply_filters( 'pubguru_module_status_changed', [], $module, $status ); wp_send_json_success( $data ); } /** * Handle module status changes * * @return void */ public function backup_ads_txt(): void { check_ajax_referer( 'pubguru_oneclick_security', 'security' ); $result = ( new Detector() )->backup_file(); if ( false === $result ) { $notice = sprintf( '