You are here

function security_questions_update_7202 in Security Questions 7.2

Convert the schema to support the new API.

File

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

Code

function security_questions_update_7202() {

  // 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('security_questions', 'temp', array(
    'security_question_id',
  ));

  // Convert the questions table.
  db_drop_primary_key('security_questions');
  db_change_field('security_questions', 'security_question_id', 'sqid', array(
    'description' => 'The security question ID',
    'type' => 'serial',
  ), array(
    'primary key' => array(
      'sqid',
    ),
  ));
  db_change_field('security_questions', 'security_question', 'question', array(
    'description' => 'The text of the question',
    'type' => 'varchar',
    'length' => '500',
  ));
  db_change_field('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_update('security_questions')
    ->fields(array(
    'uid' => 0,
  ))
    ->condition('admin', 1)
    ->execute();
  db_drop_field('security_questions', 'admin');
  db_add_field('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('security_questions', 'uid', array(
    'uid',
  ));

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

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