ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
ilExPeerReview Class Reference

Exercise peer review. More...

+ Collaboration diagram for ilExPeerReview:

Public Member Functions

 __construct (ilExAssignment $a_assignment)
 
 hasPeerReviewGroups ()
 
 getReviewId (int $giver_id, int $peer_id)
 
 initPeerReviews ()
 
 resetPeerReviews ()
 
 validatePeerReviewGroups ()
 
 getPeerReviewValues (int $a_giver_id, int $a_peer_id)
 
 getPeerReviewsByGiver (int $a_user_id)
 
 getPeerMaskedId (int $a_giver_id, int $a_peer_id)
 
 getPeerReviewsByPeerId (int $a_user_id, bool $a_only_valid=false)
 
 countReceivedFeedbacks (int $user_id, bool $only_valid=true)
 
 getAllPeerReviews (bool $a_only_valid=true)
 
 hasPeerReviewAccess (int $a_peer_id)
 
 updatePeerReviewTimestamp (int $a_peer_id)
 
 updatePeerReview (int $a_peer_id, array $a_values)
 
 countGivenFeedback (bool $a_validate=true, int $a_user_id=null)
 
 getNumberOfMissingFeedbacksForReceived ()
 
 isFeedbackValidForPassed (int $a_user_id)
 

Static Public Member Functions

static lookupGiversWithPendingFeedback (int $a_ass_id)
 

Protected Member Functions

 getValidPeerReviewUsers ()
 
 validatePeerReview (array $a_data)
 
 getMaxPossibleFeedbacks ()
 

Protected Attributes

ilDBInterface $db
 
ilObjUser $user
 
ilExAssignment $assignment
 
int $assignment_id
 
ilLogger $log
 

Detailed Description

Exercise peer review.

Author
Jörg Lützenkirchen luetz.nosp@m.enki.nosp@m.rchen.nosp@m.@lei.nosp@m.fos.c.nosp@m.om
Alexander Killing killi.nosp@m.ng@l.nosp@m.eifos.nosp@m..de

Definition at line 27 of file class.ilExPeerReview.php.

Constructor & Destructor Documentation

◆ __construct()

ilExPeerReview::__construct ( ilExAssignment  $a_assignment)

Definition at line 35 of file class.ilExPeerReview.php.

References $DIC, ilExAssignment\getId(), ilLoggerFactory\getLogger(), and ILIAS\Repository\user().

37  {
38  global $DIC;
39 
40  $this->db = $DIC->database();
41  $this->user = $DIC->user();
42  $this->assignment = $a_assignment;
43  $this->assignment_id = $a_assignment->getId();
44  $this->log = ilLoggerFactory::getLogger("exc");
45  }
static getLogger(string $a_component_id)
Get component logger.
global $DIC
Definition: feed.php:28
+ Here is the call graph for this function:

Member Function Documentation

◆ countGivenFeedback()

ilExPeerReview::countGivenFeedback ( bool  $a_validate = true,
int  $a_user_id = null 
)

Definition at line 408 of file class.ilExPeerReview.php.

References $db, $ilDB, $user, ilObject\getId(), and validatePeerReview().

Referenced by getNumberOfMissingFeedbacksForReceived(), and isFeedbackValidForPassed().

411  : int {
412  $ilDB = $this->db;
413  $ilUser = $this->user;
414 
415  if (!$a_user_id) {
416  $a_user_id = $ilUser->getId();
417  }
418 
419  $cnt = 0;
420 
421  $set = $ilDB->query("SELECT *" .
422  " FROM exc_assignment_peer" .
423  " WHERE ass_id = " . $ilDB->quote($this->assignment_id, "integer") .
424  " AND giver_id = " . $ilDB->quote($a_user_id, "integer"));
425  while ($row = $ilDB->fetchAssoc($set)) {
426  if (!$a_validate ||
427  $this->validatePeerReview($row)) {
428  $cnt++;
429  }
430  }
431 
432  return $cnt;
433  }
validatePeerReview(array $a_data)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ countReceivedFeedbacks()

ilExPeerReview::countReceivedFeedbacks ( int  $user_id,
bool  $only_valid = true 
)

Definition at line 326 of file class.ilExPeerReview.php.

References getPeerReviewsByPeerId().

329  : int {
330  return count($this->getPeerReviewsByPeerId($user_id, $only_valid));
331  }
getPeerReviewsByPeerId(int $a_user_id, bool $a_only_valid=false)
+ Here is the call graph for this function:

◆ getAllPeerReviews()

ilExPeerReview::getAllPeerReviews ( bool  $a_only_valid = true)

Definition at line 333 of file class.ilExPeerReview.php.

References $db, $ilDB, $res, $valid, and validatePeerReview().

Referenced by resetPeerReviews(), and validatePeerReviewGroups().

335  : array {
336  $ilDB = $this->db;
337 
338  $res = array();
339 
340  $set = $ilDB->query("SELECT *" .
341  " FROM exc_assignment_peer" .
342  " WHERE ass_id = " . $ilDB->quote($this->assignment_id, "integer") .
343  " ORDER BY peer_id");
344  while ($row = $ilDB->fetchAssoc($set)) {
345  $valid = $this->validatePeerReview($row);
346  if (!$a_only_valid ||
347  $valid) {
348  $res[$row["peer_id"]][$row["giver_id"]] = $valid;
349  }
350  }
351 
352  return $res;
353  }
$res
Definition: ltiservices.php:69
$valid
validatePeerReview(array $a_data)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getMaxPossibleFeedbacks()

ilExPeerReview::getMaxPossibleFeedbacks ( )
protected

Definition at line 435 of file class.ilExPeerReview.php.

References $db, $ilDB, and ILIAS\Repository\int().

Referenced by getNumberOfMissingFeedbacksForReceived(), and isFeedbackValidForPassed().

435  : int
436  {
437  $ilDB = $this->db;
438 
439  // check if number of returned assignments is lower than assignment peer min
440  $set = $ilDB->query("SELECT COUNT(DISTINCT(user_id)) cnt" .
441  " FROM exc_returned" .
442  " WHERE ass_id = " . $ilDB->quote($this->assignment_id, "integer"));
443  $cnt = $ilDB->fetchAssoc($set);
444  $cnt = (int) $cnt["cnt"];
445  return $cnt - 1;
446  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getNumberOfMissingFeedbacksForReceived()

ilExPeerReview::getNumberOfMissingFeedbacksForReceived ( )

Definition at line 448 of file class.ilExPeerReview.php.

References countGivenFeedback(), and getMaxPossibleFeedbacks().

448  : int
449  {
450  $max = $this->getMaxPossibleFeedbacks();
451 
452  // #16160 - forever alone
453  if ($max === 0) {
454  return 0;
455  }
456 
457  // are all required or just 1?
458  if ($this->assignment->getPeerReviewSimpleUnlock() == 2) {
459  $needed = 0;
460  } elseif ($this->assignment->getPeerReviewSimpleUnlock() == 0) {
461  $needed = $this->assignment->getPeerReviewMin();
462  } else {
463  $needed = 1;
464  }
465  // there could be less participants than stated in the min required setting
466  $min = min($max, $needed);
467  return max(0, $min - $this->countGivenFeedback());
468  }
countGivenFeedback(bool $a_validate=true, int $a_user_id=null)
+ Here is the call graph for this function:

◆ getPeerMaskedId()

ilExPeerReview::getPeerMaskedId ( int  $a_giver_id,
int  $a_peer_id 
)

Definition at line 250 of file class.ilExPeerReview.php.

References getPeerReviewsByGiver().

253  : int {
254  foreach ($this->getPeerReviewsByGiver($a_giver_id) as $peer) {
255  if ($peer["peer_id"] == $a_peer_id) {
256  return (int) $peer["seq"];
257  }
258  }
259  return 0;
260  }
getPeerReviewsByGiver(int $a_user_id)
+ Here is the call graph for this function:

◆ getPeerReviewsByGiver()

ilExPeerReview::getPeerReviewsByGiver ( int  $a_user_id)

Definition at line 228 of file class.ilExPeerReview.php.

References $db, $ilDB, $res, and initPeerReviews().

Referenced by getPeerMaskedId(), and getPeerReviewValues().

228  : array
229  {
230  $ilDB = $this->db;
231 
232  $res = array();
233 
234  if ($this->initPeerReviews()) {
235  $idx = 0;
236  $set = $ilDB->query("SELECT *" .
237  " FROM exc_assignment_peer" .
238  " WHERE giver_id = " . $ilDB->quote($a_user_id, "integer") .
239  " AND ass_id = " . $ilDB->quote($this->assignment_id, "integer") .
240  " ORDER BY peer_id");
241  while ($row = $ilDB->fetchAssoc($set)) {
242  $row["seq"] = ++$idx;
243  $res[] = $row;
244  }
245  }
246 
247  return $res;
248  }
$res
Definition: ltiservices.php:69
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPeerReviewsByPeerId()

ilExPeerReview::getPeerReviewsByPeerId ( int  $a_user_id,
bool  $a_only_valid = false 
)

Definition at line 299 of file class.ilExPeerReview.php.

References $db, $ilDB, $res, and validatePeerReview().

Referenced by countReceivedFeedbacks().

302  : array {
303  $ilDB = $this->db;
304 
305  $res = array();
306 
307  $idx = 0;
308  $set = $ilDB->query("SELECT *" .
309  " FROM exc_assignment_peer" .
310  " WHERE peer_id = " . $ilDB->quote($a_user_id, "integer") .
311  " AND ass_id = " . $ilDB->quote($this->assignment_id, "integer") .
312  " ORDER BY peer_id");
313  while ($row = $ilDB->fetchAssoc($set)) {
314  if (!$a_only_valid ||
315  $this->validatePeerReview($row)) {
316  // this would be correct but rather senseless
317  // $row["seq"] = $this->getPeerMaskedId($row["giver_id"], $a_user_id);
318  $row["seq"] = ++$idx;
319  $res[] = $row;
320  }
321  }
322 
323  return $res;
324  }
$res
Definition: ltiservices.php:69
validatePeerReview(array $a_data)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPeerReviewValues()

ilExPeerReview::getPeerReviewValues ( int  $a_giver_id,
int  $a_peer_id 
)

Definition at line 203 of file class.ilExPeerReview.php.

References $data, and getPeerReviewsByGiver().

206  : array {
207  $peer = null;
208  foreach ($this->getPeerReviewsByGiver($a_giver_id) as $item) {
209  if ($item["peer_id"] == $a_peer_id) {
210  $peer = $item;
211  }
212  }
213  if (!$peer) {
214  return [];
215  }
216  $data = $peer["pcomment"];
217  if ($data) {
218  $items = unserialize($data, ['allowed_classes' => false]);
219  if (!is_array($items)) {
220  // v1 - pcomment == text
221  $items = array("text" => $data);
222  }
223  return $items;
224  }
225  return [];
226  }
getPeerReviewsByGiver(int $a_user_id)
+ Here is the call graph for this function:

◆ getReviewId()

ilExPeerReview::getReviewId ( int  $giver_id,
int  $peer_id 
)

Definition at line 58 of file class.ilExPeerReview.php.

58  : int
59  {
60  $set = $this->db->queryF(
61  "SELECT id FROM exc_assignment_peer " .
62  " WHERE ass_id = %s AND giver_id = %s AND peer_id = %s",
63  ["integer","integer","integer"],
64  [$this->assignment_id, $giver_id, $peer_id]
65  );
66  $rec = $this->db->fetchAssoc($set);
67  return $rec["id"] ?? 0;
68  }

◆ getValidPeerReviewUsers()

ilExPeerReview::getValidPeerReviewUsers ( )
protected
Returns
int[]

Definition at line 73 of file class.ilExPeerReview.php.

References $db, $ilDB, and ILIAS\Repository\int().

Referenced by initPeerReviews(), and validatePeerReviewGroups().

73  : array
74  {
75  $ilDB = $this->db;
76 
77  $user_ids = array();
78 
79  // returned / assigned ?!
80  $set = $ilDB->query("SELECT DISTINCT(user_id)" .
81  " FROM exc_returned" .
82  " WHERE ass_id = " . $ilDB->quote($this->assignment_id, "integer") .
83  " AND (filename IS NOT NULL OR atext IS NOT NULL)");
84  while ($row = $ilDB->fetchAssoc($set)) {
85  $user_ids[] = (int) $row["user_id"];
86  }
87 
88  return $user_ids;
89  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hasPeerReviewAccess()

ilExPeerReview::hasPeerReviewAccess ( int  $a_peer_id)

Definition at line 355 of file class.ilExPeerReview.php.

References $db, $ilDB, and $user.

357  : bool {
358  $ilDB = $this->db;
359  $ilUser = $this->user;
360 
361  $set = $ilDB->query("SELECT ass_id" .
362  " FROM exc_assignment_peer" .
363  " WHERE giver_id = " . $ilDB->quote($ilUser->getId(), "integer") .
364  " AND peer_id = " . $ilDB->quote($a_peer_id, "integer") .
365  " AND ass_id = " . $ilDB->quote($this->assignment_id, "integer"));
366  $row = $ilDB->fetchAssoc($set);
367  return ((int) ($row["ass_id"] ?? 0) > 0);
368  }

◆ hasPeerReviewGroups()

ilExPeerReview::hasPeerReviewGroups ( )

Definition at line 47 of file class.ilExPeerReview.php.

References $db, and $ilDB.

Referenced by initPeerReviews(), resetPeerReviews(), and validatePeerReviewGroups().

47  : bool
48  {
49  $ilDB = $this->db;
50 
51  $set = $ilDB->query("SELECT count(*) cnt" .
52  " FROM exc_assignment_peer" .
53  " WHERE ass_id = " . $ilDB->quote($this->assignment_id, "integer"));
54  $cnt = $ilDB->fetchAssoc($set);
55  return (bool) $cnt["cnt"];
56  }
+ Here is the caller graph for this function:

◆ initPeerReviews()

ilExPeerReview::initPeerReviews ( )

Definition at line 91 of file class.ilExPeerReview.php.

References $db, $ilDB, getValidPeerReviewUsers(), and hasPeerReviewGroups().

Referenced by getPeerReviewsByGiver().

91  : bool
92  {
93  $ilDB = $this->db;
94 
95  // see #22246
96  if (!$this->assignment->afterDeadlineStrict()) {
97  return false;
98  }
99 
100  if (!$this->hasPeerReviewGroups()) {
101  $user_ids = $this->getValidPeerReviewUsers();
102 
103  $distribution = new ExcPeerReviewDistribution($user_ids, $this->assignment->getPeerReviewMin());
104 
105  foreach ($user_ids as $rater_id) {
106  foreach ($distribution->getPeersOfRater($rater_id) as $peer_id) {
107  $next_id = $ilDB->nextId("exc_assignment_peer");
108  $ilDB->manipulate("INSERT INTO exc_assignment_peer" .
109  " (id, ass_id, giver_id, peer_id)" .
110  " VALUES (" . $ilDB->quote($next_id, "integer") .
111  ", " . $ilDB->quote($this->assignment_id, "integer") .
112  ", " . $ilDB->quote($rater_id, "integer") .
113  ", " . $ilDB->quote($peer_id, "integer") . ")");
114  }
115  }
116  }
117  return true;
118  }
Calculates peer review distribution (rater to peer assignments)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isFeedbackValidForPassed()

ilExPeerReview::isFeedbackValidForPassed ( int  $a_user_id)

Definition at line 470 of file class.ilExPeerReview.php.

References countGivenFeedback(), getMaxPossibleFeedbacks(), ilExAssignment\PEER_REVIEW_VALID_ALL, ilExAssignment\PEER_REVIEW_VALID_NONE, and ilExAssignment\PEER_REVIEW_VALID_ONE.

470  : bool
471  {
472  // peer feedback is not required for passing
473  if ($this->assignment->getPeerReviewValid() == ilExAssignment::PEER_REVIEW_VALID_NONE) {
474  return true;
475  }
476 
477  // #16227 - no processing before reaching the peer review period
478  if (!$this->assignment->afterDeadlineStrict()) {
479  return false;
480  }
481 
482  // forever alone - should be valid
483  $max = $this->getMaxPossibleFeedbacks();
484  if ($max === 0) {
485  return true;
486  }
487 
488  $no_of_feedbacks = $this->countGivenFeedback(true, $a_user_id);
489 
490  switch ($this->assignment->getPeerReviewValid()) {
492  return (bool) $no_of_feedbacks;
493 
495  // there could be less participants than stated in the min required setting
496  $min = min($max, $this->assignment->getPeerReviewMin());
497 
498  return (($min - $no_of_feedbacks) < 1);
499  }
500  return false;
501  }
countGivenFeedback(bool $a_validate=true, int $a_user_id=null)
+ Here is the call graph for this function:

◆ lookupGiversWithPendingFeedback()

static ilExPeerReview::lookupGiversWithPendingFeedback ( int  $a_ass_id)
static

Definition at line 503 of file class.ilExPeerReview.php.

References $DIC, and $ilDB.

Referenced by ilExAssignmentReminder\parsePeerReminders().

503  : array
504  {
505  global $DIC;
506 
507  $ilDB = $DIC->database();
508  $user_ids = array();
509 
510  $set = $ilDB->query(
511  "SELECT DISTINCT(giver_id) FROM exc_assignment_peer " .
512  " WHERE ass_id = " . $ilDB->quote($a_ass_id, "integer") .
513  " AND tstamp is NULL"
514  );
515 
516  while ($row = $ilDB->fetchAssoc($set)) {
517  $user_ids[] = $row["giver_id"];
518  }
519 
520  return $user_ids;
521  }
global $DIC
Definition: feed.php:28
+ Here is the caller graph for this function:

◆ resetPeerReviews()

ilExPeerReview::resetPeerReviews ( )
Returns
int[]|string[]

Definition at line 123 of file class.ilExPeerReview.php.

References $db, $ilDB, getAllPeerReviews(), and hasPeerReviewGroups().

123  : array
124  {
125  $ilDB = $this->db;
126 
127  $all = array();
128 
129  if ($this->hasPeerReviewGroups()) {
130  foreach ($this->getAllPeerReviews(false) as $peer_id => $reviews) {
131  foreach (array_keys($reviews) as $giver_id) {
132  $all[] = $giver_id;
133 
134  foreach ($this->assignment->getPeerReviewCriteriaCatalogueItems() as $crit) {
135  $crit->setPeerReviewContext($this->assignment, $giver_id, $peer_id);
136  $crit->resetReview();
137  }
138  }
139  }
140 
141  // peer groups
142  $ilDB->manipulate("DELETE FROM exc_assignment_peer" .
143  " WHERE ass_id = " . $ilDB->quote($this->assignment_id, "integer"));
144  }
145 
146  return $all;
147  }
getAllPeerReviews(bool $a_only_valid=true)
+ Here is the call graph for this function:

◆ updatePeerReview()

ilExPeerReview::updatePeerReview ( int  $a_peer_id,
array  $a_values 
)

Definition at line 383 of file class.ilExPeerReview.php.

References $data, $db, $ilDB, $user, $valid, ilUtil\now(), and validatePeerReview().

386  : void {
387  $ilDB = $this->db;
388  $ilUser = $this->user;
389 
390  $data = [
391  "pcomment" => serialize($a_values),
392  "peer_id" => $a_peer_id,
393  "giver_id" => $ilUser->getId()
394  ];
395  $valid = $this->validatePeerReview($data);
396 
397  $sql = "UPDATE exc_assignment_peer" .
398  " SET tstamp = " . $ilDB->quote(ilUtil::now(), "timestamp") .
399  ",pcomment = " . $ilDB->quote(serialize($a_values), "text") .
400  ",is_valid = " . $ilDB->quote((int) $valid, "integer") .
401  " WHERE giver_id = " . $ilDB->quote($ilUser->getId(), "integer") .
402  " AND peer_id = " . $ilDB->quote($a_peer_id, "integer") .
403  " AND ass_id = " . $ilDB->quote($this->assignment_id, "integer");
404 
405  $ilDB->manipulate($sql);
406  }
$valid
static now()
Return current timestamp in Y-m-d H:i:s format.
validatePeerReview(array $a_data)
+ Here is the call graph for this function:

◆ updatePeerReviewTimestamp()

ilExPeerReview::updatePeerReviewTimestamp ( int  $a_peer_id)

Definition at line 370 of file class.ilExPeerReview.php.

References $db, $ilDB, $user, and ilUtil\now().

372  : void {
373  $ilDB = $this->db;
374  $ilUser = $this->user;
375 
376  $ilDB->manipulate("UPDATE exc_assignment_peer" .
377  " SET tstamp = " . $ilDB->quote(ilUtil::now(), "timestamp") .
378  " WHERE giver_id = " . $ilDB->quote($ilUser->getId(), "integer") .
379  " AND peer_id = " . $ilDB->quote($a_peer_id, "integer") .
380  " AND ass_id = " . $ilDB->quote($this->assignment_id, "integer"));
381  }
static now()
Return current timestamp in Y-m-d H:i:s format.
+ Here is the call graph for this function:

◆ validatePeerReview()

ilExPeerReview::validatePeerReview ( array  $a_data)
protected

Definition at line 262 of file class.ilExPeerReview.php.

References $data, and Vendor\Package\$e.

Referenced by countGivenFeedback(), getAllPeerReviews(), getPeerReviewsByPeerId(), and updatePeerReview().

262  : bool
263  {
264  $all_empty = true;
265  // see getPeerReviewValues()
266  $values = null;
267  $data = $a_data["pcomment"];
268  if ($data) {
269  try {
270  $values = unserialize($data, ['allowed_classes' => false]);
271  } catch (Exception $e) {
272  }
273  if (!is_array($values)) {
274  // v1 - pcomment == text
275  $values = array("text" => $data);
276  }
277  }
278 
279  foreach ($this->assignment->getPeerReviewCriteriaCatalogueItems() as $crit) {
280  $crit_id = $crit->getId()
281  ? $crit->getId()
282  : $crit->getType();
283  $crit->setPeerReviewContext(
284  $this->assignment,
285  $a_data["giver_id"],
286  $a_data["peer_id"]
287  );
288  if (!$crit->validate($values[$crit_id] ?? null)) {
289  return false;
290  }
291  if ($crit->hasValue($values[$crit_id] ?? null)) {
292  $all_empty = false;
293  }
294  }
295 
296  return !$all_empty;
297  }
+ Here is the caller graph for this function:

◆ validatePeerReviewGroups()

ilExPeerReview::validatePeerReviewGroups ( )

Definition at line 149 of file class.ilExPeerReview.php.

References $valid, ilExerciseMembers\_getMembers(), getAllPeerReviews(), getValidPeerReviewUsers(), and hasPeerReviewGroups().

149  : ?array
150  {
151  if ($this->hasPeerReviewGroups()) {
152  $all_exc = ilExerciseMembers::_getMembers($this->assignment->getExerciseId());
153  $all_valid = $this->getValidPeerReviewUsers(); // only returned
154 
155  $peer_ids = $invalid_peer_ids = $invalid_giver_ids = $all_reviews = array();
156  foreach ($this->getAllPeerReviews(false) as $peer_id => $reviews) {
157  $peer_ids[] = $peer_id;
158 
159  if (!in_array($peer_id, $all_valid) ||
160  !in_array($peer_id, $all_exc)) {
161  $invalid_peer_ids[] = $peer_id;
162  }
163  foreach ($reviews as $giver_id => $valid) {
164  if (!in_array($giver_id, $all_valid) ||
165  !in_array($peer_id, $all_exc)) {
166  $invalid_giver_ids[] = $giver_id;
167  } else {
168  $all_reviews[$peer_id][$giver_id] = $valid;
169  }
170  }
171  }
172  $invalid_giver_ids = array_unique($invalid_giver_ids);
173 
174  $missing_user_ids = array();
175  foreach ($all_valid as $user_id) {
176  // a missing peer is also a missing giver
177  if (!in_array($user_id, $peer_ids)) {
178  $missing_user_ids[] = $user_id;
179  }
180  }
181 
182  $not_returned_ids = array();
183  foreach ($all_exc as $user_id) {
184  if (!in_array($user_id, $all_valid)) {
185  $not_returned_ids[] = $user_id;
186  }
187  }
188 
189  return array(
190  "invalid" => (count($missing_user_ids) ||
191  count($invalid_peer_ids) ||
192  count($invalid_giver_ids)),
193  "missing_user_ids" => $missing_user_ids,
194  "not_returned_ids" => $not_returned_ids,
195  "invalid_peer_ids" => $invalid_peer_ids,
196  "invalid_giver_ids" => $invalid_giver_ids,
197  "reviews" => $all_reviews);
198  }
199 
200  return null;
201  }
$valid
getAllPeerReviews(bool $a_only_valid=true)
static _getMembers(int $a_obj_id)
+ Here is the call graph for this function:

Field Documentation

◆ $assignment

ilExAssignment ilExPeerReview::$assignment
protected

Definition at line 31 of file class.ilExPeerReview.php.

◆ $assignment_id

int ilExPeerReview::$assignment_id
protected

Definition at line 32 of file class.ilExPeerReview.php.

◆ $db

◆ $log

ilLogger ilExPeerReview::$log
protected

Definition at line 33 of file class.ilExPeerReview.php.

◆ $user

ilObjUser ilExPeerReview::$user
protected

The documentation for this class was generated from the following file: