コード例 #1
0
ファイル: grade.php プロジェクト: JackCanada/moodle-hacks
         } else {
             $grade_grade->set_hidden($hidden);
             // checkbox data might be undefined
         }
     }
 }
 if (isset($data->locked) and !$grade_item->is_locked()) {
     if (($old_grade_grade->locked or $old_grade_grade->locktime) and (!has_capability('moodle/grade:manage', $context) and !has_capability('moodle/grade:unlock', $context))) {
         //ignore data
     } else {
         if (!$old_grade_grade->locked and !$old_grade_grade->locktime and (!has_capability('moodle/grade:manage', $context) and !has_capability('moodle/grade:lock', $context))) {
             //ignore data
         } else {
             $grade_grade->set_locktime($data->locktime);
             //set_lock may reset locktime
             $grade_grade->set_locked($data->locked, false, true);
             // reload grade in case it was regraded from activity
             $grade_grade = new grade_grade(array('userid' => $data->userid, 'itemid' => $grade_item->id), true);
             $grade_grade->grade_item =& $grade_item;
             // no db fetching
         }
     }
 }
 if (isset($data->excluded) and has_capability('moodle/grade:manage', $context)) {
     $grade_grade->set_excluded($data->excluded);
 }
 // detect cases when we need to do full regrading
 if ($old_grade_grade->excluded != $grade_grade->excluded) {
     $parent = $grade_item->get_parent_category();
     $parent->force_regrading();
 } else {
コード例 #2
0
ファイル: grade_item.php プロジェクト: r007/PMoodle
 /**
  * Locks or unlocks this grade_item and (optionally) all its associated final grades.
  * @param int $locked 0, 1 or a timestamp int(10) after which date the item will be locked.
  * @param boolean $cascade lock/unlock child objects too
  * @param boolean $refresh refresh grades when unlocking
  * @return boolean true if grade_item all grades updated, false if at least one update fails
  */
 function set_locked($lockedstate, $cascade = false, $refresh = true)
 {
     if ($lockedstate) {
         /// setting lock
         if ($this->needsupdate) {
             return false;
             // can not lock grade without first having final grade
         }
         $this->locked = time();
         $this->update();
         if ($cascade) {
             $grades = $this->get_final();
             foreach ($grades as $g) {
                 $grade = new grade_grade($g, false);
                 $grade->grade_item =& $this;
                 $grade->set_locked(1, null, false);
             }
         }
         return true;
     } else {
         /// removing lock
         if (!empty($this->locked) and $this->locktime < time()) {
             //we have to reset locktime or else it would lock up again
             $this->locktime = 0;
         }
         $this->locked = 0;
         $this->update();
         if ($cascade) {
             if ($grades = grade_grade::fetch_all(array('itemid' => $this->id))) {
                 foreach ($grades as $grade) {
                     $grade->grade_item =& $this;
                     $grade->set_locked(0, null, false);
                 }
             }
         }
         if ($refresh) {
             //refresh when unlocking
             $this->refresh_grades();
         }
         return true;
     }
 }
コード例 #3
0
 function test_grade_grade_set_locked()
 {
     $grade_item = new grade_item($this->grade_items[0]);
     $grade = new grade_grade($grade_item->get_final(1));
     $this->assertTrue(method_exists($grade, 'set_locked'));
     $this->assertTrue(empty($grade_item->locked));
     $this->assertTrue(empty($grade->locked));
     $this->assertTrue($grade->set_locked(true));
     $this->assertFalse(empty($grade->locked));
     $this->assertTrue($grade->set_locked(false));
     $this->assertTrue(empty($grade->locked));
     $this->assertTrue($grade_item->set_locked(true));
     $grade = new grade_grade($grade_item->get_final(1));
     $this->assertFalse(empty($grade->locked));
     $this->assertFalse($grade->set_locked(false));
     $this->assertTrue($grade_item->set_locked(false));
     $grade = new grade_grade($grade_item->get_final(1));
     $this->assertTrue($grade->set_locked(false));
 }