function pmpro_set_current_user() { //this code runs at the beginning of the plugin global $current_user, $wpdb; get_currentuserinfo(); $id = intval($current_user->ID); if ($id) { $current_user->membership_level = pmpro_getMembershipLevelForUser($current_user->ID); if (!empty($current_user->membership_level)) { $current_user->membership_level->categories = pmpro_getMembershipCategories($current_user->membership_level->ID); } $current_user->membership_levels = pmpro_getMembershipLevelsForUser($current_user->ID); } //hiding ads? $hideads = pmpro_getOption("hideads"); $hideadslevels = pmpro_getOption("hideadslevels"); if (!is_array($hideadslevels)) { $hideadslevels = explode(",", $hideadslevels); } if ($hideads == 1 && pmpro_hasMembershipLevel() || $hideads == 2 && pmpro_hasMembershipLevel($hideadslevels)) { //disable ads in ezAdsense if (class_exists("ezAdSense")) { global $ezCount, $urCount; $ezCount = 100; $urCount = 100; } //disable ads in Easy Adsense (newer versions) if (class_exists("EzAdSense")) { global $ezAdSense; $ezAdSense->ezCount = 100; $ezAdSense->urCount = 100; } //set a global variable to hide ads global $pmpro_display_ads; $pmpro_display_ads = false; } else { global $pmpro_display_ads; $pmpro_display_ads = true; } do_action("pmpro_after_set_current_user"); }
function pmpro_search_filter($query) { global $current_user, $wpdb, $pmpro_pages; //hide pmpro pages from search results if (!$query->is_admin && $query->is_search && empty($query->query['post_parent'])) { if (empty($query->query_vars['post_parent'])) { //avoiding post_parent queries for now $query->set('post__not_in', $pmpro_pages); } $query->set('post__not_in', $pmpro_pages); // id of page or post } //hide member pages from non-members (make sure they aren't hidden from members) if (!$query->is_admin && !$query->is_singular && empty($query->query['post_parent']) && (empty($query->query_vars['post_type']) || in_array($query->query_vars['post_type'], apply_filters('pmpro_search_filter_post_types', array("page", "post"))))) { //get page ids that are in my levels $levels = pmpro_getMembershipLevelsForUser($current_user->ID); $my_pages = array(); if ($levels) { foreach ($levels as $key => $level) { //get restricted posts for level $sql = "SELECT page_id FROM {$wpdb->pmpro_memberships_pages} WHERE membership_id=" . $current_user->membership_level->ID; $member_pages = $wpdb->get_col($sql); $my_pages = array_unique(array_merge($my_pages, $member_pages)); } } //get hidden page ids if (!empty($my_pages)) { $sql = "SELECT page_id FROM {$wpdb->pmpro_memberships_pages} WHERE page_id NOT IN(" . implode(',', $my_pages) . ")"; } else { $sql = "SELECT page_id FROM {$wpdb->pmpro_memberships_pages}"; } $hidden_page_ids = array_values(array_unique($wpdb->get_col($sql))); if ($hidden_page_ids) { if (empty($query->query_vars['post_parent'])) { //avoiding post_parent queries for now $query->set('post__not_in', $hidden_page_ids); } } //get categories that are filtered by level, but not my level global $pmpro_my_cats; $pmpro_my_cats = array(); if ($levels) { foreach ($levels as $key => $level) { $member_cats = pmpro_getMembershipCategories($level->id); $pmpro_my_cats = array_unique(array_merge($pmpro_my_cats, $member_cats)); } } //get hidden cats if (!empty($pmpro_my_cats)) { $sql = "SELECT category_id FROM {$wpdb->pmpro_memberships_categories} WHERE category_id NOT IN(" . implode(',', $pmpro_my_cats) . ")"; } else { $sql = "SELECT category_id FROM {$wpdb->pmpro_memberships_categories}"; } $hidden_cat_ids = array_values(array_unique($wpdb->get_col($sql))); //make this work if ($hidden_cat_ids) { $query->set('category__not_in', $hidden_cat_ids); //filter so posts in this member's categories are allowed add_action('posts_where', 'pmpro_posts_where_unhide_cats'); } } return $query; }