3 declare(strict_types=1);
97 self::ASSIGNMENT_FIELD_ID => $this->
nextId(),
98 self::ASSIGNMENT_FIELD_USR_ID => $usr_id,
99 self::ASSIGNMENT_FIELD_ROOT_PRG_ID => $prg_obj_id,
100 self::ASSIGNMENT_FIELD_LAST_CHANGE_BY => $assigning_usr_id,
101 self::ASSIGNMENT_FIELD_LAST_CHANGE =>
ilUtil::now(),
102 self::ASSIGNMENT_FIELD_RESTART_DATE => null,
104 self::ASSIGNMENT_FIELD_MANUALLY_ASSIGNED => $manually
107 $this->progresses = [];
111 .
'FROM usr_data WHERE usr_id = ' . $this->db->quote($usr_id,
'integer');
113 $row = array_merge($row, $this->db->fetchAssoc(
$res));
123 self::ASSIGNMENT_FIELD_ID => $assignment->
getId(),
124 self::ASSIGNMENT_FIELD_USR_ID => $assignment->
getUserId(),
125 self::ASSIGNMENT_FIELD_ROOT_PRG_ID => $assignment->
getRootId(),
126 self::ASSIGNMENT_FIELD_LAST_CHANGE_BY => $assignment->
getLastChangeBy(),
135 $assignment->
getId(),
141 $this->events->raiseCollected();
146 $ass_id = $assignment->getId();
147 $query =
'DELETE FROM ' . self::ASSIGNMENT_TABLE . PHP_EOL
148 .
'WHERE ' . self::ASSIGNMENT_FIELD_ID .
' = ' . $ass_id;
149 $this->db->manipulate(
$query);
151 $query =
'DELETE FROM ' . self::PROGRESS_TABLE . PHP_EOL
152 .
'WHERE ' . self::PROGRESS_FIELD_ASSIGNMENT_ID .
' = ' . $ass_id;
153 $this->db->manipulate(
$query);
158 $query =
'DELETE FROM ' . self::ASSIGNMENT_TABLE . PHP_EOL
159 .
'WHERE ' . self::ASSIGNMENT_FIELD_ROOT_PRG_ID .
'=' . $this->db->quote($prg_obj_id,
'integer');
160 $this->db->manipulate(
$query);
165 $query =
'DELETE FROM ' . self::PROGRESS_TABLE . PHP_EOL
166 .
'WHERE ' . self::PROGRESS_FIELD_ASSIGNMENT_ID . PHP_EOL
167 .
'NOT IN (' . PHP_EOL
168 .
'SELECT ' . $this->db->quoteIdentifier(self::ASSIGNMENT_FIELD_ID)
169 .
' FROM ' . $this->db->quoteIdentifier(self::ASSIGNMENT_TABLE) . PHP_EOL
171 $this->db->manipulate(
$query);
178 'ass.' . self::ASSIGNMENT_FIELD_ID .
' = ' . $this->db->quote(
$id,
'integer')
181 return $ass->current();
186 $assignments = array_filter(iterator_to_array(
188 'ass.' . self::ASSIGNMENT_FIELD_USR_ID .
' = ' . $this->db->quote($usr_id,
'integer')
196 array $user_filter = null,
200 'pgs.' . self::PROGRESS_FIELD_PRG_ID .
' = ' . $this->db->quote($prg_obj_id,
'integer')
203 $conditions[] = $this->db->in(
'ass.' . self::ASSIGNMENT_FIELD_USR_ID, $user_filter,
false,
'integer');
205 if ($custom_filters) {
206 $conditions = array_merge($conditions, $custom_filters->toConditions());
209 $assignments = array_filter(iterator_to_array(
210 $this->
read($conditions)
217 array $user_filter = null,
221 'pgs.' . self::PROGRESS_FIELD_PRG_ID .
' = ' . $this->db->quote($prg_obj_id,
'integer')
224 $conditions[] = $this->db->in(
'ass.' . self::ASSIGNMENT_FIELD_USR_ID, $user_filter,
false,
'integer');
226 if ($custom_filters) {
227 $conditions = array_merge($conditions, $custom_filters->toConditions());
229 return $this->
count($conditions);
235 self::ASSIGNMENT_FIELD_ROOT_PRG_ID .
' = ' . $this->db->quote($prg_obj_id,
'integer')
238 $conditions[] = $this->db->in(
'ass.' . self::ASSIGNMENT_FIELD_USR_ID, $user_filter,
false,
'integer');
241 $assignments = array_filter(iterator_to_array(
242 $this->
read($conditions)
249 $deadline = $this->db->quote(
256 self::PROGRESS_FIELD_STATUS,
264 self::PROGRESS_FIELD_DEADLINE .
' IS NOT NULL',
265 self::PROGRESS_FIELD_DEADLINE .
' < ' . $deadline
268 $assignments = array_filter(iterator_to_array(
269 $this->
read($conditions)
275 array $programmes_and_due,
276 bool $discard_formerly_notified =
true 279 if (
count($programmes_and_due) == 0) {
284 foreach ($programmes_and_due as $prg_obj_id => $due) {
285 $due = $due->format(self::DATE_FORMAT_ENDOFDAY);
288 . self::PROGRESS_FIELD_VQ_DATE .
'<=' . $this->db->quote($due,
'text')
289 .
' AND (pgs.' . self::PROGRESS_FIELD_PRG_ID .
'=' . $prg_obj_id
290 .
' OR ' . self::ASSIGNMENT_FIELD_ROOT_PRG_ID .
'=' . $prg_obj_id .
')';
292 if ($discard_formerly_notified) {
293 $where_clause .=
' AND ' . self::PROGRESS_FIELD_MAIL_SENT_WILLEXPIRE .
' IS NULL';
296 $where_clause .=
')';
297 $where[] = $where_clause;
301 implode(
' OR ', $where)
303 $assignments = array_filter(iterator_to_array(
304 $this->
read($conditions)
311 $now = (new \DateTimeImmutable())->format(self::DATE_FORMAT_ENDOFDAY);
314 self::PROGRESS_FIELD_STATUS,
322 self::PROGRESS_FIELD_VQ_DATE .
' IS NOT NULL',
323 self::PROGRESS_FIELD_VQ_DATE .
' < ' . $this->db->quote($now,
'text'),
324 self::PROGRESS_FIELD_INVALIDATED .
' = 0 ',
327 $assignments = array_filter(iterator_to_array(
328 $this->
read($conditions)
335 array $programmes_and_due,
336 bool $discard_formerly_notified =
true 339 if (
count($programmes_and_due) == 0) {
344 foreach ($programmes_and_due as $prg_obj_id => $due) {
348 . self::PROGRESS_FIELD_DEADLINE .
'<=' . $this->db->quote($due,
'text')
349 .
'AND (pgs.' . self::PROGRESS_FIELD_PRG_ID .
'=' . $prg_obj_id
350 .
' OR ' . self::ASSIGNMENT_FIELD_ROOT_PRG_ID .
'=' . $prg_obj_id .
')' 351 .
' AND ' . $this->db->in(
352 self::PROGRESS_FIELD_STATUS,
362 if ($discard_formerly_notified) {
363 $where_clause .=
' AND ' . self::PROGRESS_FIELD_MAIL_SENT_RISKYTOFAIL .
' IS NULL';
366 $where_clause .=
')';
367 $where[] = $where_clause;
371 implode(
' OR ', $where)
373 $assignments = array_filter(iterator_to_array(
374 $this->
read($conditions)
384 .
' ass.' . self::ASSIGNMENT_FIELD_ID .
' AS ' . self::ASSIGNMENT_FIELD_ID
385 .
', ass.' . self::ASSIGNMENT_FIELD_USR_ID .
' AS ' . self::ASSIGNMENT_FIELD_USR_ID
386 .
',' . self::ASSIGNMENT_FIELD_ROOT_PRG_ID
387 .
', ass.' . self::ASSIGNMENT_FIELD_LAST_CHANGE
388 .
', ass.' . self::ASSIGNMENT_FIELD_LAST_CHANGE_BY
389 .
',' . self::ASSIGNMENT_FIELD_RESTART_DATE
390 .
',' . self::ASSIGNMENT_FIELD_RESTARTED_ASSIGNMENT_ID
391 .
',' . self::ASSIGNMENT_FIELD_MANUALLY_ASSIGNED
392 .
',' . self::PROGRESS_FIELD_PRG_ID
393 .
',' . self::PROGRESS_FIELD_POINTS
394 .
',' . self::PROGRESS_FIELD_POINTS_CUR
395 .
',' . self::PROGRESS_FIELD_STATUS
396 .
',' . self::PROGRESS_FIELD_COMPLETION_BY
397 .
',' . self::PROGRESS_FIELD_ASSIGNMENT_DATE
398 .
', pgs.' . self::PROGRESS_FIELD_LAST_CHANGE .
' AS p_' . self::PROGRESS_FIELD_LAST_CHANGE
399 .
', pgs.' . self::PROGRESS_FIELD_LAST_CHANGE_BY .
' AS p_' . self::PROGRESS_FIELD_LAST_CHANGE_BY
400 .
',' . self::PROGRESS_FIELD_COMPLETION_DATE
401 .
',' . self::PROGRESS_FIELD_DEADLINE
402 .
',' . self::PROGRESS_FIELD_VQ_DATE
403 .
',' . self::PROGRESS_FIELD_INVALIDATED
404 .
',' . self::PROGRESS_FIELD_MAIL_SENT_RISKYTOFAIL
405 .
',' . self::PROGRESS_FIELD_MAIL_SENT_WILLEXPIRE
406 .
',' . self::PROGRESS_FIELD_IS_INDIVIDUAL
410 .
' FROM ' . self::ASSIGNMENT_TABLE .
' ass ' 411 .
' JOIN ' . self::PROGRESS_TABLE .
' pgs ' 412 .
' ON ass.' . self::ASSIGNMENT_FIELD_ID .
' = pgs.' . self::PROGRESS_FIELD_ASSIGNMENT_ID
415 .
' JOIN usr_data memberdata ON ass.usr_id = memberdata.usr_id ' 417 .
' WHERE TRUE AND ';
418 $q = $q . implode(
' AND ', $filter);
419 $q = $q .
' ORDER BY assignment_id, ass.usr_id';
421 $res = $this->db->query($q);
427 return $this->db->nextId(self::ASSIGNMENT_TABLE);
433 return $this->db->numRows(
$res);
443 while ($row = $this->db->fetchAssoc(
$res)) {
444 if ($row[self::ASSIGNMENT_FIELD_ID] !== $current_ass) {
445 $current_ass = $row[self::ASSIGNMENT_FIELD_ID];
446 if (!is_null($ass)) {
460 $q =
'SELECT * FROM ' . self::PROGRESS_TABLE
461 .
' WHERE ' . self::PROGRESS_FIELD_ASSIGNMENT_ID .
' = ' . $assignment_id;
462 $res = $this->db->query($q);
463 while ($row = $this->db->fetchAssoc(
$res)) {
472 (
int) $row[self::ASSIGNMENT_FIELD_ID],
473 (
int) $row[self::ASSIGNMENT_FIELD_USR_ID]
476 ->withEvents($this->events)
478 (
int) $row[self::ASSIGNMENT_FIELD_LAST_CHANGE_BY],
479 \DateTimeImmutable::createFromFormat(
481 $row[self::ASSIGNMENT_FIELD_LAST_CHANGE]
485 (
int) $row[self::ASSIGNMENT_FIELD_RESTARTED_ASSIGNMENT_ID],
486 $row[self::ASSIGNMENT_FIELD_RESTART_DATE] ?
490 ->withManuallyAssigned((
bool) $row[self::ASSIGNMENT_FIELD_MANUALLY_ASSIGNED]);
493 $root_pgs_id = (
int) $row[self::ASSIGNMENT_FIELD_ROOT_PRG_ID];
499 ->withProgressTree($pgs)
500 ->withUserInformation($user_information);
507 $children = array_filter(
508 $this->tree->getChilds($this->getRefIdFor($node_obj_id)),
509 fn (
$c) => in_array(
$c[
'type'], [
'prg',
'prgr']),
511 $children = array_map(
517 foreach ($children as $child_obj_id) {
521 if (!array_key_exists($node_obj_id, $this->progresses)) {
524 $pgs = $this->progresses[$node_obj_id];
526 $pgs->setSubnodes($pgss);
534 if (
count($refs) < 1) {
535 throw new ilException(
"Could not find ref_id for programme with obj_id $obj_id");
537 return (
int) array_shift($refs);
547 (
int) $row[self::PROGRESS_FIELD_PRG_ID],
548 (
int) $row[self::PROGRESS_FIELD_STATUS]
552 ->withAmountOfPoints((
int) $row[self::PROGRESS_FIELD_POINTS])
553 ->withCurrentAmountOfPoints((
int) $row[self::PROGRESS_FIELD_POINTS_CUR])
554 ->withAssignmentDate(
555 $row[self::PROGRESS_FIELD_ASSIGNMENT_DATE] ?
560 $row[self::PROGRESS_FIELD_DEADLINE] ?
565 (
int) $row[self::PROGRESS_FIELD_COMPLETION_BY],
566 $row[self::PROGRESS_FIELD_COMPLETION_DATE] ?
571 (
int) $row[self::PROGRESS_FIELD_LAST_CHANGE_BY],
572 $row[self::PROGRESS_FIELD_LAST_CHANGE] ?
576 ->withValidityOfQualification(
577 $row[self::PROGRESS_FIELD_VQ_DATE] ?
581 ->withIndividualModifications((
bool) $row[self::PROGRESS_FIELD_IS_INDIVIDUAL])
582 ->withInvalidated((
bool) $row[self::PROGRESS_FIELD_INVALIDATED]);
594 $orgus = array_values($orgu_repo->findAllUserAssingmentsByUserIds([$usr_id]));
596 $orgu_ref_ids = array_map(
597 fn ($orgu_assignment) => $orgu_assignment->getOrguId(),
605 return implode(
', ', $orgus);
613 $orgu_repr = $this->
interimOrguLookup((
int) $row[self::ASSIGNMENT_FIELD_USR_ID]);
618 (
string) $row[
'firstname'],
619 (
string) $row[
'lastname'],
620 (
string) $row[
'login'],
621 (
bool) $row[
'active'],
622 (
string) $row[
'email'],
623 (
string) $row[
'gender'],
624 (
string) $row[
'title']
631 self::ASSIGNMENT_TABLE,
633 self::ASSIGNMENT_FIELD_ID => [
'integer', $row[self::ASSIGNMENT_FIELD_ID]]
634 , self::ASSIGNMENT_FIELD_USR_ID => [
'integer', $row[self::ASSIGNMENT_FIELD_USR_ID]]
635 , self::ASSIGNMENT_FIELD_ROOT_PRG_ID => [
'integer', $row[self::ASSIGNMENT_FIELD_ROOT_PRG_ID]]
636 , self::ASSIGNMENT_FIELD_LAST_CHANGE => [
'text', $row[self::ASSIGNMENT_FIELD_LAST_CHANGE]]
637 , self::ASSIGNMENT_FIELD_LAST_CHANGE_BY => [
'integer', $row[self::ASSIGNMENT_FIELD_LAST_CHANGE_BY]]
638 , self::ASSIGNMENT_FIELD_RESTART_DATE => [
'timestamp', $row[self::ASSIGNMENT_FIELD_RESTART_DATE]]
639 , self::ASSIGNMENT_FIELD_RESTARTED_ASSIGNMENT_ID => [
'integer', $row[self::ASSIGNMENT_FIELD_RESTARTED_ASSIGNMENT_ID]]
640 , self::ASSIGNMENT_FIELD_MANUALLY_ASSIGNED => [
'integer', $row[self::ASSIGNMENT_FIELD_MANUALLY_ASSIGNED]]
647 $q =
'UPDATE ' . self::ASSIGNMENT_TABLE
649 .
' ' . self::ASSIGNMENT_FIELD_USR_ID .
' = ' . $this->db->quote($values[self::ASSIGNMENT_FIELD_USR_ID],
'integer')
650 .
' ,' . self::ASSIGNMENT_FIELD_ROOT_PRG_ID .
' = ' . $this->db->quote($values[self::ASSIGNMENT_FIELD_ROOT_PRG_ID],
'integer')
651 .
' ,' . self::ASSIGNMENT_FIELD_LAST_CHANGE .
' = ' . $this->db->quote($values[self::ASSIGNMENT_FIELD_LAST_CHANGE],
'text')
652 .
' ,' . self::ASSIGNMENT_FIELD_LAST_CHANGE_BY .
' = ' . $this->db->quote($values[self::ASSIGNMENT_FIELD_LAST_CHANGE_BY],
'integer')
653 .
' ,' . self::ASSIGNMENT_FIELD_RESTART_DATE .
' = ' . $this->db->quote($values[self::ASSIGNMENT_FIELD_RESTART_DATE],
'timestamp')
654 .
' ,' . self::ASSIGNMENT_FIELD_RESTARTED_ASSIGNMENT_ID .
' = ' . $this->db->quote($values[self::ASSIGNMENT_FIELD_RESTARTED_ASSIGNMENT_ID],
'integer')
655 .
' ,' . self::ASSIGNMENT_FIELD_MANUALLY_ASSIGNED .
' = ' . $this->db->quote($values[self::ASSIGNMENT_FIELD_MANUALLY_ASSIGNED],
'integer')
656 .
' WHERE ' . self::ASSIGNMENT_FIELD_ID .
' = ' . $this->db->quote($values[self::ASSIGNMENT_FIELD_ID],
'integer');
657 $this->db->manipulate($q);
675 $q =
'INSERT INTO ' . self::PROGRESS_TABLE
677 . self::PROGRESS_FIELD_ASSIGNMENT_ID .
',' 678 . self::PROGRESS_FIELD_USR_ID .
',' 679 . self::PROGRESS_FIELD_PRG_ID .
',' 681 . self::PROGRESS_FIELD_STATUS .
',' 682 . self::PROGRESS_FIELD_POINTS .
',' 683 . self::PROGRESS_FIELD_POINTS_CUR .
',' 684 . self::PROGRESS_FIELD_COMPLETION_BY .
',' 685 . self::PROGRESS_FIELD_LAST_CHANGE_BY .
',' 686 . self::PROGRESS_FIELD_LAST_CHANGE .
',' 687 . self::PROGRESS_FIELD_ASSIGNMENT_DATE .
',' 688 . self::PROGRESS_FIELD_COMPLETION_DATE .
',' 689 . self::PROGRESS_FIELD_DEADLINE .
',' 690 . self::PROGRESS_FIELD_VQ_DATE .
',' 691 . self::PROGRESS_FIELD_INVALIDATED .
',' 692 . self::PROGRESS_FIELD_IS_INDIVIDUAL
694 . PHP_EOL .
') VALUES (' . PHP_EOL
705 .
' ,' . $assign_date
706 .
' ,' . $completion_date
709 .
' ,' . $invalidated
712 .
'ON DUPLICATE KEY UPDATE' . PHP_EOL
713 . self::PROGRESS_FIELD_STATUS .
'=' . $pgs->
getStatus() .
',' 716 . self::PROGRESS_FIELD_COMPLETION_BY .
'=' . $completion .
',' 717 . self::PROGRESS_FIELD_LAST_CHANGE_BY .
'=' . $pgs->
getLastChangeBy() .
',' 718 . self::PROGRESS_FIELD_LAST_CHANGE .
'=' . $lastchange .
',' 719 . self::PROGRESS_FIELD_ASSIGNMENT_DATE .
'=' . $assign_date .
',' 720 . self::PROGRESS_FIELD_COMPLETION_DATE .
'=' . $completion_date .
',' 721 . self::PROGRESS_FIELD_DEADLINE .
'=' . $deadline .
',' 722 . self::PROGRESS_FIELD_VQ_DATE .
'=' . $validity .
',' 723 . self::PROGRESS_FIELD_INVALIDATED .
'=' . $invalidated .
',' 724 . self::PROGRESS_FIELD_IS_INDIVIDUAL .
'=' . $individual
726 $this->db->manipulate($q);
733 self::PROGRESS_FIELD_ASSIGNMENT_ID => [
'integer', $ass->
getId()],
734 self::PROGRESS_FIELD_PRG_ID => [
'integer', $ass->
getRootId()]
738 self::PROGRESS_FIELD_MAIL_SENT_WILLEXPIRE => [
743 $this->db->update(self::PROGRESS_TABLE, $values, $where);
749 self::PROGRESS_FIELD_ASSIGNMENT_ID => [
'integer', $ass->
getId()],
750 self::PROGRESS_FIELD_PRG_ID => [
'integer', $ass->
getRootId()]
754 self::PROGRESS_FIELD_MAIL_SENT_WILLEXPIRE => [
'null', null]
756 $this->db->update(self::PROGRESS_TABLE, $values, $where);
762 self::PROGRESS_FIELD_ASSIGNMENT_ID => [
'integer', $ass->
getId()],
763 self::PROGRESS_FIELD_PRG_ID => [
'integer', $ass->
getRootId()]
767 self::PROGRESS_FIELD_MAIL_SENT_RISKYTOFAIL => [
772 $this->db->update(self::PROGRESS_TABLE, $values, $where);
778 self::PROGRESS_FIELD_ASSIGNMENT_ID => [
'integer', $ass->
getId()],
779 self::PROGRESS_FIELD_PRG_ID => [
'integer', $ass->
getRootId()]
783 self::PROGRESS_FIELD_MAIL_SENT_RISKYTOFAIL => [
'null', null]
785 $this->db->update(self::PROGRESS_TABLE, $values, $where);
deleteAllOrphanedProgresses()
const PROGRESS_FIELD_POINTS_CUR
__construct(ilDBInterface $db, ilTree $tree, ilStudyProgrammeSettingsRepository $settings_repo, PRGEventsDelayed $events)
getForUser(int $usr_id)
get all assignments for a user
interimOrguLookup(int $usr_id)
const ASSIGNMENT_FIELD_LAST_CHANGE_BY
const ASSIGNMENT_FIELD_ROOT_PRG_ID
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const PROGRESS_FIELD_MAIL_SENT_RISKYTOFAIL
resetRiskyToFailSentFor(ilPRGAssignment $ass)
const PROGRESS_FIELD_MAIL_SENT_WILLEXPIRE
const PROGRESS_FIELD_INVALIDATED
const PROGRESS_FIELD_ASSIGNMENT_ID
insertAssignmentRowDB(array $row)
getRiskyToFail(array $programmes_and_due, bool $discard_formerly_notified=true)
static _getAllReferences(int $id)
get all reference ids for object ID
storeRiskyToFailSentFor(ilPRGAssignment $ass)
getDashboardInstancesforUser(int $usr_id)
getAllForSpecificNode(int $prg_obj_id, array $user_filter=null)
get all assignments for all (or given) users, where the given node is the root-node of the assignment...
createFor(int $prg_obj_id, int $usr_id, int $assigning_usr_id)
const ASSIGNMENT_FIELD_RESTART_MAIL
getValidityOfQualification()
static lookupOrgUnitsRepresentation(int $a_usr_id)
lookup org unit representation
const PROGRESS_FIELD_POINTS
static now()
Return current timestamp in Y-m-d H:i:s format.
const PROGRESS_FIELD_PRG_ID
deleteAllAssignmentsForProgrammeId(int $prg_obj_id)
const PROGRESS_FIELD_LAST_CHANGE_BY
static _lookupObjId(int $ref_id)
resetExpiryInfoSentFor(ilPRGAssignment $ass)
prebuildProgressesForAssingment(int $assignment_id)
getRestartedAssignmentId()
buildProgressByRow(array $row)
A Progress is the status of a user on a single node of an assignment; it is unique by assignment_id:u...
const PROGRESS_FIELD_STATUS
const ASSIGNMENT_FIELD_ID
assignmentByRow(array $row)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
hasIndividualModifications()
const ASSIGNMENT_FIELD_MANUALLY_ASSIGNED
static _lookupTitle(int $obj_id)
const PROGRESS_FIELD_DEADLINE
const PROGRESS_FIELD_ASSIGNMENT_DATE
array $progresses
<id => ilPRGProgress>
countAllForNodeIsContained(int $prg_obj_id, array $user_filter=null, ilPRGAssignmentFilter $custom_filters=null)
Count all assignments for all (or given) users, where the given node is part of the assignment...
store(ilPRGAssignment $assignment)
getProgresses(array &$ret=[], ilPRGProgress $pgs=null)
const PROGRESS_FIELD_LAST_CHANGE
static _lookupObjectId(int $ref_id)
const ASSIGNMENT_FIELD_RESTARTED_ASSIGNMENT_ID
const PROGRESS_FIELD_VQ_DATE
storeExpiryInfoSentFor(ilPRGAssignment $ass)
const STATUS_NOT_RELEVANT
getCurrentAmountOfPoints()
getPassedDeadline(\DateTimeImmutable $deadline)
StudyProgrammeEvents $events
const NO_RESTARTED_ASSIGNMENT
const ASSIGNMENT_FIELD_USR_ID
getExpiredAndNotInvalidated()
const DATE_FORMAT_ENDOFDAY
const PROGRESS_FIELD_COMPLETION_DATE
const PROGRESS_FIELD_COMPLETION_BY
storeProgressRow(int $assignment_id, int $usr_id, ilPRGProgress $pgs)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
buildProgressTreeFor(int $node_obj_id)
const ASSIGNMENT_FIELD_RESTART_DATE
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
buildUserInformation(array $row)
static _lookupTargetId(int $a_obj_id)
const ASSIGNMENT_FIELD_LAST_CHANGE
ilStudyProgrammeSettingsRepository $settings_repo
const PROGRESS_FIELD_USR_ID
getAllForNodeIsContained(int $prg_obj_id, array $user_filter=null, ilPRGAssignmentFilter $custom_filters=null)
get all assignments for all (or given) users, where the given node is part of the assignment ...
Assignments are relations of users to a PRG; They hold progress-information for (sub-)nodes of the PR...
getAboutToExpire(array $programmes_and_due, bool $discard_formerly_notified=true)
static _lookupType(int $id, bool $reference=false)
updateAssignmentRowDB(array $values)
const PROGRESS_FIELD_IS_INDIVIDUAL
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...