I think the best bet would be to extend the extMemberCheck snippet as I have said before. I am taking stabs in the dark on this, but below is what I have with a small php echo in there to maybe help.
echo htmlentities(var_dump($memberCheck));
<?php
#::::::::::::::::::::::::::::::::::::::::
# Snippet name: extMemberCheck
# Short Desc: checks logged in groups and displays a chunk
# Version: 1.0
# Created By Richard Pugh from the MemberCheck 1.0 snippet
# MemberCheck Created By Ryan Thrash (vertexworks.com)
# Sanitized By Jason Coward (opengeek.com)
#
# Date: February 5th, 2007
#
# Changelog:
# Feb 05, 07 -- initial release
#
#::::::::::::::::::::::::::::::::::::::::
# Description:
# Checks to see if users belong to a certain group and
# displays the specified chunk if they do. Performs
# several sanity checks and allows multiple uses on a page.
#
# Two modes of use are possible, if only one output chunk
# is specified then this snippet functions as the original
# MemberCheck returning the chunk if the user is in ANY
# of the groups specified.
#
# If several chunks are specified there must be a one to one
# correspondence between groups and chunks, i.e. there must be
# as many values specified in groups as in chunks. The snippet
# then checks if the user is in the groups one by one and
# outputs the corresponding chunk, i.e. if the user is part of
# group2 then chunk2 will be output. If you have a hierarchy
# of user groups please ensure that they are placed in
# descending order of importance in the group array as the
# first matching value found is always returned.
#
# Params:
# &groups [array] (REQUIRED)
# array of webuser group-names to check against
#
# &chunk [array] (REQUIRED)
# name of the chunk to use if passes the check
#
# &ph [string] (optional)
# name of the placeholder to set instead of directly returning chunk
#
# &debug [boolean] (optional | false)
# turn on debug mode for extra troubleshooting
#
# Example Usage:
#
# [[extMemberCheck? &groups=`group1, group2` &chunk=`chunk1, chunk2` &ph=`putItHere` &debug=`true`]]
#
# This would place the chunk 'chunk1' into a placeholder (called 'putItHere') if the user
# is logged in as a webuser and is a member of the 'group1' group. If he is a member of the
# 'group2' group, then 'chunk2' will be returned.
#
# If the chunk array contains only one value, then if the user is in either 'group1' OR 'group2'
# then the value of 'chunk1' is returned ( as in the original MemberCheck ).
#
# The optional debug parameter can be used to display informative error messages
# when configuring this snippet for your site. For example, if the developer had
# mistakenly typed 'groupX' for the first group, and none existed with debug mode on,
# it would have returned the error message: The group 'groupX' could not be found....
#
#::::::::::::::::::::::::::::::::::::::::
# debug parameter
$debug = isset ($debug) ? $debug : false;
# check if inside manager
if ($m = $modx->insideManager()) {
return ''; # don't go any further when inside manager
}
if (!isset ($groups)) {
return $debug ? '<p>Error: No Group(s) Specified</p>' : '';
}
if (!isset ($chunk)) {
return $debug ? '<p>Error: No Chunk(s) Specified</p>' : '';
}
# check if default is set, if not sets value
$default = (isset($default))? $default : '';
# turn comma-delimited list of groups into an array
$groups = explode(',', $groups);
$chunk = explode(',', $chunk);
if (!class_exists('extMemberCheck')) {
class extMemberCheck {
var $allGroups = NULL;
var $debug;
function getInstance($debug) {
static $instance;
if (!isset ($instance)) {
$instance = new extMemberCheck($debug);
}
return $instance;
}
function extMemberCheck($debug = false) {
global $modx;
$this->debug = $debug;
if ($debug) {
$this->allGroups = array ();
$tableName = $modx->getFullTableName('webgroup_names');
$sql = "SELECT name FROM $tableName";
if ($rs = $modx->db->query($sql)) {
while ($row = $modx->db->getRow($rs)) {
array_push($this->allGroups, stripslashes($row['name']));
}
}
}
}
function isValidGroup($groupName) {
$isValid = !(array_search($groupName, $this->allGroups) === false);
return $isValid;
}
function getMemberChunk(& $groups, $chunk, $default) {
global $modx;
$o = '';
if (!is_array($chunk)) {
$o .= "<p>No chunk names were specified!</p>";
return $o;
}
if (!is_array($groups)) {
$o .= "<p>No group names were specified!</p>";
return $o;
}
if (count($groups) != count($chunk)) {
if (count($chunk) != 1) {
$o .= "<p>Number of group names and chunks must be the same!</p>";
return $o;
}
}
for ($i = 0; $i < count($groups); $i++) {
$groups[$i] = trim($groups[$i]); $chnk = trim($chunk[$i]);
if ($this->isValidGroup($groups[$i])) {
if (count($chunk) != 1) {
$group = array($groups[$i]);
$check = $modx->isMemberOfWebGroup($group);
if ($check) {
$chunkcheck = $modx->getChunk($chnk);
$o = ($chunkcheck) ? $chunkcheck : '';
if (!$chunkcheck)
$o .= $this->debug ? "<p>The chunk <strong>$chnk</strong> not found...</p>" : '';
return $o;
}
}
$check = $modx->isMemberOfWebGroup($groups);
$chunkcheck = $modx->getChunk($chnk);
$defaultcheck = $modx->getChunk($default);
$o .= ($check && $chunkcheck) ? $chunkcheck : '';
if (!$chunkcheck)
$o .= $this->debug ? "<p>The chunk <strong>$chnk</strong> not found...</p>" : '';
}
else
{
if ($defaultcheck && (strlen($default) >= 1)) {
$o .= ($defaultcheck) ? $defaultcheck : '';
}
if (!$defaultcheck && (strlen($default) >= 1)) {
$o .= $this->debug ? "<p>The default chunk <strong>$default</strong> not found...</p>" : '';
}
}
{
if ($this->debug) {
return "<p>The group <strong>" . $groups[$i] . "</strong> could not be found...</p>";
}
return $o;
}
}
}
}
}
$memberCheck = extMemberCheck :: getInstance($debug);
if (!isset ($ph)) {
echo htmlentities(var_dump($memberCheck));
return $memberCheck->getMemberChunk($groups, $chunk, $default);
} else {
$modx->setPlaceholder($ph, $memberCheck->getMemberChunk($groups, $chunk, $default));
return '';
}
?>