30     protected \ILIAS\Exercise\Notification\NotificationManager 
$notification;
    32     protected \ILIAS\Notes\Service 
$notes;
    33     protected \ILIAS\Exercise\InternalGUIService 
$gui;
    34     protected \ILIAS\Exercise\InternalDomainService 
$domain;
    54         $service = $DIC->exercise()->internal();
    57         $this->
user = $this->domain->user();
    58         $this->
ctrl = $this->gui->ctrl();
    59         $this->tabs_gui = $this->gui->tabs();
    60         $this->
lng = $this->domain->lng();
    61         $this->tpl = $this->gui->ui()->mainTemplate();
    64         $this->submission = $a_submission;
    66         $request = $DIC->exercise()->internal()->gui()->request();
    67         $this->requested_review_giver_id = $request->getReviewGiverId();
    68         $this->requested_review_peer_id = $request->getReviewPeerId();
    69         $this->requested_review_crit_id = $request->getReviewCritId();
    70         $this->requested_peer_id = $request->getPeerId();
    71         $this->requested_giver_id = $request->getGiverId();
    72         $this->requested_crit_id = $request->getCritId();
    73         $this->gui = $DIC->exercise()->internal()->gui();
    74         $this->notes = $DIC->notes();
    75         $this->
ctrl->saveParameter($this, array(
"peer_id"));
    76         $this->
notification = $this->domain->notification($request->getRefId());
    88         if (!$this->ass->getPeerReview()) {
    92         $class = $ilCtrl->getNextClass($this);
    93         $cmd = $ilCtrl->getCmd(
"showpeerreviewoverview");
    96             case "ilfilesystemgui":
    97                 $ilCtrl->saveParameter($this, array(
"fu"));
   108                 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByPeerId($peer_id, 
true);
   109                 if (is_array($peer_items)) {
   110                     foreach ($peer_items as $item) {
   111                         if ($item[
"giver_id"] == $giver_id) {
   117                     $ilCtrl->redirect($this, 
"editPeerReview");
   120                 $ilTabs->clearTargets();
   121                 $ilTabs->setBackTarget(
   123                     $ilCtrl->getLinkTarget($this, 
"editPeerReview")
   131                 $fs_gui->setAllowDirectories(
false);
   132                 $fs_gui->setTitle($this->ass->getTitle() . 
": " .
   133                     $lng->
txt(
"exc_peer_review") . 
" - " .
   134                     $lng->
txt(
"exc_peer_review_give"));
   135                 $this->
ctrl->forwardCommand($fs_gui);
   140                 $peer_review->updatePeerReviewTimestamp($this->requested_peer_id);
   143                 $rating_gui->setObject(
   149                 $this->
ctrl->forwardCommand($rating_gui);
   150                 $ilCtrl->redirect($this, 
"editPeerReview");
   153             case "ilexsubmissiontextgui":
   154                 $ilTabs->clearTargets();
   155                 if (!$this->submission->isTutor()) {
   156                     $ilTabs->setBackTarget(
   158                         $ilCtrl->getLinkTarget($this, 
"editPeerReview")
   160                     $this->
ctrl->setReturn($this, 
"editPeerReview");
   162                     $ilTabs->setBackTarget(
   164                         $ilCtrl->getLinkTarget($this, 
"showGivenPeerReview")
   166                     $this->
ctrl->setReturn($this, 
"showGivenPeerReview");
   169                 $ilCtrl->forwardCommand($gui);
   174                     $this->requested_giver_id,
   175                     $this->requested_peer_id
   177                 $ilCtrl->forwardCommand($gui);
   181                 $this->{$cmd . 
"Object"}();
   188         $this->
ctrl->returnToParent($this);
   200         $lng = $DIC->language();
   201         $ilCtrl = $DIC->ctrl();
   202         $gui = $DIC->exercise()
   216         if ($state->hasSubmissionEndedForAllUsers() &&
   217             $ass->getPeerReview()) {
   218             $ilCtrl->setParameterByClass(
"ilExPeerReviewGUI", 
"ass_id", $a_submission->
getAssignment()->getId());
   220             $nr_missing_fb = $a_submission->
getPeerReview()->getNumberOfMissingFeedbacksForReceived();
   225             if ($state->isPeerReviewAllowed()) {
   227                 if ($ass->getPeerReviewDeadline()) {
   228                     $dl_info = 
" (" . sprintf(
   229                         $lng->
txt(
"exc_peer_review_deadline_info_button"),
   230                         $state->getPeerReviewDeadlinePresentation()
   235                     $lng->
txt(
"exc_peer_review_give"),
   236                     $ilCtrl->getLinkTargetByClass(array(ilAssignmentPresentationGUI::class, 
"ilExSubmissionGUI", 
"ilExPeerReviewGUI"), 
"editPeerReview")
   238                 if ($nr_missing_fb) {
   241                 $edit_pc = $b->render();
   242             } elseif ($ass->getPeerReviewDeadline()) {
   243                 $edit_pc = $lng->
txt(
"exc_peer_review_deadline_reached");
   247             if ((!$ass->getPeerReviewDeadline() ||
   248                 $ass->getPeerReviewDeadline() < time())) {
   250                 if ($ass->getPeerReviewDeadline() &&
   253                         $lng->
txt(
"exc_peer_review_given"),
   254                         $ilCtrl->getLinkTargetByClass(array(ilAssignmentPresentationGUI::class, 
"ilExSubmissionGUI", 
"ilExPeerReviewGUI"), 
"showGivenPeerReview")
   256                     $view_pc = 
$b->render() . 
" ";
   260                 if (!$nr_missing_fb) {
   262                     $received = (bool) 
sizeof($a_submission->
getPeerReview()->getPeerReviewsByPeerId($a_submission->
getUserId(), 
true));
   265                             $lng->
txt(
"exc_peer_review_show"),
   266                             $ilCtrl->getLinkTargetByClass(array(ilAssignmentPresentationGUI::class, 
"ilExSubmissionGUI", 
"ilExPeerReviewGUI"), 
"showReceivedPeerReview")
   268                         $view_pc .= 
$b->render();
   272                         $view_pc .= $lng->
txt(
"exc_peer_review_show_received_none");
   277                     $view_pc .= $lng->
txt(
"exc_peer_review_show_missing");
   287             $sep = ($edit_pc != 
"" && $view_pc != 
"")
   291             $a_info->
addProperty($lng->
txt(
"exc_peer_review"), $edit_pc . $sep . $view_pc);
   293             $ilCtrl->setParameterByClass(
"ilExPeerReviewGUI", 
"ass_id", 
"");
   299         $f = $this->gui->ui()->factory();
   304         $state = $this->domain->assignment()->state($ass->
getId(), $submission->
getUserId());
   312         if ($state->hasSubmissionEndedForAllUsers() &&
   314             $ilCtrl->setParameterByClass(
"ilExPeerReviewGUI", 
"ass_id", $submission->
getAssignment()->getId());
   316             $nr_missing_fb = $submission->
getPeerReview()->getNumberOfMissingFeedbacksForReceived();
   318             $builder->addAdditionalHeadProperty(
   319                 $this->
lng->txt(
"exc_given_feedback"),
   321                 $this->
lng->txt(
"exc_x_of_y") . 
" " .
   325             $builder->addAdditionalHeadProperty(
   326                 $this->
lng->txt(
"exc_received_feedback"),
   327                 $submission->
getPeerReview()->countReceivedFeedbacks($submission->getUserid())
   333             if ($state->isPeerReviewAllowed()) {
   334                 $url = $ilCtrl->getLinkTargetByClass(array(ilAssignmentPresentationGUI::class, 
"ilExSubmissionGUI", 
"ilExPeerReviewGUI"), 
"editPeerReview");
   335                 $button = 
$f->button()->primary(
   336                     $lng->
txt(
"exc_peer_review_give"),
   341                     $this->
lng->txt(
"exc_given_feedback"),
   344                 $builder->setMainAction(
   345                     $builder::SEC_PEER_FEEDBACK,
   349                     $deadline = $state->getPeerReviewDeadlinePresentation();
   351                     $deadline = $lng->
txt(
"exc_no_peer_feedback_deadline");
   353                 $builder->addProperty(
   354                     $builder::SEC_PEER_FEEDBACK,
   355                     $lng->
txt(
"exc_peer_review_deadline"),
   359                 $edit_pc = $lng->
txt(
"exc_peer_review_deadline_reached");
   360                 $builder->addProperty(
   361                     $builder::SEC_PEER_FEEDBACK,
   362                     $lng->
txt(
"exc_peer_review_deadline"),
   363                     $lng->
txt(
"exc_peer_review_deadline_reached")
   367                 $builder->addProperty(
   368                     $builder::SEC_SCHEDULE,
   369                     $lng->
txt(
"exc_peer_review_deadline"),
   370                     $state->getPeerReviewDeadlinePresentation()
   380                     $url = $ilCtrl->getLinkTargetByClass(array(ilAssignmentPresentationGUI::class, 
"ilExSubmissionGUI", 
"ilExPeerReviewGUI"), 
"showGivenPeerReview");
   381                     $link = 
$f->link()->standard(
   382                         $lng->
txt(
"exc_peer_review_given"),
   386                         $builder::SEC_PEER_FEEDBACK,
   391                         $this->
lng->txt(
"exc_given_feedback"),
   396                 if ($nr_missing_fb <= 0) {
   398                     $received = (bool) 
sizeof($submission->
getPeerReview()->getPeerReviewsByPeerId($submission->
getUserId(), 
true));
   400                         $url = $ilCtrl->getLinkTargetByClass(array(ilAssignmentPresentationGUI::class, 
"ilExSubmissionGUI", 
"ilExPeerReviewGUI"), 
"showReceivedPeerReview");
   401                         $link = 
$f->link()->standard(
   402                             $lng->
txt(
"exc_peer_review_show"),
   406                             $builder::SEC_PEER_FEEDBACK,
   411                             $this->
lng->txt(
"exc_received_feedback"),
   417                         $builder->addProperty(
   418                             $builder::SEC_PEER_FEEDBACK,
   419                             $lng->
txt(
"exc_received_peer_feedback"),
   420                             $lng->
txt(
"exc_peer_review_show_received_none")
   426                     $builder->addProperty(
   427                         $builder::SEC_PEER_FEEDBACK,
   428                         $lng->
txt(
"exc_peer_feedback_status"),
   429                         $lng->
txt(
"exc_peer_review_show_missing")
   433             $ilCtrl->setParameterByClass(
"ilExPeerReviewGUI", 
"ass_id", 
"");
   439         return ($this->submission->isOwner() &&
   440             $this->ass->afterDeadlineStrict() &&
   441             (!$this->ass->getPeerReviewDeadline() ||
   442                 $this->ass->getPeerReviewDeadline() > time()));
   447         return ($this->submission->isTutor() ||
   448             ($this->submission->isOwner() &&
   449             $this->ass->afterDeadlineStrict() &&
   450             (!$this->ass->getPeerReviewDeadline() ||
   451                 $this->ass->getPeerReviewDeadline() < time())));
   465         $this->tabs_gui->activateTab(
"give_feedback");
   471         $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
   472         if ($peer_items === []) {
   473             $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"exc_peer_review_no_peers"), 
true);
   477         $tpl->
setTitle($this->ass->getTitle() . 
": " . $lng->
txt(
"exc_peer_review_given"));
   479         $this->gui->permanentLink()->setGivenFeedbackPermanentLink();
   483         $tpl->
setContent($this->gui->ui()->renderer()->render($panel));
   497         $this->tabs_gui->activateTab(
"receive_feedback");
   500             (!$this->submission->isTutor() &&
   501             $this->submission->getPeerReview()->getNumberOfMissingFeedbacksForReceived())) {
   505         $this->gui->permanentLink()->setReceivedFeedbackPermanentLink();
   511         $peer_items = $this->submission->getPeerReview()->getPeerReviewsByPeerId($this->submission->getUserId(), !$this->submission->isTutor());
   512         if ($peer_items === []) {
   514             $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"exc_peer_review_no_peers_reviewed_yet"), 
true);
   515             $ilCtrl->redirect($this, 
"returnToParent");
   518         $tpl->
setTitle($this->ass->getTitle() . 
": " . $lng->
txt(
"exc_peer_review_show"));
   524         $tpl->
setContent($this->gui->ui()->renderer()->render($panel));
   529         bool $a_by_peer = 
false   534         if ($this->submission->isTutor()) {
   536             $user_title = $a_by_peer
   537                 ? $lng->
txt(
"exc_peer_review_recipient")
   538                 : $lng->
txt(
"exc_peer_review_giver");
   540                 "prop" => $lng->
txt(
"name"),
   555             $submission = 
new ilExSubmission($this->ass, $this->submission->getUserId());
   559                 "prop" => $file_info[
"last_submission"][
"txt"],
   560                 "value" => $file_info[
"last_submission"][
"value"] .
   565             if ($sub_data === 
'' || $sub_data === 
'0') {
   566                 $sub_data = 
'<a href="' . $file_info[
"files"][
"download_url"] . 
'">' . $lng->
txt(
"download") . 
'</a>';
   569                 "prop" => $lng->
txt(
"exc_submission"),
   574                 $lng->
txt(
"exc_your_submission"),
   579         foreach ($a_peer_items as $peer) {
   582                 $giver_id = $this->submission->getUserId();
   583                 $peer_id = $peer[
"peer_id"];
   584                 $id_title = $lng->
txt(
"exc_peer_review_recipient");
   590                 $giver_id = $peer[
"giver_id"];
   591                 $peer_id = $this->submission->getUserId();
   592                 $id_title = $lng->
txt(
"exc_peer_review_giver");
   593                 $user_id = $giver_id;
   597             if ($this->submission->isTutor()) {
   599             } elseif (!$this->ass->hasPeerReviewPersonalized()) {
   600                 $id_value = $peer[
"seq"];
   617                     "prop" => $file_info[
"last_submission"][
"txt"],
   618                     "value" => $file_info[
"last_submission"][
"value"] .
   623                 if ($sub_data === 
'' || $sub_data === 
'0') {
   624                     if (isset($file_info[
"files"][
"download_url"])) {
   625                         $sub_data = 
'<a href="' . $file_info[
"files"][
"download_url"] . 
'">' . $lng->
txt(
"download") . 
'</a>';
   629                     "prop" => $lng->
txt(
"exc_submission"),
   637             $values = $this->submission->getPeerReview()->getPeerReviewValues($giver_id, $peer_id);
   639             foreach ($this->ass->getPeerReviewCriteriaCatalogueItems() as $item) {
   640                 $crit_id = $item->getId()
   644                 $item->setPeerReviewContext(
   650                 $title = $item->getTitle();
   651                 $html = $item->getHTML($values[$crit_id] ?? null);
   653                     "prop" => $title ?: 
" ",
   654                     "value" => $html ?: 
" "   658                 $id_title . 
": " . $id_value,
   663         return $this->gui->ui()->factory()->panel()->standard(
   665                 ? $this->
lng->txt(
"exc_received_feedback")
   666                 : $this->
lng->txt(
"exc_given_feedback"),
   676         $f = $this->gui->ui()->factory();
   677         $r = $this->gui->ui()->renderer();
   678         $tpl = new \ilTemplate(
"tpl.panel_items.html", 
true, 
true, 
"Modules/Exercise/PeerReview");
   679         foreach ($props as $prop) {
   687             $mess_html = 
$r->render(
$f->divider()->horizontal()) .
   688                 $mess_gui->getWidget();
   691         return $f->panel()->sub(
   693             $f->legacy($tpl->
get() . $mess_html)
   703         foreach ($a_submission->
getFiles() as $file) {
   705                 return '<div class="warning">' . $lng->
txt(
"exc_late_submission") . 
'</div>';
   718         $this->tabs_gui->activateTab(
"give_feedback");
   723         $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
   724         if ($peer_items === []) {
   725             $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"exc_peer_review_no_peers"), 
true);
   729         $missing = $this->submission->getPeerReview()->getNumberOfMissingFeedbacksForReceived();
   730         if ($missing !== 0) {
   731             $dl = $this->ass->getPeerReviewDeadline();
   732             if (!$dl || $dl < time()) {
   733                 $this->tpl->setOnScreenMessage(
'info', sprintf($this->
lng->txt(
"exc_peer_review_missing_info"), $missing));
   735                 $this->tpl->setOnScreenMessage(
'info', sprintf(
   736                     $this->
lng->txt(
"exc_peer_review_missing_info_deadline"),
   752             $this->submission->getUserId(),
   755         $tpl->
setContent($this->gui->ui()->renderer()->render($panel));
   765             $this->fstorage->
create();
   768         $f = $this->gui->ui()->factory();
   771         foreach ($peer_data as $item) {
   778             $row[
"giver_id"] = $item[
"giver_id"];
   779             $row[
"peer_id"] = $item[
"peer_id"];
   780             $row[
"tstamp"] = $item[
"tstamp"];
   783                 $row[
"seq"] = $item[
"seq"];
   789             $row[
"valid"] = $all_empty = 
true;
   791             $values = $submission->
getPeerReview()->getPeerReviewValues($item[
"giver_id"], $item[
"peer_id"]);
   792             foreach ($this->ass->getPeerReviewCriteriaCatalogueItems() as $crit) {
   793                 $crit_id = $crit->getId()
   796                 $crit->setPeerReviewContext(
   801                 if (!$crit->validate($values[$crit_id] ?? null)) {
   802                     $row[
"valid"] = 
false;
   804                 if ($crit->hasValue($values[$crit_id] ?? null)) {
   809                 $row[
"valid"] = 
false;
   811             if (!$row[
"valid"]) {
   817             if (isset($row[
"seq"])) {
   818                 $title = $this->
lng->txt(
"exc_peer_review_recipient") . 
" " . $row[
"seq"];
   820                 $title = $row[
"name"];
   823             if ($row[
"tstamp"]) {
   827             $props[$lng->
txt(
"last_update")] = $row[
"tstamp"];
   829             $props[$lng->
txt(
"valid")] = $row[
"valid"]
   830                     ? $this->
lng->txt(
"yes")
   831                     : $this->
lng->txt(
"no");
   833             $ilCtrl->setParameter($this, 
"peer_id", $row[
"peer_id"]);
   836                     $this->
lng->txt(
"edit"),
   837                     $ilCtrl->getLinkTarget($this, 
"editPeerReviewItem")
   840             $ilCtrl->setParameter($this, 
"pid", 
"");
   842             $items[] = 
$f->item()->standard(
   844             )->withProperties($props)
   845                 ->withActions(
$f->dropdown()->standard($actions));
   848         $group = 
$f->item()->group(
"", $items);
   849         return $f->panel()->listing()->standard(
   850             $this->
lng->txt(
"exc_peer_review_give"),
   860         $this->tabs_gui->activateTab(
"give_feedback");
   863             $this->
ctrl->redirectByClass(self::class, 
"showGivenPeerReview");
   871         if ($a_form === null) {
   875         $sep = $this->gui->ui()->renderer()->render($this->gui->ui()->factory()->divider()->horizontal());
   880         if ($peer_state->isReceivedFeedbackAccessible()) {
   882                 $this->
user->getId(),
   885             $message_html = $sep . $message_gui->getListHTML();
   888         $this->gui->permanentLink()->setGivenFeedbackPermanentLink();
   890         $tpl->
setContent($a_form->getHTML() . $message_html);
   895         $this->
ctrl->setParameter($this, 
"giver_id", $giver_id);
   896         $this->
ctrl->setParameter($this, 
"peer_id", $peer_id);
   897         $pr = $this->domain->peerReview($this->ass);
   898         $gui = $this->notes->gui()->getMessagesGUI(
   900             $this->ass->getExerciseId(),
   901             $pr->getReviewId($giver_id, $peer_id),
   904         if (!$this->ass->hasPeerReviewPersonalized()) {
   905             if ($giver_id === $this->
user->getId()) {
   906                 $counterpart_name = $this->
lng->txt(
"exc_peer_review_recipient");
   908                 $counterpart_name = $this->
lng->txt(
"exc_peer_review_giver");
   910             $gui->setAnonymised(
true, $counterpart_name);
   913         $gui->addObserver(
function (
   919         ) use ($giver_id, $peer_id) {
   937         if ($action !== 
"new") {
   940         $note = $this->notes->domain()->getById($note_id);
   941         $text = $note->getText();
   943         if ($note->getAuthor() === $giver_id) {
   944             $this->
notification->sendMessageFromPeerfeedbackGiverNotification(
   950             $this->
notification->sendMessageFromPeerfeedbackRecipientNotification(
   962         $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
   963         foreach ($peer_items as $item) {
   964             if ($item[
"peer_id"] == $a_peer_id) {
   980             $text = array_shift($text);
   981             if (trim($text[
"atext"]) !== 
'' && trim($text[
"atext"]) !== 
'0') {
   999         $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
  1001         foreach ($peer_items as $item) {
  1002             if ($item[
"peer_id"] == $a_peer_id) {
  1008         $ilCtrl->saveParameter($this, 
"peer_id");
  1011         $form->setFormAction($ilCtrl->getFormAction($this, 
"updatePeerReview"));
  1013         $form->setTitle($this->ass->getTitle() . 
": " . $lng->
txt(
"exc_peer_review_give"));
  1016         if (!$this->ass->hasPeerReviewPersonalized()) {
  1017             $id_title = $lng->
txt(
"id");
  1018             $id_value = $peer[
"seq"];
  1020             $id_title = $lng->
txt(
"exc_peer_review_recipient");
  1024         $id->setValue($id_value);
  1025         $form->addItem(
$id);
  1033         $last_sub->setValue($file_info[
"last_submission"][
"value"] .
  1035         $form->addItem($last_sub);
  1038         if (($sub_data === 
'' || $sub_data === 
'0') && isset($file_info[
"files"][
"download_url"])) {
  1039             $sub_data = 
'<a href="' . $file_info[
"files"][
"download_url"] . 
'">' . $lng->
txt(
"download") . 
'</a>';
  1043         $sub->setValue($sub_data);
  1044         $form->addItem($sub);
  1049         $input->setTitle($lng->
txt(
"exc_peer_review"));
  1050         $form->addItem($input);
  1052         $values = $this->submission->getPeerReview()->getPeerReviewValues($this->submission->getUserId(), $a_peer_id);
  1054         foreach ($this->ass->getPeerReviewCriteriaCatalogueItems() as $item) {
  1055             $crit_id = $item->getId()
  1059             $item->setPeerReviewContext(
  1061                 $this->submission->getUserId(),
  1065             $item->addToPeerReviewForm($values[$crit_id] ?? null);
  1068         $form->addCommandButton(
"updatePeerReview", $lng->
txt(
"save"));
  1069         $form->addCommandButton(
"editPeerReview", $lng->
txt(
"cancel"));
  1081             !$this->requested_peer_id ||
  1082             !$this->requested_crit_id ||
  1083             !$ilCtrl->isAsynch()) {
  1089         $giver_id = $ilUser->getId();
  1091         if (!is_numeric($crit_id)) {
  1096         $crit->setPeerReviewContext($this->ass, $giver_id, $peer_id);
  1097         $html = $crit->updateFromAjax();
  1119         if ($form->checkInput()) {
  1123             foreach ($this->ass->getPeerReviewCriteriaCatalogueItems() as $item) {
  1124                 $item->setPeerReviewContext(
  1126                     $this->submission->getUserId(),
  1130                 $value = $item->importFromPeerReviewForm();
  1131                 if ($value !== null) {
  1132                     $crit_id = $item->getId()
  1135                     $values[$crit_id] = $value;
  1137                 if (!$item->validate($value)) {
  1143                 $this->submission->getPeerReview()->updatePeerReview($peer_id, $values);
  1147                 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"exc_peer_review_updated"), 
true);
  1148                 $ilCtrl->redirect($this, 
"editPeerReview");
  1150                 $this->tpl->setOnScreenMessage(
'failure', $lng->
txt(
"form_input_not_valid"));
  1154         $form->setValuesByPost();
  1164             $this->submission->getUserIds(),
  1165             $this->submission->hasSubmitted(),
  1166             $this->submission->validatePeerReviews()
  1183         if (!is_numeric($crit_id)) {
  1189         $crit->setPeerReviewContext($this->ass, $giver_id, $peer_id);
  1190         $file = $crit->getFileByHash();
  1195         $ilCtrl->redirect($this, 
"returnToParent");
  1209             !$this->ass->getPeerReview()) {
  1215             "showPeerReviewOverview",
  1220         $panel_data = $tbl->getPanelInfo();
  1221         if (is_array($panel_data) && count($panel_data) > 0) {
  1222             $ptpl = 
new ilTemplate(
"tpl.exc_peer_review_overview_panel.html", 
true, 
true, 
"Modules/Exercise");
  1223             foreach ($panel_data as $item) {
  1224                 $ptpl->setCurrentBlock(
"user_bl");
  1225                 foreach ($item[
"value"] as $user) {
  1226                     $ptpl->setVariable(
"USER", $user);
  1227                     $ptpl->parseCurrentBlock();
  1230                 $ptpl->setCurrentBlock(
"item_bl");
  1231                 $ptpl->setVariable(
"TITLE", $item[
"title"]);
  1232                 $ptpl->parseCurrentBlock();
  1235             $f = $this->gui->ui()->factory();
  1236             $r = $this->gui->ui()->renderer();
  1237             $p = 
$f->panel()->standard(
  1238                 $this->
lng->txt(
"exc_peer_review_overview_invalid_users"),
  1239                 $f->legacy($ptpl->get())
  1242             $panel = 
$r->render($p);
  1255             !$this->ass->getPeerReview()) {
  1259         $ilTabs->clearTargets();
  1262         $cgui->setFormAction($ilCtrl->getFormAction($this));
  1263         $cgui->setHeaderText(sprintf($this->
lng->txt(
"exc_peer_review_reset_sure"), $this->ass->getTitle()));
  1264         $cgui->setCancel($this->
lng->txt(
"cancel"), 
"showPeerReviewOverview");
  1265         $cgui->setConfirm($this->
lng->txt(
"delete"), 
"resetPeerReview");
  1275             !$this->ass->getPeerReview()) {
  1280         $all_giver_ids = $peer_review->resetPeerReviews();
  1282         if (is_array($all_giver_ids)) {
  1285             if (
$exercise->isCompletionBySubmissionEnabled() &&
  1287                 foreach ($all_giver_ids as $user_id) {
  1290                     $pgui->handlePeerReviewChange();
  1295         $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"exc_peer_review_reset_done"), 
true);
  1296         $ilCtrl->redirect($this, 
"showPeerReviewOverview");
 static _replaceMediaObjectImageSrc(string $a_text, int $a_direction=0, string $nic='')
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
 
ILIAS Exercise InternalGUIService $gui
 
editPeerReviewItemObject(ilPropertyFormGUI $a_form=null)
 
static getOverviewContent(ilInfoScreenGUI $a_info, ilExSubmission $a_submission)
 
getFiles(array $a_file_ids=null, bool $a_only_valid=false, string $a_min_timestamp=null, bool $print_versions=false)
Get submission items (not only files) 
 
setCurrentBlock(string $blockname=self::DEFAULT_BLOCK)
Sets the template to the given block. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
 
getReceivedFeedbackPanel(array $a_peer_items, bool $a_by_peer=false)
 
ILIAS Exercise InternalDomainService $domain
 
setTitle(string $a_title, bool $hidden=false)
Sets title in standard template. 
 
Class ChatMainBarProvider . 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
addProperty(string $a_name, string $a_value, string $a_link="")
add a property to current section 
 
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false)
 
string $requested_crit_id
 
parseCurrentBlock(string $blockname=self::DEFAULT_BLOCK)
Parses the given block. 
 
ILIAS Notes Service $notes
 
getPeerReviewUploadPath(int $a_peer_id, int $a_giver_id, ?int $a_crit_id=null)
Get pear review upload path (each peer handled in a separate path) 
 
static getInstanceByType(string $a_type)
 
isValidPeer(int $a_peer_id)
 
ilExSubmission $submission
 
static deliverFileLegacy(string $a_file, ?string $a_filename=null, ?string $a_mime=null, ?bool $isInline=false, ?bool $removeAfterDelivery=false, ?bool $a_exit_after=true)
 
confirmResetPeerReviewObject()
 
getMessagesGUI(int $giver_id, int $peer_id)
 
getSubPanel(string $title, array $props, ?ilMessageGUI $mess_gui=null)
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
showPeerReviewOverviewObject()
 
get(string $part=self::DEFAULT_BLOCK)
Renders the given block and returns the html string. 
 
static getNamePresentation( $a_user_id, bool $a_user_image=false, bool $a_profile_link=false, string $a_profile_back_link='', bool $a_force_first_lastname=false, bool $a_omit_login=false, bool $a_sortable=true, bool $a_return_data_array=false, $a_ctrl_path='ilpublicuserprofilegui')
Default behaviour is: 
 
showReceivedPeerReviewObject()
 
getLateSubmissionInfo(ilExSubmission $a_submission)
 
hasPeerReviewPersonalized()
 
getDownloadedFilesInfoForTableGUIS()
 
string $requested_review_crit_id
 
int $requested_review_peer_id
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
static getInstanceByIds(int $a_ass_id, int $a_user_id=0)
 
showGivenPeerReviewObject()
 
getSubmissionContent(ilExSubmission $a_submission)
 
__construct(ilExAssignment $a_ass, ilExSubmission $a_submission=null)
 
getOnLoadCodeForAsynch()
Get js onload code for ajax calls. 
 
buildSubmissionPropertiesAndActions(\ILIAS\Exercise\Assignment\PropertyAndActionBuilderUI $builder)
 
getPeerReviewReceiverPanel(ilExAssignment $ass, int $user_id, array $peer_data)
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
create()
Create directory. 
 
observeMessageAction(int $giver_id, int $peer_id, int $note_id, string $action)
 
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins 
 
int $requested_review_giver_id
 
const PEER_REVIEW_VALID_NONE
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
hasPeerReviewFileUpload()
 
File System Explorer GUI class. 
 
downloadPeerReviewObject()
 
ilFSStorageExercise $fstorage
 
static _lookupType(int $id, bool $reference=false)
 
ILIAS Exercise Notification NotificationManager $notification
 
setVariable(string $variable, $value='')
Sets the given variable to the given value. 
 
ilGlobalPageTemplate $tpl
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
setContent(string $a_html)
Sets content for standard template. 
 
initPeerReviewItemForm(int $a_peer_id)
 
setTableId(string $a_val)
 
static getInstanceById(int $a_id)