public function checkDob()
{
if ($this->isChanged('dob_day') || $this->isChanged('dob_month') || $this->isChanged('dob_year'))
{
if (!$this->get('dob_day') || !$this->get('dob_month'))
{
$this->set('dob_day', 0);
$this->set('dob_month', 0);
$this->set('dob_year', 0);
}
else
{
$year = $this->get('dob_year');
if (!$year)
{
$year = 2008; // pick a leap year to be sure
}
else if ($year < 100)
{
$year += ($year < 20 ? 2000 : 1900);
$this->set('dob_year', $year);
}
if ($year > intval(date('Y')) || $year < 1900 || !checkdate($this->get('dob_month'), $this->get('dob_day'), $year)
// exactly check the current year
|| (
$year == intval(date('Y'))
&& (
$this->get('dob_month') > intval(date('n'))
|| (
$this->get('dob_month') == intval(date('n')) && $this->get('dob_day') > intval(date('j'))
)
)
)
)
{
if ($this->_importMode)
{
// don't error, wipe it out
$this->set('dob_day', 0);
$this->set('dob_month', 0);
$this->set('dob_year', 0);
}
else
{
$this->error(new XenForo_Phrase('please_enter_valid_date_of_birth'), 'dob');
}
return false;
}
}
}
return true;
}