Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
13.64% covered (danger)
13.64%
3 / 22
40.00% covered (danger)
40.00%
2 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
Analytics
13.64% covered (danger)
13.64%
3 / 22
40.00% covered (danger)
40.00%
2 / 5
61.18
0.00% covered (danger)
0.00%
0 / 1
 init
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 get_tracking
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 record_user_event
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
12
 init_tracks_scripts
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 get_tracking_data
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2/**
3 * Simple wrapper for Tracks library
4 *
5 * @package automattic/jetpack-boost
6 */
7
8namespace Automattic\Jetpack_Boost\Lib;
9
10use Automattic\Jetpack\Connection\Manager;
11use Automattic\Jetpack\Tracking;
12use Jetpack_Options;
13use Jetpack_Tracks_Client;
14
15/**
16 * Class Analytics
17 */
18class Analytics {
19    /**
20     * Initialize tracking.
21     */
22    public function init() {
23        $tracks = self::get_tracking();
24
25        // For tracking events via js/ajax.
26        add_action( 'admin_enqueue_scripts', array( $tracks, 'enqueue_tracks_scripts' ) );
27    }
28
29    /**
30     * Get the tracking and manager objects for Boost.
31     */
32    public static function get_tracking() {
33        return new Tracking( 'jetpack_boost', new Manager( 'jetpack-boost' ) );
34    }
35
36    /**
37     * Record a user event.
38     *
39     * @param string $slug The event slug.
40     * @param array  $data Optional event data.
41     */
42    public static function record_user_event( $slug, $data = array() ) {
43        if ( ! isset( $data['boost_version'] ) && defined( 'JETPACK_BOOST_VERSION' ) ) {
44            $data['boost_version'] = JETPACK_BOOST_VERSION;
45        }
46
47        return self::get_tracking()->record_user_event( $slug, $data );
48    }
49
50    public static function init_tracks_scripts() {
51        $tracks = self::get_tracking();
52
53        $tracks::register_tracks_functions_scripts();
54
55        wp_enqueue_script( 'jp-tracks' );
56    }
57
58    public static function get_tracking_data() {
59        if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
60            $user      = wp_get_current_user();
61            $user_data = array(
62                'userid'   => $user->ID,
63                'username' => $user->user_login,
64            );
65            $blog_id   = get_current_blog_id();
66        } else {
67            $user_data = Jetpack_Tracks_Client::get_connected_user_tracks_identity();
68            $blog_id   = Jetpack_Options::get_option( 'id', 0 );
69        }
70
71        return array(
72            'userData' => $user_data,
73            'blogId'   => $blog_id,
74        );
75    }
76}