function quiz_install in Quiz 5.2
Same name and namespace in other branches
- 8.6 quiz.install \quiz_install()
- 8.4 quiz.install \quiz_install()
- 8.5 quiz.install \quiz_install()
- 5 quiz.install \quiz_install()
- 6.6 quiz.install \quiz_install()
- 6.2 quiz.install \quiz_install()
- 6.3 quiz.install \quiz_install()
- 6.4 quiz.install \quiz_install()
- 6.5 quiz.install \quiz_install()
- 7.6 quiz.install \quiz_install()
- 7 quiz.install \quiz_install()
- 7.4 quiz.install \quiz_install()
- 7.5 quiz.install \quiz_install()
- 6.x quiz.install \quiz_install()
Implementation of hook_install()
File
- ./
quiz.install, line 6
Code
function quiz_install() {
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
/**
* Connect all the quiz specific properties to the correct version of a quiz.
*/
// Create the quiz node properties table
db_query("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.
*/
// Create the quiz node relationship table
db_query("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.
*/
// Create the quiz node question properties table
db_query("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.
*/
// Create the quiz node results table
db_query("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
*/
db_query("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.
*/
// Create the quiz node result options table
db_query("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 */;");
break;
case 'pgsql':
/**
* Connect all the quiz specific properties to the correct version of a quiz.
*/
// Create the quiz node properties table
db_query("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 );");
db_query("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.
*/
// Create the quiz node relationship table
db_query("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.
*/
// Create the quiz node question properties table
db_query("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.
*/
// Create the quiz node results table
db_query("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
*/
db_query("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.
*/
// Create the quiz node result options table
db_query("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 );");
db_query("CREATE FUNCTION plus_bigint_smallint_unsigned(bigint,smallint_unsigned)\n RETURNS bigint AS 'select \$1 + \$2::bigint'\n LANGUAGE 'sql';");
db_query("CREATE OPERATOR + ( \n PROCEDURE = plus_bigint_smallint_unsigned, \n LEFTARG = bigint, \n RIGHTARG = smallint_unsigned );");
break;
}
// Default the "Show Author and Date" for quiz nodes to OFF.
$temp_array = variable_get('theme_settings', $default);
$temp_array['toggle_node_info_quiz'] = 0;
variable_set('theme_settings', $temp_array);
}