Quick background:
In 3.0.7, I use the following code in phpinclude_start template. Every time a user logs on, it checks for our organization's member password entered into custom field5 in user's profile. The user is then added to or removed from a particular secondary usergroup depending on whether field5 matches the organization password stored in a custom $vbphrase. Membership in the secondary usergroup is used to control access to private forums and a couple of other things on the board. We do it this way because the password changes periodically and we wish all users to have to re-enter the current password into their profiles when the password is updated to prove they are current members and have the current password.
PHP Code:
// Add or remove user from secondary usergroup 12
// according to Org Pwd value in user's profile field5
if ($bbuserinfo[field5] == $vbphrase[org_member_password]) // Correct pwd in profile
{
if ($bbuserinfo[membergroupids] == '') // if no membergroupids already set, set to 12
{
$updatefields = $DB_site->query("
UPDATE user
SET membergroupids='12'
WHERE userid=$bbuserinfo[userid]
");
}
elseif ((strpos($bbuserinfo[membergroupids], '12'))=== false) // else if group 12 not found add 12 to list
{
$updatefields = $DB_site->query("
UPDATE user
SET membergroupids=concat_ws(',', membergroupids, '12')
WHERE userid=$bbuserinfo[userid]
");
}
}
else // Correct pwd not in profile
{
if ($bbuserinfo[membergroupids] == '12') // 12 only usergroup listed
{ // so blank it out
$updatefields = $DB_site->query("
UPDATE user
SET membergroupids=''
WHERE (userid=$bbuserinfo[userid])
");
}
else // 12 could be one of several
{ // remove it if it's there
$updatefields = $DB_site->query("
UPDATE user
SET membergroupids=if(instr(membergroupids, ',12') >0, replace(membergroupids, ',12', ''), replace(membergroupids, '12,', ''))
WHERE (userid=$bbuserinfo[userid]) AND (find_in_set('12', membergroupids))
");
}
}
}
The problem: This doesn't seem to work in 3.5.4. I'm guessing the problem is that the syntax needed to access the $bbuserinfo fields in the various if() statements has changed (??), and maybe the required query code itself. I can't activate 3.5.4 until I can get this working, as it is essential to the board. Can anybody suggest the needed code changes?
And as a secondary question, is there someplace I can relocate the code to that it would work instantly as the user updates his profile instead of waiting for his next login?