You are here

function security_questions_user_answers_save in Security Questions 7.2

Same name and namespace in other branches
  1. 6.2 security_questions.module \security_questions_user_answers_save()

Saves a full set of answers and custom questions for a user.

Parameters

$account: The user account object.

&$edit: The submitted question and answer values from the user form.

See also

security_questions_user_form()

2 calls to security_questions_user_answers_save()
security_questions_user_form_submit in ./security_questions.pages.inc
Submission handler for the user's security questions form.
security_questions_user_insert in ./security_questions.module
Implements hook_user_insert().

File

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

Code

function security_questions_user_answers_save($account, &$edit) {

  // Delete all existing answers for this user.
  db_delete('security_questions_answers')
    ->condition('uid', $account->uid)
    ->execute();
  $chosen = array();
  foreach ($edit as $question) {

    // Save new custom questions.
    if ($question['question'] == 'other') {
      $sqid = security_questions_add_question($question['custom_question'], $account->uid);
      if ($sqid) {
        $question['question'] = $sqid;
      }
      else {

        // If the custom question could not be saved, skip.
        continue;
      }
    }
    $chosen[] = $question['question'];

    // Save new answers.
    security_questions_answer_save($account->uid, $question['question'], $question['answer']);
  }

  // Clean-up unused custom questions.
  db_delete('security_questions')
    ->condition('uid', $account->uid)
    ->condition('sqid', $chosen, 'NOT IN')
    ->execute();
  if (module_exists('rules')) {
    rules_invoke_event('security_questions_updated_answers', $account);
  }
}