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

📄 report.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?php/** * This script lists student attempts * * @version $Id: report.php,v 1.98.2.47 2009/02/16 04:17:54 tjhunt Exp $ * @author Martin Dougiamas, Tim Hunt and others. * @license http://www.gnu.org/copyleft/gpl.html GNU Public License * @package quiz *//** */require_once($CFG->libdir.'/tablelib.php');require_once($CFG->dirroot.'/mod/quiz/report/overview/overviewsettings_form.php');class quiz_report extends quiz_default_report {    /**     * Display the report.     */    function display($quiz, $cm, $course) {        global $CFG, $db;        // Define some strings        $strreallydel  = addslashes(get_string('deleteattemptcheck','quiz'));        $strtimeformat = get_string('strftimedatetime');        $strreviewquestion = get_string('reviewresponse', 'quiz');        $context = get_context_instance(CONTEXT_MODULE, $cm->id);        // Only print headers if not asked to download data        if (!$download = optional_param('download', NULL)) {            $this->print_header_and_tabs($cm, $course, $quiz, "overview");        }        if($attemptids = optional_param('attemptid', array(), PARAM_INT)) {            //attempts need to be deleted            require_capability('mod/quiz:deleteattempts', $context);            $attemptids = optional_param('attemptid', array(), PARAM_INT);            foreach($attemptids as $attemptid) {                add_to_log($course->id, 'quiz', 'delete attempt', 'report.php?id=' . $cm->id,                        $attemptid, $cm->id);                quiz_delete_attempt($attemptid, $quiz);            }            //No need for a redirect, any attemptids that do not exist are ignored.            //So no problem if the user refreshes and tries to delete the same attempts            //twice.        }        // Work out some display options - whether there is feedback, and whether scores should be shown.        $hasfeedback = quiz_has_feedback($quiz->id) && $quiz->grade > 1.e-7 && $quiz->sumgrades > 1.e-7;        $fakeattempt = new stdClass();        $fakeattempt->preview = false;        $fakeattempt->timefinish = $quiz->timeopen;        $reviewoptions = quiz_get_reviewoptions($quiz, $fakeattempt, $context);        $showgrades = $quiz->grade && $quiz->sumgrades && $reviewoptions->scores;        $pageoptions = array();        $pageoptions['id'] = $cm->id;        $pageoptions['q'] = $quiz->id;        $pageoptions['mode'] = 'overview';        /// find out current groups mode        $currentgroup = groups_get_activity_group($cm, true);        $reporturl = new moodle_url($CFG->wwwroot.'/mod/quiz/report.php', $pageoptions);        $qmsubselect = quiz_report_qm_filter_select($quiz);        $mform = new mod_quiz_report_overview_settings($reporturl, compact('qmsubselect', 'quiz', 'currentgroup'));        if ($fromform = $mform->get_data()){            $attemptsmode = $fromform->attemptsmode;            if ($qmsubselect){                //control is not on the form if                //the grading method is not set                 //to grade one attempt per user eg. for average attempt grade.                $qmfilter = $fromform->qmfilter;            } else {                $qmfilter = 0;            }            set_user_preference('quiz_report_overview_detailedmarks', $fromform->detailedmarks);            set_user_preference('quiz_report_pagesize', $fromform->pagesize);            $detailedmarks = $fromform->detailedmarks;            $pagesize = $fromform->pagesize;        } else {            $qmfilter = optional_param('qmfilter', 0, PARAM_INT);            $attemptsmode = optional_param('attemptsmode', QUIZ_REPORT_ATTEMPTS_ALL, PARAM_INT);            $detailedmarks = get_user_preferences('quiz_report_overview_detailedmarks', 1);            $pagesize = get_user_preferences('quiz_report_pagesize', 0);        }                if ($attemptsmode == QUIZ_REPORT_ATTEMPTS_ALL && $currentgroup){            $attemptsmode = QUIZ_REPORT_ATTEMPTS_STUDENTS_WITH;        }                if (!$reviewoptions->scores) {            $detailedmarks = 0;        }        if ($pagesize < 1) {            $pagesize = QUIZ_REPORT_DEFAULT_PAGE_SIZE;        }        // We only want to show the checkbox to delete attempts        // if the user has permissions and if the report mode is showing attempts.        $candelete = has_capability('mod/quiz:deleteattempts', $context)                 && ($attemptsmode!= QUIZ_REPORT_ATTEMPTS_STUDENTS_WITH_NO);        $displayoptions = array();        $displayoptions['attemptsmode'] = $attemptsmode;        $displayoptions['qmfilter'] = $qmfilter;        $reporturlwithdisplayoptions = new moodle_url($CFG->wwwroot.'/mod/quiz/report.php', $pageoptions + $displayoptions);        if ($groupmode = groups_get_activity_groupmode($cm)) {   // Groups are being used            if (!$download) {                groups_print_activity_menu($cm, $reporturlwithdisplayoptions->out());            }        }        // Print information on the number of existing attempts        if (!$download) { //do not print notices when downloading            if ($strattemptnum = quiz_num_attempt_summary($quiz, $cm, true, $currentgroup)) {                echo '<div class="quizattemptcounts">' . $strattemptnum . '</div>';            }        }        $nostudents = false;        if (!$students = get_users_by_capability($context, array('mod/quiz:reviewmyattempts', 'mod/quiz:attempt'),'','','','','','',false)){            notify(get_string('nostudentsyet'));            $nostudents = true;            $studentslist = '';        } else {            $studentslist = join(',',array_keys($students));        }                if (empty($currentgroup)) {            // all users who can attempt quizzes            $groupstudentslist = '';            $allowedlist = $studentslist;        } else {            // all users who can attempt quizzes and who are in the currently selected group            if (!$groupstudents = get_users_by_capability($context, 'mod/quiz:attempt','','','','',$currentgroup,'',false)){                notify(get_string('nostudentsingroup'));                $nostudents = true;                $groupstudents = array();            }            $groupstudentslist = join(',', array_keys($groupstudents));            $allowedlist = $groupstudentslist;        }        if (!$nostudents || ($attemptsmode == QUIZ_REPORT_ATTEMPTS_ALL)){                // Print information on the grading method and whether we are displaying            //             if (!$download) { //do not print notices when downloading                if ($strattempthighlight = quiz_report_highlighting_grading_method($quiz, $qmsubselect, $qmfilter)) {                    echo '<div class="quizattemptcounts">' . $strattempthighlight . '</div>';                }            }                // Now check if asked download of data            if ($download) {                $filename = clean_filename("$course->shortname ".format_string($quiz->name,true));            }                // Define table columns            $columns = array();            $headers = array();                            if (!$download && $candelete) {                $columns[]= 'checkbox';                $headers[]= NULL;            }                        if (!$download && $CFG->grade_report_showuserimage) {                $columns[]= 'picture';                $headers[]= '';            }                $columns[]= 'fullname';            $headers[]= get_string('name');                if ($CFG->grade_report_showuseridnumber) {                $columns[]= 'idnumber';                $headers[]= get_string('idnumber');            }                        $columns[]= 'timestart';            $headers[]= get_string('startedon', 'quiz');                $columns[]= 'timefinish';            $headers[]= get_string('timecompleted','quiz');                $columns[]= 'duration';            $headers[]= get_string('attemptduration', 'quiz');                if ($showgrades) {                $columns[] = 'sumgrades';                $headers[] = get_string('grade', 'quiz').'/'.$quiz->grade;            }                if ($detailedmarks) {                // we want to display marks for all questions                $questions = quiz_report_load_questions($quiz);                foreach ($questions as $id => $question) {                    // Ignore questions of zero length                    $columns[] = 'qsgrade'.$id;                    $headers[] = '#'.$question->number;                }            }                if ($hasfeedback) {                $columns[] = 'feedbacktext';                $headers[] = get_string('feedback', 'quiz');            }                if (!$download) {                // Set up the table                    $table = new flexible_table('mod-quiz-report-overview-report');                    $table->define_columns($columns);                $table->define_headers($headers);                $table->define_baseurl($reporturlwithdisplayoptions->out());                    $table->sortable(true);                $table->collapsible(true);                    $table->column_suppress('picture');                $table->column_suppress('fullname');                $table->column_suppress('idnumber');                

⌨️ 快捷键说明

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