You are here

function security_questions_user_edit_form in Security Questions 6

Same name and namespace in other branches
  1. 7 security_questions.module \security_questions_user_edit_form()

User edit form for changing security question answer

1 string reference to 'security_questions_user_edit_form'
security_questions_menu in ./security_questions.module
Implements hook_menu().

File

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

Code

function security_questions_user_edit_form(&$form_state, $user, $qid) {

  // Get the question id of the question the user wants to change.
  $question = $qid;

  // Get the question and user's answer from the database.
  $results = db_query('SELECT sq.security_question, sqa.user_answer, sq.security_question_id
            FROM {security_questions_answers} AS sqa
            JOIN {security_questions} AS sq
            ON sqa.security_question_id = sq.security_question_id
            WHERE sqa.uid = %d', $user->uid);
  while ($items = db_fetch_object($results)) {
    $answered[$items->security_question_id] = $items->user_answer;
  }

  // Get all the possible questions that the user can answer.
  $questions = db_query('SELECT sq.security_question, sq.security_question_id
            FROM {security_questions} AS sq
            WHERE sq.uid = %d OR sq.admin = %d', $user->uid, 1);
  while ($items = db_fetch_object($questions)) {
    $possible[$items->security_question_id] = $items->security_question;
    $options[$items->security_question_id] = $items->security_question;
  }

  // Remove all of the previously answered questions.
  $options = array_diff_key($options, $answered);

  // Add back in the question that we were editing.
  $options[$qid] = $possible[$qid];

  // Display a form where the user can change their answer to a question.
  $form = array();
  $form['security_question_uid'] = array(
    '#type' => 'hidden',
    '#value' => $user->uid,
  );
  $form['security_question_id'] = array(
    '#type' => 'hidden',
    '#value' => $qid,
  );
  $form['security_question'] = array(
    '#type' => 'select',
    '#required' => TRUE,
    '#options' => $options,
    '#title' => t('Question'),
    '#default_value' => $qid,
  );
  $form['security_question_user_answer'] = array(
    '#type' => 'textfield',
    '#title' => t('Answer'),
    '#description' => t('Your answer to the selected security question'),
    '#required' => TRUE,
    '#default_value' => $answered[$qid],
  );
  $form['security_question_user_edit_submit'] = array(
    '#type' => 'submit',
    '#value' => t("Change answer"),
  );
  return $form;
}