⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 postgres7.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 5 页
字号:
        $success = $success && modify_database ('', 'DROP INDEX prefix_quiz_question_grades_quiz_idx');        $success = $success && modify_database ('', 'DROP INDEX prefix_quiz_question_grades_question_idx;');        $success = $success && modify_database ('', 'CREATE INDEX prefix_quiz_question_instances_quiz_idx ON prefix_quiz_question_instances (quiz);');        $success = $success && modify_database ('', 'CREATE INDEX prefix_quiz_question_instances_question_idx ON prefix_quiz_question_instances (question);');        // rename the quiz_responses table quiz_states        $success = $success && modify_database ('', 'ALTER TABLE prefix_quiz_responses RENAME TO prefix_quiz_states;');        $success = $success && modify_database ('', 'ALTER TABLE prefix_quiz_responses_id_seq RENAME TO prefix_quiz_states_id_seq;');        $success = $success && modify_database ('', 'ALTER TABLE prefix_quiz_states ALTER COLUMN id SET DEFAULT nextval(\'prefix_quiz_states_id_seq\');');        $success = $success && modify_database ('', 'DROP INDEX prefix_quiz_responses_attempt_idx;');        $success = $success && modify_database ('', 'DROP INDEX prefix_quiz_responses_question_idx;');        $success = $success && modify_database ('', 'CREATE INDEX prefix_quiz_states_attempt_idx ON prefix_quiz_states (attempt);');        $success = $success && modify_database ('', 'CREATE INDEX prefix_quiz_states_question_idx ON prefix_quiz_states (question);');        /// add columns to quiz_states table        // The sequence number of the state.        $success = $success && table_column('quiz_states', '', 'seq_number', 'integer', '6', 'unsigned', '0', 'not null', 'originalquestion');        // For existing states we leave this at 0 because in the old quiz code there was only one response allowed        // The time the state was created.        $success = $success && table_column('quiz_states', '', 'timestamp', 'integer', '10', 'unsigned', '0', 'not null', 'answer');        // For existing states we will below set this to the timemodified field of the attempt        // The type of event that led to the creation of the state        $success = $success && table_column('quiz_states', '', 'event', 'integer', '4', 'unsigned', '0', 'not null', 'timestamp');        // The raw grade        $success = $success && table_column('quiz_states', '', 'raw_grade', 'varchar', '10', '', '', 'not null', 'grade');        // For existing states (no penalties) this is equal to the grade        $success = $success && execute_sql("UPDATE {$CFG->prefix}quiz_states SET raw_grade = grade");        // The penalty that the response attracted        $success = $success && table_column('quiz_states', '', 'penalty', 'varchar', '10', '', '0.0', 'not null', 'raw_grade');        // For existing states this can stay at 0 because penalties did not exist previously.        /// New table for pointers to newest and newest graded states        $success = $success && modify_database('', "CREATE TABLE prefix_quiz_newest_states (                               id SERIAL PRIMARY KEY,                               attemptid integer NOT NULL default '0',                               questionid integer NOT NULL default '0',                               newest integer NOT NULL default '0',                               newgraded integer NOT NULL default '0',                               sumpenalty varchar(10) NOT NULL default '0.0'                             );");        $success = $success && modify_database('CREATE UNIQUE INDEX prefix_quiz_newest_states_attempt_idx ON prefix_quiz_newest_states (attemptid,questionid);');        /// Now upgrade some fields in states and newest_states tables where necessary        // to save time on large sites only do this for attempts that have not yet been finished.        if ($attempts = get_records_select('quiz_attempts', 'timefinish = 0')) {            // turn reporting off temporarily to avoid one line output per set_field            $olddebug = $db->debug;            $db->debug = false;            foreach ($attempts as $attempt) {                quiz_upgrade_states($attempt);            }            $db->debug = $olddebug;        }        /// Entries for the log_display table        $success = $success && modify_database('', " INSERT INTO prefix_log_display (module, action, mtable, field) VALUES ('quiz', 'preview', 'quiz', 'name');");        $success = $success && modify_database('', " INSERT INTO prefix_log_display (module, action, mtable, field) VALUES ('quiz', 'start attempt', 'quiz', 'name');");        $success = $success && modify_database('', " INSERT INTO prefix_log_display (module, action, mtable, field) VALUES ('quiz', 'close attempt', 'quiz', 'name');");        /// update the default settings in $CFG        $review = (QUIZ_REVIEW_IMMEDIATELY & (QUIZ_REVIEW_RESPONSES + QUIZ_REVIEW_SCORES));        if (!empty($CFG->quiz_feedback)) {            $review += (QUIZ_REVIEW_IMMEDIATELY & QUIZ_REVIEW_FEEDBACK);        }        if (!empty($CFG->quiz_correctanswers)) {            $review += (QUIZ_REVIEW_IMMEDIATELY & QUIZ_REVIEW_ANSWERS);        }        if (isset($CFG->quiz_review) and ($CFG->quiz_review & 1)) {            $review += QUIZ_REVIEW_CLOSED;        }        if (isset($CFG->quiz_review) and ($CFG->quiz_review & 2)) {            $review += QUIZ_REVIEW_OPEN;        }        $success = $success && set_config('quiz_review', $review);        /// Use tolerance instead of min and max in numerical question type        $success = $success && table_column('quiz_numerical', '', 'tolerance', 'varchar', '255', '', '0.0', 'not null', 'question');        $success = $success && execute_sql("UPDATE {$CFG->prefix}quiz_numerical SET tolerance = (max::text::real-min::text::real)/2");        $success = $success && modify_database('', 'ALTER TABLE prefix_quiz_numerical DROP COLUMN min'); // Replaced by tolerance        $success = $success && modify_database('', 'ALTER TABLE prefix_quiz_numerical DROP COLUMN max'); // Replaced by tolerance        /// Tables for Remote Questions        $success = $success && modify_database ('', "CREATE TABLE prefix_quiz_rqp (                                 id SERIAL PRIMARY KEY,                                 question integer NOT NULL default '0',                                 type integer NOT NULL default '0',                                 source text NOT NULL,                                 format varchar(255) NOT NULL default '',                                 flags integer NOT NULL default '0',                                 maxscore integer NOT NULL default '1'                               );");        $success = $success && modify_database ('', "CREATE INDEX prefix_quiz_rqp_question_idx ON prefix_quiz_rqp (question);");        $success = $success && modify_database ('', "CREATE TABLE prefix_quiz_rqp_states (                                 id SERIAL PRIMARY KEY,                                 stateid integer NOT NULL default '0',                                 responses text NOT NULL,                                 persistent_data text NOT NULL,                                 template_vars text NOT NULL                               );");        $success = $success && modify_database ('', "CREATE TABLE prefix_quiz_rqp_types (                                id SERIAL PRIMARY KEY,                                name varchar(255) NOT NULL default '',                                rendering_server varchar(255) NOT NULL default '',                                cloning_server varchar(255) NOT NULL default '',                                flags integer NOT NULL default '0'                              );");        $success = $success && modify_database ('', "CREATE UNIQUE INDEX prefix_quiz_rqp_types_name_uk ON prefix_quiz_rqp_types (name);");        if ($success) {            $success = $success && commit_sql();        } else {            rollback_sql();        }    }    if ($success && $oldversion < 2005042900 && false) { // We don't want this to be executed any more!!!        begin_sql();        $success = $success && table_column('quiz_multianswers', '', 'sequence',  'varchar', '255', '', '', 'not null', 'question');        $success = $success && table_column('quiz_numerical', '', 'answers', 'varchar', '255', '', '', 'not null', 'answer');        $success = $success && modify_database('', 'UPDATE prefix_quiz_numerical SET answers = answer');        $success = $success && table_column('quiz_questions', '', 'parent', 'integer', '10', 'unsigned', '0', 'not null', 'category');        $success = $success && modify_database('', "UPDATE prefix_quiz_questions SET parent = id WHERE qtype ='".RANDOM."';");        // convert multianswer questions to the new model        if ($multianswers = get_records_sql("SELECT m.id, q.category, q.id AS parent,                                        q.name, q.questiontextformat, m.norm AS                                        defaultgrade, m.answertype AS qtype,                                        q.version, q.hidden, m.answers,                                        m.positionkey                                        FROM {$CFG->prefix}quiz_questions q,                                             {$CFG->prefix}quiz_multianswers m                                        WHERE q.qtype = '".MULTIANSWER."'                                        AND   q.id = m.question                                        ORDER BY q.id ASC, m.positionkey ASC")) {            $multianswers = array_values($multianswers);            $n        = count($multianswers);            $parent   = $multianswers[0]->parent;            $sequence = array();            // turn reporting off temporarily to avoid one line output per set_field            $olddebug = $db->debug;            $db->debug = false;            for ($i = 0; $i < $n; $i++) {                $answers = $multianswers[$i]->answers; unset($multianswers[$i]->answers);                $pos = $multianswers[$i]->positionkey; unset($multianswers[$i]->positionkey);                // create questions for all the multianswer victims                unset($multianswers[$i]->id);                $multianswers[$i]->length = 0;                $multianswers[$i]->questiontext = '';                $multianswers[$i]->stamp = make_unique_id_code();                $id = insert_record('quiz_questions', $multianswers[$i]);                $success = $success && $id;                $sequence[$pos] = $id;                // update the answers table to point to these new questions                $success = $success && modify_database('', "UPDATE prefix_quiz_answers SET question = '$id' WHERE id IN ($answers);");                // update the questiontype tables to point to these new questions                if (SHORTANSWER == $multianswers[$i]->qtype) {                    $success = $success && modify_database('', "UPDATE prefix_quiz_shortanswer SET question = '$id' WHERE answers = '$answers';");                } else if (NUMERICAL == $multianswers[$i]->qtype) {                    if (strpos($answers, ',')) {                        $numerical = get_records_list('quiz_numerical', 'answer', $answers);                        // Get the biggest tolerance value                        $tolerance = 0;                        foreach ($numerical as $num) {                            $tolerance = ($tolerance < $num->tolerance ? $num->tolerance : $tolerance);                        }                        $success = $success && delete_records_select('quiz_numerical', "answer IN ($answers)");                        $new = new stdClass;                        $new->question  = $id;                        $new->tolerance = $tolerance;                        $new->answers   = $answers;                        $success = $success && insert_record('quiz_numerical', $new);                        unset($numerical, $new, $tolerance);                    } else {                        $success = $success && modify_database('', "UPDATE prefix_quiz_numerical SET question = '$id', answers = '$answers' WHERE answer IN ($answers);");                    }                } else if (MULTICHOICE == $multianswers[$i]->qtype) {                    $success = $success && modify_database('', "UPDATE prefix_quiz_multichoice SET question = '$id' WHERE answers = '$answers';");                }                if (!isset($multianswers[$i+1]) || $parent != $multianswers[$i+1]->parent) {                    $success = $success && delete_records('quiz_multianswers', 'question', $parent);                    $multi = new stdClass;                    $multi->question = $parent;                    $multi->sequence = implode(',', $sequence);                    $success = $success && insert_record('quiz_multianswers', $multi);                    if (isset($multianswers[$i+1])) {                        $parent   = $multianswers[$i+1]->parent;                        $sequence = array();                    }                }            }            $db->debug = $olddebug;        }        // Remove redundant fields from quiz_multianswers

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -