Forked from kimwhite/my-sponsor-area-account-pages.php
Last active
August 16, 2024 12:58
-
-
Save MaximilianoRicoTabo/42cc306303f386ee42c766be17be1ad8 to your computer and use it in GitHub Desktop.
This recipe remove the default code that adds the sponsor area to membership account page ( forked and adapted to v3.1 UI )
This file contains hidden or 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 | |
/** | |
* This recipe remove the default code that addes the sponsor area to membership account page | |
* Needed when using WPML | |
* | |
* You can add this recipe to your site by creating a custom plugin | |
* or using the Code Snippets plugin available for free in the WordPress repository. | |
* Read this companion article for step-by-step directions on either method. | |
* https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/ | |
*/ | |
remove_filter( "the_content", "pmprosm_the_content_account_page", 30 ); | |
function my_pmprosm_the_content_account_page( $content ) { | |
global $post, $pmpro_pages, $current_user, $wpdb; | |
//Bail if not the account page or user is admin | |
if( is_admin() || ! is_page( $pmpro_pages['account'] ) ) { | |
return $content; | |
} | |
// Get the code ID for the current user. | |
$code_id = pmprosm_getCodeByUserID( $current_user->ID ); | |
if ( isset( $current_user->membership_level->ID ) ) { | |
$pmprosm_values = pmprosm_getValuesByMainLevel( $current_user->membership_level->ID ); | |
} else { | |
$pmprosm_values = ''; | |
} | |
// Bail if no code ID or no values. | |
if( empty( $code_id ) || empty( $pmprosm_values ) ) { | |
return $content; | |
} | |
$code = pmprosm_getDiscountCodeByCodeID( $code_id ); | |
if( ! is_array( $pmprosm_values['sponsored_level_id'] ) ) { | |
$sponsored_level_ids = array($pmprosm_values['sponsored_level_id']); | |
} else { | |
$sponsored_level_ids = $pmprosm_values['sponsored_level_id']; | |
} | |
// No sponsored levels to use codes for. | |
if( empty( $sponsored_level_ids ) || empty( $sponsored_level_ids[0] ) ) { | |
return $content; | |
} | |
$code_urls = pmprosm_get_checkout_urls( $code ); | |
ob_start(); | |
$limit = 1; | |
if( isset( $pmprosm_values['max_seats'] ) ) { | |
$limit = $pmprosm_values['max_seats']; | |
} | |
// Removing a sponsored member? | |
if( isset( $_REQUEST['pmprosm_remove_member_id'] ) && isset( $_REQUEST['pmprosm_remove_member_level'] ) ) { | |
// Check nonce. | |
if( wp_verify_nonce( $_REQUEST['_wpnonce'], 'pmprosm_remove_member' ) ) { | |
// Nonce is good. Remove the member. | |
$removed = pmprosm_remove_member_from_seat( intval( $_REQUEST['pmprosm_remove_member_id'] ), intval( $_REQUEST['pmprosm_remove_member_level'] ), $current_user->ID ); | |
if ( $removed !== false ) { | |
$member = get_userdata( intval( $_REQUEST['pmprosm_remove_member_id'] ) ); | |
$removed_message = sprintf( __( 'Sponsored User: %s was removed. (Membership Level: %s)', 'pmpro-sponsored-members' ), $member->display_name, intval( $_REQUEST['pmprosm_remove_member_level'] ) ); | |
} | |
} | |
} | |
// Get members. | |
$member_ids = pmprosm_getChildren($current_user->ID); | |
?> | |
<div id="pmpro_account-sponsored" class="pmpro_card"> | |
<h3 class="pmpro_card_title" ><?php esc_html_e( "Sponsored Seats", "pmpro-sponsored-members" );?></h3> | |
<div class="pmpro_card_content"> | |
<?php if (empty($pmprosm_values['hide_display_discount_code']) || $pmprosm_values['hide_display_discount_code'] === false ) { ?> | |
<p><?php printf(esc_html__("Give this code to your sponsored members to use at checkout: %s", "pmpro-sponsored-members"), '<strong>' . $code->code . '</strong>');?></p> | |
<?php if(count($code_urls) > 1) { ?> | |
<p><?php esc_html_e("Or provide one of these direct links to register:", "pmpro-sponsored-members");?></p> | |
<?php } else { ?> | |
<p><?php esc_html_e("Or provide this direct link to register:", "pmpro-sponsored-members");?></p> | |
<?php } ?> | |
<ul> | |
<?php foreach($code_urls as $code_url) { ?> | |
<li><?php echo esc_html( $code_url['name'] );?>: <strong><a target="_blank" href="<?php echo esc_url( $code_url['url'] );?>"><?php echo esc_url( $code_url['url'] );?></a></strong></li> | |
<?php } ?> | |
</ul> | |
<?php } // hide_display_discount_code ?> | |
<?php if(empty($code->uses)) { ?> | |
<?php esc_html_e( "This code has unlimited uses.", "pmpro-sponsored-members" );?> | |
<?php } else { ?> | |
<?php printf( esc_html__("%s/%s uses.", "pmpro-sponsored-members" ), count( $member_ids ), $code->uses );?> | |
<?php } ?> | |
</div> | |
<?php | |
// Did we remove a child earlier? | |
if ( ! empty( $removed_message ) ) { | |
?> | |
<div class="pmpro_message pmpro_success"><?php echo esc_html( $removed_message ); ?></div> | |
<?php | |
} | |
// use same account display as in admin | |
if ( ! empty( $member_ids ) ) { | |
echo "<hr />"; | |
echo my_pmprosm_display_sponsored_accounts( $member_ids ); | |
} | |
?> | |
</div> <!-- end pmpro_account-sponsored --> | |
<?php | |
$temp_content = ob_get_contents(); | |
ob_end_clean(); | |
$content = str_replace( '<!-- end pmpro_account-profile -->', '<!-- end pmpro_account-profile -->' . $temp_content, $content ); | |
return $content; | |
} | |
add_filter( "the_content", "my_pmprosm_the_content_account_page", 30 ); | |
function my_pmprosm_display_sponsored_accounts( $member_ids ) { | |
global $current_user; | |
// Make sure we have something to display. | |
if ( empty( $member_ids) ) { | |
return ''; | |
} | |
// Display sponsored members. | |
$count = 0; | |
ob_start(); | |
?> | |
<div class="pmpro_card_content"> | |
<h4><?php esc_html_e( "Sponsored Members", "pmpro-sponsored-members" );?></h2> | |
<div class="pmpro-sponsored-members_children" <?php if( count( $member_ids ) > 4 ) { ?>style="height: 150px; overflow: auto;"<?php } ?>> | |
<table class="wp-list-table widefat striped" width="100%" cellpadding="0" cellspacing="0" border="0"> | |
<thead> | |
<tr> | |
<th><?php esc_html_e( 'Date', 'pmpro-sponsored-members' ); ?></th> | |
<th><?php esc_html_e( 'Name', 'pmpro-sponsored-members' ); ?></th> | |
<th><?php esc_html_e( 'Email', 'pmpro-sponsored-members' ); ?></th> | |
<th><?php esc_html_e( 'Level', 'pmpro-sponsored-members' ); ?></th> | |
<th></th> | |
</tr> | |
</thead> | |
<tbody> | |
<?php | |
foreach($member_ids as $member_id) | |
{ | |
$member = get_userdata($member_id); | |
if(empty($member)) { | |
continue; | |
} | |
$member->membership_level = pmpro_getMembershipLevelForUser($member_id); | |
// Figure out URL based on where we are. | |
if ( $_SERVER['SCRIPT_NAME'] == '/wp-admin/user-edit.php' ) { | |
// Editing another user in the admin. | |
$qargs = array( | |
'user_id' => intval($_REQUEST['user_id']), | |
'pmprosm_remove_member_id' => $member->ID, | |
'pmprosm_remove_member_level' => $member->membership_level->id | |
); | |
$remove_url = add_query_arg( $qargs, admin_url('user-edit.php') ); | |
} elseif ( $_SERVER['SCRIPT_NAME'] == '/wp-admin/profile.php' ) { | |
// Editing yourself on profile.php | |
$qargs = array( | |
'pmprosm_remove_member_id' => $member->ID, | |
'pmprosm_remove_member_level' => $member->membership_level->id | |
); | |
$remove_url = add_query_arg( $qargs, admin_url('profile.php') ); | |
} else { | |
// Assume frontend account page. | |
$qargs = array( | |
'user_id' => $current_user->ID, | |
'pmprosm_remove_member_id' => $member->ID, | |
'pmprosm_remove_member_level' => $member->membership_level->id | |
); | |
$remove_url = add_query_arg( $qargs, pmpro_url('account') ); | |
} | |
$remove_url = wp_nonce_url( $remove_url, 'pmprosm_remove_member' ); | |
?> | |
<tr<?php if($count++ % 2 == 1) { ?> class="alternate"<?php } ?>> | |
<td><?php echo date(get_option("date_format"), $member->membership_level->startdate); ?></td> | |
<td><?php echo esc_html( $member->display_name ); ?></td> | |
<td> | |
<?php if ( current_user_can( 'edit_users' ) ) { ?> | |
<a href="<?php echo get_edit_user_link($member_id); ?>"><?php echo esc_html( $member->user_email ); ?></a> | |
<?php } else { ?> | |
<?php echo esc_html( $member->user_email ); ?> | |
<?php } ?> | |
</td> | |
<td><?php echo esc_html( $member->membership_level->name ); ?></td> | |
<td> | |
<?php | |
$delete_text = esc_attr__('Are you sure you want to remove this member?', 'pmpro-sponsored-members' ); | |
?> | |
<a href="<?php echo $remove_url; ?>" onclick="<?php echo esc_js('return confirm("' . $delete_text . '");'); ?>"><?php _e( 'Remove', 'pmpro-sponsored-members'); ?></a> | |
</td> | |
</tr> | |
<?php | |
} | |
?> | |
</tbody> | |
</table> | |
</div> | |
</div> | |
<?php | |
$content = ob_get_contents(); | |
ob_end_clean(); | |
return $content; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment