本文整理汇总了PHP中grade_tree::get_levels方法的典型用法代码示例。如果您正苦于以下问题:PHP grade_tree::get_levels方法的具体用法?PHP grade_tree::get_levels怎么用?PHP grade_tree::get_levels使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类grade_tree
的用法示例。
在下文中一共展示了grade_tree::get_levels方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: generate_jwc_xml
function generate_jwc_xml($jwc_courses, $export_users, $include_cats = false, $dryrun = true)
{
global $course, $output, $jwc, $DB, $USER, $nonexist_users;
if ($include_cats) {
$heading = '导出分项成绩及总分到教务处';
} else {
$heading = '导出总分到教务处';
}
if ($dryrun) {
$heading .= '(模拟)';
} else {
$heading .= '(正式)';
}
echo $output->heading($heading);
//first make sure we have proper final grades - this must be done before constructing of the grade tree
grade_regrade_final_grades($course->id);
// 获得成绩类别和项信息
$tree = new grade_tree($course->id, true, true);
$levels = $tree->get_levels();
// 总分
$total_item = normalize_grade_item($levels[0][0]['object']->grade_item);
$sub_items = array();
$extra_items = array();
$items = array();
// 顶级成绩分类和项
if (array_key_exists(1, $levels) && $include_cats) {
foreach ($levels[1] as $element) {
if ($element['type'] == 'item') {
$grade_item = normalize_grade_item($element['object']);
} else {
if ($element['type'] == 'category') {
$tmp = array_pop($element['children']);
$grade_item = normalize_grade_item($tmp['object']);
//用类别名做成绩名
$grade_item->itemname = $element['object']->fullname;
} else {
// ignore unused fillers
continue;
}
}
if ($grade_item->grademax <= 0) {
// 不计分成绩项/类别
continue;
}
if ($grade_item->aggregationcoef) {
// 额外加分
$extra_items[$grade_item->id] = $grade_item;
} else {
$sub_items[$grade_item->id] = $grade_item;
}
}
}
/// 验证成绩项是否符合教务处要求
$result = true;
// 总成绩满分必须是100分
if ($total_item->grademax != MAX_TOTAL_GRADE) {
echo $output->require_max_total_grade($total_item->grademax);
$result = false;
}
if ($include_cats) {
// 总成绩算法必须是“简单加权平均分”
$total_aggregation = $levels[0][0]['object']->aggregation;
if ($total_aggregation != GRADE_AGGREGATE_WEIGHTED_MEAN2 and $total_aggregation != GRADE_AGGREGATE_SUM) {
echo $output->require_aggregation($total_aggregation);
$result = false;
}
// 子成绩项权重和必须为100
// 所有非加分的分项相加为100,才合法,除非不包含子类别
$weight_sum = 0;
foreach ($sub_items as $item) {
$weight_sum += $item->grademax;
}
if ($include_cats and $weight_sum != MAX_TOTAL_GRADE) {
echo $output->require_100_weight($weight_sum);
$result = false;
}
// 子成绩项数量不能超过8
if (count($sub_items) > MAX_SUB_GRADE_COUNT) {
echo $output->require_max_subitems(count($sub_items));
$result = false;
}
// 加分成绩项数量不能超过2
if (count($extra_items) > MAX_EXTRA_SUB_GRADE_COUNT) {
echo $output->require_max_extraitems(count($extra_items));
$result = false;
}
}
if (!$result) {
echo $output->modify_items_link();
return false;
}
$xml = new gradebook_xml();
if ($dryrun) {
echo $output->box_start();
echo $output->heading('可导出成绩项', 3);
}
$itemtable = new html_table();
$itemtable->head = array('成绩分项名称', '权重', '加分');
foreach ($sub_items as $item) {
$itemtable->data[] = new html_table_row(array($item->itemname, $item->grademax . '%', '否'));
//.........这里部分代码省略.........