I can't believe it doesn't treat permissions in the same way that vBulletin does. Sadly, I've only just found out it doesn't work as it should after I've set everything else up, spending 3 hours in the process.
Likewise, I'll gladly donate $25 IF you get this to work correctly with vBulletin's permission system, frankly I'm amazed you haven't done so already, given the pledges on this thread.
Not to mention, I'd have thought the majority of people installing this system will want to tie it into the subscription system & thus the usergroups.
Erm, I think I've done it anyway! It didn't appear to be very hard to do - so I'm thinking I've missed something! But it appears to work on my setup anyway....
Delete this out of the mod_arcade.php file...
Code:
$DB->query("SELECT m.id, m.name, m.posts, m.arcade_ban, m.times_played, m.is_arcade_mod AS is_mod,
m.fav_games AS favs, m.user_sort, m.user_order, m.user_g_pp, m.membergroupids,
m.user_s_pp, m.def_g_cat, m.game_skin, m.arcade_mod_privs, m.arcade_pmactive, g.g_access_cp AS is_admin,
g.arcade_access, g.p_require, g.max_play, g.ppd_require, g.ibpa_cats AS allowed_categories
FROM ibf_members AS m
LEFT JOIN ibf_groups AS g
ON (m.mgroup = g.g_id)
WHERE id=".$ibforums->member['id']." LIMIT 0, 1");
$this->user = $DB->fetch_row();
// use ON (m.membergroupids = g.g_id) in above Query for secondary Usergroup
and replace with
Code:
// Mod by MGSteve to support vBulletin Secondary Groups.
// We don't limit the number of rows returned now, so we'll get one row for each usergroup they're
// part of. So, we save the first row as we did before, but we then go through & merge all the usergroup category
// permissions and save this in the allowed_categories field of the $this->user array.
$DB->query("SELECT m.id, m.name, m.posts, m.arcade_ban, m.times_played, m.is_arcade_mod AS is_mod,
m.fav_games AS favs, m.user_sort, m.user_order, m.user_g_pp, m.membergroupids,
m.user_s_pp, m.def_g_cat, m.game_skin, m.arcade_mod_privs, m.arcade_pmactive, g.g_access_cp AS is_admin,
g.arcade_access, g.p_require, g.max_play, g.ppd_require, g.ibpa_cats AS allowed_categories
FROM ibf_members AS m, ibf_groups AS g
WHERE
(m.mgroup = g.g_id OR m.membergroupids = g.g_id)
AND
id={$ibforums->member['id']}");
// Ok, how many rows have we got?
$nRowMax = $DB->get_num_rows();
$this->user = $DB->fetch_row();
if ($nRowMax > 1)
{
// No point doing this if we've only returned one row!!
for ($nRowCnt = 0;$nRowCnt < $nRowMax;$nRowCnt++)
{
if ($nRowCnt == 0)
// We've already got the first row!
$Row = $this->user;
else
$Row = $DB->fetch_row();
$Cats[] = $Row['allowed_categories'];
}
// Ok, now collapse the array down into a Comma Seperated String (as stored in the DB)
$Cats = implode(',',$Cats);
// And save this back over the allowed_categories field in the first row.
$this->user['allowed_categories'] = $Cats;
unset($Cats);
unset($Row);
unset($nRowCnt);
unset($nRowMax);
}