Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions src/Admin/Provisioning.php
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ private function init() {
add_action( 'update_option_plausible_analytics_settings', [ $this, 'maybe_create_goals' ], 10, 2 );
add_action( 'update_option_plausible_analytics_settings', [ $this, 'maybe_delete_goals' ], 11, 2 );
add_action( 'update_option_plausible_analytics_settings', [ $this, 'maybe_create_custom_properties' ], 11, 2 );
add_filter( 'pre_update_option_plausible_analytics_settings', [ $this, 'maybe_enable_customer_user_roles' ] );
}

/**
Expand Down Expand Up @@ -373,4 +374,32 @@ public function maybe_create_custom_properties( $old_settings, $settings ) {

$this->client->enable_custom_property( $create_request );
}

/**
* Auto-enables tracking of the 'Customer' user role for WC, 'Subscriber' user role for EDD and 'EDD_Subscriber' user role for EDD Recurring
* if Revenue tracking and one of these plugins is enabled.
*
* @param $settings
*
* @return array
*/
public function maybe_enable_customer_user_roles( $settings ) {
$enhanced_measurements = $settings[ 'enhanced_measurements' ];

if ( Helpers::is_enhanced_measurement_enabled( 'revenue', $enhanced_measurements ) ) {
if ( Integrations::is_wc_active() && ! in_array( 'customer', $settings[ 'tracked_user_roles' ] ) ) {
$settings[ 'tracked_user_roles' ][] = 'customer';
}

if ( Integrations::is_edd_active() && ! in_array( 'subscriber', $settings[ 'tracked_user_roles' ] ) ) {
$settings[ 'tracked_user_roles' ][] = 'subscriber';
}

if ( Integrations::is_edd_recurring_active() && ! in_array( 'edd_subscriber', $settings[ 'tracked_user_roles' ] ) ) {
$settings[ 'tracked_user_roles' ][] = 'edd_subscriber';
}
}

return $settings;
}
}
8 changes: 8 additions & 0 deletions src/Integrations.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,12 @@ public static function is_edd_active() {
public static function is_form_submit_active() {
return apply_filters( 'plausible_analytics_integrations_form_submit', Helpers::is_enhanced_measurement_enabled( 'form-completions' ) );
}

/**
* Checks if EDD Recurring is installed and activated.
* @return mixed|null
*/
public static function is_edd_recurring_active() {
return apply_filters( 'plausible_analytics_integrations_edd_recurring', function_exists( 'EDD_Recurring' ) && Helpers::is_enhanced_measurement_enabled( 'revenue' ) );
}
}
35 changes: 35 additions & 0 deletions tests/integration/Admin/ProvisioningTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -123,4 +123,39 @@ public function testCreateGoalRequest() {

$this->assertInstanceOf( 'Plausible\Analytics\WP\Client\Model\GoalCreateRequestCustomEvent', $custom_event );
}

/**
* @see Provisioning::maybe_enable_customer_user_roles()
* @return void
*/
public function testMaybeEnableCustomerUserRole() {
$class = new Provisioning( false );
$settings = [];
$settings[ 'enhanced_measurements' ] = [ 'revenue' ];
$settings[ 'tracked_user_roles' ] = [];

add_filter( 'plausible_analytics_integrations_woocommerce', '__return_true' );

$new_settings = $class->maybe_enable_customer_user_roles( $settings );

remove_filter( 'plausible_analytics_integrations_woocommerce', '__return_true' );

$this->assertTrue( in_array( 'customer', $new_settings[ 'tracked_user_roles' ] ) );

add_filter( 'plausible_analytics_integrations_edd', '__return_true' );

$new_settings = $class->maybe_enable_customer_user_roles( $settings );

remove_filter( 'plausible_analytics_integrations_edd', '__return_true' );

$this->assertTrue( in_array( 'subscriber', $new_settings[ 'tracked_user_roles' ] ) );

add_filter( 'plausible_analytics_integrations_edd_recurring', '__return_true' );

$new_settings = $class->maybe_enable_customer_user_roles( $settings );

remove_filter( 'plausible_analytics_integrations_edd_recurring', '__return_true' );

$this->assertTrue( in_array( 'edd_subscriber', $new_settings[ 'tracked_user_roles' ] ) );
}
}