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 if(is_array(
$_POST[
'attachments']))
118 foreach(
$_POST[
'attachments'] as $value)
120 if(is_file($this->mfile->getMailPath() .
'/' . $ilUser->getId() .
"_" . urldecode($value)))
122 $files[] = urldecode($value);
131 $f_message = $this->umail->formatLinebreakMessage($f_message);
133 $this->umail->setSaveInSentbox(
true);
135 $m_type = isset(
$_POST[
"m_type"]) ?
$_POST[
"m_type"] : array(
"normal");
138 if($errorMessage = $this->umail->sendMail(
150 if(is_array(
$_POST[
'attachments']))
152 foreach(
$_POST[
'attachments'] as $key => $value)
154 if(is_file($this->mfile->getMailPath() .
'/' . $ilUser->getId() .
"_" . urldecode($value)))
156 $_POST[
'attachments'][$key] = urldecode($value);
160 unset(
$_POST[
'attachments'][$key]);
168 $this->umail->savePostData($ilUser->getId(), array(),
"",
"",
"",
"",
"",
"",
"",
"");
170 $this->ctrl->setParameterByClass(
'ilmailgui',
'type',
'message_sent');
178 $this->ctrl->redirectByClass(
'ilmailgui');
188 $_POST[
'm_subject'] =
'No title';
191 $draftsId = $this->mbox->getDraftsFolder();
195 if(is_array(
$_POST[
'attachments']))
197 foreach(
$_POST[
'attachments'] as $value)
199 $files[] = urldecode($value);
206 $this->umail->updateDraft($draftsId, $files,
217 #session_unregister("draft"); 218 #ilUtil::sendInfo($this->lng->txt("mail_saved"),true); 219 #ilUtil::redirect("ilias.php?baseClass=ilMailGUI&mobj_id=".$mbox->getInboxFolder()); 221 unset($_SESSION[
"draft"]);
227 $this->ctrl->redirectByClass(
"ilmailfoldergui");
231 if ($this->umail->sendInternalMail($draftsId,
$_SESSION[
"AccountId"],$files,
247 #$this->ctrl->setParameterByClass("ilmailfoldergui", "mobj_id", $this->mbox->getDraftsFolder()); 252 $this->ctrl->redirectByClass(
"ilmailfoldergui");
267 $this->tpl->setTitle($this->lng->txt(
"mail"));
273 if(is_array(
$_POST[
'attachments']))
275 foreach(
$_POST[
'attachments'] as $value)
277 $files[] = urldecode($value);
282 $this->umail->savePostData($ilUser->getId(),
294 include_once
'Services/Form/classes/class.ilPropertyFormGUI.php';
296 $form->setId(
'search_rcp');
297 $form->setTitle($this->lng->txt(
'search_recipients'));
298 $form->setFormAction($ilCtrl->getFormAction($this,
'search'));
300 $inp =
new ilTextInputGUI($this->lng->txt(
"search_for"),
'search');
302 $dsDataLink = $ilCtrl->getLinkTarget($this,
'lookupRecipientAsync',
'',
true);
303 $inp->setDataSource($dsDataLink);
305 if (strlen(trim(
$_SESSION[
"mail_search_search"])) > 0)
309 $form->addItem($inp);
311 $form->addCommandButton(
'search', $this->lng->txt(
"search"));
312 $form->addCommandButton(
'cancelSearch', $this->lng->txt(
"cancel"));
314 $this->tpl->setContent($form->getHtml());
323 $this->saveMailBeforeSearch();
327 $this->ctrl->setParameterByClass(
'ilmailsearchcoursesgui',
'cmd',
'showMembers');
330 $this->ctrl->setParameterByClass(
'ilmailsearchcoursesgui',
'ref',
'mail');
331 $this->ctrl->redirectByClass(
'ilmailsearchcoursesgui');
339 $this->saveMailBeforeSearch();
341 $this->ctrl->setParameterByClass(
'ilmailsearchgroupsgui',
'ref',
'mail');
342 $this->ctrl->redirectByClass(
'ilmailsearchgroupsgui');
348 if(strlen(trim(
$_SESSION[
"mail_search_search"])) == 0)
355 if(strlen(trim(
$_SESSION[
"mail_search_search"])) < 3)
357 $this->lng->loadLanguageModule(
'search');
363 $this->ctrl->setParameterByClass(
"ilmailsearchgui",
"search", urlencode(
$_SESSION[
"mail_search_search"]));
364 $this->ctrl->redirectByClass(
"ilmailsearchgui");
379 if(is_array(
$_POST[
'attachments']))
381 foreach(
$_POST[
'attachments'] as $value)
383 $files[] = urldecode($value);
388 $this->umail->savePostData(
$_SESSION[
"AccountId"],
400 $this->ctrl->redirectByClass(
"ilmailattachmentgui");
405 $_GET[
"type"] =
"attach";
411 $_GET[
"type"] =
"search_res";
417 $_GET[
"type"] =
"new";
423 $_GET[
"type"] =
"role";
429 $_GET[
"type"] =
"reply";
435 $_GET[
"type"] =
"attach";
443 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.mail_new.html",
"Services/Mail");
444 $this->tpl->setTitle($this->lng->txt(
"mail"));
446 $this->lng->loadLanguageModule(
"crs");
449 $ilTabs->setBackTarget($lng->txt(
'back'), $ilCtrl->getLinkTarget($this,
'cancelMail'));
451 switch(
$_GET[
"type"])
458 $mailData = $this->umail->getMail(
$_GET[
"mail_id"]);
459 $mailData[
"m_subject"] = $this->umail->formatReplySubject();
460 $mailData[
"m_message"] = $this->umail->formatReplyMessage();
461 $mailData[
"m_message"] = $this->umail->prependSignature();
463 $mailData[
"attachments"] = array();
465 $mailData[
"rcp_cc"] =
'';
466 $mailData[
"rcp_to"] = $this->umail->formatReplyRecipient();
471 $mailData = $this->umail->getSavedData();
482 $mailData = $this->umail->appendSearchResult(
$_SESSION[
"mail_search_results_to"],
'to');
486 $mailData = $this->umail->appendSearchResult(
$_SESSION[
"mail_search_results_cc"],
'cc');
490 $mailData = $this->umail->appendSearchResult(
$_SESSION[
"mail_search_results_bcc"],
'bc');
493 unset(
$_SESSION[
"mail_search_results_to"]);
494 unset(
$_SESSION[
"mail_search_results_cc"]);
495 unset(
$_SESSION[
"mail_search_results_bcc"]);
500 $mailData = $this->umail->getSavedData();
505 $mailData = $this->umail->getMail(
$_GET[
"mail_id"]);
509 $mailData = $this->umail->getMail(
$_GET[
"mail_id"]);
510 $mailData[
"rcp_to"] = $mailData[
"rcp_cc"] = $mailData[
"rcp_bcc"] =
'';
511 $mailData[
"m_subject"] = $this->umail->formatForwardSubject();
512 $mailData[
"m_message"] = $this->umail->prependSignature();
513 if(count($mailData[
"attachments"]))
515 if($error = $this->mfile->adoptAttachments($mailData[
"attachments"],
$_GET[
"mail_id"]))
530 $mailData[
"rcp_to"] =
$_SESSION[
'rcp_to'];
539 $mailData[
"rcp_cc"] =
$_SESSION[
'rcp_cc'];
548 $mailData[
"rcp_bcc"] =
$_SESSION[
'rcp_bcc'];
550 $mailData[
'm_message'] =
'';
553 $mailData[
'm_message'] = $sig;
554 $mailData[
'm_message'] .= chr(13).chr(10).chr(13).chr(10);
556 $mailData[
'm_message'] .= $this->umail->appendSignature();
565 if(is_array(
$_POST[
'roles']))
570 elseif(is_array(
$_SESSION[
'mail_roles']))
575 $mailData[
'm_message'] =
'';
578 $mailData[
'm_message'] = $sig;
579 $mailData[
'm_message'] .= chr(13).chr(10).chr(13).chr(10);
582 $mailData[
'm_message'] .=
$_POST[
"additional_message_text"].chr(13).chr(10).$this->umail->appendSignature();
583 $_POST[
"additional_message_text"] =
"";
588 $mailData[
"rcp_to"] = urldecode(
$_GET[
"rcp"]);
596 foreach ($mailData as $key => $value)
598 if (is_string($value))
607 include_once(
'./Services/Form/classes/class.ilPropertyFormGUI.php');
610 $form_gui->setTitle($this->lng->txt(
'compose'));
611 $form_gui->setOpenTag(
false);
612 $this->tpl->setVariable(
'FORM_ACTION', $this->ctrl->getFormAction($this,
'sendMessage'));
614 $this->tpl->setVariable(
'BUTTON_TO', $lng->txt(
"search_recipients"));
615 $this->tpl->setVariable(
'BUTTON_COURSES_TO', $lng->txt(
"mail_my_courses"));
616 $this->tpl->setVariable(
'BUTTON_GROUPS_TO', $lng->txt(
"mail_my_groups"));
617 $this->tpl->setVariable(
'BUTTON_MAILING_LISTS_TO', $lng->txt(
"mail_my_mailing_lists"));
619 $dsDataLink = $ilCtrl->getLinkTarget($this,
'lookupRecipientAsync',
'',
true);
625 $inp->setValue($mailData[
"rcp_to"]);
626 $inp->setDataSource($dsDataLink,
",");
627 $inp->setMaxLength(null);
628 $form_gui->addItem($inp);
633 $inp->setValue($mailData[
"rcp_cc"]);
634 $inp->setDataSource($dsDataLink,
",");
635 $inp->setMaxLength(null);
636 $form_gui->addItem($inp);
641 $inp->setValue($mailData[
"rcp_bcc"]);
642 $inp->setDataSource($dsDataLink,
",");
643 $inp->setMaxLength(null);
644 $form_gui->addItem($inp);
647 $inp =
new ilTextInputGUI($this->lng->txt(
'subject'),
'm_subject');
649 $inp->setRequired(
true);
650 $inp->setValue($mailData[
"m_subject"]);
651 $form_gui->addItem($inp);
654 include_once
'Services/Mail/classes/class.ilMailFormAttachmentFormPropertyGUI.php';
658 if (is_array($mailData[
"attachments"]) && count($mailData[
"attachments"]))
660 foreach($mailData[
"attachments"] as
$data)
662 if(is_file($this->mfile->getMailPath() .
'/' . $ilUser->getId() .
"_" .
$data))
665 $form_gui->addItem($hidden);
666 $size = filesize($this->mfile->getMailPath() .
'/' . $ilUser->getId() .
"_" .
$data);
668 $att->addItem($label);
669 $hidden->setValue(urlencode($data));
673 $form_gui->addItem($att);
676 if($rbacsystem->checkAccess(
"system_message",$this->umail->getMailObjectReferenceId()))
680 $chb->setValue(
'system');
681 $chb->setChecked(
false);
682 if(is_array($mailData[
"m_type"]) and in_array(
'system',$mailData[
"m_type"]))
684 $chb->setChecked(
true);
686 $form_gui->addItem($chb);
693 $inp->
setValue($mailData[
"m_message"]);
694 $inp->setRequired(
false);
699 $chb =
new ilCheckboxInputGUI($this->lng->txt(
'activate_serial_letter_placeholders'),
'use_placeholders');
700 $chb->
setOptionTitle($this->lng->txt(
'activate_serial_letter_placeholders'));
702 $chb->setChecked(
false);
703 $form_gui->addItem($inp);
705 include_once
'Services/Mail/classes/class.ilMailFormPlaceholdersPropertyGUI.php';
708 $chb->addSubItem($prop);
710 if ($mailData[
'use_placeholders'])
712 $chb->setChecked(
true);
715 $form_gui->addItem($chb);
717 $form_gui->addCommandButton(
'sendMessage', $this->lng->txt(
'send_mail'));
718 $form_gui->addCommandButton(
'saveDraft', $this->lng->txt(
'save_message'));
720 $form_gui->addCommandButton(
'cancelMail', $this->lng->txt(
'cancel'));
722 $this->tpl->parseCurrentBlock();
724 $this->tpl->setVariable(
'FORM', $form_gui->getHTML());
726 $this->tpl->addJavaScript(
'Services/Mail/js/ilMailComposeFunctions.js');
732 include_once
'Services/JSON/classes/class.ilJsonUtil.php';
733 include_once
'Services/Mail/classes/class.ilMailForm.php';
745 $quoted = str_replace(
'%',
'\%', $quoted);
746 $quoted = str_replace(
'_',
'\_', $quoted);
749 $result = $mailFormObj->getRecipientAsync(
"%" .$quoted.
"%", $search);
766 protected function saveMailBeforeSearch()
775 if(is_array(
$_POST[
'attachments']))
777 foreach(
$_POST[
'attachments'] as $value)
779 $files[] = urldecode($value);
783 $this->umail->savePostData($ilUser->getId(),
801 $this->saveMailBeforeSearch();
803 $this->ctrl->setParameterByClass(
'ilmailinglistsgui',
'ref',
'mail');
804 $this->ctrl->redirectByClass(
'ilmailinglistsgui');
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.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static encode($mixed, $suppress_native=false)
setSize($a_size)
Set Size.
This class represents a text property in a property form.
while($lm_rec=$ilDB->fetchAssoc($lm_set)) $data
This class represents a text area property in a property form.
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
static redirect($a_script)
http redirect to other script