Skip to content

Instantly share code, notes, and snippets.

@bappi-d-great
Created February 6, 2017 17:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bappi-d-great/d92e4b4846428c73f2de75696365f57f to your computer and use it in GitHub Desktop.
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.
<?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