Skip to content

Instantly share code, notes, and snippets.

@LMNTL
Created May 31, 2019 02:53
Show Gist options
  • Save LMNTL/7ec9271579f7e652d09b766d8e69d041 to your computer and use it in GitHub Desktop.
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.
/*
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