You are here

function security_questions_update_6202 in Security Questions 6.2

Convert the schema to support the new API.

File

./security_questions.install, line 215
Install file for security_questions.

Code

function security_questions_update_6202() {
  $ret = array();

  // Serial fields must be keys in MySQL, so need to add a temporary index on
  // {security_questions}.security_question_id before we can change it.
  db_add_index($ret, 'security_questions', 'temp', array(
    'security_question_id',
  ));

  // Convert the questions table.
  db_drop_primary_key($ret, 'security_questions');
  db_change_field($ret, 'security_questions', 'security_question_id', 'sqid', array(
    'description' => 'The security question ID',
    'type' => 'serial',
  ), array(
    'primary key' => array(
      'sqid',
    ),
  ));
  db_change_field($ret, 'security_questions', 'security_question', 'question', array(
    'description' => 'The text of the question',
    'type' => 'varchar',
    'length' => '500',
  ));
  db_change_field($ret, 'security_questions', 'uid', 'uid', array(
    'description' => '0 for questions available system-wide, or the owning uid for custom per-user questions.',
    'type' => 'int',
    'not null' => TRUE,
    'default' => 0,
  ));
  db_query('UPDATE {security_questions} SET uid = 0 WHERE admin = 1');
  db_drop_field($ret, 'security_questions', 'admin');
  db_add_field($ret, 'security_questions', 'machine_name', array(
    'description' => 'An optional machine-readable name for this question, to support exportable configuration.',
    'type' => 'varchar',
    'length' => 255,
  ));
  db_add_index($ret, 'security_questions', 'uid', array(
    'uid',
  ));

  // Drop our temporary index.
  db_drop_index($ret, 'security_questions', 'temp');

  // Rename security_question_id to sqid in related tables.
  db_drop_primary_key($ret, 'security_questions_answers');
  db_change_field($ret, 'security_questions_answers', 'security_question_id', 'sqid', array(
    'description' => 'The security question ID',
    'type' => 'int',
  ), array(
    'primary key' => array(
      'uid',
      'sqid',
    ),
  ));
  db_change_field($ret, 'security_questions_answers', 'user_answer', 'answer', array(
    'description' => 'The answer to the users question',
    'type' => 'varchar',
    'length' => '100',
  ));
  db_change_field($ret, 'security_questions_incorrect', 'security_question_id', 'sqid', array(
    'description' => 'The security question ID.',
    'type' => 'int',
    'not null' => TRUE,
    'default' => 0,
  ));
}