samoht Posted October 15, 2009 Share Posted October 15, 2009 Hello all, I am trying to manipulate a plugin for membership restriction on a wp blog. The plugin works fine but servers up a whole custom page for blocking access. I want to send the restriction message within the site itself - so that the header footer and side bar still show. here is the function that protects the posts function aMemberProtect() { if (empty($this->amprotectamroot)) return; global $post; global $_product_id; // // Do not lock out the home page or archives if a protected post is on it... // if (!is_single() && !is_page()) return; // // OK, this is a post or a page...does it want protecting?... // $post_id = intval($post->ID); // // Get product ids from the old way of storing them... // $post_custom = get_post_custom($post_id); if (!empty($post_custom) && !empty($post_custom['amember_products'])) { $amember_products = trim($post_custom['amember_products'][0]); if (!empty($amember_products)) { $_product_id = explode(",",$amember_products); } } // end if need to protect with the old way // // Protect with the new method // $amproducts = get_post_meta($post_id, 'amprotect_amproducts', true); if (empty($amproducts) || !is_array($amproducts)) return; // // Ok, we need to protect this page with the aMember products specified... // foreach ($amproducts as $key=>$value) $_product_id[] = $key; $_product_id = array_unique($_product_id); if (empty($_product_id)) return; // not a protected post or page // // Set up the URL to this post or page... // $redirect2me = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $redirect2mee = urlencode($redirect2me); // // Check the aMember SESSION variables to see if this person is logged in or not. // $amemberuser = $_SESSION['_amember_user']; if (empty($amemberuser)) { // // Not logged in so redirect to login screen and then back to this post... // unset($_SESSION['_amember_user']); unset($_SESSION['_amember_product_ids']); unset($_SESSION['_amember_products']); unset($_SESSION['_amember_links']); unset($_SESSION['_amember_subscriptions']); header('Location:'.$this->amprotectamroot.'login.php?amember_redirect_url='.$redirect2mee); exit(); } else { // // Logged in so check products to see if member should be allowed access // $block = true; if (in_array('all',$_product_id)) { $block=false; // no need to check the rest } else { $numprods = 0; $prodnames = ''; foreach ($amemberuser['data']['status'] as $key=>$value) if ($value == 1 && in_array($key,$_product_id)) $block=false; } // end if all members can access or just those with certain products if ($block) { // // Build the link(s) to the products that the visitor is going to need to purchase // $alltheproducts = $this->amGetProducts($allthepricegroups); // get info out of amember about all the products $productnames = '<center><table><tr><td><ul>'."\n"; // list of products that can view this content $show2all = false; // are one of the products the "all" flag? $numcanview = 0; // the number of products that can view this post foreach ($_product_id as $pid) { $pid = trim(strtolower($pid)); // make sure no extra spaces and not "ALL" or something if ($pid=="all") { $show2all = true; // used later } else { $purl = $this->amprotectamroot.'member.php?price_group='.$allthepricegroups[$pid].'&product_id='.$pid; $productnames .= '<li><a href="'.$purl.'">'.$alltheproducts[$pid].'</a></li>'."\n"; $numcanview++; } } // end checking products $productnames .= '</ul></td></table></center>'."\n"; // echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"'."\n"; // echo ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'."\n"; // echo '<html xmlns="http://www.w3.org/1999/xhtml">'."\n"; // echo '<head>'."\n"; // echo '<title>Members Only</title>'."\n"; // echo '<style type="text/css">'."\n"; // echo '<!--'."\n"; // echo '* { margin: 0; padding: 0; }'."\n"; // echo 'body { font-family: Georgia, Arial, Helvetica, Sans Serif; font-size: 100%; }'."\n"; // echo 'a { color: #08658F; font-weight:bold; }'."\n"; // echo 'a:hover { color: #0092BF; }'."\n"; // echo 'h1, h2 { color: #08658F; }'."\n"; // echo 'h1 { font-size: 300%; padding: .5em 0; }'."\n"; // echo 'hr { background-color: #08658F; max-width:600px; }'."\n"; // echo '-->'."\n"; // echo '</style>'."\n"; // echo '</head>'."\n"; // echo '<body>'."\n"; echo '<center><div id="accessdenied">'."\n"; echo '<h1>Members Only:</h1>'."\n"; echo '<a href="'.$redirect2me.'">'.$redirect2me.'</a>'."\n"; echo '<br /> <br /><hr /><br />'."\n"; echo '<table>'."\n"; echo '<tr><td align="center">'."\n"; echo 'Access to this web page is not allowed with your current active membership.<br /> <br />'."\n"; echo 'Please go to your <a href="'.$this->amprotectamroot.'member.php">Membership Information Page</a> to add or renew'; if ($numcanview < 1 || $show2all) { echo '.'."\n"; } else { echo ' : <br /> <br />'.$productnames.'</a>.'."\n"; } echo '</td></tr></table>'."\n"; echo '</div></center>'."\n"; echo '</body>'."\n"; echo '</html>'."\n"; exit(); // do not show anything else } // end if access is not allowed } // end if member is signed in or not } // end function aMemberProtect I tried just adding an include(header.php) right into this code but that did not help it just gave me a blank page. Any Ideas? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.