function report_show_table($course, $students, $course_sess, $classes, $settings, $url_options, $name_pattern, $order) { global $DB, $CFG, $OUTPUT, $wwwBlock; $table = new html_table(); $i = 0; foreach ($students as $student) { $i++; $pic_options = array('size' => 20, 'link' => true, 'alttext' => true, 'courseid' => $course->id, 'popup' => true); $username = jbxl_get_user_name($student->id, $name_pattern); $table->data[$student->id][] = $OUTPUT->user_picture($student->user, $pic_options); $table->data[$student->id][] = '<a href="' . $wwwBlock . '/index.php?course=' . $course->id . '&student=' . $student->id . '" target="_blank">' . $username . '</a>'; if ($CFG->output_idnumber) { if (empty($student->idnumber)) { $table->data[$student->id][] = '-'; } else { $table->data[$student->id][] = $student->idnumber; } } $user_summary = autoattend_get_user_summary($student->id, $course->id); if ($classes) { $table->data[$student->id][] = $user_summary['classname']; } $table->data[$student->id][] = $user_summary['grade']; $table->data[$student->id][] = $user_summary['percent'] . '%'; $table->data[$student->id][] = $user_summary['P']; $table->data[$student->id][] = $user_summary['L']; $table->data[$student->id][] = $user_summary['E']; $table->data[$student->id][] = $user_summary['X']; $table->data[$student->id][] = $user_summary['Y']; $j = 0; foreach ($course_sess as $sessdata) { if ($j > 0 and $j % PAGE_COLUMN_SIZE == 0) { $table->data[$student->id][] = '<a href="' . $wwwBlock . '/index.php?course=' . $course->id . '&student=' . $student->id . '" target="_blank">' . $username . '</a>'; } // $j++; $att = $DB->get_record('autoattend_students', array('attsid' => $sessdata->id, 'studentid' => $student->id)); if ($att and ($sessdata->classid == $student->classid or $sessdata->classid == 0)) { $table->data[$student->id][] = $settings[$att->status]->acronym; } else { $table->data[$student->id][] = get_string('novalue', 'block_autoattend'); } } // if ($i % PAGE_ROW_SIZE == 0) { report_make_header($table, $course_sess, $classes, $settings, $url_options, $name_pattern, $order); echo '<div align="center" style="overflow-x: auto;">'; echo html_writer::table($table); echo '</div><br /><br />'; unset($table->data); } } if ($i % PAGE_ROW_SIZE != 0 or $i == 0) { report_make_header($table, $course_sess, $classes, $settings, $url_options, $name_pattern, $order); echo '<div align="center" style="overflow-x: auto;">'; echo html_writer::table($table); echo '</div><br /><br />'; } return; }
function autoattend_make_download_data($courseid, $classes = null, $classid = 0, $viewmode = 'all', $starttm = 0, $attsid = 'all', $students = null, $sort = '', $order = '') { global $CFG, $DB, $TIME_OFFSET; $settings = autoattend_get_grade_settings($courseid); // $indclass = ''; $indsess = ''; $indperiod = ''; if ($classid != 0) { $indclass = ' AND (classid=' . $classid . ' OR classid=0)'; } if ($viewmode != 'all') { if ($starttm == 0) { $starttm = time(); } if ($viewmode === 'weeks') { $indperiod = " AND sessdate >= {$starttm} AND sessdate < " . ($starttm + ONE_WEEK_TIME); } elseif ($viewmode === 'months') { $nxtmon = mktime(0, 0, 0, date('m', $starttm + $TIME_OFFSET) + 1, 1, date('Y', $starttm + $TIME_OFFSET)) - $TIME_OFFSET; $indperiod = " AND sessdate >= {$starttm} AND sessdate < " . $nxtmon; } } if ($attsid != 'all' and $attsid != 0) { $indsess = ' AND id=' . $attsid; $viewmode = 'session'; } // Only Closed Session $qry = "SELECT * FROM {$CFG->prefix}autoattend_sessions where courseid=" . $courseid . $indsess . $indclass . $indperiod . " AND state='C' ORDER BY sessdate, starttime ASC"; $name_pattern = autoattend_get_namepattern($courseid); // $datas = new stdClass(); $datas->attr = array(); // 属性 'string', 'number'. デフォルトは 'string' $datas->data = array(); $j = 0; $k = 0; $datas->attr[0] = array(); $datas->data[0] = array(); if ($CFG->fullnamedisplay == 'lastname firstname') { if ($name_pattern == 'fullname' or $name_pattern == 'lastname') { $datas->attr[0][$k++] = ''; $datas->data[0][$j++] = get_string('lastname'); } if ($name_pattern == 'fullname' or $name_pattern == 'firstname') { $datas->attr[0][$k++] = ''; $datas->data[0][$j++] = get_string('firstname'); } if ($sort == '') { $sort = 'lastname'; } } else { if ($name_pattern == 'fullname' or $name_pattern == 'firstname') { $datas->attr[0][$k++] = ''; $datas->data[0][$j++] = get_string('firstname'); } if ($name_pattern == 'fullname' or $name_pattern == 'lastname') { $datas->attr[0][$k++] = ''; $datas->data[0][$j++] = get_string('lastname'); } if ($sort == '') { $sort = 'firstname'; } } // if ($CFG->output_idnumber) { $datas->attr[0][$k++] = ''; $datas->data[0][$j++] = 'ID'; } if ($classes) { $datas->attr[0][$k++] = ''; $datas->data[0][$j++] = get_string('classname', 'block_autoattend'); } if ($viewmode == 'session') { $courseses = array(); if ($sess = $DB->get_records_sql($qry)) { foreach ($sess as $id => $dsess) { $date = strftime(get_string('strftimedmshort', 'block_autoattend'), $dsess->sessdate + $TIME_OFFSET); $datas->attr[0][$k++] = ''; $datas->data[0][$j++] = $date; $courseses[] = $dsess->id; } } } // $datas->attr[0][$k++] = ''; $datas->attr[0][$k++] = ''; $datas->attr[0][$k++] = ''; $datas->attr[0][$k++] = ''; $datas->attr[0][$k++] = ''; $datas->attr[0][$k++] = ''; $datas->attr[0][$k++] = ''; // $datas->data[0][$j++] = get_string('Cstatefull', 'block_autoattend'); $datas->data[0][$j++] = $settings['P']->title; $datas->data[0][$j++] = $settings['X']->title; $datas->data[0][$j++] = $settings['L']->title; $datas->data[0][$j++] = $settings['E']->title; $datas->data[0][$j++] = get_string('attendpercent', 'block_autoattend'); $datas->data[0][$j++] = get_string('attendgrade', 'block_autoattend'); if ($viewmode != 'session') { $courseses = array(); if ($sess = $DB->get_records_sql($qry)) { foreach ($sess as $id => $dsess) { $date = strftime(get_string('strftimedmshort', 'block_autoattend'), $dsess->sessdate + $TIME_OFFSET); $datas->attr[0][$k++] = ''; $datas->data[0][$j++] = $date; $courseses[] = $dsess->id; } } } // if (!$students) { $context = jbxl_get_course_context($courseid); $students = autoattend_get_attend_students($courseid, $classid, $context, $sort, $order); } $i = 1; foreach ($students as $student) { $j = 0; $k = 0; $summary = autoattend_get_user_summary($student->id, $courseid); $datas->data[$i] = array(); $datas->attr[$i] = array(); // if ($CFG->fullnamedisplay == 'lastname firstname') { if ($name_pattern == 'fullname' or $name_pattern == 'lastname') { $datas->attr[$i][$k++] = ''; $datas->data[$i][$j++] = $student->lastname; } if ($name_pattern == 'fullname' or $name_pattern == 'firstname') { $datas->attr[$i][$k++] = ''; $datas->data[$i][$j++] = $student->firstname; } } else { if ($name_pattern == 'fullname' or $name_pattern == 'firstname') { $datas->attr[$i][$k++] = ''; $datas->data[$i][$j++] = $student->firstname; } if ($name_pattern == 'fullname' or $name_pattern == 'lastname') { $datas->attr[$i][$k++] = ''; $datas->data[$i][$j++] = $student->lastname; } } if ($CFG->output_idnumber) { if (empty($student->idnumber)) { $idnumber = '-'; } else { $idnumber = $student->idnumber; } $datas->attr[$i][$k++] = ''; $datas->data[$i][$j++] = $idnumber; } if ($classes) { $datas->attr[$i][$k++] = ''; $datas->data[$i][$j++] = $summary['classname']; } if ($viewmode == 'session') { foreach ($courseses as $sid) { if ($rec = $DB->get_record('autoattend_students', array('attsid' => $sid, 'studentid' => $student->id))) { $datas->attr[$i][$k++] = ''; $datas->data[$i][$j++] = $settings[$rec->status]->acronym; } else { $datas->attr[$i][$k++] = ''; $datas->data[$i][$j++] = '-'; } } } // $datas->attr[$i][$k++] = 'number'; $datas->attr[$i][$k++] = 'number'; $datas->attr[$i][$k++] = 'number'; $datas->attr[$i][$k++] = 'number'; $datas->attr[$i][$k++] = 'number'; $datas->attr[$i][$k++] = 'number'; $datas->attr[$i][$k++] = 'number'; // $datas->data[$i][$j++] = $summary['complete']; $datas->data[$i][$j++] = $summary['P']; $datas->data[$i][$j++] = $summary['X']; $datas->data[$i][$j++] = $summary['L']; $datas->data[$i][$j++] = $summary['E']; $datas->data[$i][$j++] = $summary['percent']; $datas->data[$i][$j++] = $summary['grade']; if ($viewmode != 'session') { foreach ($courseses as $sid) { if ($rec = $DB->get_record('autoattend_students', array('attsid' => $sid, 'studentid' => $student->id))) { $datas->attr[$i][$k++] = ''; $datas->data[$i][$j++] = $settings[$rec->status]->acronym; } else { $datas->attr[$i][$k++] = ''; $datas->data[$i][$j++] = '-'; } } } $i++; } return $datas; }
function get_content() { global $CFG, $USER, $DB; if ($this->content != NULL) { return $this->content; } $courseid = optional_param('course', 0, PARAM_INTEGER); $classid = optional_param('class', 0, PARAM_INTEGER); if ($courseid == 0) { $courseid = $this->page->course->id; } if ($courseid != 0) { $course = $DB->get_record('course', array('id' => $courseid)); if (!$course) { print_error('courseidwrong', 'block_autoattend'); } } else { return ''; } $this->content = new stdClass(); $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; $this->content->text = ''; // $context = jbxl_get_course_context($course->id); $isstudent = false; $isassist = false; $isteacher = jbxl_is_teacher($USER->id, $context); if (!$isteacher) { $isassist = jbxl_is_assistant($USER->id, $context); if (!$isassist) { $isstudent = jbxl_is_student($USER->id, $context); } } if ($isteacher or $isassist) { // Teacher // $this->content->text = '<a href="' . $CFG->wwwroot . '/blocks/autoattend/index.php?course=' . $course->id . '&class=' . $classid . '&from=home">' . get_string('takemanualattend', 'block_autoattend') . '</a><br />'; $this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/autoattend/class_division.php?course=' . $course->id . '&class=' . $classid . '&from=home">' . get_string('students_list', 'block_autoattend') . '</a><br />'; $this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/autoattend/report.php?course=' . $course->id . '&class=' . $classid . '&from=home&view=months&refresh=1">' . get_string('report', 'block_autoattend') . '</a><br />'; if ($isteacher) { //$this->content->text.= '<a href="'.$CFG->wwwroot.'/blocks/autoattend/class_division.php?course='.$course->id.'">'. // get_string('class_division','block_autoattend').'</a><br />'; // if ($this->version < 2014051100) { $this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/autoattend/repairDB.php?course=' . $course->id . '">' . get_string('repairdb', 'block_autoattend') . '</a><br />'; } } } elseif ($isstudent) { // $user_summary = autoattend_get_user_summary($USER->id, $course->id); if (!$user_summary) { //autoattend not generated yet $this->content->text .= get_string('attendnotstarted', 'block_autoattend'); } else { //autoattend taken $classinfo = autoattend_get_user_class($USER->id, $course->id); $this->content->text .= get_string('classname', 'block_autoattend') . ': ' . $classinfo->name . '<br />'; // if ($classinfo->classid >= 0) { // !出欠から除外 $absence = 0; $settings = autoattend_get_grade_settings($course->id); foreach ($settings as $set) { //if ($set->status=='X' or $set->status=='Y') { if ($set->status == 'X') { $absence += $user_summary[$set->status]; } else { if ($set->status != 'Y') { $this->content->text .= $settings[$set->status]->description . ': ' . $user_summary[$set->status] . '<br />'; } } } $this->content->text .= $settings['X']->description . ': ' . $absence . '<br />'; $percent = $user_summary['percent']; $grade = $user_summary['grade']; $mxgrade = $user_summary['maxgrade']; $this->content->text .= get_string('attendpercent', 'block_autoattend') . ': ' . $percent . ' %<br />'; $this->content->text .= get_string('attendgrade', 'block_autoattend') . ": {$grade} / {$mxgrade}<br />"; $this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/autoattend/index.php?course=' . $course->id . '&class=' . $classid . '">'; $this->content->text .= get_string('indetail', 'block_autoattend') . '</a>'; } } } else { $this->content->text = ''; // Guest } $this->content->footer = '<hr />'; if (autoattend_disp_feedback($course->id)) { if ($isteacher or $isassist) { $this->content->footer .= '<a href="https://el.mml.tuis.ac.jp/moodle/mod/feedback/view.php?id=528" target="_blank">'; } elseif ($isstudent) { $this->content->footer .= '<a href="https://el.mml.tuis.ac.jp/moodle/mod/feedback/view.php?id=529" target="_blank">'; } $this->content->footer .= get_string('feedback', 'block_autoattend') . '</a><br />'; } $this->content->footer .= '<a href="' . get_string('wiki_url', 'block_autoattend') . '" target="_blank"><i>Autoattend ' . $this->release . '</i></a>'; return $this->content; }
// // Print Header if ($course->category) { $title = get_string('updateuserattend', 'block_autoattend') . ' ' . get_string('autoattend', 'block_autoattend'); } else { $title = $course->shortname . ': ' . get_string('autoattend', 'block_autoattend'); } $PAGE->set_title($title); $PAGE->set_heading($course->fullname); $PAGE->set_cacheable(true); $PAGE->set_button(' '); //$PAGE->set_headingmenu(); echo $OUTPUT->header(); // $classes = autoattend_get_session_classes($course->id); $summary = autoattend_get_user_summary($user->id, $course->id); $classname = $summary['classname']; $classid = $summary['classid']; $attitems = $summary['attitems']; if (!$attitems) { print_error('reqinfomiss', 'block_autoattend', 'index.php?course=' . $courseid); } $complete = $summary['complete']; $settings = $summary['settings']; $useratt = ''; foreach ($settings as $set) { $desc = get_string($set->status . 'desc', 'block_autoattend'); $useratt .= $desc . ': <strong>' . $summary[$set->status] . '</strong>' . ' '; } $percent = sprintf('%0.1f', $summary['percent']) . ' %'; $grade = $summary['grade'];