4include_once 
"Modules/Exercise/classes/class.ilExSubmission.php";
 
    5include_once 
"Modules/Exercise/classes/class.ilExSubmissionBaseGUI.php";
 
   91        $this->ui_factory = 
$DIC->ui()->factory();
 
   92        $this->ui_renderer = 
$DIC->ui()->renderer();
 
   93        $this->
user = $DIC->user();
 
   94        $this->toolbar = 
$DIC->toolbar();
 
   96        $this->ctrl = 
$DIC->ctrl();
 
   97        $this->tabs_gui = 
$DIC->tabs();
 
   98        $this->lng = 
$DIC->language();
 
   99        $this->tpl = 
$DIC[
"tpl"];
 
  101        $this->task_factory = 
$DIC->backgroundTasks()->taskFactory();
 
  104        $this->exercise = $a_exercise;
 
  106            $this->assignment = $a_ass;
 
  107            $this->ass_id = $this->assignment->
getId();
 
  110        $this->ctrl->saveParameter($this, array(
"vw", 
"member_id"));
 
  119        $class = 
$ilCtrl->getNextClass($this);
 
  123            case "ilfilesystemgui":
 
  124                $ilTabs->clearTargets();
 
  125                $ilTabs->setBackTarget(
 
  127                    $ilCtrl->getLinkTarget($this, $this->getViewBack())
 
  132                include_once(
"./Modules/Exercise/classes/class.ilFSStorageExercise.php");
 
  137                $feedback_id = $submission->getFeedbackId();
 
  138                $noti_rec_ids = $submission->getUserIds();
 
  140                include_once(
"./Services/User/classes/class.ilUserUtil.php");
 
  142                foreach ($noti_rec_ids as $rec_id) {
 
  145                $fs_title = implode(
" / ", $fs_title);
 
  147                include_once(
"./Services/FileSystem/classes/class.ilFileSystemGUI.php");
 
  148                $fs_gui = 
new ilFileSystemGUI($fstorage->getFeedbackPath($feedback_id));
 
  149                $fs_gui->setTableId(
"excfbfil" . $this->assignment->getId() . 
"_" . $feedback_id);
 
  150                $fs_gui->setAllowDirectories(
false);
 
  151                $fs_gui->setTitle(
$lng->txt(
"exc_fb_files") . 
" - " .
 
  152                    $this->assignment->getTitle() . 
" - " .
 
  154                $pcommand = $fs_gui->getLastPerformedCommand();
 
  155                if (is_array($pcommand) && $pcommand[
"cmd"] == 
"create_file") {
 
  156                    foreach ($noti_rec_ids as $user_id) {
 
  157                        $member_status = $this->assignment->getMemberStatus($user_id);
 
  158                        $member_status->setFeedback(
true);
 
  159                        $member_status->update();
 
  162                    $this->exercise->sendFeedbackFileNotification(
 
  165                        $this->assignment->getId()
 
  168                $this->ctrl->forwardCommand($fs_gui);
 
  171            case 'ilrepositorysearchgui':
 
  172                include_once(
'./Services/Search/classes/class.ilRepositorySearchGUI.php');
 
  174                $ref_id = $this->exercise->getRefId();
 
  175                $rep_search->addUserAccessFilterCallable(
function ($a_user_ids) use ($ref_id) {
 
  176                    return $GLOBALS[
'DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
 
  177                        'edit_submissions_grades',
 
  178                        'edit_submissions_grades',
 
  183                $rep_search->setTitle($this->lng->txt(
"exc_add_participant"));
 
  184                $rep_search->setCallback($this, 
'addMembersObject');
 
  188                $this->ctrl->setReturn($this, 
'members');
 
  190                $this->ctrl->forwardCommand($rep_search);
 
  193            case "ilexsubmissionteamgui":
 
  194                include_once 
"Modules/Exercise/classes/class.ilExSubmissionTeamGUI.php";
 
  199            case "ilexsubmissionfilegui":
 
  200                include_once 
"Modules/Exercise/classes/class.ilExSubmissionFileGUI.php";
 
  205            case "ilexsubmissiontextgui":
 
  206                $ilCtrl->saveParameter($this, array(
"part_id"));
 
  207                include_once 
"Modules/Exercise/classes/class.ilExSubmissionTextGUI.php";
 
  212            case "ilexpeerreviewgui":
 
  213                include_once 
"Modules/Exercise/classes/class.ilExPeerReviewGUI.php";
 
  221                    case 'downloadSubmissions':
 
  222                        $cmd = 
$ilCtrl->getCmd(
"downloadSubmissions");
 
  225                        $cmd = 
$ilCtrl->getCmd(
"listPublicSubmissions");
 
  228                $this->{$cmd . 
"Object"}();
 
  235        switch ($_REQUEST[
"vw"]) {
 
  237                $back_cmd = 
"showParticipant";
 
  241                $back_cmd = 
"showGradesOverview";
 
  246                $back_cmd = 
"members";
 
  255        $this->ctrl->setReturn($this, $back_cmd);
 
  257        $this->tabs_gui->clearTargets();
 
  258        $this->tabs_gui->setBackTarget(
 
  259            $this->lng->txt(
"back"),
 
  260            $this->ctrl->getLinkTarget($this, $back_cmd)
 
  263        include_once 
"Modules/Exercise/classes/class.ilExSubmission.php";
 
  264        return new ilExSubmission($this->assignment, $_REQUEST[
"member_id"], 
null, 
true);
 
  278        $ass_id = 
$_GET[
"ass_id"];
 
  279        $part_id = 
$_GET[
"part_id"];
 
  281        $ilCtrl->setParameter($this, 
"vw", 
"");
 
  282        $ilCtrl->setParameter($this, 
"member_id", 
"");
 
  283        $ilCtrl->setParameter($this, 
"ass_id", 
"");
 
  284        $ilCtrl->setParameter($this, 
"part_id", 
"");
 
  288            $lng->txt(
"exc_assignment_view"),
 
  289            $ilCtrl->getLinkTarget($this, 
"members")
 
  293            $lng->txt(
"exc_participant_view"),
 
  294            $ilCtrl->getLinkTarget($this, 
"showParticipant")
 
  298            $lng->txt(
"exc_grades_overview"),
 
  299            $ilCtrl->getLinkTarget($this, 
"showGradesOverview")
 
  301        $ilTabs->activateSubTab($a_activate);
 
  303        $ilCtrl->setParameter($this, 
"ass_id", $ass_id);
 
  304        $ilCtrl->setParameter($this, 
"part_id", $part_id);
 
  312        $ilCtrl->setParameterByClass(
"ilExSubmissionFileGUI", 
"member_id", (
int) 
$_GET[
"member_id"]);
 
  313        $url = 
$ilCtrl->getLinkTargetByClass(array(
"ilRepositoryGUI", 
"ilExerciseHandlerGUI", 
"ilObjExerciseGUI", 
"ilExerciseManagementGUI", 
"ilExSubmissionFileGUI"), 
"downloadNewReturned");
 
  314        $js_url = 
$ilCtrl->getLinkTargetByClass(array(
"ilRepositoryGUI", 
"ilExerciseHandlerGUI", 
"ilObjExerciseGUI", 
"ilExerciseManagementGUI", 
"ilExSubmissionFileGUI"), 
"downloadNewReturned", 
"", 
"", 
false);
 
  315        ilUtil::sendInfo(
$lng->txt(
"exc_wait_for_files") . 
"<a href='$url'> " . 
$lng->txt(
'exc_download_files') . 
"</a><script>window.location.href ='" . $js_url . 
"';</script>");
 
  329        include_once 
'Services/Tracking/classes/class.ilLPMarks.php';
 
  334        include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
  337        if (!$this->assignment) {
 
  338            $this->assignment = current($ass);
 
  342        if (count($ass) > 1) {
 
  344            foreach ($ass as $a) {
 
  345                $options[$a->getId()] = $a->getTitle();
 
  347            include_once(
"./Services/Form/classes/class.ilSelectInputGUI.php");
 
  350            $si->setValue($this->assignment->getId());
 
  351            $ilToolbar->addStickyItem(
$si);
 
  353            include_once(
"./Services/UIComponent/Button/classes/class.ilSubmitButton.php");
 
  355            $button->setCaption(
"exc_select_ass");
 
  356            $button->setCommand(
"selectAssignment");
 
  357            $ilToolbar->addStickyItem($button);
 
  359            $ilToolbar->addSeparator();
 
  362        elseif ($this->assignment) {
 
  363            $ilCtrl->setParameter($this, 
"ass_id", $this->assignment->getId());
 
  369        $has_rbac_access = 
$GLOBALS[
'DIC']->access()->checkAccess(
 
  370            'edit_submissions_grades',
 
  372            $this->exercise->getRefId()
 
  374        if ($has_rbac_access) {
 
  375            include_once 
'./Services/Search/classes/class.ilRepositorySearchGUI.php';
 
  380                    'auto_complete_name' => 
$lng->txt(
'user'),
 
  381                    'submit_name' => 
$lng->txt(
'add'),
 
  382                    'add_search' => 
true,
 
  383                    'add_from_container' => $this->exercise->getRefId()
 
  389        if (count($ass) > 0) {
 
  390            if ($has_rbac_access) {
 
  391                $ilToolbar->addSeparator();
 
  395            $ilToolbar->setFormAction(
$ilCtrl->getFormAction($this));
 
  397            $ilCtrl->setParameter($this, 
"ass_id", $this->assignment->getId());
 
  400                include_once(
"./Modules/Exercise/classes/class.ilExAssignmentTeam.php");
 
  402                    $ilToolbar->addButton(
 
  403                        $this->lng->txt(
"exc_adopt_group_teams"),
 
  404                        $this->ctrl->getLinkTarget($this, 
"adoptTeamsFromGroup")
 
  407                    $ilToolbar->addSeparator();
 
  409            } elseif ($this->exercise->hasTutorFeedbackFile()) {
 
  410                if (!$this->assignment->getAssignmentType()->usesTeams()) {
 
  412                    $ilToolbar->addButton(
 
  413                        $this->lng->txt(
"exc_multi_feedback"),
 
  414                        $this->ctrl->getLinkTarget($this, 
"showMultiFeedback")
 
  417                    $ilToolbar->addSeparator();
 
  422                $ass_type = $this->assignment->getType();
 
  425                    $ilToolbar->addFormButton(
$lng->txt(
"exc_list_text_assignment"), 
"listTextAssignment");
 
  427                $ilToolbar->addFormButton(
$lng->txt(
"download_all_returned_files"), 
"downloadSubmissions");
 
  429            $this->ctrl->setParameter($this, 
"vw", self::VIEW_ASSIGNMENT);
 
  431            include_once(
"./Modules/Exercise/classes/class.ilExerciseMemberTableGUI.php");
 
  434                $exc_tab->getHTML() .
 
  435                $this->initIndividualDeadlineModal()
 
  441        $ilCtrl->setParameter($this, 
"ass_id", 
"");
 
  448        include_once 
'./Modules/Exercise/classes/BackgroundTasks/class.ilDownloadSubmissionsBackgroundTask.php';
 
  450        $participant_id = $_REQUEST[
'part_id'];
 
  454            (
int) $this->exercise->getRefId(),
 
  455            (
int) $this->exercise->getId(),
 
  457            (
int) $participant_id
 
  460        if ($download_task->run()) {
 
  461            ilUtil::sendSuccess($this->lng->txt(
'exc_down_files_started_bg'), 
true);
 
  464        if ($this->assignment) {
 
  465            $this->ctrl->redirect($this, 
"members");
 
  467            $this->ctrl->redirect($this, 
"showParticipant");
 
  474        include_once(
"./Modules/Exercise/classes/class.ilExerciseMemberTableGUI.php");
 
  476        $exc_tab->resetOffset();
 
  477        $exc_tab->writeFilterToSession();
 
  484        include_once(
"./Modules/Exercise/classes/class.ilExerciseMemberTableGUI.php");
 
  486        $exc_tab->resetOffset();
 
  487        $exc_tab->resetFilter();
 
  500        include_once 
'Services/Tracking/classes/class.ilLPMarks.php';
 
  502        if (is_array(
$_POST[
"lcomment"])) {
 
  503            foreach (
$_POST[
"lcomment"] as $k => $v) {
 
  504                $marks_obj = 
new ilLPMarks($this->exercise->getId(), (
int) $k);
 
  507                $marks_obj->update();
 
  510        ilUtil::sendSuccess(
$lng->txt(
"exc_msg_saved_grades"), 
true);
 
  511        $ilCtrl->redirect($this, 
"showGradesOverview");
 
  525        $this->tabs_gui->clearTargets();
 
  526        $this->tabs_gui->setBackTarget(
 
  527            $this->lng->txt(
"back"),
 
  528            $this->ctrl->getLinkTarget($this, 
"members")
 
  531        $button_print = $this->ui_factory->button()->standard($this->lng->txt(
'print'), 
"#")
 
  532            ->withOnLoadCode(
function (
$id) {
 
  533                return "$('#{$id}').click(function() { window.print(); return false; });";
 
  535        $this->toolbar->addSeparator();
 
  536        $this->toolbar->addComponent($button_print);
 
  540        $peer_data = $peer_review->getAllPeerReviews();
 
  542        include_once 
"Services/User/classes/class.ilUserUtil.php";
 
  543        include_once 
"Services/RTE/classes/class.ilRTE.php";
 
  547        $report_title = $this->lng->txt(
"exc_list_text_assignment") . 
": " . $this->assignment->getTitle();
 
  548        $report_html .= 
"<h1>" . $report_title . 
"</h1>";
 
  553        $members = $members_filter->filterParticipantsByAccess();
 
  558                $uname = 
$user->getFirstname() . 
" " . 
$user->getLastname();
 
  560                    "uid" => $file[
"user_id"],
 
  562                    "udate" => $file[
"ts"],
 
  566                if (isset($peer_data[$file[
"user_id"]])) {
 
  567                    $data[
"peer"] = array_keys($peer_data[$file[
"user_id"]]);
 
  570                $data[
"fb_received"] = (is_array(
$data[
"peer"]))
 
  571                    ? count(
$data[
"peer"])
 
  573                $data[
"fb_given"] = $peer_review->countGivenFeedback(
true, $file[
"user_id"]);
 
  575                $submission_data = $this->assignment->getExerciseMemberAssignmentData($file[
"user_id"], $this->filter[
"status"]);
 
  577                if (is_array($submission_data)) {
 
  584        if ($total_reports == 0) {
 
  585            $mtpl = 
new ilTemplate(
"tpl.message.html", 
true, 
true, 
"Services/Utilities");
 
  586            $mtpl->setCurrentBlock(
"info_message");
 
  587            $mtpl->setVariable(
"TEXT", $this->lng->txt(
"fiter_no_results"));
 
  588            $mtpl->parseCurrentBlock();
 
  589            $report_html .= $mtpl->get();
 
  592        $this->tpl->setContent($report_html);
 
  599        $this->ctrl->setParameter($this, 
"member_id", $a_data[
'uid']);
 
  601            $this->ui_factory->button()->shy($this->lng->txt(
"grade_evaluate"), 
"#")->withOnClick($modal->getShowSignal())
 
  603        if ($this->exercise->hasTutorFeedbackMail()) {
 
  604            $actions[] = $this->ui_factory->button()->shy(
 
  605                $this->lng->txt(
"exc_tbl_action_feedback_mail"),
 
  606                $this->ctrl->getLinkTarget($this, 
"redirectFeedbackMail")
 
  609        if ($this->exercise->hasTutorFeedbackFile()) {
 
  610            $actions[] = $this->ui_factory->button()->shy(
 
  611                $this->lng->txt(
"exc_tbl_action_feedback_file"),
 
  612                $this->ctrl->getLinkTargetByClass(
"ilFileSystemGUI", 
"listFiles")
 
  616        $this->ctrl->setParameter($this, 
"member_id", 
"");
 
  618        $actions_dropdown = $this->ui_factory->dropdown()->standard($actions);
 
  620        if ($a_data[
'status'] == self::GRADE_NOT_GRADED) {
 
  621            $str_status_key = $this->lng->txt(
'exc_tbl_status');
 
  622            $str_status_value = $this->lng->txt(
'not_yet');
 
  624            $str_status_key = $this->lng->txt(
'exc_tbl_status_time');
 
  628        $str_mark_key = $this->lng->txt(
"exc_tbl_mark");
 
  629        $str_mark_value = $this->lng->txt(
'not_yet');
 
  631        if (($a_data[
'mark'] != 
"")) {
 
  632            $str_mark_value = $a_data[
'mark'];
 
  635        if ($a_data[
'feedback_time']) {
 
  636            $str_evaluation_key = $this->lng->txt(
'exc_tbl_feedback_time');
 
  639            $str_evaluation_key = $this->lng->txt(
'exc_settings_feedback');
 
  640            $str_evaluation_value = $this->lng->txt(
'not_yet');
 
  643        $card_content = array(
 
  645            $str_status_key => $str_status_value,
 
  646            $str_mark_key => $str_mark_value,
 
  647            $str_evaluation_key => $str_evaluation_value,
 
  648            $this->lng->txt(
'feedback_given') => $a_data[
'fb_given'],
 
  649            $this->lng->txt(
'feedback_received') => $a_data[
'fb_received']
 
  651        $card_tpl = 
new ilTemplate(
"tpl.exc_report_details_card.html", 
true, 
true, 
"Modules/Exercise");
 
  652        foreach ($card_content as 
$key => $value) {
 
  653            $card_tpl->setCurrentBlock(
"assingment_card");
 
  654            $card_tpl->setVariable(
"ROW_KEY", 
$key);
 
  655            $card_tpl->setVariable(
"ROW_VALUE", $value);
 
  656            $card_tpl->parseCurrentBlock();
 
  659        $main_panel = $this->ui_factory->panel()->sub($a_data[
'uname'], $this->ui_factory->legacy($a_data[
'utext']))
 
  660            ->withCard($this->ui_factory->card()->standard($this->lng->txt(
'text_assignment'))->withSections(array($this->ui_factory->legacy($card_tpl->get()))))->withActions($actions_dropdown);
 
  662        $feedback_tpl = 
new ilTemplate(
"tpl.exc_report_feedback.html", 
true, 
true, 
"Modules/Exercise");
 
  663        if (array_key_exists(
"peer", $a_data) && $this->filter[
"feedback"] == 
"submission_feedback") {
 
  664            $feedback_tpl->setCurrentBlock(
"feedback");
 
  665            foreach ($a_data[
"peer"] as $peer_id) {
 
  668                    $peer_name = 
$user->getFirstname() . 
" " . 
$user->getLastname();
 
  670                    $peer_name = $this->lng->txt(
"exc_deleted_user");
 
  673                $feedback_tpl->setCurrentBlock(
"peer_feedback");
 
  674                $feedback_tpl->setVariable(
"PEER_NAME", $peer_name);
 
  676                $submission = 
new ilExSubmission($this->assignment, $a_data[
"uid"]);
 
  677                $values = $submission->getPeerReview()->getPeerReviewValues($peer_id, $a_data[
"uid"]);
 
  680                foreach ($this->assignment->getPeerReviewCriteriaCatalogueItems() as $crit) {
 
  681                    $crit_id = $crit->getId()
 
  684                    $crit->setPeerReviewContext($this->assignment, $peer_id, $a_data[
"uid"]);
 
  687                        '<div class="ilBlockPropertyCaption">' . $crit->getTitle() . 
'</div>' .
 
  688                        '<div style="margin:2px 0;">' . $crit->getHTML(
$values[$crit_id]) . 
'</div>';
 
  690                $feedback_tpl->setVariable(
"PEER_FEEDBACK", $review_html);
 
  691                $feedback_tpl->parseCurrentBlock();
 
  693            $feedback_tpl->parseCurrentBlock();
 
  695        $feedback_tpl->setVariable(
"GRADE", $this->lng->txt(
'grade') . 
": " . $this->lng->txt(
'exc_' . $a_data[
'status']));
 
  696        $feedback_tpl->setVariable(
"COMMENT", $this->lng->txt(
'exc_comment') . 
"<br>" . $a_data[
'comment']);
 
  698        $feedback_panel = $this->ui_factory->panel()->sub(
"", $this->ui_factory->legacy($feedback_tpl->get()));
 
  700        $report = $this->ui_factory->panel()->report(
"", array($main_panel, $feedback_panel));
 
  702        return $this->ui_renderer->render([$modal,$report]);
 
  707        $modal_tpl = 
new ilTemplate(
"tpl.exc_report_evaluation_modal.html", 
true, 
true, 
"Modules/Exercise");
 
  708        $modal_tpl->setVariable(
"USER_NAME", $a_data[
'uname']);
 
  711        $form->setFormAction($this->ctrl->getFormAction($this, 
"saveEvaluationFromModal"));
 
  712        $form->setId(uniqid(
'form'));
 
  716            self::GRADE_NOT_GRADED => $this->lng->txt(
"exc_notgraded"),
 
  717            self::GRADE_PASSED => $this->lng->txt(
"exc_passed"),
 
  718            self::GRADE_FAILED => $this->lng->txt(
"exc_failed")
 
  722        $si->setValue($a_data[
'status']);
 
  726        $mark_input = 
new ilTextInputGUI($this->lng->txt(
"exc_tbl_mark"), 
"mark");
 
  727        $mark_input->setValue($a_data[
'mark']);
 
  728        $mark_input->setMaxLength(32);
 
  729        $mark_input->setSize(4);
 
  730        $form->addItem($mark_input);
 
  733        $item->setValue($a_data[
'uid']);
 
  734        $form->addItem($item);
 
  737        if ($this->exercise->hasTutorFeedbackText()) {
 
  740            $u_text = strip_tags($a_data[
"utext"]); 
 
  743            if (strlen($u_text) > $max_chars) {
 
  744                $text = 
"<input type='checkbox' class='read-more-state' id='post-1' />";
 
  745                $text .= 
"<div class='read-more-wrap'>";
 
  746                $text .= mb_substr($u_text, 0, $max_chars);
 
  747                $text .= 
"<span class='read-more-target'>";
 
  748                $text .= mb_substr($u_text, $max_chars);
 
  749                $text .= 
"</span></div>";
 
  750                $text .= 
"<label for='post-1' class='read-more-trigger'></label>";
 
  752            $modal_tpl->setVariable(
"USER_TEXT", 
$text);
 
  755            $ta->setInfo($this->lng->txt(
"exc_comment_for_learner_info"));
 
  756            $ta->setValue($a_data[
'comment']);
 
  761        $modal_tpl->setVariable(
"FORM", 
$form->getHTML());
 
  763        $form_id = 
'form_' . 
$form->getId();
 
  764        $submit_btn = $this->ui_factory->button()->primary($this->lng->txt(
"save"), 
'#')
 
  765            ->withOnLoadCode(
function (
$id) use ($form_id) {
 
  766                return "$('#{$id}').click(function() { $('#{$form_id}').submit(); return false; });";
 
  769        return  $this->ui_factory->modal()->roundtrip(strtoupper($this->lng->txt(
"grade_evaluate")), $this->ui_factory->legacy($modal_tpl->get()))->withActionButtons([$submit_btn]);
 
  778        $user_id = (int) 
$_POST[
'mem_id'];
 
  779        $grade = trim(
$_POST[
"grade"]);
 
  780        $mark = trim(
$_POST[
'mark']);
 
  782        if ($this->assignment->getId() && $user_id) {
 
  783            $member_status = $this->assignment->getMemberStatus($user_id);
 
  785            $member_status->setStatus($grade);
 
  786            $member_status->setMark($mark);
 
  788                $member_status->setFeedback(
true);
 
  790            $member_status->update();
 
  792        ilUtil::sendSuccess($this->lng->txt(
"exc_status_saved"), 
true);
 
  793        $this->ctrl->redirect($this, 
"listTextAssignment");
 
  801        if (!strlen(trim(
$_POST[
'user_login']))) {
 
  817            $user_ids[] = $user_id;
 
  832        if (!count($a_user_ids)) {
 
  837        if (!$this->exercise->members_obj->assignMembers($a_user_ids)) {
 
  857            ilUtil::sendSuccess($this->lng->txt(
"exc_members_assigned"), 
true);
 
  860        $this->ctrl->redirect($this, 
"members");
 
  885        $this->ctrl->setParameter($this, 
"ass_id", 
"");
 
  888        include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
  890        $members = $this->exercise->members_obj->getMembers();
 
  892        $members = 
$GLOBALS[
'DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
 
  893            'edit_submissions_grades',
 
  894            'edit_submissions_grades',
 
  895            $this->exercise->getRefId(),
 
  900        if (count($members) == 0) {
 
  906        foreach ($members as $mem_id) {
 
  908                include_once(
"./Services/User/classes/class.ilObjUser.php");
 
  910                if (trim(
$name[
"login"]) != 
"") {               
 
  911                    $mems[$mem_id] = 
$name;
 
  918        if (
$_GET[
"part_id"] == 
"" && count($mems) > 0) {
 
  919            $_GET[
"part_id"] = key($mems);
 
  922        $current_participant = 
$_GET[
"part_id"];
 
  925        if (count($mems) > 1) {
 
  927            foreach ($mems as $k => 
$m) {
 
  929                    $m[
"lastname"] . 
", " . 
$m[
"firstname"] . 
" [" . 
$m[
"login"] . 
"]";
 
  931            include_once(
"./Services/Form/classes/class.ilSelectInputGUI.php");
 
  934            $si->setValue($current_participant);
 
  935            $ilToolbar->addStickyItem(
$si);
 
  937            include_once(
"./Services/UIComponent/Button/classes/class.ilSubmitButton.php");
 
  939            $button->setCaption(
"exc_select_part");
 
  940            $button->setCommand(
"selectParticipant");
 
  941            $ilToolbar->addStickyItem($button);
 
  944        if (count($mems) > 0) {
 
  945            $this->ctrl->setParameter($this, 
"vw", self::VIEW_PARTICIPANT);
 
  946            $this->ctrl->setParameter($this, 
"part_id", $current_participant);
 
  948            $ilToolbar->setFormAction(
$ilCtrl->getFormAction($this));
 
  949            $ilToolbar->addFormButton(
$lng->txt(
"download_all_returned_files"), 
"downloadSubmissions");
 
  951            include_once(
"./Modules/Exercise/classes/class.ilExParticipantTableGUI.php");
 
  958            $tpl->setContent($part_tab->getHTML() .
 
  959                $this->initIndividualDeadlineModal());
 
  967        include_once(
"./Modules/Exercise/classes/class.ilExParticipantTableGUI.php");
 
  969        $exc_tab->resetOffset();
 
  970        $exc_tab->writeFilterToSession();
 
  977        include_once(
"./Modules/Exercise/classes/class.ilExParticipantTableGUI.php");
 
  979        $exc_tab->resetOffset();
 
  980        $exc_tab->resetFilter();
 
 1006        include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
 1008        $mems = $mem_obj->getMembers();
 
 1010        $mems = 
$GLOBALS[
'DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
 
 1011            'edit_submissions_grades',
 
 1012            'edit_submissions_grades',
 
 1013            $this->exercise->getRefId(),
 
 1016        if (count($mems) > 0) {
 
 1017            $ilToolbar->addButton(
 
 1018                $lng->txt(
"exc_export_excel"),
 
 1019                $ilCtrl->getLinkTarget($this, 
"exportExcel")
 
 1023        $this->ctrl->setParameter($this, 
"vw", self::VIEW_GRADES);
 
 1025        include_once(
"./Modules/Exercise/classes/class.ilExGradesTableGUI.php");
 
 1028            "showGradesOverview",
 
 1032        $tpl->setContent($grades_tab->getHTML());
 
 1042        if (
$_GET[
"member_id"] != 
"") {
 
 1044            $members = $submission->getUserIds();
 
 1046            $members = array_keys($members);
 
 1051            foreach ($members as $user_id) {
 
 1052                $member_status = $this->assignment->getMemberStatus($user_id);
 
 1053                $member_status->setFeedback(
true);
 
 1054                $member_status->update();
 
 1058            $logins = implode($logins, 
",");
 
 1061            $sig = chr(13) . chr(10) . chr(13) . chr(10);
 
 1062            $sig .= $this->lng->txt(
'exc_mail_permanent_link');
 
 1063            $sig .= chr(13) . chr(10) . chr(13) . chr(10);
 
 1064            include_once 
'./Services/Link/classes/class.ilLink.php';
 
 1066            $sig = rawurlencode(base64_encode($sig));
 
 1068            require_once 
'Services/Mail/classes/class.ilMailFormCall.php';
 
 1075                    'rcp_to' => $logins,
 
 1089        foreach ($this->exercise->members_obj->getMembers() as $member_id) {
 
 1091            $submission->updateTutorDownloadTime();
 
 1097                foreach ($submission->getFiles() as $file) {
 
 1098                    if ($this->assignment->getAssignmentType()->isSubmissionAssignedToTeam()) {
 
 1099                        $storage_id = $file[
"team_id"];
 
 1101                        $storage_id = $file[
"user_id"];
 
 1104                    $members[$storage_id][
"files"][$file[
"returned_id"]] = $file;
 
 1106                if ($this->assignment->getAssignmentType()->isSubmissionAssignedToTeam()) {
 
 1107                    $name = 
"Team " . $submission->getTeam()->getId();
 
 1110                    $name = $tmp_obj->getFirstname() . 
" " . $tmp_obj->getLastname();
 
 1112                if ($storage_id > 0) {
 
 1113                    $members[$storage_id][
"name"] = 
$name;
 
 1125        if ($this->assignment) {
 
 1128                $this->ctrl->redirect($this, 
"members");
 
 1131            foreach (array_keys(
$_POST[
"member"]) as $user_id) {
 
 1133                $tmembers = $submission->getUserIds();
 
 1134                if (!(
bool) $a_keep_teams) {
 
 1135                    foreach ($tmembers as $tuser_id) {
 
 1136                        $members[$tuser_id] = 1;
 
 1140                        $members[] = $tmembers;
 
 1143                        $members[] = $user_id;
 
 1152                $this->ctrl->redirect($this, 
"showParticipant");
 
 1155            $user_id = 
$_GET[
"part_id"];
 
 1157            include_once 
"Modules/Exercise/classes/class.ilExAssignment.php";
 
 1158            foreach (array_keys(
$_POST[
"ass"]) as $ass_id) {
 
 1160                $tmembers = $submission->getUserIds();
 
 1161                if (!(
bool) $a_keep_teams) {
 
 1162                    foreach ($tmembers as $tuser_id) {
 
 1163                        $members[$ass_id][] = $tuser_id;
 
 1167                        $members[$ass_id][] = $tmembers;
 
 1170                        $members[$ass_id][] = $user_id;
 
 1186        ilUtil::sendSuccess($this->lng->txt(
"exc_sent"), 
true);
 
 1187        if ($this->assignment) {
 
 1188            $this->exercise->sendAssignment($this->assignment, array_keys($members));
 
 1189            $this->ctrl->redirect($this, 
"members");
 
 1191            foreach ($members as $ass_id => 
$users) {
 
 1194            $this->ctrl->setParameter($this, 
"part_id", 
$_GET[
"part_id"]); 
 
 1195            $this->ctrl->redirect($this, 
"showParticipant");
 
 1210        include_once(
"./Services/Utilities/classes/class.ilConfirmationGUI.php");
 
 1212        $cgui->setFormAction(
$ilCtrl->getFormAction($this));
 
 1213        $cgui->setHeaderText(
$lng->txt(
"exc_msg_sure_to_deassign_participant"));
 
 1214        $cgui->setCancel(
$lng->txt(
"cancel"), 
"members");
 
 1215        $cgui->setConfirm(
$lng->txt(
"remove"), 
"deassignMembers");
 
 1217        include_once(
"./Services/User/classes/class.ilUserUtil.php");
 
 1218        foreach ($members as $k => 
$m) {
 
 1226        $tpl->setContent($cgui->getHTML());
 
 1239        foreach (array_keys($members) as $usr_id) {
 
 1240            $this->exercise->members_obj->deassignMember((
int) $usr_id);
 
 1242        ilUtil::sendSuccess(
$lng->txt(
"exc_msg_participants_removed"), 
true);
 
 1243        $ilCtrl->redirect($this, 
"members");
 
 1248        if (!isset(
$_POST[
'comments_value'])) {
 
 1252        $this->exercise->members_obj->setNoticeForMember(
 
 1256        ilUtil::sendSuccess($this->lng->txt(
"exc_members_comments_saved"));
 
 1267        $member_id = (int) 
$_GET[
"part_id"];
 
 1269        foreach (array_keys(
$_POST[
"id"]) as $ass_id) {
 
 1270            if (is_array($a_selected) &&
 
 1271                !in_array($ass_id, $a_selected)) {
 
 1275            $data[$ass_id][$member_id] = array(
 
 1279            if (array_key_exists(
"mark", 
$_POST)) {
 
 1282            if (array_key_exists(
"notice", 
$_POST)) {
 
 1287        $ilCtrl->setParameter($this, 
"part_id", $member_id); 
 
 1294        $user_ids = (array) array_keys((array) 
$_POST[
'id']);
 
 1295        $filtered_user_ids = 
$GLOBALS[
'DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
 
 1296            'edit_submissions_grades',
 
 1297            'edit_submissions_grades',
 
 1298            $this->exercise->getRefId(),
 
 1303        foreach ($filtered_user_ids as $user_id) {
 
 1304            if (is_array($a_selected) &&
 
 1305                !in_array($user_id, $a_selected)) {
 
 1309            $data[-1][$user_id] = array(
 
 1313            if (array_key_exists(
"mark", 
$_POST)) {
 
 1316            if (array_key_exists(
"notice", 
$_POST)) {
 
 1327        if ($this->assignment) {
 
 1341        include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
 1343        $saved_for = array();
 
 1344        foreach ($a_data as $ass_id => 
$users) {
 
 1345            $ass = ($ass_id < 0)
 
 1351                foreach ($submission->getUserIds() as $sub_user_id) {
 
 1353                    $saved_for[$sub_user_id] = $uname[
"lastname"] . 
", " . $uname[
"firstname"];
 
 1355                    $member_status = $ass->getMemberStatus($sub_user_id);
 
 1359                    if ($status == 
"") {
 
 1362                    $member_status->setStatus($status);
 
 1363                    if (array_key_exists(
"mark", 
$values)) {
 
 1364                        $member_status->setMark(
$values[
"mark"]);
 
 1366                    if (array_key_exists(
"notice", 
$values)) {
 
 1367                        $member_status->setNotice(
$values[
"notice"]);
 
 1369                    $member_status->update();
 
 1374        if (count($saved_for) > 0) {
 
 1375            $save_for_str = 
"(" . implode($saved_for, 
" - ") . 
")";
 
 1379            ilUtil::sendSuccess($this->lng->txt(
"exc_status_saved") . 
" " . $save_for_str, 
true);
 
 1389        $res = array(
"result" => 
false);
 
 1391        if ($this->ctrl->isAsynch()) {
 
 1392            $ass_id = (int) 
$_POST[
"ass_id"];
 
 1393            $user_id = (int) 
$_POST[
"mem_id"];
 
 1396            if ($ass_id && $user_id) {
 
 1398                $user_ids = $submission->getUserIds();
 
 1401                $all_members = $all_members->getMembers();
 
 1403                $reci_ids = array();
 
 1404                foreach ($user_ids as $user_id) {
 
 1405                    if (in_array($user_id, $all_members)) {
 
 1406                        $member_status = $this->assignment->getMemberStatus($user_id);
 
 1408                        $member_status->setFeedback(
true);
 
 1409                        $member_status->update();
 
 1412                            $reci_ids[] = $user_id;
 
 1417                if (
sizeof($reci_ids)) {
 
 1419                    $this->exercise->sendFeedbackFileNotification(
 
 1427                $res = array(
"result" => 
true, 
"snippet" => nl2br(
$comment));
 
 1431        echo(json_encode(
$res));
 
 1440        $this->exercise->exportGradesExcel();
 
 1455        $new_members = array();
 
 1457        include_once 
"Modules/Exercise/classes/class.ilExAssignmentTeam.php";
 
 1458        foreach ($members as $group) {
 
 1459            if (is_array($group)) {
 
 1460                $new_members = array_merge($new_members, $group);
 
 1462                $first_user = $group;
 
 1463                $first_user = array_shift($first_user);
 
 1465                foreach ($group as $user_id) {
 
 1466                    $team->removeTeamMember($user_id);
 
 1469                $new_members[] = $group;
 
 1473        if (
sizeof($new_members)) {
 
 1476            $first_user = array_shift($new_members);
 
 1478            if (
sizeof($new_members)) {
 
 1479                foreach ($new_members as $user_id) {
 
 1480                    $team->addTeamMember($user_id);
 
 1485            $submission = 
new ilExSubmission($this->assignment, $first_user);
 
 1486            $this->exercise->processExerciseStatus(
 
 1488                $team->getMembers(),
 
 1489                $submission->hasSubmitted(),
 
 1490                $submission->validatePeerReviews()
 
 1494        ilUtil::sendSuccess($this->lng->txt(
"msg_obj_modified"), 
true);
 
 1495        $ilCtrl->redirect($this, 
"members");
 
 1504        include_once 
"Modules/Exercise/classes/class.ilExAssignmentTeam.php";
 
 1505        foreach ($members as $group) {
 
 1507            if (is_array($group)) {
 
 1510                $first_user = $group;
 
 1511                $first_user = array_shift($first_user);
 
 1513                foreach ($group as $user_id) {
 
 1514                    $team->removeTeamMember($user_id);
 
 1518                $this->exercise->processExerciseStatus(
 
 1526        ilUtil::sendSuccess($this->lng->txt(
"msg_obj_modified"), 
true);
 
 1527        $ilCtrl->redirect($this, 
"members");
 
 1537        $ilTabs->clearTargets();
 
 1538        $ilTabs->setBackTarget(
 
 1540            $ilCtrl->getLinkTarget($this, $this->getViewBack())
 
 1546        $tpl->setContent($a_form->getHTML());
 
 1553        include_once(
"Services/Form/classes/class.ilPropertyFormGUI.php");
 
 1555        $form->setTitle(
$lng->txt(
"exc_adopt_group_teams") . 
" - " . $this->assignment->getTitle());
 
 1556        $form->setFormAction($this->ctrl->getFormAction($this, 
"createTeamsFromGroups"));
 
 1558        include_once 
"Modules/Exercise/classes/class.ilExAssignmentTeam.php";
 
 1559        include_once 
"Services/User/classes/class.ilUserUtil.php";
 
 1560        $all_members = array();
 
 1562            if (
sizeof($group[
"members"])) {
 
 1565                foreach ($group[
"members"] as $user_id) {
 
 1568                    if (!in_array($user_id, $all_members)) {
 
 1569                        $grp_value[] = $user_id;
 
 1570                        $all_members[] = $user_id;
 
 1574                foreach (
$options as $user_id => $user_name) {
 
 1577                $grp_team->setValue($grp_value);
 
 1578                $form->addItem($grp_team);
 
 1581                $grp_team->setValue(
$lng->txt(
"exc_adopt_group_teams_no_members"));
 
 1582                $form->addItem($grp_team);
 
 1586        if (
sizeof($all_members)) {
 
 1587            $form->addCommandButton(
"createTeamsFromGroups", 
$lng->txt(
"save"));
 
 1589        $form->addCommandButton(
"members", 
$lng->txt(
"cancel"));
 
 1599        if (
$form->checkInput()) {
 
 1600            include_once 
"Services/User/classes/class.ilUserUtil.php";
 
 1602            $all_members = $teams = array();
 
 1604            foreach (array_keys(
$map) as $grp_id) {
 
 1605                $postvar = 
"grpt_" . $grp_id;
 
 1606                $members = 
$_POST[$postvar];
 
 1607                if (is_array($members)) {
 
 1608                    $teams[] = $members;
 
 1609                    $invalid_team_members = array();
 
 1611                    foreach ($members as $user_id) {
 
 1612                        if (!array_key_exists($user_id, $all_members)) {
 
 1613                            $all_members[$user_id] = $grp_id;
 
 1616                            $invalid_team_members[] = $user_id;
 
 1620                    if (
sizeof($invalid_team_members)) {
 
 1624                        foreach ($invalid_team_members as $user_id) {
 
 1626                            $grp_title = 
$map[$all_members[$user_id]][
"title"];
 
 1627                            $alert[] = sprintf(
$lng->txt(
"exc_adopt_group_teams_conflict"), $user_name, $grp_title);
 
 1630                        $input->setAlert(implode(
"<br/>", $alert));
 
 1635                if (
sizeof($teams)) {
 
 1639                    $sum = array(
"added" => 0, 
"blocked" => 0);
 
 1640                    foreach ($teams as $members) {
 
 1641                        foreach ($members as $user_id) {
 
 1642                            if (!$this->exercise->members_obj->isAssigned($user_id)) {
 
 1643                                $this->exercise->members_obj->assignMember($user_id);
 
 1646                            if (!in_array($user_id, $existing_users)) {
 
 1653                        $first = array_shift($members);
 
 1659                        if (
sizeof($members)) {
 
 1660                            foreach ($members as $user_id) {
 
 1661                                $team->addTeamMember($user_id);
 
 1667                    if ($sum[
"added"]) {
 
 1668                        $mess[] = sprintf(
$lng->txt(
"exc_adopt_group_teams_added"), $sum[
"added"]);
 
 1670                    if ($sum[
"blocked"]) {
 
 1671                        $mess[] = sprintf(
$lng->txt(
"exc_adopt_group_teams_blocked"), $sum[
"blocked"]);
 
 1673                    if ($sum[
"added"]) {
 
 1674                        ilUtil::sendSuccess(implode(
" ", $mess), 
true);
 
 1679                $this->ctrl->redirect($this, 
"members");
 
 1685        $form->setValuesByPost();
 
 1698        include_once(
"Services/Form/classes/class.ilPropertyFormGUI.php");
 
 1700        $form->addCommandButton(
"uploadMultiFeedback", 
$lng->txt(
"upload"));
 
 1701        $form->addCommandButton(
"members", 
$lng->txt(
"cancel"));
 
 1705        $fi->setSuffixes(array(
"zip"));
 
 1706        $fi->setRequired(
true);
 
 1707        $form->addItem($fi);
 
 1710        $form->setFormAction($this->ctrl->getFormAction($this, 
"uploadMultiFeedback"));
 
 1732        include_once(
"./Services/UIComponent/Button/classes/class.ilLinkButton.php");
 
 1734        $button->setCaption(
"exc_download_zip_structure");
 
 1735        $button->setUrl($this->ctrl->getLinkTarget($this, 
"downloadMultiFeedbackZip"));
 
 1736        $button->setOmitPreventDoubleSubmission(
true);
 
 1737        $ilToolbar->addButtonInstance($button);
 
 1743        $tpl->setContent($a_form->getHTML());
 
 1751        $this->assignment->sendMultiFeedbackStructureFile($this->exercise);
 
 1761        if (
$form->checkInput()) {
 
 1764                $this->ctrl->redirect($this, 
"showMultiFeedbackConfirmationTable");
 
 1767                $this->ctrl->redirect($this, 
"showMultiFeedback");
 
 1771        $form->setValuesByPost();
 
 1787        include_once(
"./Modules/Exercise/classes/class.ilFeedbackConfirmationTable2GUI.php");
 
 1797        $this->assignment->clearMultiFeedbackDirectory();
 
 1798        $this->ctrl->redirect($this, 
"members");
 
 1806        $this->assignment->saveMultiFeedbackFiles(
$_POST[
"file"], $this->exercise);
 
 1808        ilUtil::sendSuccess($this->lng->txt(
"msg_obj_modified"), 
true);
 
 1809        $this->ctrl->redirect($this, 
"members");
 
 1823        include_once 
"./Services/UIComponent/Modal/classes/class.ilModalGUI.php";
 
 1825        $modal->setHeading(
$lng->txt(
"exc_individual_deadline"));
 
 1826        $modal->setId(
"ilExcIDl");
 
 1827        $modal->setBody(
'<div id="ilExcIDlBody"></div>');
 
 1828        $modal = $modal->getHTML();
 
 1830        $ajax_url = $this->ctrl->getLinkTarget($this, 
"handleIndividualDeadlineCalls", 
"", 
true, 
false);
 
 1832        $tpl->addJavaScript(
"./Modules/Exercise/js/ilExcIDl.js", 
true, 3);
 
 1833        $tpl->addOnloadCode(
'il.ExcIDl.init("' . $ajax_url . 
'");');
 
 1835        include_once 
"Services/Calendar/classes/class.ilCalendarUtil.php";
 
 1846            foreach ($a_data as $item) {
 
 1847                $item = explode(
"_", $item);
 
 1849                $user_id = $item[1];
 
 1851                if (!array_key_exists($ass_id, $ass_tmp)) {
 
 1852                    if ($this->assignment &&
 
 1853                        $ass_id == $this->assignment->getId()) {
 
 1860                $map[$ass_id][] = $user_id;
 
 1863            return array(
$map, $ass_tmp);
 
 1871        $this->ctrl->saveParameter($this, 
"part_id");
 
 1874        if ((
bool) 
$_GET[
"dn"]) {
 
 1875            ilUtil::sendSuccess($this->lng->txt(
"settings_saved"), 
true);
 
 1876            $this->ctrl->redirect($this, $this->assignment
 
 1878                : 
"showParticipant");
 
 1881        include_once 
"Modules/Exercise/classes/class.ilExAssignment.php";
 
 1884        if (
$_GET[
"idlid"]) {
 
 1886            if (is_array($tmp)) {
 
 1888                echo 
$form->getHTML() .
 
 1889                    $tpl->getOnLoadCodeForAsynch();
 
 1896                if (substr(
$id, 0, 3) == 
"dl_") {
 
 1897                    $tmp[] = substr(
$id, 3);
 
 1909                    $ass = $ass_map[$ass_id];
 
 1914                    foreach (
$users as $user_id) {
 
 1915                        $date_field = 
$form->getItemByPostVar(
"dl_" . $ass_id . 
"_" . $user_id);
 
 1920                            $res[$ass_id][$user_id] = $date_field->getDate();
 
 1927                $form->setValuesByPost();
 
 1928                echo 
$form->getHTML() .
 
 1929                    $tpl->getOnLoadCodeForAsynch();
 
 1932                    $ass = $ass_map[$ass_id];
 
 1935                        $ass->setIndividualDeadline(
$id, $date);
 
 1938                    $ass->recalculateLateSubmissions();
 
 1950        include_once 
"Services/Form/classes/class.ilPropertyFormGUI.php";
 
 1952        $form->setFormAction($this->ctrl->getFormAction($this));
 
 1953        $form->setName(
"ilExcIDlForm");
 
 1955        include_once 
"Services/User/classes/class.ilUserUtil.php";
 
 1956        foreach ($ids as $ass_id => 
$users) {
 
 1957            $ass = $a_ass_map[$ass_id];
 
 1960            $section->setTitle($ass->getTitle());
 
 1963            include_once(
"./Modules/Exercise/classes/class.ilExAssignmentTeam.php");
 
 1966            $values = $ass->getIndividualDeadlines();
 
 1970                if (is_numeric(
$id)) {
 
 1977                    $team_id = (int) substr(
$id, 1);
 
 1978                    if (array_key_exists($team_id, $teams)) {
 
 1980                        foreach ($teams[$team_id]->getMembers() as $member_id) {
 
 1982                            $name[] = $uname[
"lastname"] . 
", " . $uname[
"firstname"];
 
 1990                $dl->setShowTime(
true);
 
 1991                $dl->setRequired(
true);
 
 1992                $form->addItem($dl);
 
 2000        $form->addCommandButton(
"", $this->lng->txt(
"save"));
 
 2010        if ($this->assignment) {
 
 2019        $this->lng->loadLanguageModule(
"search");
 
 2021        $this->toolbar->setFormAction($this->ctrl->getFormAction($this, 
"listTextAssignment"));
 
 2025        if (
$_POST[
"filter_status"]) {
 
 2029        $si_status = 
new ilSelectInputGUI($this->lng->txt(
"exc_tbl_status"), 
"filter_status");
 
 2031            "" => $this->lng->txt(
"search_any"),
 
 2032            self::GRADE_NOT_GRADED => $this->lng->txt(
"exc_notgraded"),
 
 2033            self::GRADE_PASSED => $this->lng->txt(
"exc_passed"),
 
 2034            self::GRADE_FAILED => $this->lng->txt(
"exc_failed")
 
 2037        $si_status->setValue($this->filter[
"status"]);
 
 2039        $this->toolbar->addInputItem($si_status, 
true);
 
 2043        if ($this->assignment->getPeerReview()) {
 
 2044            if (
$_POST[
"filter_feedback"]) {
 
 2047                $this->filter[
"feedback"] = 
"submission_feedback";
 
 2050            $si_feedback = 
new ilSelectInputGUI($this->lng->txt(
"feedback"), 
"filter_feedback");
 
 2052                "submission_feedback" => $this->lng->txt(
"submissions_feedback"),
 
 2053                "submission_only" => $this->lng->txt(
"submissions_only")
 
 2055            $si_feedback->setOptions(
$options);
 
 2056            $si_feedback->setValue($this->filter[
"feedback"]);
 
 2058            $this->toolbar->addInputItem($si_feedback, 
true);
 
 2062        include_once 
"Services/UIComponent/Button/classes/class.ilSubmitButton.php";
 
 2064        $submit->setCaption(
"filter");
 
 2065        $submit->setCommand(
"listTextAssignment");
 
 2066        $this->toolbar->addButtonInstance($submit);
 
An exception for terminatinating execution or to throw for unit testing.
static initDateTimePicker()
This class represents an option in a checkbox group.
Confirmation screen class.
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
static _before(ilDateTime $start, ilDateTime $end, $a_compare_field='', $a_tz='')
compare two dates and check start is before end This method does not consider tz offsets.
Download submissions and feedback for exercises.
static getAdoptableGroups($a_exc_ref_id)
static getGroupMembersMap($a_exc_ref_id)
static getAssignmentTeamMap($a_ass_id)
Get team structure for assignment.
static getInstanceByUserId($a_assignment_id, $a_user_id, $a_create_on_demand=false)
static getInstancesFromMap($a_assignment_id)
static getInstancesByExercise($a_exc_id)
static getAssignmentDataOfExercise($a_exc_id)
Get assignments data of an exercise in an array.
static lookupTitle($a_id)
Lookup title.
Exercise participant table.
Exercise participant table.
Object-based submissions (ends up as static file)
Exercise submission //TODO: This class has to much static methods related to delivered "files".
static downloadAllAssignmentFiles(ilExAssignment $a_ass, array $members, $to_path)
Download all submitted files of an assignment (all user)
static hasAnySubmissions($a_ass_id)
static getAssignmentFilesByUsers(int $a_exc_id, int $a_ass_id, array $a_users)
static getAssignmentParticipants(int $a_exercise_id, int $a_ass_id)
Exercise exceptions class.
Class ilExerciseManagementGUI.
initIndividualDeadlineModal()
initIndividualDeadlineForm(array $a_ass_map, array $ids)
selectAssignmentObject()
Select assignment.
exportExcelObject()
Export as excel.
redirectFeedbackMailObject()
set feedback status for member and redirect to mail screen
showParticipantResetObject()
confirmDeassignMembersObject()
Confirm deassigning members.
addSubTabs($a_activate)
adds tabs to tab gui object
initMultiFeedbackForm($a_ass_id)
uploadMultiFeedbackObject()
Upload multi feedback file.
getMultiActionUserIds($a_keep_teams=false)
sendMembersObject()
Send assignment per mail to participants.
saveStatusAllObject(array $a_selected=null, $a_redirect=true)
showMultiFeedbackObject(ilPropertyFormGUI $a_form=null)
Show multi-feedback screen.
saveStatusParticipantObject(array $a_selected=null)
Save assignment status (participant view)
adoptTeamsFromGroupObject(ilPropertyFormGUI $a_form=null)
saveEvaluationFromModalObject()
Save assignment submission grade(status) and comment from the roundtrip modal.
deassignMembersObject()
Deassign members from exercise.
saveStatusSelectedObject()
showMultiFeedbackConfirmationTableObject()
Show multi feedback confirmation table.
saveMultiFeedbackObject()
Save multi feedback.
setIndividualDeadlineObject()
downloadSubmissionsObject()
cancelMultiFeedbackObject()
Cancel Multi Feedback.
membersObject()
All participants and submission of one assignment.
parseIndividualDeadlineData(array $a_data)
showGradesOverviewObject()
Show grades overview.
addUserFromAutoCompleteObject()
Add user as member.
listTextAssignmentObject()
todo: Pagination.
selectParticipantObject()
Select participant.
showParticipantObject()
Show Participant.
saveGradesObject()
Save grades.
downloadAllObject()
Download all submitted files (of all members).
const FEEDBACK_ONLY_SUBMISSION
downloadMultiFeedbackZipObject()
Download multi-feedback structrue file.
handleIndividualDeadlineCallsObject()
addMembersObject($a_user_ids=array())
Add new partipant.
showParticipantApplyObject()
saveStatus(array $a_data, $a_redirect=true)
Save status of selecte members.
const FEEDBACK_FULL_SUBMISSION
__construct(ilObjExercise $a_exercise, ilExAssignment $a_ass=null)
Constructor.
saveCommentForLearnersObject()
Save comment for learner (asynch)
createTeamsFromGroupsObject()
getEvaluationModal($a_data)
Class ilExerciseMembersFilter.
File System Explorer GUI class.
static _getLink($a_ref_id, $a_type='', $a_params=array(), $append="")
static getInstance()
Get instance.
This class represents a non editable value in a property form.
static _lookupLogin($a_user_id)
lookup login
static _lookupId($a_user_str)
Lookup id by login.
static _lookupName($a_user_id)
lookup user name
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data@access public
getId()
get object id @access public
static _lookupType($a_id, $a_reference=false)
lookup object type
static _replaceMediaObjectImageSrc($a_text, $a_direction=0, $nic=IL_INST_ID)
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
static fillAutoCompleteToolbar($parent_object, ilToolbarGUI $toolbar=null, $a_options=array(), $a_sticky=false)
fill toolbar with
special template class to simplify handling of ITX/PEAR
This class represents a text area property in a property form.
This class represents a text property in a property form.
static getNamePresentation( $a_user_id, $a_user_image=false, $a_profile_link=false, $a_profile_back_link="", $a_force_first_lastname=false, $a_omit_login=false, $a_sortable=true, $a_return_data_array=false, $a_ctrl_path="ilpublicuserprofilegui")
Default behaviour is:
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static redirect($a_script)
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static stripSlashesArray($a_arr, $a_strip_html=true, $a_allow="")
Strip slashes from array.
if(!array_key_exists('StateId', $_REQUEST)) $id
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.
if(isset($_POST['submit'])) $form
foreach($_POST as $key=> $value) $res