Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
5 / 5
CRAP
n/a
0 / 0
Automattic\Jetpack\PremiumAnalytics\register_dashboard_feature_flags
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
1
Automattic\Jetpack\PremiumAnalytics\is_dashboard_composition_enabled
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
Automattic\Jetpack\PremiumAnalytics\is_dashboard_unlocked_for_a11n
n/a
0 / 0
n/a
0 / 0
1
Automattic\Jetpack\PremiumAnalytics\configure_dashboard_policy
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
Automattic\Jetpack\PremiumAnalytics\inject_dashboard_policy_script_data
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2/**
3 * Dashboard policy: the dashboard feature flags and the composition flag's script-data bridge.
4 *
5 * @package automattic/jetpack-premium-analytics
6 */
7
8namespace Automattic\Jetpack\PremiumAnalytics;
9
10use Automattic\Jetpack\Feature_Flags\Feature_Flags;
11
12/**
13 * Name of the feature flag that offers adding, removing and resetting widgets.
14 */
15const DASHBOARD_COMPOSITION_FLAG = 'premium-analytics-dashboard-composition';
16
17/**
18 * Registers the dashboard feature flag.
19 *
20 * Runs on every request so the flag stays discoverable wherever flags are read or
21 * toggled: REST, WP-CLI and the WordPress.com control screen included.
22 *
23 * @return void
24 */
25function register_dashboard_feature_flags() {
26    Feature_Flags::register(
27        DASHBOARD_COMPOSITION_FLAG,
28        array(
29            'default'     => true,
30            'description' => 'Offer adding, removing and resetting widgets on the analytics dashboard, on top of moving and resizing them.',
31            'owner'       => 'jetpack-premium-analytics',
32        )
33    );
34}
35
36/**
37 * Whether the dashboard offers adding, removing and resetting widgets.
38 *
39 * @return bool
40 */
41function is_dashboard_composition_enabled() {
42    return Feature_Flags::is_enabled( DASHBOARD_COMPOSITION_FLAG );
43}
44
45/**
46 * No-op kept for older copies of the package, whose dashboard-sections.php calls it after
47 * skipping its include of this file.
48 *
49 * @deprecated 0.10.0 The preview scope it opened is gone.
50 *
51 * @return bool
52 */
53function is_dashboard_unlocked_for_a11n() {
54    return false;
55}
56
57/**
58 * Configures the dashboard policy script data.
59 *
60 * @return void
61 */
62function configure_dashboard_policy() {
63    add_filter( 'jetpack_admin_js_script_data', __NAMESPACE__ . '\\inject_dashboard_policy_script_data', 20 );
64}
65
66/**
67 * Injects the flag's answer into JetpackScriptData for the dashboard policy.
68 *
69 * @param array $data The script data passed by the assets package.
70 * @return array
71 */
72function inject_dashboard_policy_script_data( array $data ): array {
73    if ( ! isset( $data['premium_analytics'] ) || ! is_array( $data['premium_analytics'] ) ) {
74        $data['premium_analytics'] = array();
75    }
76
77    $data['premium_analytics']['dashboard_composition_enabled'] = is_dashboard_composition_enabled();
78
79    return $data;
80}