51 bool $a_has_write_access
55 $this->survey_service =
$DIC->survey()->internal();
57 $this->
tabs = $DIC->tabs();
58 $this->
toolbar = $DIC->toolbar();
59 $this->
access = $DIC->access();
60 $this->rbacsystem =
$DIC->rbac()->system();
61 $this->
user = $DIC->user();
62 $this->log =
$DIC[
"ilLog"];
63 $ilCtrl =
$DIC->ctrl();
67 $this->parent_gui = $a_parent_gui;
70 $this->
object = $survey;
71 $this->ref_id = $this->
object->getRefId();
72 $this->has_write = $a_has_write_access;
74 $this->
ctrl = $ilCtrl;
77 $this->invitation_manager = $this
82 $this->code_manager = $this
85 ->code($this->
object, $this->
user->getId());
86 $this->data_manager = $this
89 $this->feature_config = $this
91 ->domain()->modeFeatureConfig($this->
object->getMode());
92 $this->edit_manager = $this->survey_service
95 $this->edit_request = $this->survey_service
108 if (!$this->has_write) {
119 $cmd = $ilCtrl->getCmd(
"maintenance");
120 $next_class = $this->
ctrl->getNextClass($this);
122 switch ($next_class) {
123 case 'ilrepositorysearchgui':
126 if (!$this->edit_request->getAppr360() && !$this->edit_request->getRate360()) {
127 $ilTabs->clearTargets();
128 $ilTabs->setBackTarget(
129 $this->
lng->txt(
"btn_back"),
130 $this->ctrl->getLinkTarget($this,
"maintenance")
133 $rep_search->setCallback(
139 $rep_search->setTitle(
$lng->
txt(
"svy_invite_participants"));
141 $this->
ctrl->setReturn($this,
'maintenance');
142 $this->
ctrl->forwardCommand($rep_search);
143 $ilTabs->setTabActive(
'maintenance');
144 } elseif ($this->edit_request->getRate360()) {
145 $ilTabs->clearTargets();
146 $ilTabs->setBackTarget(
147 $this->
lng->txt(
"btn_back"),
148 $this->ctrl->getLinkTarget($this,
"listAppraisees")
151 $this->
ctrl->setParameter($this,
"rate360", 1);
152 $this->
ctrl->saveParameter($this,
"appr_id");
154 $rep_search->setCallback(
162 $this->
ctrl->setReturn($this,
'editRaters');
163 $this->
ctrl->forwardCommand($rep_search);
165 $ilTabs->activateTab(
"survey_360_appraisees");
166 $this->
ctrl->setParameter($this,
"appr360", 1);
168 $rep_search->setCallback(
176 $this->
ctrl->setReturn($this,
'listAppraisees');
177 $this->
ctrl->forwardCommand($rep_search);
181 case 'ilsurveyratergui':
182 $ilTabs->activateTab(
"survey_360_edit_raters");
184 $this->
ctrl->forwardCommand($rater_gui);
195 array $a_finished_ids =
null
197 $all_participants = $this->
object->getSurveyParticipants($a_finished_ids, false,
true);
198 $participant_ids = [];
199 foreach ($all_participants as $participant) {
200 if (isset($participant[
'usr_id'])) {
201 $participant_ids[] = $participant[
'usr_id'];
205 $filtered_participant_ids = $this->
access->filterUserIdsByRbacOrPositionOfCurrentUser(
208 $this->
object->getRefId(),
213 foreach ($all_participants as $username => $user_data) {
214 if (!($user_data[
'usr_id'] ??
false)) {
215 $participants[$username] = $user_data;
217 if (in_array(($user_data[
'usr_id'] ?? -1), $filtered_participant_ids)) {
218 $participants[$username] = $user_data;
222 return $participants;
231 $ilToolbar = $this->toolbar;
233 if ($this->
object->get360Mode()) {
234 $this->listAppraiseesObject();
241 if ($this->
object->getSkillService() && $skmg_set->isActivated()) {
242 $ilToolbar->addButton(
243 $this->
lng->txt(
"survey_calc_skills"),
244 $this->ctrl->getLinkTargetByClass(
"ilsurveyskilldeterminationgui"),
250 $this->handleWriteAccess();
251 $this->setParticipantSubTabs(
"overview");
253 $ilToolbar->addButton(
254 $this->
lng->txt(
'svy_remove_all_participants'),
255 $this->ctrl->getLinkTarget($this,
'deleteAllUserData')
258 $ilToolbar->addSeparator();
260 if ($this->
object->isAccessibleWithoutCode()) {
261 $ilToolbar->addButton(
262 $this->
lng->txt(
"svy_invite_participants"),
263 $this->ctrl->getLinkTargetByClass(
'ilRepositorySearchGUI',
'')
269 $total = $this->filterSurveyParticipantsByAccess();
271 foreach ($total as $user_data) {
273 if ($user_data[
"finished"]) {
274 $finished = $user_data[
"finished_tstamp"];
276 if (isset($user_data[
"active_id"])) {
277 $wt = $this->
object->getWorkingtimeForParticipant($user_data[
"active_id"]);
278 $last_access = $this->
object->getLastAccess($user_data[
"active_id"]);
279 $active_id = $user_data[
"active_id"];
287 'name' => $user_data[
"sortname"],
288 'usr_id' => $user_data[
"usr_id"] ??
null,
289 'login' => $user_data[
"login"],
290 'last_access' => $last_access,
291 'workingtime' => $wt,
292 'finished' => $finished,
293 'invited' => $user_data[
"invited"] ??
false
296 $table_gui->setData(
$data);
297 $this->tpl->setVariable(
'ADM_CONTENT', $table_gui->getHTML());
302 $surveySetting =
new ilSetting(
"survey");
304 if ($surveySetting->get(
"anonymous_participants",
false) && $this->object->hasAnonymizedResults() &&
305 $this->object->hasAnonymousUserList()) {
306 $end = $this->
object->getEndDate();
307 if ($end && $end < date(
"YmdHis")) {
308 $min = (
int) $surveySetting->get(
"anonymous_participants_min",
'0');
309 $total = $this->
object->getSurveyParticipants();
310 if (!$min || count($total) >= $min) {
321 $ilTabs = $this->
tabs;
328 $this->
lng->txt(
"svy_part_overview"),
329 $this->ctrl->getLinkTarget($this,
'maintenance')
332 if ($this->isAnonymousListActive()) {
335 $this->
lng->txt(
"svy_anonymous_participants_svy"),
336 $this->ctrl->getLinkTarget($this,
'listParticipants')
340 if (!$this->
object->isAccessibleWithoutCode()) {
343 $this->
lng->txt(
"svy_codes"),
344 $this->ctrl->getLinkTarget($this,
'codes')
349 $data = $this->
object->getExternalCodeRecipients();
353 $this->
lng->txt(
"mail_survey_codes"),
354 $this->ctrl->getLinkTarget($this,
"mailCodes")
358 $ilTabs->activateSubTab($active);
368 $cgui->setHeaderText($this->
lng->txt(
"confirm_delete_all_user_data"));
369 $cgui->setFormAction($this->
ctrl->getFormAction($this,
"deleteAllUserData"));
370 $cgui->setCancel($this->
lng->txt(
"cancel"),
"cancelDeleteAllUserData");
371 $cgui->setConfirm($this->
lng->txt(
"confirm"),
"confirmDeleteAllUserData");
372 $this->tpl->setContent($cgui->getHTML());
380 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
381 $this->
object->deleteAllUserData();
383 $participants = $this->filterSurveyParticipantsByAccess();
384 foreach ($participants as $something => $participant_data) {
385 $this->
object->removeSelectedSurveyResults([$participant_data[
'active_id']]);
390 if ($this->
object->get360Mode()) {
391 $this->
object->openAllAppraisees();
394 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"svy_all_user_data_deleted"),
true);
395 $this->
ctrl->redirect($this,
"maintenance");
403 $this->
ctrl->redirect($this,
"maintenance");
411 $user_ids = $this->edit_request->getUserIds();
412 if (count($user_ids) > 0) {
413 $this->
object->removeSelectedSurveyResults(array_filter($user_ids,
static function (
$i):
bool {
414 return is_numeric(
$i);
417 $invitations = array_filter($user_ids,
static function (
$i):
bool {
418 return strpos(
$i,
"inv") === 0;
420 foreach ($invitations as
$i) {
421 $this->invitation_manager->remove($this->
object->getSurveyId(), (
int) substr(
$i, 3));
424 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"svy_selected_user_data_deleted"),
true);
426 $this->
ctrl->redirect($this,
"maintenance");
434 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'msg_cancel'),
true);
435 $this->
ctrl->redirect($this,
"maintenance");
443 $this->handleWriteAccess();
445 $user_ids = $this->edit_request->getUserIds();
446 if (count($user_ids) === 0) {
447 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'no_checkbox'),
true);
448 $this->
ctrl->redirect($this,
"maintenance");
451 $this->tpl->setOnScreenMessage(
'question', $this->
lng->txt(
"confirm_delete_single_user_data"));
453 $total = $this->
object->getSurveyParticipants(
null,
false,
true);
455 foreach ($total as $user_data) {
456 if (in_array(($user_data[
'active_id'] ??
null), $user_ids)
457 || (($user_data[
'invited'] ??
false) && in_array(
"inv" . $user_data[
'usr_id'], $user_ids))) {
458 $last_access = $this->
object->getLastAccess($user_data[
"active_id"] ?? 0);
460 'id' => $user_data[
"active_id"] ??
null,
461 'name' => $user_data[
"sortname"],
462 'login' => $user_data[
"login"] ??
null,
463 'last_access' => $last_access,
464 'finished' => $user_data[
"finished_tstamp"] ?? 0,
465 'usr_id' => $user_data[
"usr_id"] ??
null,
466 'invited' => $user_data[
"invited"] ??
null
470 $table_gui->setData(
$data);
471 $this->tpl->setVariable(
'ADM_CONTENT', $table_gui->getHTML());
479 if (strcmp($this->edit_request->getLang(),
"-1") !== 0) {
481 $ilUser->writePref(
"survey_code_language", $this->edit_request->getLang());
483 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'language_changed'),
true);
484 $this->
ctrl->redirect($this,
'codes');
493 $ilToolbar = $this->toolbar;
495 $this->handleWriteAccess();
496 $this->setParticipantSubTabs(
"codes");
498 if ($this->
object->isAccessibleWithoutCode()) {
499 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"survey_codes_no_anonymization"));
503 $default_lang =
$ilUser->getPref(
"survey_code_language");
506 $ilToolbar->setFormAction($this->
ctrl->getFormAction($this));
511 $ilToolbar->addInputItem($si,
true);
514 $button->setCaption(
"create");
515 $button->setCommand(
"createSurveyCodes");
516 $ilToolbar->addButtonInstance($button);
518 $ilToolbar->addSeparator();
521 $button->setCaption(
"import_from_file");
522 $button->setCommand(
"importExternalMailRecipientsFromFileForm");
523 $ilToolbar->addButtonInstance($button);
526 $button->setCaption(
"import_from_text");
527 $button->setCommand(
"importExternalMailRecipientsFromTextForm");
528 $ilToolbar->addButtonInstance($button);
530 $ilToolbar->addSeparator();
533 $button->setCaption(
"svy_import_codes");
534 $button->setCommand(
"importAccessCodes");
535 $ilToolbar->addButtonInstance($button);
537 $ilToolbar->addSeparator();
539 $languages = $this->
lng->getInstalledLanguages();
541 $this->
lng->loadLanguageModule(
"meta");
542 foreach ($languages as
$lang) {
543 $options[
$lang] = $this->
lng->txt(
"meta_l_" . $lang);
546 $si->setOptions($options);
547 $si->setValue($default_lang);
548 $ilToolbar->addInputItem($si,
true);
551 $button->setCaption(
"set");
552 $button->setCommand(
"setCodeLanguage");
553 $ilToolbar->addButtonInstance($button);
556 $survey_codes = $this->
object->getSurveyCodesTableData(
null, $default_lang);
557 $table_gui->setData($survey_codes);
558 $this->tpl->setContent($table_gui->getHTML());
563 $ids = $this->edit_request->getCodeIds();
564 if (count($ids) === 0) {
565 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_checkbox'),
true);
566 $this->
ctrl->redirect($this,
'codes');
569 $this->handleWriteAccess();
570 $this->setParticipantSubTabs(
"codes");
573 $table_gui->setData($this->
object->getSurveyCodesTableData($ids));
574 $this->tpl->setContent($table_gui->getHTML());
579 $codes = $this->edit_request->getCodes();
580 $mails = $this->edit_request->getCodesPar(
"mail");
581 $lnames = $this->edit_request->getCodesPar(
"lname");
582 $fnames = $this->edit_request->getCodesPar(
"fname");
583 $sents = $this->edit_request->getCodesPar(
"sent");
584 if (count($codes) === 0) {
585 $this->
ctrl->redirect($this,
'codes');
590 foreach ($codes as
$id) {
591 if (!$this->
object->updateCode(
602 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'),
true);
605 $error_message .= sprintf($this->
lng->txt(
"error_save_code"), $error[0], $error[1], $error[2]);
607 $this->tpl->setOnScreenMessage(
'failure', $error_message,
true);
610 $this->
ctrl->redirect($this,
'codes');
615 $codes = $this->edit_request->getCodes();
617 $data = $this->
object->getSurveyCodesTableData($codes);
618 $data = array_filter(
$data,
static function ($item):
bool {
619 return !$item[
"used"];
621 if (count(
$data) > 0) {
623 $cgui->setHeaderText($this->
lng->txt(
"survey_code_delete_sure"));
625 $cgui->setFormAction($this->
ctrl->getFormAction($this));
626 $cgui->setCancel($this->
lng->txt(
"cancel"),
"codes");
627 $cgui->setConfirm($this->
lng->txt(
"confirm"),
"deleteCodes");
629 foreach (
$data as $item) {
630 $title = array($item[
"code"]);
631 $title[] = $item[
"email"] ??
"";
632 $title[] = $item[
"last_name"] ??
"";
633 $title[] = $item[
"first_name"] ??
"";
634 $title = implode(
", ", $title);
636 $cgui->addItem(
"chb_code[]", $item[
"code"], $title);
639 $this->tpl->setContent($cgui->getHTML());
641 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'svy_please_select_unused_codes'),
true);
642 $this->
ctrl->redirect($this,
'codes');
651 $codes = $this->edit_request->getCodes();
652 if (count($codes) > 0) {
653 foreach ($codes as $survey_code) {
654 $this->
object->deleteSurveyCode($survey_code);
656 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'codes_deleted'),
true);
658 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'no_checkbox'),
true);
660 $this->
ctrl->redirect($this,
'codes');
668 $codes = $this->edit_request->getCodes();
669 if (count($codes) > 0) {
670 $export = $this->
object->getSurveyCodesForExport(
null, $codes);
673 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"no_checkbox"),
true);
674 $this->
ctrl->redirect($this,
'codes');
683 $export = $this->
object->getSurveyCodesForExport();
692 $this->handleWriteAccess();
693 $this->setParticipantSubTabs(
"codes");
696 $form_import_file->setFormAction($this->
ctrl->getFormAction($this));
697 $form_import_file->setTableWidth(
"100%");
698 $form_import_file->setId(
"codes_import_file");
701 $headerfile->setTitle($this->
lng->txt(
"svy_import_codes"));
702 $form_import_file->addItem($headerfile);
705 $export_file->setInfo(sprintf(
706 $this->
lng->txt(
'svy_import_codes_info'),
707 $this->lng->txt(
"export_all_survey_codes")
709 $export_file->setSuffixes(array(
"csv"));
710 $export_file->setRequired(
true);
711 $form_import_file->addItem($export_file);
713 $form_import_file->addCommandButton(
"importAccessCodesAction", $this->
lng->txt(
"import"));
714 $form_import_file->addCommandButton(
"codes", $this->
lng->txt(
"cancel"));
716 $this->tpl->setContent($form_import_file->getHTML());
724 if (trim($_FILES[
'codes'][
'tmp_name'])) {
726 foreach ($this->
object->getSurveyCodesTableData() as $item) {
727 $existing[$item[
"code"]] = $item[
"id"];
731 $reader->open($_FILES[
'codes'][
'tmp_name']);
732 foreach ($reader->getCsvAsArray() as $row) {
734 $code = $row[0] ??
"";
742 $last_name = $row[2] ??
"";
743 $first_name = $row[3] ??
"";
747 if (!array_key_exists($code, $existing)) {
763 ,
"lastname" => $last_name
764 ,
"firstname" => $first_name
766 $this->
object->importSurveyCode($code,
$created, $user_data);
770 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'codes_created'),
true);
773 $this->
ctrl->redirect($this,
'codes');
781 if ($this->edit_request->getNrOfCodes() > 0) {
782 $ids = $this->code_manager->addCodes($this->edit_request->getNrOfCodes());
783 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'codes_created'),
true);
784 $this->
ctrl->setParameter($this,
"new_ids", implode(
";", $ids));
785 $this->
ctrl->redirect($this,
'editCodes');
787 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"enter_valid_number_of_codes"),
true);
788 $this->
ctrl->redirect($this,
'codes');
794 $this->handleWriteAccess();
795 $this->setParticipantSubTabs(
"codes");
798 $form_gui->setValuesByPost();
800 if ($form_gui->getSavedMessages()->getValue() > 0) {
802 $settings = $this->
object->getUserSettings(
$ilUser->getId(),
'savemessage');
803 $form_gui->getMailMessage()->setValue(
$settings[$form_gui->getSavedMessages()->getValue()][
'value']);
804 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'msg_message_inserted'));
806 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'msg_no_message_inserted'));
808 }
catch (Exception
$e) {
810 $ilLog->write(
'Error: ' .
$e->getMessage());
812 $this->tpl->setVariable(
"ADM_CONTENT", $form_gui->getHTML());
817 $this->handleWriteAccess();
818 $this->setParticipantSubTabs(
"codes");
821 $form_gui->setValuesByPost();
823 if ($form_gui->getSavedMessages()->getValue() > 0) {
824 $this->
object->deleteUserSettings($form_gui->getSavedMessages()->getValue());
826 $form_gui->setValuesByPost();
827 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'msg_message_deleted'));
829 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'msg_no_message_deleted'));
831 }
catch (Exception
$e) {
833 $ilLog->write(
'Error: ' .
$e->getMessage());
835 $this->tpl->setVariable(
"ADM_CONTENT", $form_gui->getHTML());
840 $this->handleWriteAccess();
841 $this->setParticipantSubTabs(
"mail_survey_codes");
843 $mailData[
'm_subject'] =
844 $this->edit_request->getCodeMailPart(
"subject")
845 ?: sprintf($this->
lng->txt(
'default_codes_mail_subject'), $this->object->getTitle());
846 $mailData[
'm_message'] =
847 $this->edit_request->getCodeMailPart(
"message")
848 ?: $this->
lng->txt(
'default_codes_mail_message');
849 $mailData[
'm_notsent'] =
850 $this->edit_request->getCodeMailPart(
"notsent")
854 $form_gui->setValuesByArray($mailData);
855 $this->tpl->setVariable(
"ADM_CONTENT", $form_gui->getHTML());
862 $this->handleWriteAccess();
863 $this->setParticipantSubTabs(
"mail_survey_codes");
866 if ($form_gui->checkInput()) {
867 $url_exists = strpos($this->edit_request->getCodeMailPart(
"message"),
'[url]') !==
false;
869 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'please_enter_mail_url'));
870 $form_gui->setValuesByPost();
872 if ($this->edit_request->getSaveMessage() === 1) {
874 $title = ($this->edit_request->getSaveMessageTitle())
875 ?:
ilStr::subStr($this->edit_request->getCodeMailPart(
"message"), 0, 40) .
'...';
876 $this->
object->saveUserSettings(
$ilUser->getId(),
'savemessage', $title, $this->edit_request->getCodeMailPart(
"message"));
881 $lang = $this->
lng->getDefaultLanguage();
883 $this->
object->sendCodes(
884 $this->edit_request->getCodeMailPart(
"notsent"),
885 $this->edit_request->getCodeMailPart(
"subject"),
886 nl2br($this->edit_request->getCodeMailPart(
"message")),
889 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'mail_sent'),
true);
890 $this->
ctrl->redirect($this,
'mailCodes');
893 $form_gui->setValuesByPost();
895 $this->tpl->setVariable(
"ADM_CONTENT", $form_gui->getHTML());
900 if (trim($this->edit_request->getExternalText())) {
901 $data = preg_split(
"/[\n\r]/", $this->edit_request->getExternalText());
902 $fields = explode(
";", array_shift(
$data));
903 if (!in_array(
'email', $fields,
true)) {
904 $this->edit_manager->setExternalText($this->edit_request->getExternalText());
905 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'err_external_rcp_no_email_column'),
true);
906 $this->
ctrl->redirect($this,
'importExternalMailRecipientsFromTextForm');
908 $existingdata = $this->
object->getExternalCodeRecipients();
909 $existingcolumns = array();
910 if (count($existingdata)) {
911 $first = array_shift($existingdata);
912 foreach ($first as
$key => $value) {
913 $existingcolumns[] =
$key;
916 $founddata = array();
917 foreach (
$data as $datarow) {
918 $row = explode(
";", $datarow);
919 if (count($row) === count($fields)) {
921 foreach ($fields as $idx => $fieldname) {
922 if (count($existingcolumns)) {
923 if (array_key_exists($idx, $existingcolumns)) {
924 $dataset[$fieldname] = $row[$idx];
927 $dataset[$fieldname] = $row[$idx];
930 if ($dataset[
'email'] !==
'') {
931 $this->addCodeForExternal(
933 $dataset[
'lastname'] ??
"",
934 $dataset[
'firstname'] ??
""
939 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'external_recipients_imported'),
true);
940 $this->
ctrl->redirect($this,
'codes');
943 $this->
ctrl->redirect($this,
'importExternalMailRecipientsFromTextForm');
954 $code = $this->data_manager->code(
"")
956 ->withLastName($lastname)
957 ->withFirstName($firstname);
958 $code_id = $this->code_manager->add($code);
966 string $a_from_charset =
"",
967 string $a_to_charset =
"UTF-8"
969 if (extension_loaded(
"mbstring")) {
970 if (!$a_from_charset) {
971 mb_detect_order(
"UTF-8, ISO-8859-1, Windows-1252, ASCII");
972 $a_from_charset = mb_detect_encoding($a_string);
974 if (strtoupper($a_from_charset) !== $a_to_charset) {
975 return mb_convert_encoding($a_string, $a_to_charset, $a_from_charset);
984 $bom = pack(
'H*',
'EFBBBF');
985 return preg_replace(
'/^' . $bom .
'/',
'', $a_text);
990 if (trim($_FILES[
'externalmails'][
'tmp_name'])) {
992 $reader->open($_FILES[
'externalmails'][
'tmp_name']);
993 $data = $reader->getCsvAsArray();
994 $fields = array_shift(
$data);
995 foreach ($fields as $idx => $field) {
996 $fields[$idx] = $this->removeUTF8Bom($field);
998 if (!in_array(
'email', $fields,
true)) {
1000 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'err_external_rcp_no_email'),
true);
1001 $this->
ctrl->redirect($this,
'codes');
1003 $existingdata = $this->
object->getExternalCodeRecipients();
1004 $existingcolumns = array();
1005 if (count($existingdata)) {
1006 $first = array_shift($existingdata);
1007 foreach ($first as
$key => $value) {
1008 $existingcolumns[] =
$key;
1012 $founddata = array();
1013 foreach (
$data as $row) {
1014 if (count($row) === count($fields)) {
1016 foreach ($fields as $idx => $fieldname) {
1018 $row[$idx] = $this->_convertCharset($row[$idx]);
1020 if (count($existingcolumns)) {
1021 if (array_key_exists($idx, $existingcolumns)) {
1022 $dataset[$fieldname] = $row[$idx];
1025 $dataset[$fieldname] = $row[$idx];
1028 if ($dataset[
'email'] !==
'') {
1029 $founddata[] = $dataset;
1030 $this->addCodeForExternal(
1032 $dataset[
'lastname'] ??
"",
1033 $dataset[
'firstname'] ??
""
1040 if (count($founddata)) {
1041 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'external_recipients_imported'),
true);
1045 $this->
ctrl->redirect($this,
'codes');
1050 $ilAccess = $this->access;
1052 $this->handleWriteAccess();
1053 $this->setParticipantSubTabs(
"mail_survey_codes");
1056 $form_import_file->setFormAction($this->
ctrl->getFormAction($this));
1057 $form_import_file->setTableWidth(
"100%");
1058 $form_import_file->setId(
"codes_import_file");
1061 $headerfile->setTitle($this->
lng->txt(
"import_from_file"));
1062 $form_import_file->addItem($headerfile);
1064 $externalmails =
new ilFileInputGUI($this->
lng->txt(
"externalmails"),
"externalmails");
1065 $externalmails->setInfo($this->
lng->txt(
'externalmails_info'));
1066 $externalmails->setRequired(
true);
1067 $form_import_file->addItem($externalmails);
1068 if ($ilAccess->checkAccess(
"write",
"", $this->edit_request->getRefId())) {
1069 $form_import_file->addCommandButton(
"importExternalRecipientsFromFile", $this->
lng->txt(
"import"));
1071 if ($ilAccess->checkAccess(
"write",
"", $this->edit_request->getRefId())) {
1072 $form_import_file->addCommandButton(
"codes", $this->
lng->txt(
"cancel"));
1075 $this->tpl->setContent($form_import_file->getHTML());
1080 $ilAccess = $this->access;
1082 $this->handleWriteAccess();
1083 $this->setParticipantSubTabs(
"mail_survey_codes");
1086 $form_import_text->setFormAction($this->
ctrl->getFormAction($this));
1087 $form_import_text->setTableWidth(
"100%");
1088 $form_import_text->setId(
"codes_import_text");
1091 $headertext->setTitle($this->
lng->txt(
"import_from_text"));
1092 $form_import_text->addItem($headertext);
1095 $external_text = $this->edit_manager->getExternalText();
1096 if ($external_text !==
"") {
1097 $inp->setValue($external_text);
1100 $inp->setValue(
"email;firstname;lastname\n" . $this->
lng->txt(
'mail_import_example2') .
"\n" . $this->lng->txt(
'mail_import_example3') .
"\n");
1102 $inp->setRequired(
true);
1105 $inp->setInfo($this->
lng->txt(
'externaltext_info'));
1106 $form_import_text->addItem($inp);
1107 $this->edit_manager->setExternalText(
"");
1109 if ($ilAccess->checkAccess(
"write",
"", $this->edit_request->getRefId())) {
1110 $form_import_text->addCommandButton(
"importExternalRecipientsFromText", $this->
lng->txt(
"import"));
1112 if ($ilAccess->checkAccess(
"write",
"", $this->edit_request->getRefId())) {
1113 $form_import_text->addCommandButton(
"codes", $this->
lng->txt(
"cancel"));
1116 $this->tpl->setContent($form_import_text->getHTML());
1125 $ilToolbar = $this->toolbar;
1127 $ilCtrl = $this->ctrl;
1129 $this->handleWriteAccess();
1131 $this->
ctrl->setParameter($this,
"appr360", 1);
1137 'auto_complete_name' => $this->
lng->txt(
'user'),
1138 'submit_name' => $this->lng->txt(
'add'),
1139 'add_search' =>
true,
1140 'add_from_container' => $this->ref_id
1146 if ($this->
object->getSkillService() && $skmg_set->isActivated()) {
1147 $ilToolbar->addSeparator();
1148 $ilToolbar->addButton(
1149 $lng->txt(
"survey_calc_skills"),
1150 $ilCtrl->getLinkTargetByClass(
"ilsurveyskilldeterminationgui"),
1155 $ilToolbar->addSeparator();
1156 $ilToolbar->addButton(
1157 $this->
lng->txt(
'svy_delete_all_user_data'),
1158 $this->ctrl->getLinkTarget($this,
'deleteAllUserData')
1161 $this->
ctrl->setParameter($this,
"appr360",
"");
1164 $tbl->setData($this->
object->getAppraiseesData());
1165 $this->tpl->setContent($tbl->getHTML());
1171 if (count($a_user_ids)) {
1173 foreach (array_unique($a_user_ids) as $user_id) {
1174 $this->
object->addAppraisee($user_id);
1177 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
1179 $this->
ctrl->redirect($this,
"listAppraisees");
1184 $ilTabs = $this->tabs;
1186 $appr_ids = $this->edit_request->getAppraiseeIds();
1187 if (count($appr_ids) === 0) {
1188 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"select_one"),
true);
1189 $this->
ctrl->redirect($this,
"listAppraisees");
1192 $ilTabs->clearTargets();
1193 $ilTabs->setBackTarget(
1194 $this->
lng->txt(
"btn_back"),
1195 $this->ctrl->getLinkTarget($this,
"listAppraisees")
1199 $cgui->setHeaderText($this->
lng->txt(
"survey_360_sure_delete_appraises"));
1201 $cgui->setFormAction($this->
ctrl->getFormAction($this,
"deleteAppraisees"));
1202 $cgui->setCancel($this->
lng->txt(
"cancel"),
"listAppraisees");
1203 $cgui->setConfirm($this->
lng->txt(
"confirm"),
"deleteAppraisees");
1205 $data = $this->
object->getAppraiseesData();
1208 foreach ($appr_ids as
$id) {
1216 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"select_one"),
true);
1217 $this->
ctrl->redirect($this,
"listAppraisees");
1220 $this->tpl->setContent($cgui->getHTML());
1225 $appr_ids = $this->edit_request->getAppraiseeIds();
1226 if (count($appr_ids) > 0) {
1227 $data = $this->
object->getAppraiseesData();
1229 foreach ($appr_ids as
$id) {
1232 $this->
object->deleteAppraisee($id);
1236 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
1239 $this->
ctrl->redirect($this,
"listAppraisees");
1244 $ilAccess = $this->access;
1247 if ($ilAccess->checkAccess(
"write",
"", $this->ref_id)) {
1248 $appr_id = $this->edit_request->getAppraiseeId();
1250 $this->
ctrl->redirect($this,
"listAppraisees");
1253 } elseif ($this->feature_config->usesAppraisees() &&
1254 $this->object->get360SelfRaters() &&
1255 $this->object->isAppraisee(
$ilUser->getId()) &&
1256 !$this->object->isAppraiseeClosed(
$ilUser->getId())) {
1259 $this->
ctrl->redirect($this->parent_gui,
"infoScreen");
1265 $appr_id = $this->handleRatersAccess();
1266 $all_data = $this->
object->getRatersData($appr_id);
1268 $recs = json_decode(base64_decode($this->edit_request->getRecipients()));
1269 foreach ($all_data as $rec_id => $rater) {
1271 if (($rater[
"login"] !=
"" && in_array($rater[
"login"], $recs,
true)) ||
1272 ($rater[
"email"] !=
"" && in_array($rater[
"email"], $recs,
true))) {
1276 $this->
object->set360RaterSent(
1278 strpos($rec_id,
"a") === 0 ? 0 : (
int) substr($rec_id, 1),
1279 strpos($rec_id,
"u") === 0 ? 0 : (
int) substr($rec_id, 1)
1283 $this->
ctrl->setParameter($this,
"appr_id", $appr_id);
1284 $this->
ctrl->redirect($this,
"editRaters");
1289 if ($this->edit_request->getReturnedFromMail() === 1) {
1290 $this->storeMailSent();
1293 $ilTabs = $this->tabs;
1294 $ilToolbar = $this->toolbar;
1295 $ilAccess = $this->access;
1296 $ilTabs->activateTab(
"survey_360_edit_raters");
1297 $appr_id = $this->handleRatersAccess();
1299 $has_write = $ilAccess->checkAccess(
"write",
"", $this->ref_id);
1301 $ilTabs->clearTargets();
1302 $ilTabs->setBackTarget(
1303 $this->
lng->txt(
"btn_back"),
1304 $this->ctrl->getLinkTarget($this,
"listAppraisees")
1308 $this->
ctrl->setParameter($this,
"appr_id", $appr_id);
1309 $this->
ctrl->setParameter($this,
"rate360", 1);
1311 $ilToolbar->addButton(
1312 $this->
lng->txt(
"svy_add_rater"),
1313 $this->ctrl->getLinkTargetByClass(
"ilSurveyRaterGUI",
"add")
1320 $tbl->setData($this->
object->getRatersData($appr_id));
1321 $this->tpl->setContent($tbl->getHTML());
1327 $ilTabs = $this->
tabs;
1328 $ilAccess = $this->access;
1330 $appr_id = $this->handleRatersAccess();
1331 $this->
ctrl->setParameter($this,
"appr_id", $appr_id);
1333 $has_write = $ilAccess->checkAccess(
"write",
"", $this->ref_id);
1335 $ilTabs->clearTargets();
1336 $ilTabs->setBackTarget(
1337 $this->
lng->txt(
"btn_back"),
1338 $this->ctrl->getLinkTarget($this,
"editRaters")
1343 $a_form = $this->initExternalRaterForm($appr_id);
1346 $this->tpl->setContent($a_form->getHTML());
1354 $form->setTitle($this->
lng->txt(
"survey_360_add_external_rater") .
1357 $email =
new ilEmailInputGUI($this->
lng->txt(
"email"),
"email");
1358 $email->setRequired(
true);
1362 $lname->setSize(30);
1363 $form->addItem($lname);
1366 $fname->setSize(30);
1367 $form->addItem($fname);
1369 $form->addCommandButton(
"addExternalRater", $this->
lng->txt(
"save"));
1370 $form->addCommandButton(
"editRaters", $this->
lng->txt(
"cancel"));
1377 $appr_id = $this->edit_request->getAppraiseeId();
1379 $this->
ctrl->redirect($this,
"listAppraisees");
1382 $this->
ctrl->setParameter($this,
"appr_id", $appr_id);
1384 $form = $this->initExternalRaterForm($appr_id);
1385 if ($form->checkInput()) {
1386 $code_id = $this->addCodeForExternal(
1387 $form->getInput(
"email"),
1388 $form->getInput(
"lname"),
1389 $form->getInput(
"fname")
1392 $this->
object->addRater($appr_id, 0, $code_id);
1394 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
1395 $this->
ctrl->setParameter($this,
"appr_id", $appr_id);
1396 $this->
ctrl->redirect($this,
"editRaters");
1399 $form->setValuesByPost();
1400 $this->addExternalRaterFormObject($form);
1406 $ilAccess = $this->
access;
1409 $appr_id = $this->handleRatersAccess();
1411 if (count($a_user_ids)) {
1413 foreach (array_unique($a_user_ids) as $user_id) {
1414 if ($ilAccess->checkAccess(
"write",
"", $this->ref_id) ||
1415 $this->object->get360SelfEvaluation() ||
1416 $user_id !=
$ilUser->getId()) {
1417 if ($appr_id != $user_id) {
1418 $this->
object->addRater($appr_id, $user_id);
1419 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
1421 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"svy_appraisses_cannot_be_raters"),
true);
1427 $this->
ctrl->setParameter($this,
"appr_id", $appr_id);
1428 $this->
ctrl->redirect($this,
"editRaters");
1433 $ilTabs = $this->tabs;
1435 $rater_ids = $this->edit_request->getRaterIds();
1436 $appr_id = $this->handleRatersAccess();
1437 $this->
ctrl->setParameter($this,
"appr_id", $appr_id);
1438 if (count($rater_ids) === 0) {
1439 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"select_one"),
true);
1440 $this->
ctrl->redirect($this,
"editRaters");
1443 $ilTabs->clearTargets();
1444 $ilTabs->setBackTarget(
1445 $this->
lng->txt(
"btn_back"),
1446 $this->ctrl->getLinkTarget($this,
"editRaters")
1450 $cgui->setHeaderText(sprintf(
1451 $this->
lng->txt(
"survey_360_sure_delete_raters"),
1455 $cgui->setFormAction($this->
ctrl->getFormAction($this,
"deleteRaters"));
1456 $cgui->setCancel($this->
lng->txt(
"cancel"),
"editRaters");
1457 $cgui->setConfirm($this->
lng->txt(
"confirm"),
"deleteRaters");
1459 $data = $this->
object->getRatersData($appr_id);
1461 foreach ($rater_ids as
$id) {
1463 $cgui->addItem(
"rtr_id[]",
$id,
$data[
$id][
"lastname"] .
", " .
1468 $this->tpl->setContent($cgui->getHTML());
1473 $appr_id = $this->handleRatersAccess();
1474 $this->
ctrl->setParameter($this,
"appr_id", $appr_id);
1476 $rater_ids = $this->edit_request->getRaterIds();
1477 if (count($rater_ids) > 0) {
1478 $data = $this->
object->getRatersData($appr_id);
1480 foreach ($rater_ids as
$id) {
1482 if (strpos(
$id,
"u") === 0) {
1483 $this->
object->deleteRater($appr_id, substr(
$id, 1));
1485 $this->
object->deleteRater($appr_id, 0, substr(
$id, 1));
1490 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
1493 $this->
ctrl->redirect($this,
"editRaters");
1500 if ($this->
object->get360SelfAppraisee() &&
1501 !$this->object->isAppraisee(
$ilUser->getId())) {
1502 $this->
object->addAppraisee(
$ilUser->getId());
1505 $this->
ctrl->redirect($this->parent_gui,
"infoScreen");
1514 $form->setTitle($this->
lng->txt(
'compose'));
1516 $all_data = $this->
object->getRatersData($appr_id);
1517 $rec_data = array();
1518 foreach ($rec_ids as $rec_id) {
1519 if (isset($all_data[$rec_id])) {
1520 $rec_data[] = $all_data[$rec_id][
"lastname"] .
", " .
1521 $all_data[$rec_id][
"firstname"] .
1522 " (" . $all_data[$rec_id][
"email"] .
")";
1527 $rec->setHtml(implode(
"<br />", $rec_data));
1528 $form->addItem($rec);
1531 $subject->setSize(50);
1532 $subject->setRequired(
true);
1533 $form->addItem($subject);
1535 $existingdata = $this->
object->getExternalCodeRecipients();
1536 $existingcolumns = array();
1537 if (count($existingdata)) {
1538 $first = array_shift($existingdata);
1539 foreach ($first as
$key => $value) {
1540 if (strcmp(
$key,
'code') !== 0 && strcmp(
$key,
'email') !== 0 && strcmp(
$key,
'sent') !== 0) {
1541 $existingcolumns[] =
'[' .
$key .
']';
1546 $mailmessage_u =
new ilTextAreaInputGUI($this->
lng->txt(
'survey_360_rater_message_content_registered'),
'message_u');
1547 $mailmessage_u->setRequired(
true);
1548 $mailmessage_u->setCols(80);
1549 $mailmessage_u->setRows(10);
1550 $form->addItem($mailmessage_u);
1552 $mailmessage_a =
new ilTextAreaInputGUI($this->
lng->txt(
'survey_360_rater_message_content_anonymous'),
'message_a');
1553 $mailmessage_a->setRequired(
true);
1554 $mailmessage_a->setCols(80);
1555 $mailmessage_a->setRows(10);
1556 $mailmessage_a->setInfo(sprintf($this->
lng->txt(
'message_content_info'), implode(
', ', $existingcolumns)));
1557 $form->addItem($mailmessage_a);
1560 $recf->setValue(implode(
";", $rec_ids));
1561 $form->addItem($recf);
1563 $form->addCommandButton(
"mailRatersAction", $this->
lng->txt(
"send"));
1564 $form->addCommandButton(
"editRaters", $this->
lng->txt(
"cancel"));
1566 $subject->setValue(sprintf($this->
lng->txt(
'survey_360_rater_subject_default'), $this->object->getTitle()));
1567 $mailmessage_u->setValue($this->
lng->txt(
'survey_360_rater_message_content_registered_default'));
1568 $mailmessage_a->setValue($this->
lng->txt(
'survey_360_rater_message_content_anonymous_default'));
1575 $appr_id = $this->handleRatersAccess();
1576 $all_data = $this->
object->getRatersData($appr_id);
1577 $this->
ctrl->setParameter($this,
"appr_id", $appr_id);
1579 $raters = $this->edit_request->getRaterIds();
1582 $external_rater =
false;
1584 foreach ($raters as
$id) {
1585 if (isset($all_data[
$id])) {
1586 if ($all_data[
$id][
"login"] !=
"") {
1587 $rec[] = $all_data[
$id][
"login"];
1588 } elseif ($all_data[
$id][
"email"] !=
"") {
1589 $rec[] = $all_data[
$id][
"email"];
1590 $external_rater =
true;
1591 $rater_id = $all_data[
$id][
"user_id"];
1595 if ($external_rater && count($rec) > 1) {
1596 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"svy_only_max_one_external_rater"),
true);
1597 $this->
ctrl->redirect($this,
"editRaters");
1603 $contextParameters = [
1604 'ref_id' => $this->
object->getRefId(),
1606 'appr_id' => $appr_id,
1607 'rater_id' => $rater_id,
1615 'recipients' => base64_encode(json_encode($rec, JSON_THROW_ON_ERROR)),
1619 'sig' => rawurlencode(base64_encode(
"\n\n" . $this->
lng->txt(
"svy_link_to_svy") .
": [SURVEY_LINK]"))
1628 $ilTabs = $this->
tabs;
1629 $rater_ids = $this->edit_request->getRaterIds();
1631 $appr_id = $this->handleRatersAccess();
1632 $this->
ctrl->setParameter($this,
"appr_id", $appr_id);
1634 if (count($rater_ids) === 0) {
1635 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"select_one"),
true);
1636 $this->
ctrl->redirect($this,
"editRaters");
1639 $a_form = $this->initMailRatersForm($appr_id, $rater_ids);
1642 $ilTabs->clearTargets();
1643 $ilTabs->setBackTarget(
1644 $this->
lng->txt(
"btn_back"),
1645 $this->ctrl->getLinkTarget($this,
"editRaters")
1648 $this->tpl->setContent($a_form->getHTML());
1654 $appr_id = $this->handleRatersAccess();
1655 $this->
ctrl->setParameter($this,
"appr_id", $appr_id);
1657 $rec_ids = $this->edit_request->getRaterIds();
1658 if (count($rec_ids) === 0) {
1659 $this->
ctrl->redirect($this,
"editRaters");
1662 $form = $this->initMailRatersForm($appr_id, $rec_ids);
1663 if ($form->checkInput()) {
1664 $txt_u = $form->getInput(
"message_u");
1665 $txt_a = $form->getInput(
"message_a");
1666 $subj = $form->getInput(
"subject");
1669 $sender_id = (trim(
$ilUser->getEmail()))
1673 $all_data = $this->
object->getRatersData($appr_id);
1674 foreach ($rec_ids as $rec_id) {
1675 if (isset($all_data[$rec_id])) {
1676 $user = $all_data[$rec_id];
1679 if (strpos($rec_id,
"a") === 0) {
1681 $url = $user[
"href"];
1682 $rcp = $user[
"email"];
1687 $user[
"code"] = $this->
lng->txt(
"survey_code_mail_on_demand");
1689 $rcp = $user[
"login"];
1692 $mytxt = str_replace(
1693 [
"[lastname]",
"[firstname]",
"[url]",
"[code]"],
1694 [$user[
"lastname"], $user[
"firstname"],
$url, $user[
"code"]],
1698 $mail =
new ilMail($sender_id);
1708 $this->
object->set360RaterSent(
1710 (strpos($rec_id,
"a") === 0) ? 0 : (
int) substr($rec_id, 1),
1711 (strpos($rec_id,
"u") === 0) ? 0 : (
int) substr($rec_id, 1)
1716 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"mail_sent"),
true);
1717 $this->
ctrl->redirect($this,
"editRaters");
1720 $form->setValuesByPost();
1721 $this->mailRatersObject();
1728 $ilTabs = $this->tabs;
1730 $ilTabs->clearTargets();
1731 $ilTabs->setBackTarget(
1732 $this->
lng->txt(
"menuback"),
1733 $this->ctrl->getLinkTarget($this->parent_gui,
"infoScreen")
1737 $this->
ctrl->redirect($this->parent_gui,
"infoScreen");
1741 $cgui->setHeaderText($this->
lng->txt(
"survey_360_sure_appraisee_close"));
1743 $cgui->setFormAction($this->
ctrl->getFormAction($this,
"appraiseeClose"));
1744 $cgui->setCancel($this->
lng->txt(
"cancel"),
"confirmAppraiseeCloseCancel");
1745 $cgui->setConfirm($this->
lng->txt(
"confirm"),
"appraiseeClose");
1752 $this->
ctrl->redirect($this->parent_gui,
"infoScreen");
1760 $this->
ctrl->redirect($this->parent_gui,
"infoScreen");
1763 $this->
object->closeAppraisee(
$ilUser->getId());
1764 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"survey_360_appraisee_close_action_success"),
true);
1765 $this->
ctrl->redirect($this->parent_gui,
"infoScreen");
1772 $this->handleWriteAccess();
1774 $appr_ids = $this->edit_request->getAppraiseeIds();
1776 if (count($appr_ids) === 0) {
1777 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"select_one"),
true);
1778 $this->
ctrl->redirect($this,
"listAppraisees");
1782 $cgui->setHeaderText($this->
lng->txt(
"survey_360_sure_appraisee_close_admin"));
1784 $cgui->setFormAction($this->
ctrl->getFormAction($this,
"adminAppraiseesClose"));
1785 $cgui->setCancel($this->
lng->txt(
"cancel"),
"listAppraisees");
1786 $cgui->setConfirm($this->
lng->txt(
"confirm"),
"adminAppraiseesClose");
1788 foreach ($appr_ids as $appr_id) {
1792 $tpl->setContent($cgui->getHTML());
1797 $this->handleWriteAccess();
1799 $appr_ids = $this->edit_request->getAppraiseeIds();
1801 if (count($appr_ids) === 0) {
1802 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"select_one"),
true);
1803 $this->
ctrl->redirect($this,
"listAppraisees");
1806 $appr_data = $this->
object->getAppraiseesData();
1807 foreach ($appr_ids as $appr_id) {
1808 if (isset($appr_data[$appr_id]) && !$appr_data[$appr_id][
"closed"]) {
1809 $this->
object->closeAppraisee($appr_id);
1813 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"survey_360_appraisee_close_action_success_admin"),
true);
1814 $this->
ctrl->redirect($this,
"listAppraisees");
1819 $ilToolbar = $this->toolbar;
1821 if (!$this->isAnonymousListActive()) {
1822 $this->
ctrl->redirect($this,
"maintenance");
1825 $this->handleWriteAccess();
1826 $this->setParticipantSubTabs(
"anon_participants");
1829 $button->setCaption(
"print");
1830 $button->setOnClick(
"window.print(); return false;");
1831 $button->setOmitPreventDoubleSubmission(
true);
1832 $ilToolbar->addButtonInstance($button);
1835 $this->tpl->setContent($tbl->getHTML());
1845 $ctrl = $this->ctrl;
1847 foreach ($user_ids as $user_id) {
1848 $this->invitation_manager->add($this->
object->getSurveyId(), $user_id);
1850 $this->tpl->setOnScreenMessage(
'success',
$lng->txt(
"svy_users_invited"),
true);
1851 $ctrl->
redirect($this,
"maintenance");
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilCtrl provides processing control methods.
redirect(object $a_gui_obj, string $a_cmd=null, string $a_anchor=null, bool $is_async=false)
@inheritDoc
static getASCIIFilename(string $a_filename)
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...
static _getStaticLink(?int $a_ref_id, string $a_type='', bool $a_fallback_goto=true, string $append="")
Get static link.
Component logger with individual log levels by component id.
class ilRbacSystem system function like checkAccess, addActiveRole ... Supporting system functions ar...
static fillAutoCompleteToolbar(object $parent_object, ilToolbarGUI $toolbar=null, array $a_options=[], bool $a_sticky=false)
array( auto_complete_name = $lng->txt('user'), auto_complete_size = 15, user_type = array(ilCoursePar...
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...
static subStr(string $a_str, int $a_start, ?int $a_length=null)
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...
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...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilSurveyParticipantsGUI.
exportCodesObject()
Exports a list of survey codes.
ilObjSurveyGUI $parent_gui
cancelDeleteAllUserDataObject()
Cancels delete of all user data in maintenance.
importExternalRecipientsFromFileObject()
ilGlobalTemplateInterface $tpl
ILIAS Survey Editing EditingGUIRequest $edit_request
deleteSavedMessageObject()
inviteUsers(array $user_ids)
ILIAS Survey Mode FeatureConfig $feature_config
deleteCodesConfirmObject()
confirmAppraiseeCloseObject()
ILIAS Survey InternalDataService $data_manager
addAppraisee(array $a_user_ids)
ILIAS Survey Editing EditManager $edit_manager
ILIAS Survey InternalService $survey_service
deleteAllUserDataObject()
Creates a confirmation form for delete all user data.
initExternalRaterForm(int $appr_id)
removeUTF8Bom(string $a_text)
maintenanceObject()
Participants maintenance.
filterSurveyParticipantsByAccess(array $a_finished_ids=null)
importExternalMailRecipientsFromFileFormObject()
addCodeForExternal(string $email, string $lastname, string $firstname)
Add code for an external rater.
addExternalRaterFormObject(ilPropertyFormGUI $a_form=null)
importExternalMailRecipientsFromTextFormObject()
ILIAS Survey Code CodeManager $code_manager
confirmAppraiseeCloseCancelObject()
insertSavedMessageObject()
importAccessCodesActionObject()
Import codes from export codes file.
codesObject()
Display the survey access codes tab.
confirmDeleteAllUserDataObject()
Deletes all user data of the survey after confirmation.
createSurveyCodesObject()
Create access codes for the survey.
addRater(array $a_user_ids)
exportAllCodesObject()
Exports all survey codes.
deleteCodesObject()
Delete a list of survey codes.
confirmDeleteAppraiseesObject()
deleteSingleUserResultsObject()
Asks for a confirmation to delete selected user data.
setCodeLanguageObject()
Change survey language for direct access URL's.
Participants InvitationsManager $invitation_manager
initMailRatersForm(int $appr_id, array $rec_ids)
importAccessCodesObject()
Import codes from export codes file (upload form)
confirmAdminAppraiseesCloseObject()
adminAppraiseesCloseObject()
cancelDeleteSelectedUserDataObject()
Cancels the deletion of all user data.
confirmDeleteRatersObject()
mailRatersObjectOld(ilPropertyFormGUI $a_form=null)
_convertCharset(string $a_string, string $a_from_charset="", string $a_to_charset="UTF-8")
setParticipantSubTabs(string $active)
confirmDeleteSelectedUserDataObject()
Deletes all user data for the test object.
importExternalRecipientsFromTextObject()
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...
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, 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:
static deliverData(string $a_data, string $a_filename, string $mime="application/octet-stream")
if(!file_exists(getcwd() . '/ilias.ini.php'))
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...
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.
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...