4 require_once
'Services/User/classes/class.ilObjUser.php';
5 require_once
'Services/Mail/classes/class.ilMailbox.php';
6 require_once
'Services/Mail/classes/class.ilFormatMail.php';
7 require_once
'./Services/Mail/classes/class.ilFileDataMail.php';
8 require_once
'Services/Mail/classes/class.ilMailFormCall.php';
37 $this->mbox =
new ilMailBox($ilUser->getId());
41 $_GET[
'mobj_id'] = $_POST[
'mobj_id'];
44 if(!(
int)
$_GET[
'mobj_id'])
46 $_GET[
'mobj_id'] = $this->mbox->getInboxFolder();
49 $this->ctrl->saveParameter($this,
'mobj_id');
54 $forward_class = $this->ctrl->getNextClass($this);
55 switch($forward_class)
57 case 'ilmailfoldergui':
58 include_once
'Services/Mail/classes/class.ilMailFolderGUI.php';
63 case 'ilmailattachmentgui':
64 include_once
'Services/Mail/classes/class.ilMailAttachmentGUI.php';
66 $this->ctrl->setReturn($this,
"returnFromAttachments");
70 case 'ilmailsearchgui':
71 include_once
'Services/Contact/classes/class.ilMailSearchGUI.php';
73 $this->ctrl->setReturn($this,
"searchResults");
77 case 'ilmailsearchcoursesgui':
78 include_once
'Services/Contact/classes/class.ilMailSearchCoursesGUI.php';
80 $this->ctrl->setReturn($this,
"searchResults");
84 case 'ilmailinglistsgui':
85 include_once
'Services/Contact/classes/class.ilMailingListsGUI.php';
87 $this->ctrl->setReturn($this,
'searchResults');
91 case 'ilmailsearchgroupsgui':
92 include_once
'Services/Contact/classes/class.ilMailSearchGroupsGUI.php';
94 $this->ctrl->setReturn($this,
"searchResults");
99 if (!(
$cmd = $this->ctrl->getCmd()))
116 $decodedFiles = array();
118 foreach($files as $value)
120 if(is_file($this->mfile->getMailPath() .
'/' .
$GLOBALS[
'ilUser']->getId() .
'_' . urldecode($value)))
122 $decodedFiles[] = urldecode($value);
126 return $decodedFiles;
136 $message = str_replace(
"\r",
'', $message);
138 $message = $this->umail->formatLinebreakMessage($message);
140 $this->umail->setSaveInSentbox(
true);
142 $m_type = isset(
$_POST[
"m_type"]) ?
$_POST[
"m_type"] : array(
"normal");
145 if($errorMessage = $this->umail->sendMail(
152 (
int)
$_POST[
'use_placeholders']
156 $_POST[
'attachments'] = $files;
161 $this->umail->savePostData($ilUser->getId(), array(),
"",
"",
"",
"",
"",
"",
"",
"");
163 $this->ctrl->setParameterByClass(
'ilmailgui',
'type',
'message_sent');
171 $this->ctrl->redirectByClass(
'ilmailgui');
181 $_POST[
'm_subject'] =
'No title';
184 $draftFolderId = $this->mbox->getDraftsFolder();
187 if($errorMessage = $this->umail->validateRecipients(
193 $_POST[
'attachments'] = $files;
206 $draftId = $this->umail->getNewDraftId(
$GLOBALS[
'ilUser']->getId(), $draftFolderId);
209 $this->umail->updateDraft($draftFolderId, $files,
218 (
int)
$_POST[
'use_placeholders'],
228 $this->ctrl->redirectByClass(
"ilmailfoldergui");
237 $this->tpl->setTitle($this->lng->txt(
"mail"));
243 if(is_array(
$_POST[
'attachments']))
245 foreach(
$_POST[
'attachments'] as $value)
247 $files[] = urldecode($value);
252 $this->umail->savePostData($ilUser->getId(),
266 include_once
'Services/Form/classes/class.ilPropertyFormGUI.php';
268 $form->setId(
'search_rcp');
269 $form->setTitle($this->lng->txt(
'search_recipients'));
270 $form->setFormAction($ilCtrl->getFormAction($this,
'search'));
272 $inp =
new ilTextInputGUI($this->lng->txt(
"search_for"),
'search');
274 $dsDataLink = $ilCtrl->getLinkTarget($this,
'lookupRecipientAsync',
'',
true,
false);
275 $inp->setDataSource($dsDataLink);
277 if (strlen(trim(
$_SESSION[
"mail_search_search"])) > 0)
281 $form->addItem($inp);
283 $form->addCommandButton(
'search', $this->lng->txt(
"search"));
284 $form->addCommandButton(
'cancelSearch', $this->lng->txt(
"cancel"));
286 $this->tpl->setContent($form->getHtml());
295 $this->saveMailBeforeSearch();
299 $this->ctrl->setParameterByClass(
'ilmailsearchcoursesgui',
'cmd',
'showMembers');
302 $this->ctrl->setParameterByClass(
'ilmailsearchcoursesgui',
'ref',
'mail');
303 $this->ctrl->redirectByClass(
'ilmailsearchcoursesgui');
311 $this->saveMailBeforeSearch();
313 $this->ctrl->setParameterByClass(
'ilmailsearchgroupsgui',
'ref',
'mail');
314 $this->ctrl->redirectByClass(
'ilmailsearchgroupsgui');
320 if(strlen(trim(
$_SESSION[
"mail_search_search"])) == 0)
327 if(strlen(trim(
$_SESSION[
"mail_search_search"])) < 3)
329 $this->lng->loadLanguageModule(
'search');
335 $this->ctrl->setParameterByClass(
"ilmailsearchgui",
"search", urlencode(
$_SESSION[
"mail_search_search"]));
336 $this->ctrl->redirectByClass(
"ilmailsearchgui");
351 if(is_array(
$_POST[
'attachments']))
353 foreach(
$_POST[
'attachments'] as $value)
355 $files[] = urldecode($value);
360 $this->umail->savePostData(
$_SESSION[
"AccountId"],
374 $this->ctrl->redirectByClass(
"ilmailattachmentgui");
379 $_GET[
"type"] =
"attach";
385 $_GET[
"type"] =
"search_res";
391 $_GET[
"type"] =
"new";
397 $_GET[
"type"] =
"role";
403 $_GET[
"type"] =
"reply";
409 $_GET[
"type"] =
"attach";
418 require_once
'Services/JSON/classes/class.ilJsonUtil.php';
420 if(!isset(
$_GET[
'template_id']))
427 require_once
'Services/Mail/classes/class.ilMailTemplateService.php';
428 require_once
'Services/Mail/classes/class.ilMailTemplateDataProvider.php';
431 $template = $template_provider->getTemplateById(
$template_id);
434 'm_subject' => $template->getSubject(),
435 'm_message' => $template->getMessage()
444 public function showForm()
451 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.mail_new.html",
"Services/Mail");
452 $this->tpl->setTitle($this->lng->txt(
"mail"));
454 $this->lng->loadLanguageModule(
"crs");
457 $ilTabs->setBackTarget($lng->txt(
'back'), $ilCtrl->getLinkTarget($this,
'cancelMail'));
459 switch(
$_GET[
"type"])
466 $mailData = $this->umail->getMail(
$_GET[
"mail_id"]);
467 $mailData[
"m_subject"] = $this->umail->formatReplySubject();
468 $mailData[
"m_message"] = $this->umail->formatReplyMessage();
469 $mailData[
"m_message"] = $this->umail->prependSignature();
471 $mailData[
"attachments"] = array();
473 $mailData[
"rcp_cc"] =
'';
474 $mailData[
"rcp_to"] = $this->umail->formatReplyRecipient();
479 $mailData = $this->umail->getSavedData();
490 $mailData = $this->umail->appendSearchResult(
$_SESSION[
"mail_search_results_to"],
'to');
494 $mailData = $this->umail->appendSearchResult(
$_SESSION[
"mail_search_results_cc"],
'cc');
498 $mailData = $this->umail->appendSearchResult(
$_SESSION[
"mail_search_results_bcc"],
'bc');
501 unset(
$_SESSION[
"mail_search_results_to"]);
502 unset(
$_SESSION[
"mail_search_results_cc"]);
503 unset(
$_SESSION[
"mail_search_results_bcc"]);
508 $mailData = $this->umail->getSavedData();
513 $mailData = $this->umail->getMail(
$_GET[
"mail_id"]);
519 $mailData = $this->umail->getMail(
$_GET[
"mail_id"]);
520 $mailData[
"rcp_to"] = $mailData[
"rcp_cc"] = $mailData[
"rcp_bcc"] =
'';
521 $mailData[
"m_subject"] = $this->umail->formatForwardSubject();
522 $mailData[
"m_message"] = $this->umail->prependSignature();
523 if(count($mailData[
"attachments"]))
525 if($error = $this->mfile->adoptAttachments($mailData[
"attachments"],
$_GET[
"mail_id"]))
540 $mailData[
"rcp_to"] =
$_SESSION[
'rcp_to'];
549 $mailData[
"rcp_cc"] =
$_SESSION[
'rcp_cc'];
558 $mailData[
"rcp_bcc"] =
$_SESSION[
'rcp_bcc'];
560 $mailData[
'm_message'] =
'';
563 $mailData[
'm_message'] = $sig;
564 $mailData[
'm_message'] .= chr(13).chr(10).chr(13).chr(10);
566 $mailData[
'm_message'] .= $this->umail->appendSignature();
575 if(is_array(
$_POST[
'roles']))
580 elseif(is_array(
$_SESSION[
'mail_roles']))
585 $mailData[
'm_message'] =
'';
588 $mailData[
'm_message'] = $sig;
589 $mailData[
'm_message'] .= chr(13).chr(10).chr(13).chr(10);
592 $mailData[
'm_message'] .=
$_POST[
"additional_message_text"].chr(13).chr(10).$this->umail->appendSignature();
593 $_POST[
"additional_message_text"] =
"";
598 $mailData[
"rcp_to"] = urldecode(
$_GET[
"rcp"]);
606 foreach ($mailData as $key => $value)
608 if (is_string($value))
617 include_once(
'./Services/Form/classes/class.ilPropertyFormGUI.php');
620 $form_gui->setTitle($this->lng->txt(
'compose'));
621 $form_gui->setId(
'mail_compose_form');
622 $form_gui->setName(
'mail_compose_form');
623 $form_gui->setFormAction($this->ctrl->getFormAction($this,
'sendMessage'));
625 $this->tpl->setVariable(
'FORM_ID', $form_gui->getId());
627 require_once
'Services/UIComponent/Button/classes/class.ilButton.php';
630 $btn->setForm(
'form_' . $form_gui->getName())
631 ->setName(
'searchUsers')
632 ->setCaption(
'search_recipients');
633 $ilToolbar->addStickyItem($btn);
637 ->setName(
'searchCoursesTo')
638 ->setForm(
'form_' . $form_gui->getName())
639 ->setCaption(
'mail_my_courses');
640 $ilToolbar->addButtonInstance($btn);
644 ->setName(
'searchGroupsTo')
645 ->setForm(
'form_' . $form_gui->getName())
646 ->setCaption(
'mail_my_groups');
647 $ilToolbar->addButtonInstance($btn);
651 ->setName(
'searchMailingListsTo')
652 ->setForm(
'form_' . $form_gui->getName())
653 ->setCaption(
'mail_my_mailing_lists');
654 $ilToolbar->addButtonInstance($btn);
656 $dsDataLink = $ilCtrl->getLinkTarget($this,
'lookupRecipientAsync',
'',
true);
662 $inp->setValue($mailData[
"rcp_to"]);
663 $inp->setDataSource($dsDataLink,
",");
664 $inp->setMaxLength(null);
665 $form_gui->addItem($inp);
670 $inp->setValue($mailData[
"rcp_cc"]);
671 $inp->setDataSource($dsDataLink,
",");
672 $inp->setMaxLength(null);
673 $form_gui->addItem($inp);
678 $inp->setValue($mailData[
"rcp_bcc"]);
679 $inp->setDataSource($dsDataLink,
",");
680 $inp->setMaxLength(null);
681 $form_gui->addItem($inp);
684 $inp =
new ilTextInputGUI($this->lng->txt(
'subject'),
'm_subject');
686 $inp->setRequired(
true);
687 $inp->setValue($mailData[
"m_subject"]);
688 $form_gui->addItem($inp);
691 include_once
'Services/Mail/classes/class.ilMailFormAttachmentFormPropertyGUI.php';
694 if (is_array($mailData[
"attachments"]) && count($mailData[
"attachments"]))
696 foreach($mailData[
"attachments"] as
$data)
698 if(is_file($this->mfile->getMailPath() .
'/' . $ilUser->getId() .
"_" .
$data))
701 $form_gui->addItem($hidden);
702 $size = filesize($this->mfile->getMailPath() .
'/' . $ilUser->getId() .
"_" .
$data);
704 $att->addItem($label);
705 $hidden->setValue(urlencode($data));
709 $form_gui->addItem($att);
712 if($rbacsystem->checkAccess(
"system_message",$this->umail->getMailObjectReferenceId()))
716 $chb->setValue(
'system');
717 $chb->setChecked(
false);
718 if(is_array($mailData[
"m_type"]) and in_array(
'system',$mailData[
"m_type"]))
720 $chb->setChecked(
true);
722 $form_gui->addItem($chb);
730 $mailData[
'use_placeholders'] =
true;
733 require_once
'Services/Mail/classes/class.ilMailTemplateService.php';
736 require_once
'Services/Mail/classes/class.ilMailTemplateDataProvider.php';
738 $templates = $template_provider->getTemplateByContexId($context->getId());
740 if(count($templates))
743 foreach($templates as $template)
745 $options[$template->getTplId()] = $template->getTitle();
749 require_once
'Services/Mail/classes/Form/class.ilMailTemplateSelectInputGUI.php';
751 $this->lng->txt(
'mail_template_client'),
753 $this->ctrl->getLinkTarget($this,
'getTemplateDataById',
'',
true,
false),
754 array(
'm_subject',
'm_message')
756 $template_chb->
setInfo($this->lng->txt(
'mail_template_client_info'));
757 $template_chb->setOptions(array(
'' => $this->lng->txt(
'please_choose')) +
$options);
758 $form_gui->addItem($template_chb);
763 require_once
'./Services/Logging/classes/public/class.ilLoggerFactory.php';
764 ilLoggerFactory::getLogger(
'mail')->error(sprintf(
'%s has been called with invalid context id: %s.', __METHOD__, $context_id));
769 require_once
'Services/Mail/classes/class.ilMailTemplateGenericContext.php';
776 $inp->
setValue($mailData[
"m_message"]);
777 $inp->setRequired(
false);
780 $form_gui->addItem($inp);
783 $chb =
new ilCheckboxInputGUI($this->lng->txt(
'mail_serial_letter_placeholders'),
'use_placeholders');
784 $chb->
setOptionTitle($this->lng->txt(
'activate_serial_letter_placeholders'));
786 if(isset($mailData[
'use_placeholders']) && $mailData[
'use_placeholders'])
788 $chb->setChecked(
true);
791 require_once
'Services/Mail/classes/Form/class.ilManualPlaceholderInputGUI.php';
793 foreach($context->getPlaceholders() as $key => $value)
795 $placeholders->
addPlaceholder($value[
'placeholder'], $value[
'label'] );
797 $chb->addSubItem($placeholders);
798 $form_gui->addItem($chb);
800 $form_gui->addCommandButton(
'sendMessage', $this->lng->txt(
'send_mail'));
801 $form_gui->addCommandButton(
'saveDraft', $this->lng->txt(
'save_message'));
803 $form_gui->addCommandButton(
'cancelMail', $this->lng->txt(
'cancel'));
805 $this->tpl->parseCurrentBlock();
807 $this->tpl->setVariable(
'FORM', $form_gui->getHTML());
809 $this->tpl->addJavaScript(
'Services/Mail/js/ilMailComposeFunctions.js');
815 include_once
'Services/JSON/classes/class.ilJsonUtil.php';
816 include_once
'Services/Mail/classes/class.ilMailForm.php';
828 $quoted = str_replace(
'%',
'\%', $quoted);
829 $quoted = str_replace(
'_',
'\_', $quoted);
843 return $this->showForm();
849 protected function saveMailBeforeSearch()
858 if(is_array(
$_POST[
'attachments']))
860 foreach(
$_POST[
'attachments'] as $value)
862 $files[] = urldecode($value);
866 $this->umail->savePostData($ilUser->getId(),
886 $this->saveMailBeforeSearch();
888 $this->ctrl->setParameterByClass(
'ilmailinglistsgui',
'ref',
'mail');
889 $this->ctrl->redirectByClass(
'ilmailinglistsgui');
895 require_once
'Services/Mail/classes/class.ilMailTemplateService.php';
896 require_once
'Services/Mail/classes/Form/class.ilManualPlaceholderInputGUI.php';
899 foreach($context->getPlaceholders() as $key => $value)
901 $placeholders->addPlaceholder($value[
'placeholder'], $value[
'label'] );
903 $placeholders->render(
true);
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms public
static securePlainString($a_str)
Remove unsecure characters from a plain text string.
This class handles all operations on files (attachments) in directory ilias_data/mail.
setValue($a_value)
Set Value.
Class ilMailTemplateDataProvider.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static encode($mixed, $suppress_native=false)
if(!is_array($argv)) $options
setSize($a_size)
Set Size.
This class represents a text property in a property form.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
This class represents a text area property in a property form.
static getLogger($a_component_id)
Get component logger.
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
static redirect($a_script)
http redirect to other script
static getTemplateContextById($a_id)