Thanks everyone for their help!
I have it working MUCH more simply now, thanks to suggestions here.
Yes, ordinarily it would be AND, but in this case, while I'm testing some things, it's OR.
Age will be a big factor in what I'm working on, used on several pages, therefore I wanted to do it as a function, which I now have.
PHP Code:
function calculate_age($userinfo)
{
global $vbulletin;
if (!isset($vbulletin->userinfo['birthday']))
{
return false;
} else {
$bday = explode('-', $vbulletin->userinfo['birthday']);
$bday = $bday[2] . '-' . $bday[0] . '-' . $bday[1];
$age = floor( (strtotime(date('Y-n-j')) - strtotime($bday)) / 31536000);
return $age;
}
}
And I have my permissions code:
PHP Code:
$age = calculate_age($userinfo);
// access permissions
if ((!is_member_of($vbulletin->userinfo, 5, 6, 7)) OR ($age < 18))
{
// give no permission unless in usergroup x, y, or z
print_no_permission();
}
Thanks again, all!
The only thing I'm confused about now is why I can't seem to use $userinfo['birthday'] instead of $vbulletin->userinfo['birthday'] in my function file.
If it's not to much to ask, what is the explanation of that?
--------------- Added 27 Jul 2014 at 15:22 ---------------
Stupid question. I just figured it out.
--------------- Added 27 Jul 2014 at 15:57 ---------------
Even better age code, borrowed from class_userprofile.php and modified to fit:
PHP Code:
function prepare_age($userinfo)
{
global $vbulletin;
$userinfo = $vbulletin->userinfo;
$userid = $userinfo['userid'];
$age = '';
if ($userinfo['birthday'])
{
$bday = explode('-', $userinfo['birthday']);
$year = vbdate('Y', TIMENOW, false, true, true, false, $userid);
$month = vbdate('n', TIMENOW, false, true, true, false, $userid);
$day = vbdate('j', TIMENOW, false, true, true, false, $userid);
if ($year > $bday[2] AND $bday[2] != '0000')
{
$age = $year - $bday[2];
if ($month < $bday[0] OR ($month == $bday[0] AND $day < $bday[1]))
{
$age--;
}
}
}
return $age;
}