/** * Lock/unlock this grade. * * @param int $lockedstate 0, 1 or a timestamp int(10) after which date the item will be locked. * @param bool $cascade Ignored param * @param bool $refresh Refresh grades when unlocking * @return bool True if successful, false if can not set new lock state for grade */ public function set_locked($lockedstate, $cascade = false, $refresh = true) { $this->load_grade_item(); if ($lockedstate) { if ($this->grade_item->needsupdate) { //can not lock grade if final not calculated! return false; } $this->locked = time(); $this->update(); return true; } else { if (!empty($this->locked) and $this->locktime < time()) { //we have to reset locktime or else it would lock up again $this->locktime = 0; } // remove the locked flag $this->locked = 0; $this->update(); if ($refresh and !$this->is_overridden()) { //refresh when unlocking and not overridden $this->grade_item->refresh_grades($this->userid); } return true; } }