* @since 1.50.0 */ namespace AdvancedAds\Frontend; use Advanced_Ads; use Advanced_Ads_Utils; use Advanced_Ads_Privacy; use AdvancedAds\Utilities\WordPress; use AdvancedAds\Utilities\Conditional; use AdvancedAds\Framework\Utilities\Params; use AdvancedAds\Framework\Interfaces\Integration_Interface; defined( 'ABSPATH' ) || exit; /** * Frontend Scripts. */ class Scripts implements Integration_Interface { /** * Hook into WordPress. * * @return void */ public function hooks(): void { add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); add_action( 'wp_head', [ $this, 'print_head_scripts' ], 7 ); add_action( 'wp_footer', [ $this, 'print_footer_scripts' ], 100 ); } /** * Register and enqueues public-facing JavaScript files. * * @return void */ public function enqueue_scripts(): void { if ( Conditional::is_amp() ) { return; } wp_register_script( ADVADS_SLUG . '-advanced-js', sprintf( '%spublic/assets/js/advanced%s.js', ADVADS_BASE_URL, defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min' ), [ 'jquery' ], ADVADS_VERSION, false ); $privacy = Advanced_Ads_Privacy::get_instance(); $privacy_options = $privacy->options(); $privacy_options['enabled'] = ! empty( $privacy_options['enabled'] ); $privacy_options['state'] = $privacy->get_state(); wp_localize_script( ADVADS_SLUG . '-advanced-js', 'advads_options', [ 'blog_id' => get_current_blog_id(), 'privacy' => $privacy_options, ] ); $frontend_picker = Params::cookie( 'advads_frontend_picker' ); $activated_js = apply_filters( 'advanced-ads-activate-advanced-js', isset( Advanced_Ads::get_instance()->options()['advanced-js'] ) ); if ( $activated_js || ! empty( $frontend_picker ) ) { wp_enqueue_script( ADVADS_SLUG . '-advanced-js' ); } wp_register_script( ADVADS_SLUG . '-frontend-picker', sprintf( '%spublic/assets/js/frontend-picker%s.js', ADVADS_BASE_URL, defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min' ), [ 'jquery', ADVADS_SLUG . '-advanced-js' ], ADVADS_VERSION, false ); if ( ! empty( $frontend_picker ) ) { wp_enqueue_script( ADVADS_SLUG . '-frontend-picker' ); } wp_advads()->registry->enqueue_script( 'find-adblocker' ); } /** * Print public-facing JavaScript in the HTML head. * * @return void */ public function print_head_scripts(): void { printf( '', esc_html( WordPress::get_site_domain() ), esc_html( ADVADS_VERSION ) ); if ( Conditional::is_amp() ) { return; } $frontend_prefix = wp_advads()->get_frontend_prefix(); ob_start(); ?> %s', file_get_contents( $file_path ) // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents ) ); // phpcs:enable WordPress.Security.EscapeOutput.OutputNotEscaped } }