72 $this->time = $a_time;
73 $this->ass_id = $a_ass->
getId();
74 $this->user_id = $a_user->
getId();
75 $this->member_id = $a_user->
getId();
78 $this->assignment = $a_ass;
81 $this->is_team =
false;
83 if ($a_team->getId()) {
84 $this->member_id = $a_team->
getId();
85 $this->team_id = $a_team->getId();
86 $this->is_team =
true;
105 $user = ($a_user_id > 0)
116 if ($team->getId()) {
135 return new self($a_ass, $a_user, $a_idl, $a_time,
$lng, $a_team);
157 return $this->assignment->getStartTime();
181 return $this->idl->getStartingTimestamp();
194 return !$this->assignment->notStartedYet();
205 $calculated_deadline = 0;
207 if ($this->idl->getStartingTimestamp() && $this->assignment->getRelativeDeadline()) {
208 $calculated_deadline = $this->idl->getStartingTimestamp() + ($this->assignment->getRelativeDeadline() * 24 * 60 * 60);
210 if ($this->assignment->getRelDeadlineLastSubmission() > 0 &&
211 $calculated_deadline > $this->assignment->getRelDeadlineLastSubmission()) {
212 $calculated_deadline = $this->assignment->getRelDeadlineLastSubmission();
215 return $calculated_deadline;
226 return $this->assignment->getRelativeDeadline();
239 return $this->assignment->getRelDeadlineLastSubmission();
267 $dl = $this->idl->getIndividualDeadline();
270 return max($this->assignment->getDeadline(), $dl);
316 if ($od && $od < time()) {
332 if ($official_deadline == 0) {
333 return $lng->txt(
"exc_no_deadline_specified");
335 if ($official_deadline - $this->time <= 0) {
336 $time_str =
$lng->txt(
"exc_time_over_short");
351 if ($this->idl->getIndividualDeadline() > $this->getCommonDeadline()) {
352 return $this->idl->getIndividualDeadline();
380 return $this->assignment->getDeadline();
397 return "no deadline";
417 if ($this->assignment->getPeerReview() &&
418 $this->assignment->getPeerReviewDeadline()) {
419 return $this->assignment->getPeerReviewDeadline();
435 return "no peer review deadline";
445 if ($this->assignment->getPeerReview() && $this->hasSubmissionEndedForAllUsers()
446 && ($this->getPeerReviewDeadline() == 0 || $this->getPeerReviewDeadline() > $this->time)) {
460 if ($a_timestamp > 0) {
529 $this->getIndividualStart() > 0)) {
560 $global_subm_end = max($this->
getEffectiveDeadline(), $this->assignment->getLastPersonalDeadline());
562 if ($global_subm_end == 0) {
566 if ($this->time > $global_subm_end) {
597 if (!$this->assignment->getFeedbackFile()) {
605 $access = $this->assignment->afterCustomDate();
An exception for terminatinating execution or to throw for unit testing.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date @access public.
@classDescription Date and time handling
Exercise assignment team.
static getInstanceByUserId($a_assignment_id, $a_user_id, $a_create_on_demand=false)
getId()
Get assignment id.
const FEEDBACK_DATE_CUSTOM
const FEEDBACK_DATE_DEADLINE
Exercise submission //TODO: This class has to much static methods related to delivered "files".
Handles everything about the state (current phase) of a user in an assignment using assignment,...
getPeerReviewDeadlinePresentation()
Get common deadline presentation.
areInstructionsVisible()
Instructions visible.
getOfficialDeadline()
Get official deadline (individual deadline, fixed deadline or calculated deadline (using relative dea...
hasSubmissionEnded()
Check if the submission phase has ended for the current user.
getTimePresentation($a_timestamp)
Get common deadline presentation.
getRemainingTimePresentation()
Remaining time presentation (based on official deadline)
getIndividualStart()
Get individual start.
getEffectiveDeadline()
Get effective deadline (max of official deadline and grace end period) for the user.
exceededOfficialDeadline()
Check if official deadline exists and has ended.
__construct(ilExAssignment $a_ass, ilObjUser $a_user, ilExcIndividualDeadline $a_idl, $a_time, ilLanguage $lng, ilExAssignmentTeam $a_team=null)
ilExcAssMemberState constructor.
hasSubmissionStarted()
Check if the submission phase has started for the current user.
isPeerReviewAllowed()
Is submission currently allowed.
getIndividualDeadlinePresentation()
Get common deadline presentation.
getLastSubmissionOfRelativeDeadline()
Get last submission for relative deadline.
getCommonDeadline()
Get common deadline (no individual deadline or grace period included)
getRelativeDeadline()
Get relative deadline.
getGeneralStart()
Get general start.
getLastSubmissionOfRelativeDeadlinePresentation()
Get last submission for relative deadlines.
getIndividualDeadline()
Get individual deadline.
getCommonDeadlinePresentation()
Get common deadline presentation.
isSubmissionAllowed()
Is submission currently allowed.
isGlobalFeedbackFileAccessible(ilExSubmission $submission)
Is global feedback file accessible?
getRelativeDeadlinePresentation()
Get relative deadline presentation.
getIndividualDeadlineObject()
Get individual deadline object.
inLateSubmissionPhase()
Get late submission warning.
getPeerReviewDeadline()
Get peer review deadline.
getOfficialDeadlinePresentation()
Get official deadline presentation.
getCalculatedDeadline()
Calculated deadline is only given, if a relative deadline is given and the user started the assignmen...
static getInstanceByIds($a_ass_id, $a_user_id=0)
Get instance by IDs (recommended for consumer code)
hasGenerallyStarted()
Has started.
hasSubmissionEndedForAllUsers()
Has submission ended for all users.
static getInstance(ilExAssignment $a_ass, ilObjUser $a_user, ilExcIndividualDeadline $a_idl, $a_time, ilLanguage $lng, ilExAssignmentTeam $a_team=null)
Get instance by dependencies.
getGeneralStartPresentation()
Get start presentation.
static getInstance($a_ass_id, $a_participant_id, $a_is_team=false)
Get instance.
getId()
get object id @access public
static period2String(ilDateTime $a_from, $a_to=null)
Return a string of time period.