function quiz_update_2 in Quiz 5.2
Implementation of hook_update_N().
File
- ./
quiz.install, line 262
Code
function quiz_update_2() {
$ret = array();
//Use db_update to display which queries were run
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
/**
* Stores correct answers for multichoice quiz.
*/
// Creates the quiz node user answers multichoice table.
$ret[] = update_sql("CREATE TABLE {quiz_multichoice_user_answers} (\n question_nid INTEGER UNSIGNED NOT NULL,\n question_vid INTEGER UNSIGNED NOT NULL,\n result_id INTEGER UNSIGNED NOT NULL,\n answer_id INTEGER UNSIGNED NOT NULL,\n PRIMARY KEY(result_id, question_nid, question_vid, answer_id)\n ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
/**
* Stores user answers for multichoice quiz.
*/
// Creates the quiz node answers multichoice table.
$ret[] = update_sql("CREATE TABLE {quiz_multichoice_answers} (\n answer_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\n nid INTEGER UNSIGNED NOT NULL,\n vid INTEGER UNSIGNED NOT NULL,\n answer varchar(255) NOT NULL,\n feedback LONGTEXT,\n result_option INTEGER UNSIGNED DEFAULT 0,\n is_correct TINYINT UNSIGNED DEFAULT 0,\n PRIMARY KEY(answer_id)\n ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
/**
* This connects all the quiz specific properties to the correct version of a quiz.
*/
// Creates the quiz node properties table.
$ret[] = update_sql("CREATE TABLE {quiz_node_properties} (\n property_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\n vid INTEGER UNSIGNED NOT NULL,\n nid INTEGER UNSIGNED NOT NULL,\n number_of_random_questions TINYINT UNSIGNED DEFAULT 0 NOT NULL,\n pass_rate TINYINT UNSIGNED NOT NULL,\n summary_pass LONGTEXT,\n summary_default LONGTEXT,\n shuffle TINYINT UNSIGNED NOT NULL,\n backwards_navigation TINYINT UNSIGNED NOT NULL,\n feedback_time TINYINT UNSIGNED NOT NULL,\n quiz_open INTEGER UNSIGNED DEFAULT 0,\n quiz_close INTEGER UNSIGNED DEFAULT 0,\n takes TINYINT UNSIGNED NOT NULL,\n time_limit INTEGER UNSIGNED DEFAULT 0 NOT NULL,\n quiz_always TINYINT NOT NULL default 0,\n tid INTEGER UNSIGNED NOT NULL DEFAULT 0,\n PRIMARY KEY(property_id),\n KEY vid (vid, nid)\n ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
/**
* Both a quiz and a quiz question are nodes with versions. A quiz is a parent node of a quiz question,
* making the quiz question the child.
*
* The quiz_node_relationship table stores this relationship in a way that allows a quiz question to be
* the child of multiple quizzes without losing version history.
*
* Future functionality will allow a quiz question to be a parent of another quiz question with the same
* data model. This will make adaptive quiz functionality possible without redesign.
*/
// Creates the quiz node relationship table.
$ret[] = update_sql("CREATE TABLE {quiz_node_relationship} (\n parent_nid INTEGER UNSIGNED NOT NULL,\n parent_vid INTEGER UNSIGNED NOT NULL,\n child_nid INTEGER UNSIGNED NOT NULL,\n child_vid INTEGER UNSIGNED NOT NULL,\n question_status TINYINT UNSIGNED DEFAULT 1 NOT NULL,\n PRIMARY KEY(parent_nid, parent_vid, child_nid, child_vid)\n ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
/**
* This connects all the quiz question specific properties to the correct version of a quiz question.
*/
// Creates the quiz node question properties table.
$ret[] = update_sql("CREATE TABLE {quiz_node_question_properties} (\n nid INTEGER UNSIGNED NOT NULL,\n vid INTEGER UNSIGNED NOT NULL,\n number_of_answers TINYINT UNSIGNED DEFAULT 1 NOT NULL\n ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
/**
* Quiz specific options concerning availability and access to scores.
*/
// Creates the quiz node results table.
$ret[] = update_sql("CREATE TABLE {quiz_node_results} (\n result_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\n nid INTEGER UNSIGNED NOT NULL,\n vid INTEGER UNSIGNED NOT NULL,\n uid INTEGER UNSIGNED NOT NULL,\n time_start INTEGER UNSIGNED DEFAULT 0,\n time_end INTEGER UNSIGNED DEFAULT 0,\n released INTEGER UNSIGNED DEFAULT 0,\n score TINYINT NOT NULL DEFAULT 0,\n PRIMARY KEY(result_id)\n ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
/**
* Information about a particular question in a result
*/
$ret[] = update_sql("CREATE TABLE {quiz_node_results_answers} (\n result_id INT UNSIGNED NOT NULL ,\n question_nid INT UNSIGNED NOT NULL ,\n question_vid INT UNSIGNED NOT NULL ,\n is_correct TINYINT UNSIGNED NOT NULL DEFAULT '0',\n points_awarded TINYINT NOT NULL DEFAULT '0',\n answer_timestamp INT UNSIGNED NOT NULL,\n PRIMARY KEY(result_id, question_nid, question_vid)\n ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
/**
* Allows custom feedback based on the results of a user completing a quiz.
*/
// Creates the quiz node result options table.
$ret[] = update_sql("CREATE TABLE {quiz_node_result_options} (\n option_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\n nid INTEGER UNSIGNED NOT NULL,\n vid INTEGER UNSIGNED NOT NULL,\n option_name VARCHAR(255) NOT NULL,\n option_summary LONGTEXT,\n option_start INTEGER UNSIGNED DEFAULT 0,\n option_end INTEGER UNSIGNED DEFAULT 0,\n PRIMARY KEY(option_id)\n ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
quiz_data_update_2();
break;
case 'pgsql':
/**
* Stores correct answers for multichoice quiz.
*/
// Creates the quiz node user answers multichoice table.
$ret[] = update_sql("CREATE TABLE {quiz_multichoice_user_answers} (\n question_nid int_unsigned NOT NULL,\n question_vid int_unsigned NOT NULL,\n result_id int_unsigned NOT NULL,\n answer_id int_unsigned NOT NULL,\n PRIMARY KEY(result_id, question_nid, question_vid, answer_id)\n );");
/**
* Stores user answers for multichoice quiz.
*/
// Creates the quiz node answers multichoice table.
$ret[] = update_sql("CREATE TABLE {quiz_multichoice_answers} (\n answer_id SERIAL,\n nid int_unsigned NOT NULL,\n vid int_unsigned NOT NULL,\n answer varchar(255) NOT NULL,\n feedback text,\n result_option int_unsigned DEFAULT 0,\n is_correct smallint_unsigned DEFAULT 0,\n PRIMARY KEY(answer_id)\n );");
/**
* This connects all the quiz specific properties to the correct version of a quiz.
*/
// Creates the quiz node properties table.
$ret[] = update_sql("CREATE TABLE {quiz_node_properties} (\n property_id SERIAL,\n vid int_unsigned NOT NULL,\n nid int_unsigned NOT NULL,\n number_of_random_questions smallint_unsigned DEFAULT 0 NOT NULL,\n pass_rate smallint_unsigned NOT NULL,\n summary_pass text,\n summary_default text,\n shuffle smallint_unsigned NOT NULL,\n backwards_navigation smallint_unsigned NOT NULL,\n feedback_time smallint_unsigned NOT NULL,\n quiz_open int_unsigned DEFAULT 0,\n quiz_close int_unsigned DEFAULT 0,\n takes smallint_unsigned NOT NULL,\n time_limit int_unsigned DEFAULT 0 NOT NULL,\n quiz_always smallint NOT NULL default 0,\n tid int_unsigned NOT NULL DEFAULT 0,\n PRIMARY KEY(property_id)\n );");
$ret[] = update_sql("CREATE INDEX idx_{quiz_node_properties}_vidnid ON {quiz_node_properties}(vid, nid);");
/**
* Both a quiz and a quiz question are nodes with versions. A quiz is a parent node of a quiz question,
* making the quiz question the child.
*
* The quiz_node_relationship table stores this relationship in a way that allows a quiz question to be
* the child of multiple quizzes without losing version history.
*
* Future functionality will allow a quiz question to be a parent of another quiz question with the same
* data model. This will make adaptive quiz functionality possible without redesign.
*/
// Creates the quiz node relationship table.
$ret[] = update_sql("CREATE TABLE {quiz_node_relationship} (\n parent_nid int_unsigned NOT NULL,\n parent_vid int_unsigned NOT NULL,\n child_nid int_unsigned NOT NULL,\n child_vid int_unsigned NOT NULL,\n question_status smallint_unsigned DEFAULT 1 NOT NULL,\n PRIMARY KEY(parent_nid, parent_vid, child_nid, child_vid)\n );");
/**
* This connects all the quiz question specific properties to the correct version of a quiz question.
*/
// Creates the quiz node question properties table.
$ret[] = update_sql("CREATE TABLE {quiz_node_question_properties} (\n nid int_unsigned NOT NULL,\n vid int_unsigned NOT NULL,\n number_of_answers smallint_unsigned DEFAULT 1 NOT NULL\n );");
/**
* Quiz specific options concerning availability and access to scores.
*/
// Creates the quiz node results table.
$ret[] = update_sql("CREATE TABLE {quiz_node_results} (\n result_id SERIAL,\n nid int_unsigned NOT NULL,\n vid int_unsigned NOT NULL,\n uid int_unsigned NOT NULL,\n time_start int_unsigned DEFAULT 0,\n time_end int_unsigned DEFAULT 0,\n released int_unsigned DEFAULT 0,\n score smallint NOT NULL DEFAULT 0,\n PRIMARY KEY(result_id)\n );");
/**
* Information about a particular question in a result
*/
$ret[] = update_sql("CREATE TABLE {quiz_node_results_answers} (\n result_id int_unsigned NOT NULL ,\n question_nid int_unsigned NOT NULL ,\n question_vid int_unsigned NOT NULL ,\n is_correct smallint_unsigned NOT NULL DEFAULT '0',\n points_awarded smallint NOT NULL DEFAULT '0',\n answer_timestamp int_unsigned NOT NULL,\n PRIMARY KEY(result_id, question_nid, question_vid)\n );");
/**
* Allows custom feedback based on the results of a user completing a quiz.
*/
// Creates the quiz node result options table.
$ret[] = update_sql("CREATE TABLE {quiz_node_result_options} (\n option_id SERIAL,\n nid int_unsigned NOT NULL,\n vid int_unsigned NOT NULL,\n option_name VARCHAR(255) NOT NULL,\n option_summary text,\n option_start int_unsigned DEFAULT 0,\n option_end int_unsigned DEFAULT 0,\n PRIMARY KEY(option_id)\n );");
quiz_data_update_2();
break;
}
return $ret;
}