add( self::TELEMETRY_BACKGROUND_PROCESSOR, function () use ( $container ) { return new Telemetry_Background_Processor( $container->get( Utils_Service_Provider::COMMON ), $container->get( Logging_Service_Provider::DEBUG_LOGGER ), $container->get( Utils_Service_Provider::CACHE ) ); } ); $container->add( self::TELEMETRY_SNAPSHOT_DATA, function () use ( $container ) { return new Telemetry_Snapshot_Data( $container->get( Utils_Service_Provider::COMMON ), $container->get( Logging_Service_Provider::DEBUG_LOGGER ), $container->get( Connector_Service_Provider::EVENT_MODEL ), $container->get( Connector_Service_Provider::DATA_STORE_ROUTER ) ); } ); $container->add( self::TELEMETRY_HANDLER, function () use ( $container ) { return new Telemetry_Handler( $container->get( Logging_Service_Provider::DEBUG_LOGGER ), $container->get( self::TELEMETRY_SNAPSHOT_DATA ), $container->get( self::TELEMETRY_BACKGROUND_PROCESSOR ) ); } ); } public function init( Service_Container $container ) { add_action( self::TELEMETRY_SCHEDULED_TASK, function () use ( $container ) { $container->get( self::TELEMETRY_HANDLER )->handle(); } ); add_filter( 'gravity_api_remote_post_params', function ( $post ) use ( $container ) { /** * @var Telemetry_Snapshot_Data $snapshot */ $snapshot = $container->get( self::TELEMETRY_SNAPSHOT_DATA ); $snapshot->record_data(); $telemetry_data = $snapshot->get_existing_data(); // safety check in case data doesn't exist. if ( empty( $telemetry_data ) ) { return $post; } unset( $telemetry_data['snapshot']['gravitysmtp_config'] ); return $telemetry_data['snapshot']; } ); if ( ! wp_next_scheduled( self::CRON_HOOK ) ) { wp_schedule_event( time(), 'daily', self::CRON_HOOK ); } add_action( self::CRON_HOOK, function() { do_action( self::TELEMETRY_SCHEDULED_TASK ); } ); } }