Skip to content

Instantly share code, notes, and snippets.

@ameeker
Last active August 29, 2015 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ameeker/5ef1a9f22ceb77805df3 to your computer and use it in GitHub Desktop.
Save ameeker/5ef1a9f22ceb77805df3 to your computer and use it in GitHub Desktop.
PMP + BuddyPress
<?php
/*
Plugin Name: PMPro BuddyPress Customizations
Plugin URI: http://www.paidmembershipspro.com/wp/pmpro-buddypress-customizations/
Description: Example code to lock down parts of BuddyPress with PMPro
Version: 0.1
Author: Stranger Studios
Author URI: http://www.strangerstudios.com
*/
/*
Copyright 2010 Stranger Studios (email : jason@strangerstudios.com)
*/
//disable buddy press admin bar
define('BP_DISABLE_ADMIN_BAR', true);
//hide some pages in buddypress
function pmpros_hide_buddy_press_pages()
{
$uri = $_SERVER['REQUEST_URI'];
$not_allowed = array("/^\/members\/$/", "/^\/activity\/$/","/^\/groups\/$/", "/\/groups\/create\//", "/\/members\/[^\/]*\/groups\//", "/\/members\/[^\/]*\/settings\//");
foreach($not_allowed as $check)
{
if(preg_match($check, $uri))
{
wp_redirect(home_url());
exit;
}
}
//redirect groups to the forum
$checks = array("/^\/groups\/([^\/]*)\/$/", "/^\/groups\/([^\/]*)\/home\/$/", "/^\/groups\/([^\/]*)\/members\/$/");
foreach($checks as $check)
{
$matched = preg_match($check, $uri, $matches);
if($matches[1])
{
wp_redirect(home_url("/groups/" . $matches[1] . "/forum/"));
exit;
}
}
//lock the forums down
if(strtolower(substr($uri, 0, 16)) == "/groups/members/")
{
//make sure they are a member
if(!pmpro_hasMembershipLevel())
{
wp_redirect(pmpro_url("levels"));
exit;
}
}
}
add_action("init", "pmpros_hide_buddy_press_pages");
//add all members to the members buddy press group
function pmpros_add_members()
{
global $wpdb, $current_user;
if($current_user->user_login != "admin")
return false;
$users = $wpdb->get_results("SELECT * FROM $wpdb->pmpro_memberships_users WHERE membership_id = 2");
foreach($users as $user)
{
$already_member = $wpdb->get_var("SELECT id FROM wp_bp_groups_members WHERE user_id = '" . $user->user_id . "' LIMIT 1");
if(!$already_member)
{
$sqlQuery = "INSERT INTO wp_bp_groups_members (group_id, user_id, user_title, is_confirmed) VALUES('3', '" . $user->user_id . "', 'Member', '1')";
//echo $sqlQuery . "<hr />";
$wpdb->query($sqlQuery);
}
}
}
//add_action("init", "pmpros_add_members");
//add new members to the members buddy press group
function pmpros_pmpro_after_checkout($user_id)
{
global $wpdb;
$sqlQuery = "SELECT id FROM wp_bp_groups_members WHERE group_id = '3' AND user_id = '" . $user_id . "' LIMIT 1";
$already_member = $wpdb->get_var($sqlQuery);
if(!$already_member)
{
$sqlQuery = "INSERT INTO wp_bp_groups_members (group_id, user_id, user_title, is_confirmed) VALUES('3', '" . $user_id . "', 'Member', '1')";
$wpdb->query($sqlQuery);
}
}
//add_action("pmpro_after_checkout", "pmpros_pmpro_after_checkout");
//remove canceled members from the members buddy press group
function pmpros_pmpro_after_change_membership_level($level_id, $user_id)
{
global $wpdb;
if($level_id == 1 )
{
$sqlQuery = "SELECT id FROM wp_bp_groups_members WHERE group_id = '3' AND user_id = '" . $user_id . "' LIMIT 1";
$already_member = $wpdb->get_var($sqlQuery);
if(!$already_member)
{
$sqlQuery = "INSERT INTO wp_bp_groups_members (group_id, user_id, user_title, is_confirmed) VALUES('3', '" . $user_id . "', 'Member', '1')";
$wpdb->query($sqlQuery);
}
}
else
{
$sqlQuery = "DELETE FROM wp_bp_groups_members WHERE group_id = 3 AND user_id = '" . $user_id . "' LIMIT 1";
$wpdb->query($sqlQuery);
}
}
add_action("pmpro_after_change_membership_level", "pmpros_pmpro_after_change_membership_level", 10, 2);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment