ILIAS  trunk Revision v13.0_alpha-62-g3b72d83f2e5
AssignmentsRetrieval.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
26use ILIAS\Repository\RetrievalBase;
28
30{
31 use RetrievalBase;
32
33 public function __construct(
34 protected InternalDomainService $domain,
35 protected int $exercise_id
36 ) {
37 }
38
39 public function getData(
40 array $fields,
41 ?Range $range = null,
42 ?Order $order = null,
43 array $filter = [],
44 array $parameters = []
45 ): \Generator {
46 $data = $this->collectData();
47 $data = $this->applyOrder($data, $order ?? new Order('order_val', Order::ASC));
48 $data = $this->applyRange($data, $range);
49
50 foreach ($data as $row) {
51 yield $row;
52 }
53 }
54
55 public function count(array $filter = [], array $parameters = []): int
56 {
57 return count($this->collectData());
58 }
59
60 public function isFieldNumeric(string $field): bool
61 {
62 return in_array($field, ['order_val', 'deadline', 'start_time'], true);
63 }
64
65 protected function collectData(): array
66 {
69 $exercise = new \ilObjExercise($this->exercise_id, false);
70 $random_manager = $this->domain->assignment()->randomAssignments($exercise);
71
72 foreach ($data as $idx => $row) {
73 if ($row['peer']) {
74 $data[$idx]['peer_invalid'] = true;
75 $peer_review = new \ilExPeerReview(new \ilExAssignment($row['id']));
76 $peer_reviews = $peer_review->validatePeerReviewGroups();
77 if (is_array($peer_reviews)) {
78 $data[$idx]['peer_invalid'] = $peer_reviews['invalid'];
79 }
80 if (is_null($peer_reviews)) {
81 $data[$idx]['peer_invalid'] = false;
82 }
83 }
84
85 $data[$idx]['type'] = $types->getById($row['type'])->getTitle();
86 $data[$idx]['random'] = $random_manager->isActivated();
87 }
88
89 return $data;
90 }
91}
Both the subject and the direction need to be specified when expressing an order.
Definition: Order.php:29
A simple class to express a naive range of whole positive numbers.
Definition: Range.php:29
count(array $filter=[], array $parameters=[])
__construct(protected InternalDomainService $domain, protected int $exercise_id)
getData(array $fields, ?Range $range=null, ?Order $order=null, array $filter=[], array $parameters=[])
Exercise assignment.
static getAssignmentDataOfExercise(int $a_exc_id)
$data
Definition: storeScorm.php:45
ilObjExercise $exercise