示例#1
0
 /**
  * Trigger the grading_table_viewed event.
  *
  * @param int $assignid the assign instance id
  * @return array of warnings and status result
  * @since Moodle 3.0
  * @throws moodle_exception
  */
 public static function view_grading_table($assignid)
 {
     global $DB, $CFG;
     require_once $CFG->dirroot . "/mod/assign/locallib.php";
     $params = self::validate_parameters(self::view_grading_table_parameters(), array('assignid' => $assignid));
     $warnings = array();
     // Request and permission validation.
     $assign = $DB->get_record('assign', array('id' => $params['assignid']), 'id', MUST_EXIST);
     list($course, $cm) = get_course_and_cm_from_instance($assign, 'assign');
     $context = context_module::instance($cm->id);
     self::validate_context($context);
     require_capability('mod/assign:view', $context);
     $assign = new assign($context, null, null);
     $assign->require_view_grades();
     \mod_assign\event\grading_table_viewed::create_from_assign($assign)->trigger();
     $result = array();
     $result['status'] = true;
     $result['warnings'] = $warnings;
     return $result;
 }
示例#2
0
 /**
  * Get the user participating in the given assignment. An error with code 'usernotincourse'
  * is thrown is the user isn't a participant of the given assignment.
  *
  * @param int $assignid the assign instance id
  * @param int $userid the user id
  * @param bool $embeduser return user details (only applicable if not blind marking)
  * @return array of warnings and status result
  * @since Moodle 3.1
  * @throws moodle_exception
  */
 public static function get_participant($assignid, $userid, $embeduser)
 {
     global $DB, $CFG;
     require_once $CFG->dirroot . "/mod/assign/locallib.php";
     require_once $CFG->dirroot . "/user/lib.php";
     $params = self::validate_parameters(self::get_participant_parameters(), array('assignid' => $assignid, 'userid' => $userid, 'embeduser' => $embeduser));
     // Request and permission validation.
     $assign = $DB->get_record('assign', array('id' => $params['assignid']), 'id', MUST_EXIST);
     list($course, $cm) = get_course_and_cm_from_instance($assign, 'assign');
     $context = context_module::instance($cm->id);
     self::validate_context($context);
     $assign = new assign($context, null, null);
     $assign->require_view_grades();
     $participant = $assign->get_participant($params['userid']);
     if (!$participant) {
         // No participant found so we can return early.
         throw new moodle_exception('usernotincourse');
     }
     $return = array('id' => $participant->id, 'fullname' => $participant->fullname, 'submitted' => $participant->submitted, 'requiregrading' => $participant->requiregrading, 'blindmarking' => $assign->is_blind_marking());
     if (!empty($participant->groupid)) {
         $return['groupid'] = $participant->groupid;
     }
     if (!empty($participant->groupname)) {
         $return['groupname'] = $participant->groupname;
     }
     // Skip the expensive lookup of user detail if we're blind marking or the caller
     // hasn't asked for user details to be embedded.
     if (!$assign->is_blind_marking() && $embeduser) {
         $return['user'] = user_get_user_details($participant, $course);
     }
     return $return;
 }