Yes, the full set of things you could check for is below, adapted from qa_permit_error(...):
if (
QA_FINAL_EXTERNAL_USERS || // email confirm not currently supported by single sign-on integration
(qa_get_logged_in_level()>=QA_USER_LEVEL_EXPERT) || // if user assigned to a higher level, no need
(qa_get_logged_in_flags() & QA_USER_FLAGS_EMAIL_CONFIRMED) || // actual confirmation
(!qa_opt('confirm_user_emails')) // if the email confirm option is off, we can't ask it of the user
) {
// we behave as if the user has confirmed their email address
}
Sorry about that - much simpler to use:
qa_set_option('my_temp_permit_option', QA_PERMIT_CONFIRMED, false);
// false here means option not stored in database
if (!qa_user_permit_error('my_temp_permit_option')) {
// we behave as if the user has confirmed their email address
}