You are here

function security_questions_user_answer_form_submit in Security Questions 7

Same name and namespace in other branches
  1. 6 security_questions.module \security_questions_user_answer_form_submit()

Submit handler for answer form.

1 string reference to 'security_questions_user_answer_form_submit'
security_questions_form_user_login_alter in ./security_questions.module
Implements hook_form_FORM_ID_alter() for user_login().

File

./security_questions.module, line 669
Main module file for security_questions.

Code

function security_questions_user_answer_form_submit($form, &$form_state) {

  // Grab the user id from the form during login.
  if (isset($form_state['security_questions']['account'])) {
    $account = $form_state['security_questions']['account'];
  }
  else {
    global $user;
    $account = $user;
  }

  // Get required number of questions and set a counter.
  $required = security_questions_required_for_user($account);
  $i = 1;

  // Insert each answer into the database.
  while ($i <= $required) {

    // If the user entered their own questions, we need to input them into the
    // security questions table for storage.
    if ($form_state['input']['security_question_id_' . $i] == 'other') {
      db_insert('security_questions')
        ->fields(array(
        'security_question' => $form_state['input']['security_question_user_question_' . $i],
        'uid' => $account->uid,
      ))
        ->execute();

      // Get the question id for the question we just put in, so we can store
      // the user's answer.
      $qid = db_query('SELECT security_question_id FROM {security_questions}
                       WHERE security_question = :question', array(
        ':question' => $form_state['input']['security_question_user_question_' . $i],
      ))
        ->fetchField();

      // Reset the question id for input into the answers table.
      $form_state['input']['security_question_id_' . $i] = $qid;
    }
    db_insert('security_questions_answers')
      ->fields(array(
      'uid' => $account->uid,
      'security_question_id' => $form_state['input']['security_question_id_' . $i],
      'user_answer' => $form_state['input']['security_question_user_answer_' . $i],
    ))
      ->execute();
    $i++;
  }
}