25 $this->parent_gui = $a_parent_gui;
26 $this->
object = $this->parent_gui->object;
27 $this->ref_id = $this->
object->getRefId();
28 $this->has_write = (bool)$a_has_write_access;
39 include_once
"Modules/Survey/exceptions/class.ilSurveyException.php";
49 $next_class = $this->ctrl->getNextClass($this);
53 case 'ilrepositorysearchgui':
54 include_once(
'./Services/Search/classes/class.ilRepositorySearchGUI.php');
57 if(!$_REQUEST[
"appr360"] && !$_REQUEST[
"rate360"])
59 $ilTabs->clearTargets();
60 $ilTabs->setBackTarget($this->lng->txt(
"btn_back"),
61 $this->ctrl->getLinkTarget($this,
"invite"));
63 $rep_search->setCallback($this,
64 'inviteUserGroupObject',
70 $this->ctrl->setReturn($this,
'invite');
71 $this->ctrl->forwardCommand($rep_search);
72 $ilTabs->setTabActive(
'invitation');
74 else if($_REQUEST[
"rate360"])
76 $ilTabs->clearTargets();
77 $ilTabs->setBackTarget($this->lng->txt(
"btn_back"),
78 $this->ctrl->getLinkTarget($this,
"listAppraisees"));
80 $this->ctrl->setParameter($this,
"rate360", 1);
81 $this->ctrl->saveParameter($this,
"appr_id");
83 $rep_search->setCallback($this,
90 $this->ctrl->setReturn($this,
'editRaters');
91 $this->ctrl->forwardCommand($rep_search);
95 $ilTabs->activateTab(
"survey_360_appraisees");
96 $this->ctrl->setParameter($this,
"appr360", 1);
98 $rep_search->setCallback($this,
105 $this->ctrl->setReturn($this,
'listAppraisees');
106 $this->ctrl->forwardCommand($rep_search);
124 if($this->object->get360Mode())
132 $ilToolbar->addButton($this->lng->txt(
'svy_delete_all_user_data'),
133 $this->ctrl->getLinkTarget($this,
'deleteAllUserData'));
135 include_once
"./Modules/Survey/classes/tables/class.ilSurveyMaintenanceTableGUI.php";
137 $total =& $this->
object->getSurveyParticipants();
139 foreach (
$total as $user_data)
142 if((
bool)$user_data[
"finished"])
144 $finished = $user_data[
"finished_tstamp"];
146 $wt = $this->
object->getWorkingtimeForParticipant($user_data[
"active_id"]);
147 $last_access = $this->
object->getLastAccess($user_data[
"active_id"]);
148 array_push(
$data, array(
149 'id' => $user_data[
"active_id"],
150 'name' => $user_data[
"sortname"],
151 'login' => $user_data[
"login"],
152 'last_access' => $last_access,
153 'workingtime' => $wt,
154 'finished' => $finished
157 $table_gui->setData(
$data);
158 $this->tpl->setVariable(
'ADM_CONTENT', $table_gui->getHTML());
163 $surveySetting =
new ilSetting(
"survey");
164 if($surveySetting->get(
"anonymous_participants",
false))
166 if($this->object->hasAnonymizedResults() &&
167 $this->object->hasAnonymousUserList())
169 $end = $this->
object->getEndDate();
170 if($end && $end <
date(
"YmdHis"))
172 $min = $surveySetting->get(
"anonymous_participants_min", 0);
173 $total = $this->
object->getSurveyParticipants();
174 if(!$min ||
sizeof(
$total) >= $min)
196 $ilTabs->addSubTabTarget(
"results",
197 $this->ctrl->getLinkTarget($this,
'maintenance'),
198 array(
"maintenance",
"deleteAllUserData"),
203 $ilTabs->addSubTabTarget(
"svy_anonymous_participants_svy",
204 $this->ctrl->getLinkTarget($this,
'listParticipants'),
205 array(
"listParticipants"),
209 if(!$this->object->isAccessibleWithoutCode())
211 $ilTabs->addSubTabTarget(
"codes",
212 $this->ctrl->getLinkTarget($this,
'codes'),
213 array(
"codes",
"editCodes",
"createSurveyCodes",
"setCodeLanguage",
"deleteCodes",
"exportCodes",
214 "importExternalMailRecipientsFromFileForm",
"importExternalMailRecipientsFromTextForm"),
219 $hidden_tabs = array();
220 $template = $this->
object->getTemplate();
223 include_once
"Services/Administration/classes/class.ilSettingsTemplate.php";
225 $hidden_tabs = $template->getHiddenTabs();
229 if(!in_array(
"invitation", $hidden_tabs))
231 $ilTabs->addSubTabTarget(
"invitation",
232 $this->ctrl->getLinkTarget($this,
'invite'),
233 array(
"invite",
"saveInvitationStatus",
234 "inviteUserGroup",
"disinviteUserGroup"),
238 $data = $this->
object->getExternalCodeRecipients();
241 $ilTabs->addSubTabTarget
244 $this->ctrl->getLinkTarget($this,
"mailCodes"),
245 array(
"mailCodes",
"sendCodesMail",
"insertSavedMessage",
"deleteSavedMessage"),
257 if (is_array(
$_POST[
"user_select"]))
259 foreach (
$_POST[
"user_select"] as $user_id)
261 $this->
object->disinviteUser($user_id);
265 $this->ctrl->redirect($this,
"invite");
275 if (is_array($a_user_ids))
277 foreach ($a_user_ids as $user_id)
279 $this->
object->inviteUser($user_id);
293 $this->ctrl->redirect($this,
"invite");
301 $mode =
$_POST[
'invitation'];
314 $this->
object->saveToDb();
316 $this->ctrl->redirect($this,
"invite");
332 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
334 $form->setFormAction($this->ctrl->getFormAction($this));
335 $form->setTableWidth(
"500");
336 $form->setId(
"invite");
340 $header->setTitle($this->lng->txt(
"invitation"));
345 $invitation->setInfo($this->lng->txt(
'invitation_mode_desc'));
346 $invitation->addOption(
new ilRadioOption($this->lng->txt(
"invitation_off"), 0,
''));
347 $surveySetting =
new ilSetting(
"survey");
348 if ($surveySetting->get(
"unlimited_invitation"))
350 $invitation->addOption(
new ilRadioOption($this->lng->txt(
"unlimited_users"), 1,
''));
352 $invitation->addOption(
new ilRadioOption($this->lng->txt(
"predefined_users"), 2,
''));
354 if ($this->object->getInvitation())
356 $inv = $this->
object->getInvitationMode() + 1;
358 $invitation->setValue($inv);
359 $form->addItem($invitation);
361 $form->addCommandButton(
"saveInvitationStatus", $this->lng->txt(
"save"));
363 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.il_svy_svy_invite.html",
"Modules/Survey");
364 $this->tpl->setVariable(
"INVITATION_TABLE", $form->getHTML());
366 if ($this->object->getInvitation() && $this->object->getInvitationMode() == 1)
369 include_once
'./Services/Search/classes/class.ilRepositorySearchGUI.php';
374 'auto_complete_name' =>
$lng->txt(
'user'),
375 'submit_name' =>
$lng->txt(
'svy_invite_action')
379 $ilToolbar->addSpacer();
381 $ilToolbar->addButton($this->lng->txt(
"svy_search_users"),
382 $this->ctrl->getLinkTargetByClass(
'ilRepositorySearchGUI',
''));
384 $this->tpl->setVariable(
"ADM_CONTENT", $form->getHTML());
386 $invited_users = $this->
object->getUserData($this->object->getInvitedUsers());
387 include_once
"./Modules/Survey/classes/tables/class.ilSurveyInvitedUsersTableGUI.php";
389 $table_gui->setData($invited_users);
390 $this->tpl->setVariable(
'TBL_INVITED_USERS', $table_gui->getHTML());
399 include_once
"Services/Utilities/classes/class.ilConfirmationGUI.php";
401 $cgui->setHeaderText($this->lng->txt(
"confirm_delete_all_user_data"));
402 $cgui->setFormAction($this->ctrl->getFormAction($this,
"deleteAllUserData"));
403 $cgui->setCancel($this->lng->txt(
"cancel"),
"cancelDeleteAllUserData");
404 $cgui->setConfirm($this->lng->txt(
"confirm"),
"confirmDeleteAllUserData");
405 $this->tpl->setContent($cgui->getHTML());
413 $this->
object->deleteAllUserData();
416 if($this->object->get360Mode())
418 $this->
object->openAllAppraisees();
422 $this->ctrl->redirect($this,
"maintenance");
430 $this->ctrl->redirect($this,
"maintenance");
438 $this->
object->removeSelectedSurveyResults(
$_POST[
"chbUser"]);
440 $this->ctrl->redirect($this,
"maintenance");
449 $this->ctrl->redirect($this,
"maintenance");
459 if (count(
$_POST[
"chbUser"]) == 0)
462 $this->ctrl->redirect($this,
"maintenance");
466 include_once
"./Modules/Survey/classes/tables/class.ilSurveyMaintenanceTableGUI.php";
468 $total =& $this->
object->getSurveyParticipants();
470 foreach (
$total as $user_data)
472 if (in_array($user_data[
'active_id'],
$_POST[
'chbUser']))
474 $last_access = $this->
object->getLastAccess($user_data[
"active_id"]);
475 array_push(
$data, array(
476 'id' => $user_data[
"active_id"],
477 'name' => $user_data[
"sortname"],
478 'login' => $user_data[
"login"],
479 'last_access' => $last_access
483 $table_gui->setData(
$data);
484 $this->tpl->setVariable(
'ADM_CONTENT', $table_gui->getHTML());
492 if (strcmp(
$_POST[
"lang"],
"-1") != 0)
498 $this->ctrl->redirect($this,
'codes');
511 if ($this->object->isAccessibleWithoutCode())
516 $default_lang =
$ilUser->getPref(
"survey_code_language");
519 $ilToolbar->setFormAction($this->ctrl->getFormAction($this));
521 include_once(
"./Services/Form/classes/class.ilTextInputGUI.php");
525 $ilToolbar->addInputItem(
$si,
true);
527 include_once
"Services/UIComponent/Button/classes/class.ilSubmitButton.php";
530 $button->setCaption(
"create");
531 $button->setCommand(
"createSurveyCodes");
532 $ilToolbar->addButtonInstance($button);
534 $ilToolbar->addSeparator();
537 $button->setCaption(
"import_from_file");
538 $button->setCommand(
"importExternalMailRecipientsFromFileForm");
539 $ilToolbar->addButtonInstance($button);
542 $button->setCaption(
"import_from_text");
543 $button->setCommand(
"importExternalMailRecipientsFromTextForm");
544 $ilToolbar->addButtonInstance($button);
546 $ilToolbar->addSeparator();
549 $button->setCaption(
"svy_import_codes");
550 $button->setCommand(
"importAccessCodes");
551 $ilToolbar->addButtonInstance($button);
553 $ilToolbar->addSeparator();
555 $languages = $this->lng->getInstalledLanguages();
557 $this->lng->loadLanguageModule(
"meta");
562 include_once(
"./Services/Form/classes/class.ilSelectInputGUI.php");
565 $si->setValue($default_lang);
566 $ilToolbar->addInputItem(
$si,
true);
569 $button->setCaption(
"set");
570 $button->setCommand(
"setCodeLanguage");
571 $ilToolbar->addButtonInstance($button);
573 include_once
"./Modules/Survey/classes/tables/class.ilSurveyCodesTableGUI.php";
575 $survey_codes = $this->
object->getSurveyCodesTableData(
null, $default_lang);
576 $table_gui->setData($survey_codes);
577 $this->tpl->setContent($table_gui->getHTML());
582 if(isset(
$_GET[
"new_ids"]))
584 $ids = explode(
";",
$_GET[
"new_ids"]);
588 $ids = (array)
$_POST[
"chb_code"];
593 $this->ctrl->redirect($this,
'codes');
599 include_once
"./Modules/Survey/classes/tables/class.ilSurveyCodesEditTableGUI.php";
601 $table_gui->setData($this->object->getSurveyCodesTableData($ids));
602 $this->tpl->setContent($table_gui->getHTML());
607 if(!is_array(
$_POST[
"chb_code"]))
609 $this->ctrl->redirect($this,
'codes');
614 foreach(
$_POST[
"chb_code"] as $id)
616 if(!$this->object->updateCode($id,
639 $this->ctrl->redirect($this,
'codes');
644 if (is_array(
$_POST[
"chb_code"]) && (count(
$_POST[
"chb_code"]) > 0))
646 include_once(
"./Services/Utilities/classes/class.ilConfirmationGUI.php");
648 $cgui->setHeaderText($this->lng->txt(
"survey_code_delete_sure"));
650 $cgui->setFormAction($this->ctrl->getFormAction($this));
651 $cgui->setCancel($this->lng->txt(
"cancel"),
"codes");
652 $cgui->setConfirm($this->lng->txt(
"confirm"),
"deleteCodes");
654 $data = $this->
object->getSurveyCodesTableData(
$_POST[
"chb_code"]);
656 foreach (
$data as $item)
663 $title = array($item[
"code"]);
664 $item[
"email"] ?
$title[] = $item[
"email"] :
null;
665 $item[
"last_name"] ?
$title[] = $item[
"last_name"] :
null;
666 $item[
"first_name"] ?
$title[] = $item[
"first_name"] :
null;
669 $cgui->addItem(
"chb_code[]", $item[
"code"],
$title);
672 $this->tpl->setContent($cgui->getHTML());
677 $this->ctrl->redirect($this,
'codes');
686 if (is_array(
$_POST[
"chb_code"]) && (count(
$_POST[
"chb_code"]) > 0))
688 foreach (
$_POST[
"chb_code"] as $survey_code)
690 $this->
object->deleteSurveyCode($survey_code);
698 $this->ctrl->redirect($this,
'codes');
706 if (is_array(
$_POST[
"chb_code"]) && (count(
$_POST[
"chb_code"]) > 0))
708 $export = $this->
object->getSurveyCodesForExport(
null,
$_POST[
"chb_code"]);
714 $this->ctrl->redirect($this,
'codes');
723 $export = $this->
object->getSurveyCodesForExport();
735 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
737 $form_import_file->setFormAction($this->ctrl->getFormAction($this));
738 $form_import_file->setTableWidth(
"100%");
739 $form_import_file->setId(
"codes_import_file");
742 $headerfile->setTitle($this->lng->txt(
"svy_import_codes"));
743 $form_import_file->addItem($headerfile);
745 $export_file =
new ilFileInputGUI($this->lng->txt(
"codes"),
"codes");
746 $export_file->setInfo(
sprintf($this->lng->txt(
'svy_import_codes_info'),
747 $this->lng->txt(
"export_all_survey_codes")));
748 $export_file->setSuffixes(array(
"csv"));
749 $export_file->setRequired(
true);
750 $form_import_file->addItem($export_file);
752 $form_import_file->addCommandButton(
"importAccessCodesAction", $this->lng->txt(
"import"));
753 $form_import_file->addCommandButton(
"codes", $this->lng->txt(
"cancel"));
755 $this->tpl->setContent($form_import_file->getHTML());
763 if(trim($_FILES[
'codes'][
'tmp_name']))
766 foreach($this->object->getSurveyCodesTableData() as $item)
768 $existing[$item[
"code"]] = $item[
"id"];
771 include_once
"./Services/Utilities/classes/class.ilCSVReader.php";
773 $reader->open($_FILES[
'codes'][
'tmp_name']);
774 foreach(
$reader->getDataArrayFromCSVFile() as
$row)
776 if(
sizeof(
$row) == 8)
779 list(
$code, $email, $last_name, $first_name, $created, $used, $sent,
$url) =
$row;
782 if(!array_key_exists(
$code, $existing))
785 if(strlen($created) == 10)
797 ,
"lastname" => $last_name
798 ,
"firstname" => $first_name
800 $this->
object->importSurveyCode(
$code, $created, $user_data);
808 $this->ctrl->redirect($this,
'codes');
816 if (is_numeric(
$_POST[
"nrOfCodes"]))
818 $ids = $this->
object->createSurveyCodes(
$_POST[
"nrOfCodes"]);
820 $this->ctrl->setParameter($this,
"new_ids", implode(
";", $ids));
821 $this->ctrl->redirect($this,
'editCodes');
826 $this->ctrl->redirect($this,
'codes');
835 include_once(
"./Modules/Survey/classes/forms/FormMailCodesGUI.php");
837 $form_gui->setValuesByPost();
840 if ($form_gui->getSavedMessages()->getValue() > 0)
843 $settings = $this->
object->getUserSettings($ilUser->getId(),
'savemessage');
844 $form_gui->getMailMessage()->setValue($settings[$form_gui->getSavedMessages()->getValue()][
'value']);
855 $ilLog->write(
'Error: ' + $e->getMessage());
857 $this->tpl->setVariable(
"ADM_CONTENT", $form_gui->getHTML());
865 include_once(
"./Modules/Survey/classes/forms/FormMailCodesGUI.php");
867 $form_gui->setValuesByPost();
870 if ($form_gui->getSavedMessages()->getValue() > 0)
872 $this->
object->deleteUserSettings($form_gui->getSavedMessages()->getValue());
874 $form_gui->setValuesByPost();
885 $ilLog->write(
'Error: ' + $e->getMessage());
887 $this->tpl->setVariable(
"ADM_CONTENT", $form_gui->getHTML());
895 $mailData[
'm_subject'] = (array_key_exists(
'm_subject',
$_POST)) ?
$_POST[
'm_subject'] :
sprintf($this->lng->txt(
'default_codes_mail_subject'), $this->
object->getTitle());
896 $mailData[
'm_message'] = (array_key_exists(
'm_message',
$_POST)) ?
$_POST[
'm_message'] : $this->lng->txt(
'default_codes_mail_message');
897 $mailData[
'm_notsent'] = (array_key_exists(
'm_notsent',
$_POST)) ?
$_POST[
'm_notsent'] :
'1';
899 include_once(
"./Modules/Survey/classes/forms/FormMailCodesGUI.php");
901 $form_gui->setValuesByArray($mailData);
902 $this->tpl->setVariable(
"ADM_CONTENT", $form_gui->getHTML());
912 include_once(
"./Modules/Survey/classes/forms/FormMailCodesGUI.php");
914 if ($form_gui->checkInput())
916 $url_exists = strpos(
$_POST[
'm_message'],
'[url]') !== FALSE;
920 $form_gui->setValuesByPost();
924 if (
$_POST[
'savemessage'] == 1)
927 $title = (strlen(
$_POST[
'savemessagetitle'])) ?
$_POST[
'savemessagetitle'] : ilStr::substr(
$_POST[
'm_message'], 0, 40) .
'...';
928 $this->
object->saveUserSettings($ilUser->getId(),
'savemessage',
$title,
$_POST[
'm_message']);
934 $lang = $this->lng->getDefaultLanguage();
938 $this->ctrl->redirect($this,
'mailCodes');
943 $form_gui->setValuesByPost();
945 $this->tpl->setVariable(
"ADM_CONTENT", $form_gui->getHTML());
950 if (trim(
$_POST[
'externaltext']))
952 $data = preg_split(
"/[\n\r]/",
$_POST[
'externaltext']);
953 $fields = preg_split(
"/;/", array_shift(
$data));
954 if (!in_array(
'email', $fields))
958 $this->ctrl->redirect($this,
'importExternalMailRecipientsFromTextForm');
960 $existingdata = $this->
object->getExternalCodeRecipients();
961 $existingcolumns = array();
962 if (count($existingdata))
964 $first = array_shift($existingdata);
965 foreach ($first as $key => $value)
967 array_push($existingcolumns, $key);
970 $founddata = array();
971 foreach (
$data as $datarow)
973 $row = preg_split(
"/;/", $datarow);
974 if (count(
$row) == count($fields))
977 foreach ($fields as $idx => $fieldname)
979 if (count($existingcolumns))
981 if (array_key_exists($idx, $existingcolumns))
983 $dataset[$fieldname] =
$row[$idx];
988 $dataset[$fieldname] =
$row[$idx];
991 if (strlen($dataset[
'email']))
993 array_push($founddata, $dataset);
997 $this->
object->createSurveyCodesForExternalData($founddata);
999 $this->ctrl->redirect($this,
'codes');
1002 $this->ctrl->redirect($this,
'importExternalMailRecipientsFromTextForm');
1008 if(extension_loaded(
"mbstring"))
1010 if(!$a_from_charset)
1012 mb_detect_order(
"UTF-8, ISO-8859-1, Windows-1252, ASCII");
1013 $a_from_charset = mb_detect_encoding($a_string);
1015 if(strtoupper($a_from_charset) != $a_to_charset)
1017 return @mb_convert_encoding($a_string, $a_to_charset, $a_from_charset);
1025 $bom = pack(
'H*',
'EFBBBF');
1026 return preg_replace(
'/^'.$bom.
'/',
'', $a_text);
1031 if (trim($_FILES[
'externalmails'][
'tmp_name']))
1033 include_once
"./Services/Utilities/classes/class.ilCSVReader.php";
1035 $reader->open($_FILES[
'externalmails'][
'tmp_name']);
1037 $fields = array_shift(
$data);
1038 foreach($fields as $idx => $field)
1042 if (!in_array(
'email', $fields))
1046 $this->ctrl->redirect($this,
'codes');
1048 $existingdata = $this->
object->getExternalCodeRecipients();
1049 $existingcolumns = array();
1050 if (count($existingdata))
1052 $first = array_shift($existingdata);
1053 foreach ($first as $key => $value)
1055 array_push($existingcolumns, $key);
1059 include_once
"Services/Utilities/classes/class.ilStr.php";
1061 $founddata = array();
1064 if (count(
$row) == count($fields))
1067 foreach ($fields as $idx => $fieldname)
1072 if (count($existingcolumns))
1074 if (array_key_exists($idx, $existingcolumns))
1076 $dataset[$fieldname] =
$row[$idx];
1081 $dataset[$fieldname] =
$row[$idx];
1084 if (strlen($dataset[
'email']))
1086 array_push($founddata, $dataset);
1092 if(
sizeof($founddata))
1094 $this->
object->createSurveyCodesForExternalData($founddata);
1099 $this->ctrl->redirect($this,
'codes');
1109 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
1111 $form_import_file->setFormAction($this->ctrl->getFormAction($this));
1112 $form_import_file->setTableWidth(
"100%");
1113 $form_import_file->setId(
"codes_import_file");
1116 $headerfile->setTitle($this->lng->txt(
"import_from_file"));
1117 $form_import_file->addItem($headerfile);
1119 $externalmails =
new ilFileInputGUI($this->lng->txt(
"externalmails"),
"externalmails");
1120 $externalmails->setInfo($this->lng->txt(
'externalmails_info'));
1121 $externalmails->setRequired(
true);
1122 $form_import_file->addItem($externalmails);
1123 if ($ilAccess->checkAccess(
"write",
"",
$_GET[
"ref_id"])) $form_import_file->addCommandButton(
"importExternalRecipientsFromFile", $this->lng->txt(
"import"));
1124 if ($ilAccess->checkAccess(
"write",
"",
$_GET[
"ref_id"])) $form_import_file->addCommandButton(
"codes", $this->lng->txt(
"cancel"));
1126 $this->tpl->setContent($form_import_file->getHTML());
1136 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
1138 $form_import_text->setFormAction($this->ctrl->getFormAction($this));
1139 $form_import_text->setTableWidth(
"100%");
1140 $form_import_text->setId(
"codes_import_text");
1143 $headertext->setTitle($this->lng->txt(
"import_from_text"));
1144 $form_import_text->addItem($headertext);
1147 if (array_key_exists(
'externaltext',
$_SESSION) && strlen(
$_SESSION[
'externaltext']))
1149 $inp->setValue(
$_SESSION[
'externaltext']);
1154 $inp->setValue(
"email;firstname;lastname\n" . $this->lng->txt(
'mail_import_example2') .
"\n" . $this->lng->txt(
'mail_import_example3') .
"\n");
1156 $inp->setRequired(
true);
1159 $inp->setInfo($this->lng->txt(
'externaltext_info'));
1160 $form_import_text->addItem($inp);
1163 if ($ilAccess->checkAccess(
"write",
"",
$_GET[
"ref_id"])) $form_import_text->addCommandButton(
"importExternalRecipientsFromText", $this->lng->txt(
"import"));
1164 if ($ilAccess->checkAccess(
"write",
"",
$_GET[
"ref_id"])) $form_import_text->addCommandButton(
"codes", $this->lng->txt(
"cancel"));
1166 $this->tpl->setContent($form_import_text->getHTML());
1191 $this->ctrl->setParameter($this,
"appr360", 1);
1193 include_once
'./Services/Search/classes/class.ilRepositorySearchGUI.php';
1198 'auto_complete_name' => $this->lng->txt(
'user'),
1199 'submit_name' => $this->lng->txt(
'add'),
1200 'add_search' =>
true,
1201 'add_from_container' => $this->ref_id
1206 include_once(
"./Services/Skill/classes/class.ilSkillManagementSettings.php");
1208 if ($this->object->get360SkillService() && $skmg_set->isActivated())
1210 $ilToolbar->addSeparator();
1211 $ilToolbar->addButton(
$lng->txt(
"survey_calc_skills"),
1212 $ilCtrl->getLinkTargetByClass(
"ilsurveyskilldeterminationgui"),
"");
1215 $ilToolbar->addSeparator();
1216 $ilToolbar->addButton($this->lng->txt(
'svy_delete_all_user_data'),
1217 $this->ctrl->getLinkTarget($this,
'deleteAllUserData'));
1219 $this->ctrl->setParameter($this,
"appr360",
"");
1221 include_once
"Modules/Survey/classes/tables/class.ilSurveyAppraiseesTableGUI.php";
1223 $tbl->setData($this->object->getAppraiseesData());
1224 $this->tpl->setContent(
$tbl->getHTML());
1229 if(
sizeof($a_user_ids))
1232 foreach(array_unique($a_user_ids) as $user_id)
1234 $this->
object->addAppraisee($user_id);
1239 $this->ctrl->redirect($this,
"listAppraisees");
1246 if(!
sizeof(
$_POST[
"appr_id"]))
1249 $this->ctrl->redirect($this,
"listAppraisees");
1252 $ilTabs->clearTargets();
1253 $ilTabs->setBackTarget($this->lng->txt(
"btn_back"),
1254 $this->ctrl->getLinkTarget($this,
"listAppraisees"));
1256 include_once(
"./Services/Utilities/classes/class.ilConfirmationGUI.php");
1258 $cgui->setHeaderText($this->lng->txt(
"survey_360_sure_delete_appraises"));
1260 $cgui->setFormAction($this->ctrl->getFormAction($this,
"deleteAppraisees"));
1261 $cgui->setCancel($this->lng->txt(
"cancel"),
"listAppraisees");
1262 $cgui->setConfirm($this->lng->txt(
"confirm"),
"deleteAppraisees");
1264 $data = $this->
object->getAppraiseesData();
1267 include_once
"Services/User/classes/class.ilUserUtil.php";
1268 foreach (
$_POST[
"appr_id"] as $id)
1270 if(isset(
$data[$id]) && !
$data[$id][
"closed"])
1280 $this->ctrl->redirect($this,
"listAppraisees");
1283 $this->tpl->setContent($cgui->getHTML());
1288 if(
sizeof(
$_POST[
"appr_id"]))
1290 $data = $this->
object->getAppraiseesData();
1292 foreach (
$_POST[
"appr_id"] as $id)
1295 if(isset(
$data[$id]) && !
$data[$id][
"closed"])
1297 $this->
object->deleteAppraisee($id);
1304 $this->ctrl->redirect($this,
"listAppraisees");
1311 if ($ilAccess->checkAccess(
"write",
"", $this->ref_id))
1313 $appr_id = $_REQUEST[
"appr_id"];
1316 $this->ctrl->redirect($this,
"listAppraisees");
1320 else if($this->object->get360Mode() &&
1321 $this->object->get360SelfRaters() &&
1322 $this->object->isAppraisee(
$ilUser->getId()) &&
1323 !$this->object->isAppraiseeClosed(
$ilUser->getId()))
1327 $this->ctrl->redirect($this->parent_gui,
"infoScreen");
1332 global $ilTabs, $ilToolbar, $ilAccess;
1336 $has_write = $ilAccess->checkAccess(
"write",
"", $this->ref_id);
1339 $ilTabs->clearTargets();
1340 $ilTabs->setBackTarget($this->lng->txt(
"btn_back"),
1341 $this->ctrl->getLinkTarget($this,
"listAppraisees"));
1344 $this->ctrl->setParameter($this,
"appr_id", $appr_id);
1345 $this->ctrl->setParameter($this,
"rate360", 1);
1347 include_once
'./Services/Search/classes/class.ilRepositorySearchGUI.php';
1352 'auto_complete_name' => $this->lng->txt(
'user'),
1353 'submit_name' => $this->lng->txt(
'add'),
1354 'add_search' =>
true,
1355 'add_from_container' => $this->ref_id
1359 $this->ctrl->setParameter($this,
"rate360",
"");
1361 $ilToolbar->addSeparator();
1363 $ilToolbar->addButton($this->lng->txt(
"survey_360_add_external_rater"),
1364 $this->ctrl->getLinkTarget($this,
"addExternalRaterForm"));
1367 require_once
"Services/Link/classes/class.ilLink.php";
1370 include_once
"Modules/Survey/classes/tables/class.ilSurveyAppraiseesTableGUI.php";
1372 $tbl->setData($this->object->getRatersData($appr_id));
1373 $this->tpl->setContent(
$tbl->getHTML());
1378 global $ilTabs, $ilAccess;
1381 $this->ctrl->setParameter($this,
"appr_id", $appr_id);
1383 $has_write = $ilAccess->checkAccess(
"write",
"", $this->ref_id);
1386 $ilTabs->clearTargets();
1387 $ilTabs->setBackTarget($this->lng->txt(
"btn_back"),
1388 $this->ctrl->getLinkTarget($this,
"editRaters"));
1396 $this->tpl->setContent($a_form->getHTML());
1401 include_once
"Services/User/classes/class.ilUserUtil.php";
1402 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
1404 $form->setFormAction($this->ctrl->getFormAction($this,
"addExternalRater"));
1405 $form->setTitle($this->lng->txt(
"survey_360_add_external_rater").
1406 ": ".ilUserUtil::getNamePresentation($appr_id));
1408 $email =
new ilEmailInputGUI($this->lng->txt(
"email"),
"email");
1409 $email->setRequired(
true);
1410 $form->addItem($email);
1412 $lname =
new ilTextInputGUI($this->lng->txt(
"lastname"),
"lname");
1413 $lname->setSize(30);
1414 $form->addItem($lname);
1416 $fname =
new ilTextInputGUI($this->lng->txt(
"firstname"),
"fname");
1417 $fname->setSize(30);
1418 $form->addItem($fname);
1420 $form->addCommandButton(
"addExternalRater", $this->lng->txt(
"save"));
1421 $form->addCommandButton(
"editRaters", $this->lng->txt(
"cancel"));
1428 $appr_id = $_REQUEST[
"appr_id"];
1431 $this->ctrl->redirect($this,
"listAppraisees");
1434 $this->ctrl->setParameter($this,
"appr_id", $appr_id);
1437 if($form->checkInput())
1440 "email" => $form->getInput(
"email"),
1441 "lastname" => $form->getInput(
"lname"),
1442 "firstname" => $form->getInput(
"fname")
1444 $anonymous_id = $this->
object->createSurveyCodesForExternalData(array(
$data));
1445 $anonymous_id = array_pop($anonymous_id);
1447 $this->
object->addRater($appr_id, 0, $anonymous_id);
1450 $this->ctrl->setParameter($this,
"appr_id", $appr_id);
1451 $this->ctrl->redirect($this,
"editRaters");
1454 $form->setValuesByPost();
1464 if(
sizeof($a_user_ids))
1467 foreach(array_unique($a_user_ids) as $user_id)
1469 if($ilAccess->checkAccess(
"write",
"", $this->ref_id) ||
1470 $this->object->get360SelfEvaluation() ||
1473 if ($appr_id != $user_id)
1475 $this->
object->addRater($appr_id, $user_id);
1486 $this->ctrl->setParameter($this,
"appr_id", $appr_id);
1487 $this->ctrl->redirect($this,
"editRaters");
1495 $this->ctrl->setParameter($this,
"appr_id", $appr_id);
1496 if(!
sizeof(
$_POST[
"rtr_id"]))
1499 $this->ctrl->redirect($this,
"editRaters");
1502 $ilTabs->clearTargets();
1503 $ilTabs->setBackTarget($this->lng->txt(
"btn_back"),
1504 $this->ctrl->getLinkTarget($this,
"editRaters"));
1506 include_once
"Services/User/classes/class.ilUserUtil.php";
1507 include_once(
"./Services/Utilities/classes/class.ilConfirmationGUI.php");
1509 $cgui->setHeaderText(
sprintf($this->lng->txt(
"survey_360_sure_delete_raters"),
1512 $cgui->setFormAction($this->ctrl->getFormAction($this,
"deleteRaters"));
1513 $cgui->setCancel($this->lng->txt(
"cancel"),
"editRaters");
1514 $cgui->setConfirm($this->lng->txt(
"confirm"),
"deleteRaters");
1516 $data = $this->
object->getRatersData($appr_id);
1518 foreach (
$_POST[
"rtr_id"] as $id)
1520 if(isset(
$data[$id]))
1522 $cgui->addItem(
"rtr_id[]", $id,
$data[$id][
"lastname"].
", ".
1523 $data[$id][
"firstname"].
" (".
$data[$id][
"email"].
")");
1527 $this->tpl->setContent($cgui->getHTML());
1533 $this->ctrl->setParameter($this,
"appr_id", $appr_id);
1535 if(
sizeof(
$_POST[
"rtr_id"]))
1537 $data = $this->
object->getRatersData($appr_id);
1539 foreach (
$_POST[
"rtr_id"] as $id)
1541 if(isset(
$data[$id]))
1543 if(substr($id, 0, 1) ==
"u")
1545 $this->
object->deleteRater($appr_id, substr($id, 1));
1549 $this->
object->deleteRater($appr_id, 0, substr($id, 1));
1557 $this->ctrl->redirect($this,
"editRaters");
1564 if($this->object->get360SelfAppraisee() &&
1565 !$this->object->isAppraisee(
$ilUser->getId()))
1567 $this->
object->addAppraisee($ilUser->getId());
1570 $this->ctrl->redirect($this->parent_gui,
"infoScreen");
1575 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
1577 $form->setFormAction($this->ctrl->getFormAction($this,
"mailRatersAction"));
1578 $form->setTitle($this->lng->txt(
'compose'));
1580 $all_data = $this->
object->getRatersData($appr_id);
1581 $rec_data = array();
1582 foreach($rec_ids as $rec_id)
1584 if(isset($all_data[$rec_id]))
1586 $rec_data[] = $all_data[$rec_id][
"lastname"].
", ".
1587 $all_data[$rec_id][
"firstname"].
1588 " (".$all_data[$rec_id][
"email"].
")";
1593 $rec->setHTML(implode(
"<br />", $rec_data));
1594 $form->addItem($rec);
1596 $subject =
new ilTextInputGUI($this->lng->txt(
'subject'),
'subject');
1597 $subject->setSize(50);
1598 $subject->setRequired(
true);
1599 $form->addItem($subject);
1601 $existingdata = $this->
object->getExternalCodeRecipients();
1602 $existingcolumns = array();
1603 if (count($existingdata))
1605 $first = array_shift($existingdata);
1606 foreach ($first as $key => $value)
1608 if (strcmp($key,
'code') != 0 && strcmp($key,
'email') != 0 && strcmp($key,
'sent') != 0) array_push($existingcolumns,
'[' . $key .
']');
1612 $mailmessage_u =
new ilTextAreaInputGUI($this->lng->txt(
'survey_360_rater_message_content_registered'),
'message_u');
1613 $mailmessage_u->setRequired(
true);
1614 $mailmessage_u->setCols(80);
1615 $mailmessage_u->setRows(10);
1616 $form->addItem($mailmessage_u);
1618 $mailmessage_a =
new ilTextAreaInputGUI($this->lng->txt(
'survey_360_rater_message_content_anonymous'),
'message_a');
1619 $mailmessage_a->setRequired(
true);
1620 $mailmessage_a->setCols(80);
1621 $mailmessage_a->setRows(10);
1622 $mailmessage_a->setInfo(
sprintf($this->lng->txt(
'message_content_info'), join($existingcolumns,
', ')));
1623 $form->addItem($mailmessage_a);
1626 $recf->setValue(implode(
";", $rec_ids));
1627 $form->addItem($recf);
1629 $form->addCommandButton(
"mailRatersAction", $this->lng->txt(
"send"));
1630 $form->addCommandButton(
"editRaters", $this->lng->txt(
"cancel"));
1632 $subject->setValue(
sprintf($this->lng->txt(
'survey_360_rater_subject_default'), $this->object->getTitle()));
1633 $mailmessage_u->setValue($this->lng->txt(
'survey_360_rater_message_content_registered_default'));
1634 $mailmessage_a->setValue($this->lng->txt(
'survey_360_rater_message_content_anonymous_default'));
1646 $this->ctrl->setParameter($this,
"appr_id", $appr_id);
1648 if(!
sizeof(
$_POST[
"rtr_id"]))
1651 $this->ctrl->redirect($this,
"editRaters");
1657 $ilTabs->clearTargets();
1658 $ilTabs->setBackTarget($this->lng->txt(
"btn_back"),
1659 $this->ctrl->getLinkTarget($this,
"editRaters"));
1661 $this->tpl->setContent($a_form->getHTML());
1669 $this->ctrl->setParameter($this,
"appr_id", $appr_id);
1671 $rec_ids = explode(
";",
$_POST[
"rtr_id"]);
1672 if(!
sizeof($rec_ids))
1674 $this->ctrl->redirect($this,
"editRaters");
1678 if($form->checkInput())
1680 $txt_u = $form->getInput(
"message_u");
1681 $txt_a = $form->getInput(
"message_a");
1682 $subj = $form->getInput(
"subject");
1685 $sender_id = (trim(
$ilUser->getEmail()))
1687 : ANONYMOUS_USER_ID;
1689 include_once
"./Services/Mail/classes/class.ilMail.php";
1691 $all_data = $this->
object->getRatersData($appr_id);
1692 foreach($rec_ids as $rec_id)
1694 if(isset($all_data[$rec_id]))
1697 $user = $all_data[$rec_id];
1700 if(substr($rec_id, 0, 1) ==
"a")
1703 $url = $user[
"href"];
1704 $rcp = $user[
"email"];
1710 $user[
"code"] = $this->lng->txt(
"survey_code_mail_on_demand");
1712 $rcp = $user[
"login"];
1715 $mytxt = str_replace(
"[lastname]", $user[
"lastname"], $mytxt);
1716 $mytxt = str_replace(
"[firstname]", $user[
"firstname"], $mytxt);
1717 $mytxt = str_replace(
"[url]",
$url, $mytxt);
1718 $mytxt = str_replace(
"[code]", $user[
"code"], $mytxt);
1720 $mail =
new ilMail($sender_id);
1731 $this->
object->set360RaterSent($appr_id,
1732 (substr($rec_id, 0, 1) ==
"a") ? 0 : (
int)substr($rec_id, 1),
1733 (substr($rec_id, 0, 1) ==
"u") ? 0 : (
int)substr($rec_id, 1));
1738 $this->ctrl->redirect($this,
"editRaters");
1741 $form->setValuesByPost();
1749 $ilTabs->clearTargets();
1750 $ilTabs->setBackTarget($this->lng->txt(
"menuback"),
1751 $this->ctrl->getLinkTarget($this->parent_gui,
"infoScreen"));
1753 if(!$this->object->isAppraisee(
$ilUser->getId()))
1755 $this->ctrl->redirect($this->parent_gui,
"infoScreen");
1758 include_once(
"./Services/Utilities/classes/class.ilConfirmationGUI.php");
1760 $cgui->setHeaderText($this->lng->txt(
"survey_360_sure_appraisee_close"));
1762 $cgui->setFormAction($this->ctrl->getFormAction($this,
"appraiseeClose"));
1763 $cgui->setCancel($this->lng->txt(
"cancel"),
"confirmAppraiseeCloseCancel");
1764 $cgui->setConfirm($this->lng->txt(
"confirm"),
"appraiseeClose");
1766 $tpl->setContent($cgui->getHTML());
1771 $this->ctrl->redirect($this->parent_gui,
"infoScreen");
1778 if(!$this->object->isAppraisee(
$ilUser->getId()))
1780 $this->ctrl->redirect($this->parent_gui,
"infoScreen");
1783 $this->
object->closeAppraisee($ilUser->getId());
1785 $this->ctrl->redirect($this->parent_gui,
"infoScreen");
1794 $appr_ids =
$_POST[
"appr_id"];
1796 if(!
sizeof($appr_ids))
1799 $this->ctrl->redirect($this,
"listAppraisees");
1802 include_once(
"./Services/Utilities/classes/class.ilConfirmationGUI.php");
1804 $cgui->setHeaderText($this->lng->txt(
"survey_360_sure_appraisee_close_admin"));
1806 $cgui->setFormAction($this->ctrl->getFormAction($this,
"adminAppraiseesClose"));
1807 $cgui->setCancel($this->lng->txt(
"cancel"),
"listAppraisees");
1808 $cgui->setConfirm($this->lng->txt(
"confirm"),
"adminAppraiseesClose");
1810 include_once
"Services/User/classes/class.ilUserUtil.php";
1811 foreach($appr_ids as $appr_id)
1816 $tpl->setContent($cgui->getHTML());
1823 $appr_ids =
$_POST[
"appr_id"];
1825 if(!
sizeof($appr_ids))
1828 $this->ctrl->redirect($this,
"listAppraisees");
1831 $appr_data = $this->
object->getAppraiseesData();
1832 foreach($appr_ids as $appr_id)
1834 if(isset($appr_data[$appr_id]) && !$appr_data[$appr_id][
"closed"])
1836 $this->
object->closeAppraisee($appr_id);
1840 ilUtil::sendSuccess($this->lng->txt(
"survey_360_appraisee_close_action_success_admin"),
true);
1841 $this->ctrl->redirect($this,
"listAppraisees");
1850 $this->ctrl->redirect($this,
"maintenance");
1856 include_once
"Services/UIComponent/Button/classes/class.ilLinkButton.php";
1858 $button->setCaption(
"print");
1859 $button->setOnClick(
"window.print(); return false;");
1860 $button->setOmitPreventDoubleSubmission(
true);
1861 $ilToolbar->addButtonInstance($button);
1863 include_once
"Modules/Survey/classes/tables/class.ilSurveyParticipantsTableGUI.php";
1865 $this->tpl->setContent(
$tbl->getHTML());
sprintf('%.4f', $callTime)
date( 'd-M-Y', $objPHPExcel->getProperties() ->getCreated())
An exception for terminatinating execution or to throw for unit testing.
Confirmation screen class.
@classDescription Date and time handling
static _getStaticLink($a_ref_id, $a_type='', $a_fallback_goto=true, $append="")
Get static link.
This class handles base functions for mail handling.
const MODE_PREDEFINED_USERS
This class represents an option in a radio group.
static fillAutoCompleteToolbar($parent_object, ilToolbarGUI $toolbar=null, $a_options=array(), $a_sticky=false)
fill toolbar with
Settings template application class.
Skill management settings.
Class ilSurveyParticipantsGUI.
exportCodesObject()
Exports a list of survey codes.
cancelDeleteAllUserDataObject()
Cancels delete of all user data in maintenance.
mailRatersObject(ilPropertyFormGUI $a_form=null)
importExternalRecipientsFromFileObject()
saveInvitationStatusObject()
Saves the status of the invitation tab.
deleteSavedMessageObject()
deleteCodesConfirmObject()
confirmAppraiseeCloseObject()
deleteAllUserDataObject()
Creates a confirmation form for delete all user data.
addAppraisee($a_user_ids)
setCodesSubtabs()
Set the tabs for the access codes section.
maintenanceObject()
Participants maintenance.
importExternalMailRecipientsFromFileFormObject()
addExternalRaterFormObject(ilPropertyFormGUI $a_form=null)
importExternalMailRecipientsFromTextFormObject()
__construct(ilObjSurveyGUI $a_parent_gui, $a_has_write_access)
confirmAppraiseeCloseCancelObject()
inviteObject()
Creates the output for user/group invitation to a survey.
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.
_convertCharset($a_string, $a_from_charset="", $a_to_charset="UTF-8")
exportAllCodesObject()
Exports all survey codes.
initMailRatersForm($appr_id, array $rec_ids)
deleteCodesObject()
Delete a list of survey codes.
confirmDeleteAppraiseesObject()
disinviteUserGroupObject()
Disinvite users or groups from a survey.
deleteSingleUserResultsObject()
Asks for a confirmation to delete selected user data of the test object.
setCodeLanguageObject()
Change survey language for direct access URL's.
importAccessCodesObject()
Import codes from export codes file (upload form)
confirmAdminAppraiseesCloseObject()
adminAppraiseesCloseObject()
cancelDeleteSelectedUserDataObject()
Cancels the deletion of all user data for the test object.
initExternalRaterForm($appr_id)
confirmDeleteRatersObject()
inviteUserGroupObject($a_user_ids=array())
Invite users or groups to a survey.
confirmDeleteSelectedUserDataObject()
Deletes all user data for the test object.
importExternalRecipientsFromTextObject()
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)
Default behaviour is:
static sendQuestion($a_info="", $a_keep=false)
Send Question to Screen.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static deliverData($a_data, $a_filename, $mime="application/octet-stream", $charset="")
deliver data for download via browser.
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
for($i=1; $i<=count($kw_cases_sel); $i+=1) $lang
if(!is_array($argv)) $options