19 declare(strict_types=1);
36 if (!method_exists($parentGui,
'executeCommand')) {
38 'Parameter $parentGui must be ilCtrlInterface enabled by implementing executeCommand(), %s given.',
46 $this->positiveCmd = $positiveCmd;
48 $this->default_auto_responder_absence_end_ts = time() + 8640;
53 protected function init(): void
56 $this->
setFormAction($this->
ctrl->getFormAction($this->parentGui, $this->positiveCmd));
58 if ($this->options->maySeeIndividualTransportSettings()) {
60 $this->
lng->txt(
'mail_incoming'),
64 $this->
addItem($incoming_mail_gui);
68 $absence->setInfo($this->
lng->txt(
'mail_absence_status_info'));
69 $absence->setValue(
"1");
70 $this->
lng->loadLanguageModule(
'dateplaner');
73 $duration->setStartText($this->
lng->txt(
'mail_absent_from'));
74 $duration->setEndText($this->
lng->txt(
'mail_absent_until'));
76 $auto_responder_subject =
new ilTextInputGUI($this->
lng->txt(
'mail_absence_auto_responder_subject'),
'absence_auto_responder_subject');
77 $auto_responder_subject->setMaxLength(200);
78 $auto_responder_subject->setRequired(
true);
79 $auto_responder_body =
new ilTextAreaInputGUI($this->
lng->txt(
'mail_absence_auto_responder_body'),
'absence_auto_responder_body');
80 $idle_time = (
int) $this->
settings->get(
'mail_auto_responder_idle_time', (
string) AutoresponderService::AUTO_RESPONDER_DEFAULT_IDLE_TIME);
81 if ($idle_time === 1) {
82 $auto_responder_body->setInfo($this->
lng->txt(
'mail_absence_auto_responder_body_info_single_day'));
84 $auto_responder_body->setInfo(sprintf($this->
lng->txt(
'mail_absence_auto_responder_body_info'), $idle_time));
86 $auto_responder_body->setRequired(
true);
87 $auto_responder_body->setCols(60);
88 $auto_responder_body->setRows(10);
90 $absence->addSubItem($auto_responder_subject);
91 $absence->addSubItem($auto_responder_body);
99 if ($this->
settings->get(
'mail_notification',
'0')) {
101 $this->
lng->txt(
'cron_mail_notification'),
102 'cronjob_notification' 104 $cb->setInfo($this->
lng->txt(
'mail_cronjob_notification_info'));
118 if ($this->options->mayModifyIndividualTransportSettings()) {
119 $incoming_type = (
int) $this->
getInput(
'incoming_type');
121 $mail_address_option = $this->options->getEmailAddressMode();
122 switch ($incoming_type) {
124 $mail_address_option = (
int) $this->
getInput(
'mail_address_option');
128 $mail_address_option = (
int) $this->
getInput(
'mail_address_option_both');
132 $incoming_type = $this->options->getIncomingType();
133 $mail_address_option = $this->options->getEmailAddressMode();
137 $absence_status = (bool) $this->
getInput(
'absence_status');
138 $old_absence_status = $this->options->getAbsenceStatus();
139 if (!$absence_status && $old_absence_status) {
140 $this->autoResponderRepository->deleteBySenderId($this->
user->getId());
142 $this->options->setAbsenceStatus((
bool) $this->
getInput(
'absence_status'));
143 if ($absence_duration && $absence_duration->getStart() && $absence_duration->getEnd()) {
144 $this->options->setAbsentFrom($absence_duration->getStart()->get(
IL_CAL_UNIX));
145 $this->options->setAbsentUntil($absence_duration->getEnd()->get(
IL_CAL_UNIX));
147 $this->options->setAbsenceAutoresponderSubject($this->
getInput(
'absence_auto_responder_subject'));
148 $this->options->setAbsenceAutoresponderBody($this->
getInput(
'absence_auto_responder_body'));
150 $this->options->setSignature($this->
getInput(
'signature'));
151 $this->options->setIsCronJobNotificationStatus((
bool) $this->
getInput(
'cronjob_notification'));
152 $this->options->setIncomingType($incoming_type);
153 $this->options->setEmailAddressMode($mail_address_option);
155 $this->options->updateOptions();
163 'signature' => $this->options->getSignature(),
164 'cronjob_notification' => $this->options->isCronJobNotificationEnabled(),
165 'absence_status' => $this->options->getAbsenceStatus(),
166 'absence_duration' => [
170 'absence_auto_responder_subject' => $this->options->getAbsenceAutoresponderSubject(),
171 'absence_auto_responder_body' => $this->options->getAbsenceAutoresponderBody(),
174 if ($this->options->maySeeIndividualTransportSettings()) {
175 $data[
'incoming_type'] = $this->options->getIncomingType();
177 $mail_address_option = $this->options->getEmailAddressMode();
179 $data[
'mail_address_option'] = $mail_address_option;
180 $data[
'mail_address_option_both'] = $mail_address_option;
final const INCOMING_EMAIL
__construct(Container $dic, ilPlugin $plugin)
This class represents a text area property in a property form.
final const INCOMING_BOTH