function showPrePostPermissions(&$pptest, &$pdgroup, $lPPTestID)
{
    //---------------------------------------------------------------------
    //
    //---------------------------------------------------------------------
    // show group membership
    $attributes = new stdClass();
    $attributes->divID = 'groupDiv';
    $attributes->divImageID = 'groupDivImg';
    $attributes->bStartOpen = true;
    openBlock('Permissions Groups', '', $attributes);
    $opts = new stdClass();
    $opts->strSafeName = htmlspecialchars($pptest->strTestName);
    $opts->lCntGroupMembership = $pdgroup->lCntGroupMembership;
    $opts->inGroups =& $pdgroup->inGroups;
    $opts->enumGType = CENUM_CONTEXT_USER;
    $opts->enumSubGroup = CENUM_CONTEXT_CPREPOST;
    $opts->lFID = $lPPTestID;
    $opts->strFrom = 'clientPrePostRecView';
    $opts->lNumGroups = $pdgroup->lNumGroups;
    $opts->groupList =& $pdgroup->groupList;
    $opts->postText = '<b>Note:</b> pre/post test records that belong to no user groups are<br>
                                  accessible to admins and all users.<br>';
    if ($pdgroup->lCntGroupMembership == 0) {
        echoT('<i>Admins and all users can access this pre/post test.</i><br>' . "\n");
    } else {
        echoT('<i>Admins and users who are members of <b>ALL</b> the following groups can access this pre/post test:</i><br>' . "\n");
        echoT(strGroupMembership($opts));
    }
    echoT(strDDLAvailableGroups($opts));
    $attributes->bCloseDiv = true;
    closeBlock($attributes);
}
$opts->strSafeName = htmlspecialchars($schema[$lTableID]->strUserTableName);
$opts->lCntGroupMembership = $lCntGroupMembership;
$opts->inGroups =& $inGroups;
$opts->enumGType = CENUM_CONTEXT_USER;
$opts->enumSubGroup = CENUM_CONTEXT_PTABLE;
$opts->lFID = $lTableID;
$opts->strFrom = 'pTableRecView';
$opts->lNumGroups = $lNumGroups;
$opts->groupList =& $groupList;
$opts->postText = '<b>Note:</b> personalized tables that belong to no user groups are<br>
                               accessible to admins and all users.<br>';
if ($lCntGroupMembership == 0) {
    echoT('<i>Admins and all users can access this table.</i><br>' . "\n");
} else {
    echoT('<i>Admins and users who are members of <b>ALL</b> the following groups can access this table:</i><br>' . "\n");
    echoT(strGroupMembership($opts));
}
echoT(strDDLAvailableGroups($opts));
$attributes->bCloseDiv = true;
closeBlock($attributes);
function showUFFieldInfo(&$clsRpt, &$schema, $lTableID)
{
    //---------------------------------------------------------------------
    //
    //---------------------------------------------------------------------
    $table =& $schema[$lTableID];
    $attributes = new stdClass();
    $attributes->lTableWidth = '';
    $attributes->divID = 'fieldsDev';
    $attributes->divImageID = 'fieldsDivImg';
    openBlock('Fields for table <b>' . htmlspecialchars($table->strUserTableName) . '</b>', strLinkView_UFFields($lTableID, 'View fields', true, '') . '&nbsp;' . strLinkView_UFFields($lTableID, 'View fields', false, ''), $attributes);