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

📄 default.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?PHP  // $Id: default.php,v 1.13.4.2 2008/03/06 07:34:04 gbateson Exp $/////////////////////////////////////////////////////////////////////// Default class for report plugins////// Doesn't do anything on it's own -- it needs to be extended./// This class displays quiz reports.  Because it is called from/// within /mod/quiz/report.php you can assume that the page header/// and footer are taken care of.////// This file can refer to itself as report.php to pass variables/// to itself - all these will also be globally available.  You must/// pass "id=$cm->id" or q=$quiz->id", and "mode=reportname".////////////////////////////////////////////////////////////////////// Included by ../report.phpclass hotpot_default_report {    function display($hotpot, $cm, $course, $users, $attempts, $questions, $options) {        /// This function just displays the report        // it is replaced by the "display" functions in the scripts in the "report" folder        return true;    }    function add_question_headings(&$questions, &$table, $align='center', $size=50, $wrap=false, $fontsize=0) {        $count = count($questions);        for ($i=0; $i<$count; $i++) {            $table->head[] = get_string('questionshort', 'hotpot', $i+1);            if (isset($table->align)) {                $table->align[] = $align;            }            if (isset($table->size)) {                $table->size[] = $size;            }            if (isset($table->wrap)) {                $table->wrap[] = $wrap;            }            if (isset($table->fontsize)) {                $table->fontsize[] = $fontsize;            }        }    }    function set_legend(&$table, &$q, &$value, &$question) {        // $q is the question number        // $value is the value (=text) of the answer        // check the legend is required        if (isset($table->legend) && isset($value)) {            // create question details array, if necessary            if (empty($table->legend[$q])) {                $table->legend[$q] = array(                    'name' => hotpot_get_question_name($question),                    'answers' => array()                );            }            // search for this $value in answers array for this $q(uestion)            $i_max = count($table->legend[$q]['answers']);            for ($i=0; $i<$i_max; $i++) {                if ($table->legend[$q]['answers'][$i]==$value) {                    break;                }            }            // add $value to answers array, if it was not there            if ($i==$i_max) {                $table->legend[$q]['answers'][$i] = $value;            }            // convert $value to alphabetic index (A, B ... AA, AB ...)            $value = $this->dec_to_ALPHA($i);        }    }    function create_legend_table(&$tables, &$table) {        if (isset($table->legend)) {            $legend->width = '*';            $legend->tablealign = '*';            $legend->border = isset($table->border) ? $table->border : NULL;            $legend->cellpadding = isset($table->cellpadding) ? $table->cellpadding : NULL;            $legend->cellspacing = isset($table->cellspacing) ? $table->cellspacing : NULL;            $legend->tableclass = isset($table->tableclass) ? $table->tableclass : NULL;            $legend->caption = get_string('reportlegend', 'hotpot');            $legend->align = array('right', 'left');            $legend->statheadercols = array(0);            $legend->stat = array();            // put the questions in order            ksort($table->legend);            foreach($table->legend as $q=>$question) {                $legend->stat[] = array(                    get_string('questionshort', 'hotpot', $q+1),                    $question['name']                );                foreach($question['answers'] as $a=>$answer) {                    $legend->stat[] = array(                        $this->dec_to_ALPHA($a),                        $answer                    );                }            }            unset($table->legend);            $tables[] = $legend;        }    }    function dec_to_ALPHA($dec) {        if ($dec < 26) {            return chr(ord('A') + $dec);        } else {            return $this->dec_to_ALPHA(intval($dec/26)-1).$this->dec_to_ALPHA($dec % 26);        }    }    function remove_column(&$table, $target_col) {        if (is_array($table)) {            unset($table[$target_col]);            $table = array_values($table);        } else if (is_object($table)) {            $vars = get_object_vars($table);            foreach ($vars as $name=>$value) {                switch ($name) {                    case 'data' :                    case 'stat' :                    case 'foot' :                        $skipcol = array();                        $cells = &$table->$name;                        $row_max = count($cells);                        for ($row=0; $row<$row_max; $row++) {                            $col = 0;                            $col_max = count($cells[$row]);                            $current_col = 0;                            while ($current_col<$target_col && $col<$col_max) {                                if (empty($skipcol[$current_col])) {                                    $cell = $cells[$row][$col++];                                    if (is_object($cell)) {                                        if (isset($cell->rowspan) && is_numeric($cell->rowspan) && ($cell->rowspan>0)) {                                            // skip cells below this one                                            $skipcol[$current_col] = $cell->rowspan-1;                                        }                                        if (isset($cell->colspan) && is_numeric($cell->colspan) && ($cell->colspan>0)) {                                            // skip cells to the right of this one                                            for ($c=1; $c<$cell->colspan; $c++) {                                                if (empty($skipcol[$current_col+$c])) {                                                    $skipcol[$current_col+$c] = 1;                                                } else {                                                    $skipcol[$current_col+$c] ++;                                                }                                            }                                        }                                    }                                } else {                                    $skipcol[$current_col]--;                                }                                $current_col++;                            }                            if ($current_col==$target_col && $col<$col_max) {                                $this->remove_column($cells[$row], $col);                            }                        } // end for $row                        break;                    case 'head' :                    case 'align' :                    case 'class' :                    case 'fontsize' :                    case 'size' :                    case 'wrap' :                        $this->remove_column($table->$name, $target_col);                        break;                    case 'statheadercols' :                        $array = &$table->$name;                        $count = count($array);                        for ($i=0; $i<$count; $i++) {                            if ($array[$i]>=$target_col) {                                $array[$i] --;                            }                        }                        break;                } // end switch            } // end foreach        } // end if    } // end function    function expand_spans(&$table, $zone) {        // expand multi-column and multi-row cells in a specified $zone of a $table        // do nothing if this $zone is empty        if (empty($table->$zone)) return;        // shortcut to rows in this $table $zone        $rows = &$table->{$zone};        // loop through the rows        foreach ($rows as $row=>$cells) {            // check this is an array            if (is_array($cells)) {                // loop through the cells in this row                foreach ($cells as $col=>$cell) {                    if (is_object($cell)) {                        if (isset($cell->rowspan) && is_numeric($cell->rowspan) && ($cell->rowspan>1)) {                            // fill in cells below this one                            $new_cell = array($cell->text);                            for ($r=1; $r<$cell->rowspan; $r++) {                                array_splice($rows[$row+$r], $col, 0, $new_cell);                            }                        }                        if (isset($cell->colspan) && is_numeric($cell->colspan) && ($cell->colspan>1)) {                            // fill in cells to the right of this one                            $new_cells = array();                            for ($c=1; $c<$cell->colspan; $c++) {                                $new_cells[] = $cell->text;                            }                            array_splice($rows[$row], $col, 0, $new_cells);                        }                        // replace $cell object with plain text                        $rows[$row][$col] = $cell->text;                    }                }            }        }    }//////////////////////////////////////////////////// print a report in html, text or Excel format/////////////////////////////////////////////////// the stuff to print is contained in $table// which has the following properties://   $table->border     border width for the table//   $table->cellpadding    padding on each cell//   $table->cellspacing    spacing between cells//   $table->tableclass class for table//   $table->width      table width//   $table->align    is an array of column alignments//   $table->class    is an array of column classes//   $table->size     is an array of column sizes//   $table->wrap     is an array of column wrap/nowrap switches//   $table->fontsize is an array of fontsizes//   $table->caption is a caption (=title) for the report//   $table->head    is an array of headings (all TH cells)//   $table->data[]  is an array of arrays containing the data (all TD cells)//          if a row is given as "hr", a "tabledivider" is inserted//          if a cell is a string, it is assumed to be the cell content//          a cell can also be an object, thus://              $cell->text : the content of the cell//              $cell->rowspan : the row span of this cell//              $cell->colspan : the column span of this cell//          if rowspan or colspan are specified, neighboring cells are shifted accordingly//   $table->stat[]  is an array of arrays containing the statistics rows (TD and TH cells)//   $table->foot[]  is an array of arrays containing the footer rows (all TH cells)//   $table->statheadercols is an array of column numbers which are headers///////////////////////////////////////////// print a report    function print_report(&$course, &$hotpot, &$tables, &$options) {        switch ($options['reportformat']) {            case 'txt':                $this->print_text_report($course, $hotpot, $tables, $options);                break;

⌨️ 快捷键说明

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