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

📄 lib.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 4 页
字号:
                        $hidden = ' hidden ';                    }                    $headerlink = $this->gtree->get_element_header($element, true, $this->get_pref('showactivityicons'), false);                    $headerhtml .= '<th class="header '.$columnclass.' '.$type.$catlevel.$hidden.'" scope="col" onclick="set_col(this.cellIndex)">'                                . shorten_text($headerlink) . $arrow;                    $headerhtml .= '</th>';                }            }            $headerhtml .= '</tr>';        }        return $headerhtml;    }    /**     * Builds and return the HTML rows of the table (grades headed by student).     * @return string HTML     */    function get_studentshtml() {        global $CFG, $USER;        $studentshtml = '';        $strfeedback  = $this->get_lang_string("feedback");        $strgrade     = $this->get_lang_string('grade');        $gradetabindex = 1;        $showuserimage = $this->get_pref('showuserimage');        $showuseridnumber = $this->get_pref('showuseridnumber');        $numusers      = count($this->users);        // Preload scale objects for items with a scaleid        $scales_list = '';        $tabindices = array();        foreach ($this->gtree->items as $item) {            if (!empty($item->scaleid)) {                $scales_list .= "$item->scaleid,";            }            $tabindices[$item->id]['grade'] = $gradetabindex;            $tabindices[$item->id]['feedback'] = $gradetabindex + $numusers;            $gradetabindex += $numusers * 2;        }        $scales_array = array();        if (!empty($scales_list)) {            $scales_list = substr($scales_list, 0, -1);            $scales_array = get_records_list('scale', 'id', $scales_list);        }        $row_classes = array(' even ', ' odd ');        $row_classes = array(' even ', ' odd ');        foreach ($this->users as $userid => $user) {            if ($this->canviewhidden) {                $altered = array();                $unknown = array();            } else {                $hiding_affected = grade_grade::get_hiding_affected($this->grades[$userid], $this->gtree->items);                $altered = $hiding_affected['altered'];                $unknown = $hiding_affected['unknown'];                unset($hiding_affected);            }            $columncount = 0;            // Student name and link            $user_pic = null;            if ($showuserimage) {                $user_pic = '<div class="userpic">' . print_user_picture($user, $this->courseid, NULL, 0, true) . '</div>';            }            $studentshtml .= '<tr class="r'.$this->rowcount++ . $row_classes[$this->rowcount % 2] . '">'                          .'<th class="header c'.$columncount++.' user" scope="row" onclick="set_row(this.parentNode.rowIndex);">'.$user_pic                          .'<a href="'.$CFG->wwwroot.'/user/view.php?id='.$user->id.'&amp;course='.$this->course->id.'">'                          .fullname($user).'</a></th>';            if ($showuseridnumber) {                $studentshtml .= '<th class="header c'.$columncount++.' useridnumber" onclick="set_row(this.parentNode.rowIndex);">'.                        $user->idnumber.'</th>';            }            foreach ($this->gtree->items as $itemid=>$unused) {                $item =& $this->gtree->items[$itemid];                $grade = $this->grades[$userid][$item->id];                // Get the decimal points preference for this item                $decimalpoints = $item->get_decimals();                if (in_array($itemid, $unknown)) {                    $gradeval = null;                } else if (array_key_exists($itemid, $altered)) {                    $gradeval = $altered[$itemid];                } else {                    $gradeval = $grade->finalgrade;                }                // MDL-11274                // Hide grades in the grader report if the current grader doesn't have 'moodle/grade:viewhidden'                if (!$this->canviewhidden and $grade->is_hidden()) {                    if (!empty($CFG->grade_hiddenasdate) and $grade->get_datesubmitted() and !$item->is_category_item() and !$item->is_course_item()) {                        // the problem here is that we do not have the time when grade value was modified, 'timemodified' is general modification date for grade_grades records                        $studentshtml .= '<td class="cell c'.$columncount++.'"><span class="datesubmitted">'.userdate($grade->get_datesubmitted(),get_string('strftimedatetimeshort')).'</span></td>';                    } else {                        $studentshtml .= '<td class="cell c'.$columncount++.'">-</td>';                    }                    continue;                }                // emulate grade element                $eid = $this->gtree->get_grade_eid($grade);                $element = array('eid'=>$eid, 'object'=>$grade, 'type'=>'grade');                $cellclasses = 'cell c'.$columncount++;                if ($item->is_category_item()) {                    $cellclasses .= ' cat';                }                if ($item->is_course_item()) {                    $cellclasses .= ' course';                }                if ($grade->is_overridden()) {                    $cellclasses .= ' overridden';                }                if ($grade->is_excluded()) {                    $cellclasses .= ' excluded';                }                $studentshtml .= '<td class="'.$cellclasses.'">';                if ($grade->is_excluded()) {                    $studentshtml .= get_string('excluded', 'grades') . ' ';                }                // Do not show any icons if no grade (no record in DB to match)                if (!$item->needsupdate and $USER->gradeediting[$this->courseid]) {                    $studentshtml .= $this->get_icons($element);                }                $hidden = '';                if ($grade->is_hidden()) {                    $hidden = ' hidden ';                }                $gradepass = ' gradefail ';                if ($grade->is_passed($item)) {                    $gradepass = ' gradepass ';                } elseif (is_null($grade->is_passed($item))) {                    $gradepass = '';                }                // if in editting mode, we need to print either a text box                // or a drop down (for scales)                // grades in item of type grade category or course are not directly editable                if ($item->needsupdate) {                    $studentshtml .= '<span class="gradingerror'.$hidden.'">'.get_string('error').'</span>';                } else if ($USER->gradeediting[$this->courseid]) {                    if ($item->scaleid && !empty($scales_array[$item->scaleid])) {                        $scale = $scales_array[$item->scaleid];                        $gradeval = (int)$gradeval; // scales use only integers                        $scales = explode(",", $scale->scale);                        // reindex because scale is off 1                        // MDL-12104 some previous scales might have taken up part of the array                        // so this needs to be reset                        $scaleopt = array();                        $i = 0;                        foreach ($scales as $scaleoption) {                            $i++;                            $scaleopt[$i] = $scaleoption;                        }                        if ($this->get_pref('quickgrading') and $grade->is_editable()) {                            $oldval = empty($gradeval) ? -1 : $gradeval;                            if (empty($item->outcomeid)) {                                $nogradestr = $this->get_lang_string('nograde');                            } else {                                $nogradestr = $this->get_lang_string('nooutcome', 'grades');                            }                            $studentshtml .= '<input type="hidden" name="oldgrade_'.$userid.'_'                                          .$item->id.'" value="'.$oldval.'"/>';                            $studentshtml .= choose_from_menu($scaleopt, 'grade_'.$userid.'_'.$item->id,                                                              $gradeval, $nogradestr, '', '-1',                                                              true, false, $tabindices[$item->id]['grade']);                        } elseif(!empty($scale)) {                            $scales = explode(",", $scale->scale);                            // invalid grade if gradeval < 1                            if ($gradeval < 1) {                                $studentshtml .= '<span class="gradevalue'.$hidden.$gradepass.'">-</span>';                            } else {                                $gradeval = (int)bounded_number($grade->grade_item->grademin, $gradeval, $grade->grade_item->grademax); //just in case somebody changes scale                                $studentshtml .= '<span class="gradevalue'.$hidden.$gradepass.'">'.$scales[$gradeval-1].'</span>';                            }                        } else {                            // no such scale, throw error?                        }                    } else if ($item->gradetype != GRADE_TYPE_TEXT) { // Value type                        if ($this->get_pref('quickgrading') and $grade->is_editable()) {                            $value = format_float($gradeval, $decimalpoints);                            $studentshtml .= '<input type="hidden" name="oldgrade_'.$userid.'_'.$item->id.'" value="'.$value.'" />';                            $studentshtml .= '<input size="6" tabindex="' . $tabindices[$item->id]['grade']                                          . '" type="text" title="'. $strgrade .'" name="grade_'                                          .$userid.'_' .$item->id.'" value="'.$value.'" />';                        } else {                            $studentshtml .= '<span class="gradevalue'.$hidden.$gradepass.'">'.format_float($gradeval, $decimalpoints).'</span>';                        }                    }                    // If quickfeedback is on, print an input element                    if ($this->get_pref('showquickfeedback') and $grade->is_editable()) {                        if ($this->get_pref('quickgrading')) {                            $studentshtml .= '<br />';                        }                        $studentshtml .= '<input type="hidden" name="oldfeedback_'                                      .$userid.'_'.$item->id.'" value="' . s($grade->feedback) . '" />';                        $studentshtml .= '<input class="quickfeedback" tabindex="' . $tabindices[$item->id]['feedback']                                      . '" size="6" title="' . $strfeedback . '" type="text" name="feedback_'                                      .$userid.'_'.$item->id.'" value="' . s($grade->feedback) . '" />';                    }                } else { // Not editing                    $gradedisplaytype = $item->get_displaytype();                    // If feedback present, surround grade with feedback tooltip: Open span here                    if (!empty($grade->feedback)) {                        $overlib = '';                        $feedback = addslashes_js(trim(format_string($grade->feedback, $grade->feedbackformat)));                        $overlib = "return overlib('$feedback', BORDER, 0, FGCLASS, 'feedback', "                                  ."CAPTIONFONTCLASS, 'caption', CAPTION, '$strfeedback');";                        $studentshtml .= '<span onmouseover="'.s($overlib).'" onmouseout="return nd();">';                    }                    if ($item->needsupdate) {                        $studentshtml .= '<span class="gradingerror'.$hidden.$gradepass.'">'.get_string('error').'</span>';                    } else {                        $studentshtml .= '<span class="gradevalue'.$hidden.$gradepass.'">'.grade_format_gradevalue($gradeval, $item, true, $gradedisplaytype, null).'</span>';                    }                    // Close feedback span                    if (!empty($grade->feedback)) {                        $studentshtml .= '</span>';                    }                }                if (!empty($this->gradeserror[$item->id][$userid])) {                    $studentshtml .= $this->gradeserror[$item->id][$userid];                }                $studentshtml .=  '</td>' . "\n";            }            $studentshtml .= '</tr>';        }        return $studentshtml;    }    /**     * Builds and return the HTML row of column totals.     * @param  bool $grouponly Whether to return only group averages or all averages.     * @return string HTML     */    function get_avghtml($grouponly=false) {        global $CFG, $USER;        if (!$this->canviewhidden) {            // totals might be affected by hiding, if user can not see hidden grades the aggregations might be altered            // better not show them at all if user can not see all hideen grades            return;        }        $averagesdisplaytype   = $this->get_pref('averagesdisplaytype');        $averagesdecimalpoints = $this->get_pref('averagesdecimalpoints');        $meanselection         = $this->get_pref('meanselection');        $shownumberofgrades    = $this->get_pref('shownumberofgrades');        $showuseridnumber      = $this->get_pref('showuseridnumber');        $avghtml = '';        $avgcssclass = 'avg';        if ($grouponly) {            $straverage = get_string('groupavg', 'grades');            $showaverages = $this->currentgroup && $this->get_pref('showgroups');            $groupsql = $this->groupsql;            $groupwheresql = $this->groupwheresql;            $avgcssclass = 'groupavg';        } else {            $straverage = get_string('overallaverage', 'grades');            $showaverages = $this->get_pref('showaverages');            $groupsql = "";            $groupwheresql = "";        }        if ($shownumberofgrades) {            $straverage .= ' (' . get_string('submissions', 'grades') . ') ';        }        $totalcount = $this->get_numusers($grouponly);        if ($showaverages) {            // find sums of all grade items in course            $SQL = "SELECT g.itemid, SUM(g.finalgrade) AS sum                      FROM {$CFG->prefix}grade_items gi                           JOIN {$CFG->prefix}grade_grades g      ON g.itemid = gi.id                           JOIN {$CFG->prefix}user u              ON u.id = g.userid

⌨️ 快捷键说明

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