Created
February 6, 2017 17:11
-
-
Save bappi-d-great/d92e4b4846428c73f2de75696365f57f to your computer and use it in GitHub Desktop.
WPMU Membership integration in Pro Site: Assign a membership to site admins when a Pro Site level is upgraded, downgraded or removed.
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 | |
add_action( 'psts_withdraw', 'psts_withdraw_cb', 10, 2 ); | |
add_action( 'psts_upgrade', 'psts_upgrade_cb', 10, 3 ); | |
add_action( 'psts_downgrade', 'psts_downgrade_cb', 10, 3 ); | |
function psts_withdraw_cb( $blog_id, $new_expire ) | |
{ | |
assign_membership_to_admins( $blog_id ); | |
} | |
function psts_upgrade_cb( $blog_id, $new_level, $old_level ) | |
{ | |
assign_membership_to_admins( $blog_id, $new_level ); | |
} | |
function psts_downgrade_cb( $blog_id, $new_level, $old_level ) | |
{ | |
assign_membership_to_admins( $blog_id, $new_level ); | |
} | |
function assign_membership_to_admins( $blog_id, $pro_level = 0 ) | |
{ | |
/** | |
* Configure mapping pro level with membership ID | |
* | |
* Keys are pro level | |
* Values are membership ID | |
*/ | |
$level_map = array( | |
'1' => 251, | |
'2' => 265 | |
); | |
/** | |
* Define the site ID where membership is active | |
* | |
* Default main site is set | |
*/ | |
$main_site = defined( BLOG_ID_CURRENT_SITE ) && BLOG_ID_CURRENT_SITE ? BLOG_ID_CURRENT_SITE : 1; | |
switch_to_blog( $blog_id ); | |
$admins = get_users( array( 'role' => 'administrator' ) ); | |
restore_current_blog(); | |
foreach( $admins as $admin ) | |
{ | |
if( is_super_admin( $admin->ID ) ) continue; | |
add_user_to_blog( $main_site, $admin->ID, 'subscriber' ); | |
switch_to_blog( $main_site ); | |
$member = MS_Factory::load( 'MS_Model_Member', $admin->ID ); | |
foreach( $level_map as $level ) | |
{ | |
$member->drop_membership( $level ); | |
} | |
$member->add_membership( $level_map[$pro_level] ); | |
restore_current_blog(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment