Created
May 31, 2019 02:53
-
-
Save LMNTL/7ec9271579f7e652d09b766d8e69d041 to your computer and use it in GitHub Desktop.
Show sponsored seats on the main account page in PMPro settings and other selected pages that contain the [pmpro_account] shortcode.
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
/* | |
Show sponsored seats on the account page in PMPro settings and on other selected pages. | |
Useful for multi-language sites that have different account pages per language. | |
Requires PMPro and Sponsored Seats Add On. | |
*/ | |
function my_pmprosm_the_content_account_page($content) | |
{ | |
global $post, $pmpro_pages, $current_user, $wpdb; | |
/* | |
An array of post IDs for any additional account pages. | |
*/ | |
$account_pages = array( 1, 2 ); | |
if(!is_admin() && ( $post->ID == $pmpro_pages['account'] || in_array($post->ID, $account_pages) )) | |
{ | |
//what's their code? | |
$code_id = pmprosm_getCodeByUserID($current_user->ID); | |
$pmprosm_values = pmprosm_getValuesByMainLevel($current_user->membership_level->ID); | |
if(!empty($code_id) && !empty($pmprosm_values)) | |
{ | |
$code = $wpdb->get_row("SELECT * FROM $wpdb->pmpro_discount_codes WHERE id = '" . esc_sql($code_id) . "' LIMIT 1"); | |
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; | |
//no uses for this code | |
if(empty($code->uses)) | |
return $content; | |
$code_urls = array(); | |
$pmpro_levels = pmpro_getAllLevels(false, true); | |
foreach($sponsored_level_ids as $sponsored_level_id) | |
{ | |
$level_name = $pmpro_levels[$sponsored_level_id]->name; | |
$code_urls[] = array("name"=>$level_name, "url"=>pmpro_url("checkout", "?level=" . $sponsored_level_id . "&discount_code=" . $code->code)); | |
} | |
ob_start(); | |
$limit = 1; | |
if(isset($pmprosm_values['max_seats'])) | |
$limit = $pmprosm_values['max_seats']; | |
//get members | |
$member_ids = pmprosm_getChildren($current_user->ID); | |
?> | |
<div id="pmpro_account-sponsored" class="pmpro_box"> | |
<h3><?php _e("Sponsored Members", "pmpro_sponsored_members");?></h3> | |
<p><?php printf(__("Give this code to your sponsored members to use at checkout: <strong>%s</strong></p>", "pmpro_sponsored_members"), $code->code);?> | |
<?php if(count($code_urls) > 1) { ?> | |
<p><?php _e("Or provide one of these direct links to register:", "pmpro_sponsored_members");?></p> | |
<?php } else { ?> | |
<p><?php _e("Or provide this direct link to register:", "pmpro_sponsored_members");?></p> | |
<?php } ?> | |
<ul> | |
<?php foreach($code_urls as $code_url) { ?> | |
<li><?php echo $code_url['name'];?>: <strong><a target="_blank" href="<?php echo $code_url['url'];?>"><?php echo $code_url['url'];?></a></strong></li> | |
<?php } ?> | |
</ul> | |
<div class="pmpro_message pmpro_default"> | |
<?php if(empty($code->uses)) { ?> | |
<?php _e("This code has unlimited uses.", "pmpro_sponsored_members");?> | |
<?php } else { ?> | |
<?php printf(__("%s/%s uses.", "pmpro_sponsored_members"), count($member_ids), $code->uses);?> | |
<?php } ?> | |
</div> | |
<?php if(!empty($member_ids)) { ?> | |
<p><strong><?php __("Your Sponsored Members", "pmpro_sponsored_members");?></strong></p> | |
<ul> | |
<?php | |
foreach($member_ids as $member_id) | |
{ | |
$member = get_userdata($member_id); | |
if(empty($member)) | |
continue; | |
?> | |
<li><?php echo $member->display_name;?></li> | |
<?php | |
} | |
?> | |
</ul> | |
<?php } ?> | |
</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 remove_pmprosm_the_content_filter(){ | |
remove_filter("the_content", "pmprosm_the_content_account_page", 30); | |
} | |
add_action('plugins_loaded', 'remove_pmprosm_the_content_filter'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment