Example #1
0
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 . '&amp;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 . '&amp;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;
}
Example #2
0
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;
}
Example #3
0
 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 . '&amp;class=' . $classid . '&amp;from=home">' . get_string('takemanualattend', 'block_autoattend') . '</a><br />';
         $this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/autoattend/class_division.php?course=' . $course->id . '&amp;class=' . $classid . '&amp;from=home">' . get_string('students_list', 'block_autoattend') . '</a><br />';
         $this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/autoattend/report.php?course=' . $course->id . '&amp;class=' . $classid . '&amp;from=home&amp;view=months&amp;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 . '&amp;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;
 }
Example #4
0
//
// 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('&nbsp;');
//$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>' . '&nbsp;&nbsp;';
}
$percent = sprintf('%0.1f', $summary['percent']) . ' %';
$grade = $summary['grade'];