Skip to content

Commit 0f6c71b

Browse files
authored
fix(syn-subscriptions): improve membership sync, detecting non-expired but cancelled subscriptions (#172)
1 parent 10b84cb commit 0f6c71b

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

src/acore-wp-plugin/src/Hooks/Subscriptions/sync_subscription.php

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,22 @@ function bl_cron_exec_sync_subs(...$args)
4545

4646
// get all active accounts and membership level
4747
$query = $wpdb->prepare(
48-
"SELECT user_id, wu.user_login AS AccountName, membership_level_id, status
49-
FROM " . $wpdb->prefix . "pmpro_subscriptions wpmu
50-
LEFT JOIN " . $wpdb->prefix . "users wu ON wpmu.user_id = wu.ID
51-
WHERE wpmu.status=\"active\";"
48+
"
49+
SELECT user_id, wu.user_login AS AccountName, membership_level_id, \"active\" AS `status`
50+
FROM " . $wpdb->prefix . "pmpro_subscriptions wps
51+
LEFT JOIN " . $wpdb->prefix . "users wu ON wps.user_id = wu.ID
52+
WHERE wps.status=\"active\"
53+
UNION
54+
SELECT user_id, wu.user_login AS AccountName, membership_id AS membership_level_id, \"active\" AS `status`
55+
FROM " . $wpdb->prefix . "pmpro_memberships_users wpmu
56+
LEFT JOIN " . $wpdb->prefix . "users wu ON wpmu.user_id = wu.ID
57+
WHERE wpmu.enddate > NOW() AND wpmu.status=\"active\";
58+
"
5259
);
60+
// note: the second sql query after UNION is to catch memberships that are not recurring (one-time payments) but still active
61+
// for example, the users that cancelled their recurring subscription but still have access until the end of the paid period
62+
// \"active\" AS `status` -> this is for fixing "ERROR 1271 (HY000): Illegal mix of collations for operation 'UNION'"
63+
5364
$subscriptions_accounts_rows = $wpdb->get_results($query);
5465

5566
$all_active_accounts = '';

0 commit comments

Comments
 (0)