context = $context; if ( ! $authentication ) { $authentication = new Authentication( $this->context ); } $this->authentication = $authentication; } /** * Registers functionality through WordPress hooks. * * @since 1.0.0 */ public function register() { // Enqueue gtag script for Site Kit admin screens. add_action( 'googlesitekit_enqueue_screen_assets', function () { $this->print_gtag_script(); } ); // Enqueue gtag script for additional areas. add_action( 'admin_enqueue_scripts', function () { $current_screen = get_current_screen(); if ( ! in_array( $current_screen->id, array( 'dashboard', 'plugins' ), true ) ) { return; } $this->print_gtag_script(); if ( ! $this->authentication->is_authenticated() ) { $this->print_standalone_event_tracking_script(); } } ); add_filter( 'googlesitekit_admin_data', function ( $data ) { return $this->inline_js_admin_data( $data ); } ); add_action( 'init', function () { $this->register_settings(); } ); } /** * Is tracking active for this plugin install? * * @since 1.0.0 * * @return bool True if tracking enabled, and False if not. */ public function is_active() { return (bool) get_option( self::TRACKING_OPTIN_KEY, false ); } /** * Output Tag Manager gtag.js if tracking is enabled. * * @since 1.0.0 */ private function print_gtag_script() { // Only load if tracking is active. $tracking_active = $this->is_active(); if ( ! $tracking_active ) { return; } ?> is_active(); $data['trackingID'] = self::TRACKING_ID; return $data; } /** * Register tracking settings and allow access from Rest API. * * @since 1.0.0 */ private function register_settings() { $args = array( 'type' => 'boolean', 'description' => __( 'Allowing tracking of anonymous usage stats.', 'google-site-kit' ), 'default' => false, 'show_in_rest' => true, ); register_setting( 'google-site-kit', self::TRACKING_OPTIN_KEY, $args ); } }