UBB.Dev
Posted By: Calpy Rant: Still Frustrated With UBB7.x Groups Setup - 08/22/2007 1:25 AM
Arrgh, ever since I upgraded from UBB 6.5b5 long long ago, the change from having a user's groups listed as a string (ie: -3-5-7-) to a sequence of DB entries has made several of my most important revenue-generating hacks and mods impossible. I was told that this change made it possible to have "more groups", but I personally will never use more than 10, and even if I were using 50 groups, the change has made it impossible for me to do anything with whatever groups I have (aside from UBB's built in group-based forum access permissions).

There is no simple way (ie: UBB6.5's calling U_Groups and searching for the significant one) to make this or that thing conditional to a member belonging to a certain group any more. No more group-specific vanity images (that people were willing to pay for), no more unlimited edit time or other perks for members of a specific paying group. For the longest time now, I've had to handle every one of those things manually, and every time I go back into the code and look at automating it, I end up giving up in frustration because I'm a decent modder, but not a full up php programmer. ARRGH!

Can anyone share a simple snippet of multi-use UBB 7x code that checks for group membership in such a way that results are usable in a basic IF conditional, along the lines of this UBB6.5 gem:
PHP Code
$user = $userob -> authenticate("U_TextCols, U_TextRows, U_Preview,U_Groups");
$Username = $user['U_Username'];

// If they are special - give them longer edit time - by JoshPet
if (strstr($user['U_Groups'],"-5-")) {
$config['edittime'] = 99999;
}

Code
$user_group_strings = array();

$query = "
SELECT GROUP_ID, USER_ID
FROM {$config['TABLE_PREFIX']}GROUPS
WHERE USER_ID in ( ? )
GROUP BY USER_ID
";

$sth_groups = $dbh->do_placeholder_query($query, array($user_ids), __LINE__, __FILE__);

while ($result = $dbh->fetch_array($sth_groups)) {
if (!isset($user_group_strings["{$result['USER_ID']}"])) {
$user_group_strings["{$result['USER_ID']}"] = '-';
}

$user_group_strings[$result['USER_ID'] + 0] .= $result['GROUP_ID'] . '-';
}

// Check if user who is viewing this is in group 7
if (strstr($user_group_strings[$user['USER_ID'] + 0], "-7-")) {
// Yep
}

You need to know the user ids of the people you want to search for. So for editing pages, $user_ids is just an array containing $user['USER_ID'], where in showflat.inc.php, you'd want an array containing the user id of everyone who was on that page of the topic
Thanks, I'll try this.
A new mod that allows for some group based features

easy to expand upon that wink

and if you just want a nice snippet for "if user in group x", just open up ian spence's user auth mod (text)

and you will see it there smile
© UBB.Developers