Created
September 8, 2022 11:32
-
-
Save abmiller99/409a3acee809bcfd40a389e040f062c2 to your computer and use it in GitHub Desktop.
Memberpress + Learndash + Mailster + WP Discourse
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// https://docs.memberpress.com/article/325-action-hooks-in-memberpress | |
add_action('mepr-event-create', 'listen_to_mepr_events'); | |
function listen_to_mepr_events($event) { | |
$obj = $event->get_data(); | |
//$obj might be a MeprTransaction object or a MeprSubscription object | |
if(!($obj instanceof MeprTransaction) && !($obj instanceof MeprSubscription)) { | |
write_log("*** nothing here to do if we're not dealing with a txn or sub ***"); //write to log | |
return; // nothing here to do if we're not dealing with a txn or sub | |
} | |
$member = $obj->user(); // get member object data from event object | |
$user_id = $member->ID; // get user ID from object | |
$subscriber = mailster('subscribers')->get_by_wpid($user_id); // Find Mailster ID from Member object | |
$courses_id = array(2943,2945,2947,2950,13519,17025,17376,20007,22050,22117,22173,22877,23723); | |
// Learndash Course ids: | |
// 2943 = Secrets of Charleston | |
// 2945 = Secrets of Improvisation | |
// 2947 = World of Kicks | |
// 2950 = Solo Jazz 101 | |
// 13519 = Variation LAB Vol 1 | |
// 17025 = Variation LAB Vol 2 | |
// 17376 = Variation LAB Vol 3 | |
// 20007 = Variation LAB Vol 4 | |
// 22050 = WOA vol 1 | |
// 22117 = WOA vol 2 | |
// 22173 = WOA vol 3 | |
// 22877 = Practice Games | |
// 23723 = JazzArms | |
if($member->is_active_on_membership($obj)) { //active membership | |
// List ids: | |
// 1 = Just Newsletter | |
// 2 = Premium Subscibers | All Website Members | |
// 4 = 6-Month Members | |
// 5 = Premium Members | |
// 6 = Limited Members | |
// 7 = KSOS Legacy | |
// 8 = Ult Sec Bundle | |
// 18 = Promotions | |
// 22 = Annual Members | |
// 32 = Monthly Members | |
// Tag ids: | |
// 1 = Limited | |
// 2 = Monthly | |
// 3 = 6-Month | |
// 4 = Annual | |
// 5 = Just Newsletter | |
// 6 = KSoS legacy | |
// 7 = Premium | |
// 8 = Promotions | |
// 9 = Ultimate Secrets Bundle | |
if(3780 == $obj->product_id) { //MONTHLY Membership | |
$list_id_from = array(1,4,5,6,7,18,22); //Remove all other lists | |
$list_id_to = array(2,32); //All Website Members + Monthly Members | |
$remove_tags = array(1,3,4,5,6,7,8,9); //Remove all other tags | |
$add_tags = 2; //Monthly Members | |
$add_group = 'Ksenia_Basic'; // Discourse Group Name | |
$remove_groups = ['Ksenia_Essential','Ksenia_Premium','Ksenia_Free','Ksenia_Annual']; | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
// Update access to the courses | |
foreach ($courses_id as $course_id) { | |
ld_update_course_access($user_id, $course_id, $remove = false); | |
} | |
// add to Discourse Group | |
\WPDiscourse\Utilities\Utilities::add_user_to_discourse_group( $user_id, $add_group ); | |
// remove from Discourse Groups | |
\WPDiscourse\Utilities\Utilities::remove_user_from_discourse_group( $user_id, $remove_groups ); | |
} | |
else if(3847 == $obj->product_id) { //6 Month (Essential) Membership | |
$list_id_from = array(1,18,32,22,5,7,6); //Remove all other lists | |
$list_id_to = array(2,4); //All Website Members + 6 Month Members | |
$remove_tags = array(1,2,4,5,6,7,8,9); //Remove all other tags | |
$add_tags = 3; //6 Month Members | |
$add_group = 'Ksenia_Essential'; // Discourse Group Name | |
$remove_groups = ['Ksenia_Basic','Ksenia_Premium','Ksenia_Free','Ksenia_Annual']; | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
foreach ($courses_id as $course_id) { | |
ld_update_course_access($user_id, $course_id, $remove = false); | |
} | |
// add to Discourse Group | |
\WPDiscourse\Utilities\Utilities::add_user_to_discourse_group( $user_id, $add_group ); | |
// remove from Discourse Groups | |
\WPDiscourse\Utilities\Utilities::remove_user_from_discourse_group( $user_id, $remove_groups ); | |
} | |
else if(20865 == $obj->product_id) { //Annual Membership | |
$list_id_from = array(1,18,4,32,5,7,6); //Just Newsletter + Promotions | |
$list_id_to = array(2,22); //All Website Members + Annual Members | |
$remove_tags = array(1,2,3,5,6,7,8,9); //Remove all other tags | |
$add_tags = 4; //6 Month Members | |
$add_group = 'Ksenia_Annual'; // Discourse Group Name | |
$remove_groups = ['Ksenia_Basic','Ksenia_Essential','Ksenia_Premium','Ksenia_Free']; | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
foreach ($courses_id as $course_id) { | |
ld_update_course_access($user_id, $course_id, $remove = false); | |
} | |
// add to Discourse Group | |
\WPDiscourse\Utilities\Utilities::add_user_to_discourse_group( $user_id, $add_group ); | |
// remove from Discourse Groups | |
\WPDiscourse\Utilities\Utilities::remove_user_from_discourse_group( $user_id, $remove_groups ); | |
} | |
else if(3848 == $obj->product_id) { //Premium Membership | |
$list_id_from = array(1,18,4,32,22,7,6); //Just Newsletter + Promotions | |
$list_id_to = array(2,5); //All Website Members + Premium Members | |
$remove_tags = array(1,2,3,4,5,6,8,9); //Remove all other tags | |
$add_tags = 7; //6 Month Members | |
$add_group = 'Ksenia_Premium'; // Discourse Group Name | |
$remove_groups = ['Ksenia_Basic','Ksenia_Essential','Ksenia_Annual','Ksenia_Free']; | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
// add to Discourse Group | |
\WPDiscourse\Utilities\Utilities::add_user_to_discourse_group( $user_id, $add_group ); | |
// remove from Discourse Groups | |
\WPDiscourse\Utilities\Utilities::remove_user_from_discourse_group( $user_id, $remove_groups ); | |
} | |
else if(1405 == $obj->product_id) { //Ult Sec Bundle 1 | |
$list_id_from = array(1,18); //Just Newsletter + Promotions | |
$list_id_to = array(2,8); //All Website Members + Ultimate Secrets Bundle (legacy) | |
$remove_tags = array(1,2,3,4,5,6,7,8); //Remove all other tags | |
$add_tags = 9; //Ultimate Secrets Bundle | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
} | |
else if(1595 == $obj->product_id) { //Ult Sec Bundle 2 | |
$list_id_from = array(1,18); //Just Newsletter + Promotions | |
$list_id_to = array(2,8); //All Website Members + Ultimate Secrets Bundle (legacy) | |
$remove_tags = array(1,2,3,4,5,6,7,8); //Remove all other tags | |
$add_tags = 9; //Ultimate Secrets Bundle | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
} | |
else if(1918 == $obj->product_id) { //Expanded Sec Bundle | |
$list_id_from = array(1,18); //Just Newsletter + Promotions | |
$list_id_to = array(2,8); //All Website Members + Ultimate Secrets Bundle (legacy) | |
$remove_tags = array(1,2,3,4,5,6,7,8); //Remove all other tags | |
$add_tags = 9; //Ultimate Secrets Bundle | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
} | |
else if(1987 == $obj->product_id) { //Ksenia’s Secrets of Solo: 1 Year Membership (legacy) | |
$list_id_from = array(1,18); //Just Newsletter + Promotions | |
$list_id_to = array(2,7); //All Website Members + KSoS (legacy) | |
$remove_tags = array(1,2,3,4,5,7,8,9); //Remove all other tags | |
$add_tags = 6; //KSoS legacy | |
$add_group = 'Ksenia_Premium'; // Discourse Group Name | |
$remove_groups = ['Ksenia_Basic','Ksenia_Essential','Ksenia_Annual','Ksenia_Free']; | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
// add to Discourse Group | |
\WPDiscourse\Utilities\Utilities::add_user_to_discourse_group( $user_id, $add_group ); | |
// remove from Discourse Groups | |
\WPDiscourse\Utilities\Utilities::remove_user_from_discourse_group( $user_id, $remove_groups ); | |
} | |
else if(1719 == $obj->product_id) { //Ksenia’s Secrets of Solo: 6 Month Membership (legacy) | |
$list_id_from = array(1,18,); //Just Newsletter + Promotions | |
$list_id_to = array(2,7); //All Website Members + KSoS (legacy) | |
$remove_tags = array(1,2,3,4,5,7,8,9); //Remove all other tags | |
$add_tags = 6; //KSoS legacy | |
$add_group = 'Ksenia_Essential'; // Discourse Group Name | |
$remove_groups = ['Ksenia_Basic','Ksenia_Premium','Ksenia_Free','Ksenia_Annual']; | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
// add to Discourse Group | |
\WPDiscourse\Utilities\Utilities::add_user_to_discourse_group( $user_id, $add_group ); | |
// remove from Discourse Groups | |
\WPDiscourse\Utilities\Utilities::remove_user_from_discourse_group( $user_id, $remove_groups ); | |
} | |
else if(1674 == $obj->product_id) { //Ksenia’s Secrets of Solo: All Access Membership (legacy) | |
$list_id_from = array(1,18); //Just Newsletter + Promotions | |
$list_id_to = array(2,7); //All Website Members + KSoS (legacy) | |
$remove_tags = array(1,2,3,4,5,7,8,9); //Remove all other tags | |
$add_tags = 6; //KSoS legacy | |
$add_group = 'Ksenia_Basic'; // Discourse Group Name | |
$remove_groups = ['Ksenia_Essential','Ksenia_Premium','Ksenia_Free','Ksenia_Annual']; | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
// add to Discourse Group | |
\WPDiscourse\Utilities\Utilities::add_user_to_discourse_group( $user_id, $add_group ); | |
// remove from Discourse Groups | |
\WPDiscourse\Utilities\Utilities::remove_user_from_discourse_group( $user_id, $remove_groups ); | |
} | |
else if(1403 == $obj->product_id) { //Secrets of Improvisation PRO | |
$list_id_from = array(1,18); //Just Newsletter + Promotions | |
$list_id_to = array(2,7); //All Website Members + KSoS (legacy) | |
$remove_tags = array(1,2,3,4,5,7,8,9); //Remove all other tags | |
$add_tags = 6; //KSoS legacy | |
$add_group = 'Ksenia_Basic'; // Discourse Group Name | |
$remove_groups = ['Ksenia_Essential','Ksenia_Premium','Ksenia_Free','Ksenia_Annual']; | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
// add to Discourse Group | |
\WPDiscourse\Utilities\Utilities::add_user_to_discourse_group( $user_id, $add_group ); | |
// remove from Discourse Groups | |
\WPDiscourse\Utilities\Utilities::remove_user_from_discourse_group( $user_id, $remove_groups ); | |
} | |
else if(1404 == $obj->product_id) { //Secrets of Improvisation ULTIMATE | |
$list_id_from = array(1,18); //Just Newsletter + Promotions | |
$list_id_to = array(2,7); //All Website Members + KSoS (legacy) | |
$remove_tags = array(1,2,3,4,5,7,8,9); //Remove all other tags | |
$add_tags = 6; //KSoS legacy | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
} | |
else if(408 == $obj->product_id) { //Secrets of the Charleston 20’s PRO | |
$list_id_from = array(1,18); //Just Newsletter + Promotions | |
$list_id_to = array(2,7); //All Website Members + KSoS (legacy) | |
$remove_tags = array(1,2,3,4,5,7,8,9); //Remove all other tags | |
$add_tags = 6; //KSoS legacy | |
$add_group = 'Ksenia_Basic'; // Discourse Group Name | |
$remove_groups = ['Ksenia_Essential','Ksenia_Premium','Ksenia_Free','Ksenia_Annual']; | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
// add to Discourse Group | |
\WPDiscourse\Utilities\Utilities::add_user_to_discourse_group( $user_id, $add_group ); | |
// remove from Discourse Groups | |
\WPDiscourse\Utilities\Utilities::remove_user_from_discourse_group( $user_id, $remove_groups ); | |
} | |
else if(409 == $obj->product_id) { //Secrets of the Charleston 20’s ULTIMATE | |
$list_id_from = array(1,18); //Just Newsletter + Promotions | |
$list_id_to = array(2,7); //All Website Members + KSoS (legacy) | |
$remove_tags = array(1,2,3,4,5,7,8,9); //Remove all other tags | |
$add_tags = 6; //KSoS legacy | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
} | |
else if(407 == $obj->product_id) { //Limited Membership | |
$list_id_from = 2; //All Website Members | |
$list_id_to = 6; //Limited Members | |
$remove_tags = array(2,3,4,5,6,7,8,9); //Remove all other tags | |
$add_tags = 1; //Limited Membership | |
$add_group = 'Ksenia_Free'; // Discourse Group Name | |
$remove_groups = ['Ksenia_Essential','Ksenia_Premium','Ksenia_Basic','Ksenia_Annual']; | |
mailster( 'subscribers' )->unassign_tags( $subscriber->ID, $remove_tags ); | |
mailster( 'subscribers' )->assign_tags( $subscriber->ID, $add_tags, true ); | |
mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to, true ); | |
foreach ($courses_id as $course_id) { | |
ld_update_course_access($user_id, $course_id, $remove = true); | |
} | |
// add to Discourse Group | |
\WPDiscourse\Utilities\Utilities::add_user_to_discourse_group( $user_id, $add_group ); | |
// remove from Discourse Groups | |
\WPDiscourse\Utilities\Utilities::remove_user_from_discourse_group( $user_id, $remove_groups ); | |
} | |
//write to log | |
write_log('*** ---- SUCCESS ---- ***'); | |
write_log('*-- The event object --*'); | |
write_log($event); | |
write_log('*-- for member object--*'); | |
write_log($member); | |
write_log('*-- WP User ID: --*'); | |
write_log($user_id); | |
write_log('*-- Mailster subscriber ID: --*'); | |
write_log($subscriber); | |
write_log('*-- list (removed) --*'); | |
write_log($list_id_from); | |
write_log('*-- list (added) --*'); | |
write_log($list_id_to); | |
write_log('*-- tags (removed) --*'); | |
write_log($remove_tags); | |
write_log('*-- tags (added) --*'); | |
write_log($add_tags); | |
write_log('*-- Jam Circle Group (added) --*'); | |
write_log($add_group); | |
write_log('*-- Jam Circle Group (removed) --*'); | |
write_log($remove_groups); | |
write_log('*** ---- END ---- ***'); | |
} | |
else { //no matches | |
// $subscriber = mailster('subscribers')->get_by_wpid(); | |
// $list_id_from = 2; //All Website Members | |
// $list_id_to = 1; //Just Newsletter | |
// mailster( 'subscribers' )->unassign_lists( $subscriber->ID, $list_id_from ); | |
// mailster( 'subscribers' )->assign_lists( $subscriber->ID, $list_id_to ); | |
// write_log("**NOT FOUND** The event '$event' for member {'$member'} removed from {'$list_id_from'} & added to list {'$list_id_to'}"); //write to log | |
write_log("**NOT FOUND - NO MATCHES for (is_active_on_membership) **"); //write to log | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment