コード例 #1
0
ファイル: lib.php プロジェクト: gabrielrosset/moodle
 /**
  * Given the grade tree and an array of element ids (e.g. c15, i42), and expecting the 'moveafter' URL param,
  * moves the selected items to the requested location. Then redirects the user to the given $returnurl
  *
  * @param object $gtree The grade tree (a recursive representation of the grade categories and grade items)
  * @param array $eids
  * @param string $returnurl
  */
 function move_elements($eids, $returnurl)
 {
     $moveafter = required_param('moveafter', PARAM_INT);
     if (!is_array($eids)) {
         $eids = array($eids);
     }
     if (!($after_el = $this->gtree->locate_element("cg{$moveafter}"))) {
         print_error('invalidelementid', '', $returnurl);
     }
     $after = $after_el['object'];
     $parent = $after;
     $sortorder = $after->get_sortorder();
     foreach ($eids as $eid) {
         if (!($element = $this->gtree->locate_element($eid))) {
             print_error('invalidelementid', '', $returnurl);
         }
         $object = $element['object'];
         $object->set_parent($parent->id);
         $object->move_after_sortorder($sortorder);
         $sortorder++;
     }
     redirect($returnurl, '', 0);
 }
コード例 #2
0
ファイル: index.php プロジェクト: Gavinthisisit/Moodle
//first make sure we have proper final grades - we need it for locking changes
$normalisationmessage = null;
$originalweights = grade_helper::fetch_all_natural_weights_for_course($courseid);
grade_regrade_final_grades($courseid);
$alteredweights = grade_helper::fetch_all_natural_weights_for_course($courseid);
if (array_diff($originalweights, $alteredweights)) {
    $normalisationmessage = get_string('weightsadjusted', 'grades');
}
// get the grading tree object
// note: total must be first for moving to work correctly, if you want it last moving code must be rewritten!
$gtree = new grade_tree($courseid, false, false);
if (empty($eid)) {
    $element = null;
    $object = null;
} else {
    if (!($element = $gtree->locate_element($eid))) {
        print_error('invalidelementid', '', $returnurl);
    }
    $object = $element['object'];
}
$switch = grade_get_setting($course->id, 'aggregationposition', $CFG->grade_aggregationposition);
$strgrades = get_string('grades');
$strgraderreport = get_string('graderreport', 'grades');
$moving = false;
$movingeid = false;
if ($action == 'moveselect') {
    if ($eid and confirm_sesskey()) {
        $movingeid = $eid;
        $moving = true;
    }
}
コード例 #3
0
ファイル: action.php プロジェクト: evltuma/moodle
$action = required_param('action', PARAM_ALPHA);
$eid = required_param('eid', PARAM_ALPHANUM);
$PAGE->set_url('/grade/edit/tree/action.php', array('id' => $courseid, 'action' => $action, 'eid' => $eid));
/// Make sure they can even access this course
if (!($course = $DB->get_record('course', array('id' => $courseid)))) {
    print_error('nocourseid');
}
require_login($course);
$context = context_course::instance($course->id);
// default return url
$gpr = new grade_plugin_return();
$returnurl = $gpr->get_return_url($CFG->wwwroot . '/grade/edit/tree/index.php?id=' . $course->id);
// get the grading tree object
$gtree = new grade_tree($courseid, false, false);
// what are we working with?
if (!($element = $gtree->locate_element($eid))) {
    print_error('invalidelementid', '', $returnurl);
}
$object = $element['object'];
$type = $element['type'];
switch ($action) {
    case 'hide':
        if ($eid and confirm_sesskey()) {
            if (!has_capability('moodle/grade:manage', $context) and !has_capability('moodle/grade:hide', $context)) {
                print_error('nopermissiontohide', '', $returnurl);
            }
            if ($type == 'grade' and empty($object->id)) {
                $object->insert();
            }
            if (!$object->can_control_visibility()) {
                print_error('componentcontrolsvisibility', 'grades', $returnurl);
コード例 #4
0
/**
 * Re-sorts the gradebook to put all MTG grade items first.
 *
 * Gets all of the grade items for the specifed course. Iterates over the array
 * of items and moves the MTG items to the front of the array. Then does a
 * second pass to renumber all the sortorders to make the items sequential from
 * 2 upwards (1 will be the course item).
 *
 * @param object $course Database record for course, containing the id.
 */
function sort_gradebook($course)
{
    global $CFG, $DB;
    require_once $CFG->dirroot . '/grade/lib.php';
    require_once $CFG->dirroot . '/grade/edit/tree/lib.php';
    $gtree = new \grade_tree($course->id, false, false);
    $fields = array('alis_avgcse', 'alis_alisnum', 'alis_alis', 'alis_mtg', 'alis_cpg');
    $params = array($course->id);
    list($in_sql, $in_params) = $DB->get_in_or_equal($params);
    $params = \array_merge($params, $in_params);
    $where = 'courseid = ? AND idnumber ' . $in_sql;
    $gradeitems = $DB->get_records_select('grade_items', $where, $params, 'itemnumber DESC');
    $courseitem = $DB->get_record('grade_items', array('courseid' => $course->id, 'itemtype' => 'course'));
    //$mtgitems = count_records_select('grade_items', $where);
    // First, move the MTG grade items to the front
    $offset = 0;
    foreach ($gradeitems as $item) {
        if (!($element = $gtree->locate_element('i' . $item->id))) {
            \print_error('invalidelementid');
        }
        $object = $element['object'];
        $moveafter = 'c' . $courseitem->iteminstance;
        $first = 1;
        // If First is set to 1, it means the target is the first child of the category $moveafter
        if (!($after_el = $gtree->locate_element($moveafter))) {
            \print_error('invalidelementid');
        }
        $after = $after_el['object'];
        $sortorder = $after->get_sortorder();
        if (!$first) {
            $parent = $after->get_parent_category();
            $object->set_parent($parent->id);
        } else {
            $object->set_parent($after->id);
        }
        $object->move_after_sortorder($sortorder);
    }
}