@@ -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