5 require_once
'./Services/User/classes/class.ilObjUser.php';
6 require_once
"Services/Mail/classes/class.ilMailbox.php";
7 require_once
"Services/Mail/classes/class.ilFormatMail.php";
8 require_once
"Services/Contact/classes/class.ilAddressbook.php";
9 require_once
"Services/Contact/classes/class.ilAddressbookTableGUI.php";
37 $this->tabs_gui =& $ilTabs;
39 $this->ctrl->saveParameter($this,
"mobj_id");
50 $forward_class = $this->ctrl->getNextClass($this);
53 $this->umail->savePostData($ilUser->getId(), array(),
'',
'',
'',
'',
'',
'',
'',
'');
55 switch($forward_class)
58 include_once
'Services/Mail/classes/class.ilMailFormGUI.php';
62 case 'ilmailsearchcoursesgui':
63 include_once
'Services/Contact/classes/class.ilMailSearchCoursesGUI.php';
65 $this->tabs_gui->setSubTabActive(
'mail_my_courses');
67 $this->ctrl->setReturn($this,
"showAddressbook");
71 case 'ilmailsearchgroupsgui':
72 include_once
'Services/Contact/classes/class.ilMailSearchGroupsGUI.php';
74 $this->tabs_gui->setSubTabActive(
'mail_my_groups');
76 $this->ctrl->setReturn($this,
"showAddressbook");
80 case 'ilmailinglistsgui':
81 include_once
'Services/Contact/classes/class.ilMailingListsGUI.php';
83 $this->tabs_gui->setSubTabActive(
'mail_my_mailing_lists');
85 $this->ctrl->setReturn($this,
"showAddressbook");
90 $this->tabs_gui->setSubTabActive(
'mail_my_entries');
92 if (!(
$cmd = $this->ctrl->getCmd()))
94 $cmd =
"showAddressbook";
109 if (!strcmp(trim(
$_POST[
"login"]),
"") &&
110 !strcmp(trim(
$_POST[
"email"]),
""))
115 else if (
$_POST[
"login"] !=
"" &&
121 else if (
$_POST[
"email"] &&
129 (($this->existingEntry != $addr_id && $addr_id > 0) || !$addr_id))
135 return $error ?
false :
true;
147 if (
$_GET[
"addr_id"])
184 $addr_ids = ((int)
$_GET[
'addr_id']) ? array((
int)
$_GET[
'addr_id']) :
$_POST[
'addr_id'];
193 include_once(
"Services/Utilities/classes/class.ilConfirmationGUI.php");
197 $c_gui->setFormAction($this->ctrl->getFormAction($this,
"performDelete"));
198 $c_gui->setHeaderText($this->lng->txt(
"mail_sure_delete_entry"));
199 $c_gui->setCancel($this->lng->txt(
"cancel"),
"showAddressbook");
200 $c_gui->setConfirm($this->lng->txt(
"confirm"),
"performDelete");
203 foreach($addr_ids as $addr_id)
205 $entry = $this->abook->getEntry($addr_id);
206 $c_gui->addItem(
"addr_id[]", $addr_id, $entry[
"login"] ? $entry[
"login"] : $entry[
"email"]);
209 $this->tpl->setVariable(
"HEADER", $this->lng->txt(
"mail"));
210 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.mail_addressbook.html",
"Services/Contact");
211 $this->tpl->setVariable(
'DELETE_CONFIRMATION', $c_gui->getHTML());
225 if (is_array(
$_POST[
'addr_id']))
227 if ($this->abook->deleteEntries(
$_POST[
'addr_id']))
256 global $rbacsystem,
$lng, $ilUser;
258 $this->tpl->setVariable(
"HEADER", $this->lng->txt(
"mail"));
259 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.mail_addressbook_form.html",
"Services/Contact");
261 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
263 $form->setTitle(
$_GET[
'addr_id'] ? $lng->txt(
"mail_edit_entry") : $lng->txt(
"mail_new_entry"));
265 if (
$_GET[
'addr_id'])
267 $this->ctrl->setParameter($this,
'addr_id',
$_GET[
'addr_id']);
270 $entry = $this->abook->getEntry(
$_GET[
'addr_id']);
271 $form->setFormAction($this->ctrl->getFormAction($this,
"saveEntry"));
273 $formItem =
new ilTextInputGUI($this->lng->txt(
"username"),
"login");
275 $form->addItem($formItem);
277 $formItem =
new ilTextInputGUI($this->lng->txt(
"firstname"),
"firstname");
279 $form->addItem($formItem);
281 $formItem =
new ilTextInputGUI($this->lng->txt(
"lastname"),
"lastname");
283 $form->addItem($formItem);
285 $formItem =
new ilTextInputGUI($this->lng->txt(
"email"),
"email");
287 $form->addItem($formItem);
289 $form->addCommandButton(
'saveEntry',$this->lng->txt(
'save'));
290 $form->addCommandButton(
'cancel',$this->lng->txt(
'cancel'));
292 $this->tpl->setVariable(
'FORM', $form->getHTML());
303 if (
$_GET[
'addr_id'] && is_array(
$_GET[
'addr_id']))
304 $addr_ids =
$_GET[
'addr_id'];
305 else if ((
int)
$_GET[
'addr_id'])
306 $addr_ids = array((
int)$_GET[
'addr_id']);
307 else if (
$_POST[
'addr_id'] && is_array(
$_POST[
'addr_id']))
308 $addr_ids =
$_POST[
'addr_id'];
309 else if ((
int)
$_POST[
'addr_id'])
310 $addr_ids = array((
int)$_POST[
'addr_id']);
321 $mail_data = $this->umail->getSavedData();
322 if(!is_array($mail_data))
324 $this->umail->savePostData($ilUser->getId(), array(),
'',
'',
'',
'',
'',
'',
'',
'');
328 foreach ($addr_ids as $addr_id)
330 $entry = $this->abook->getEntry($addr_id);
332 if(strlen($entry[
'login']) && !$this->umail->doesRecipientStillExists($entry[
'login'], $mail_data[
'rcp_to'])) {
333 $members[] = $entry[
'login'];
334 }
else if(strlen($entry[
'email']) && !$this->umail->doesRecipientStillExists($entry[
'email'], $mail_data[
'rcp_to'])) {
335 $members[] = $entry[
'email'];
341 $mail_data = $this->umail->appendSearchResult($members,
'to');
342 $this->umail->savePostData(
343 $mail_data[
'user_id'],
344 $mail_data[
'attachments'],
345 $mail_data[
'rcp_to'],
346 $mail_data[
'rcp_cc'],
347 $mail_data[
'rcp_bcc'],
348 $mail_data[
'm_type'],
349 $mail_data[
'm_email'],
350 $mail_data[
'm_subject'],
351 $mail_data[
'm_message'],
352 $mail_data[
'use_placeholders']
373 global $rbacsystem,
$lng, $ilUser,
$ilCtrl, $ilias;
375 $this->tpl->setVariable(
"HEADER", $this->lng->txt(
"mail"));
376 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.mail_addressbook.html",
"Services/Contact");
379 include_once
"Services/Mail/classes/class.ilMail.php";
381 $mailing_allowed = $rbacsystem->checkAccess(
'mail_visible',$mail->getMailObjectReferenceId());
384 include_once(
'./Services/Form/classes/class.ilPropertyFormGUI.php');
385 include_once
'Services/YUI/classes/class.ilYuiUtil.php';
388 $searchform->setFormAction($this->ctrl->getFormAction($this,
"saveEntry"));
391 $dsSchema = array(
"resultsList" =>
'response.results',
392 "fields" => array(
'login',
'firstname',
'lastname'));
393 $dsFormatCallback =
'formatAutoCompleteResults';
394 $dsDataLink = $ilCtrl->getLinkTarget($this,
'lookupAddressbookAsync',
'',
true,
false);
396 $inp =
new ilTextInputGUI($this->lng->txt(
'search_for'),
'search_qry');
398 $inp->setDataSourceSchema($dsSchema);
399 $inp->setDataSourceResultFormat($dsFormatCallback);
401 $searchform->addItem($inp);
402 $searchform->addCommandButton(
'search', $this->lng->txt(
"send"));
403 $this->tpl->setVariable(
'SEARCHFORM', $searchform->getHtml());
406 $this->tpl->setVariable(
'ACTION', $this->ctrl->getFormAction($this,
"saveEntry"));
407 $this->tpl->setVariable(
"TXT_SEARCH_FOR",$this->lng->txt(
"search_for"));
408 $this->tpl->setVariable(
"BUTTON_SEARCH",$this->lng->txt(
"send"));
410 if (strlen(trim(
$_SESSION[
"addr_search"])) > 0)
416 $tbl->setTitle($lng->txt(
"mail_addr_entries"));
417 $tbl->setRowTemplate(
"tpl.mail_addressbook_row.html",
"Services/Contact");
419 $tbl->setDefaultOrderField(
'login');
422 $this->abook->setSearchQuery(
$_SESSION[
'addr_search']);
423 $entries = $this->abook->getEntries();
425 $tbl->addColumn(
'',
'check',
'10%',
true);
426 $tbl->addColumn($this->lng->txt(
'login'),
'login',
'20%');
427 $tbl->addColumn($this->lng->txt(
'firstname'),
'firstname',
'20%');
428 $tbl->addColumn($this->lng->txt(
'lastname'),
'lastname',
'20%');
429 $tbl->addColumn($this->lng->txt(
'email'),
'email',
'20%');
430 $tbl->addColumn($this->lng->txt(
'actions'),
'',
'10%');
432 include_once(
"./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
436 $tbl->enable(
'select_all');
437 $tbl->setSelectAllCheckbox(
'addr_id');
440 $chat_active = $ilias->getSetting(
"chat_active");
443 foreach ($entries as $entry)
447 $this->ctrl->setParameter($this,
'addr_id', $entry[
'addr_id']);
449 if ($entry[
"login"] !=
"")
451 if ($mailing_allowed)
453 $result[$counter][
'login_linked_link'] = $this->ctrl->getLinkTarget($this,
'mailToUsers');
454 $result[$counter][
'login_linked_login'] = $entry[
"login"];
457 $result[$counter][
'login_unliked'] = $entry[
"login"];
460 $result[$counter][
'firstname'] = $entry[
"firstname"];
461 $result[$counter][
'lastname'] = $entry[
"lastname"];
463 if (
$_GET[
"baseClass"] ==
"ilMailGUI" && $rbacsystem->checkAccess(
"smtp_mail", $this->umail->getMailObjectReferenceId()))
465 $result[$counter][
'email_linked_email'] = $entry[
"email"];
466 $result[$counter][
'email_linked_link'] = $this->ctrl->getLinkTarget($this,
"mailToUsers");
469 $result[$counter][
'email_unlinked'] = $entry[
"email"] ? $entry[
"email"] :
" ";
472 $current_selection_list->setListTitle($this->lng->txt(
"actions"));
473 $current_selection_list->setId(
"act_".$counter);
475 $current_selection_list->addItem($this->lng->txt(
"edit"),
'', $this->ctrl->getLinkTarget($this,
"showAddressForm"));
477 if ($mailing_allowed)
478 $current_selection_list->addItem($this->lng->txt(
"send_mail_to"),
'', $this->ctrl->getLinkTarget($this,
"mailToUsers"));
480 $current_selection_list->addItem($this->lng->txt(
"delete"),
'', $this->ctrl->getLinkTarget($this,
"confirmDelete"));
483 $current_selection_list->addItem($this->lng->txt(
"invite_to_chat"),
'', $this->ctrl->getLinkTarget($this,
"inviteToChat"));
485 $this->ctrl->clearParameters($this);
487 $result[$counter][
'COMMAND_SELECTION_LIST'] = $current_selection_list->getHTML();
491 if ($mailing_allowed)
492 $tbl->addMultiCommand(
'mailToUsers', $this->lng->txt(
'send_mail_to'));
494 $tbl->addMultiCommand(
'confirmDelete', $this->lng->txt(
'delete'));
497 $tbl->addMultiCommand(
'inviteToChat', $this->lng->txt(
'invite_to_chat'));
501 $tbl->disable(
'header');
502 $tbl->disable(
'footer');
504 $tbl->setNoEntriesText($this->lng->txt(
'mail_search_no'));
509 $tbl->addCommandButton(
'showAddressForm', $this->lng->txt(
'add'));
511 $this->tpl->setVariable(
'TABLE', $tbl->getHTML());
528 $addr_ids = ((int)
$_GET[
'addr_id']) ? array((
int)
$_GET[
'addr_id']) :
$_POST[
'addr_id'];
534 ilUtil::redirect($ilCtrl->getLinkTarget($this,
'showAddressbook',
'',
false,
false));
543 foreach($addr_ids as $id)
545 $entry = $this->abook->getEntry($id);
548 if (!$entry[
'login'])
555 if (count($no_login))
557 $message .= $lng->txt(
'chat_users_without_login') .
':<br>';
559 foreach($no_login as $e)
561 $list .=
'<li>'.$this->abook->entryToString($e).
'</li>';
572 include_once
'Modules/Chat/classes/class.ilChatRoom.php';
573 include_once
'Modules/Chat/classes/class.ilObjChat.php';
574 include_once
'Modules/Chat/classes/class.ilObjChatGUI.php';
575 include_once
'Modules/Chat/classes/class.ilChatBlockedUsers.php';
580 foreach($chat_rooms as $room)
588 foreach($rooms as $k => $v) {
589 $titel[$k] = strtolower($v[
'title']);
591 array_multisort($titel, SORT_STRING, $rooms);
594 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
597 $form->setTitle($lng->txt(
"mail_invite_users_to_chat"));
600 foreach($rooms as $room)
606 $options[
$ref_id] = $room[
'title'];
607 foreach($room[
'subrooms'] as $subroom)
610 $options[
$ref_id.
','.$subroom[
'room_id']] =
'+ '.$subroom[
'title'];
614 $form->addItem($psel);
616 $phidden->setValue(join(
',', $addr_ids));
617 $form->addItem($phidden);
618 $form->addCommandButton(
'submitInvitation',$this->lng->txt(
'submit'));
619 $form->addCommandButton(
'cancel',$this->lng->txt(
'cancel'));
620 $form->setFormAction($ilCtrl->getFormAction($this));
623 $tpl->setTitle($lng->txt(
'mail_invite_users_to_chat'));
624 $tpl->setContent($form->getHtml());
634 global $ilObjDataCache, $ilUser,
$ilCtrl, $rbacsystem,
$lng, $ilias;
646 $_POST[
'addr_id'] = explode(
',', $_POST[
"addr_ids"]);
652 $ids = explode(
',',
$_POST[
"addr_ids"]);
656 $chat_ids = explode(
',',
$_POST[
'room_id']);
657 $chat_id = (int)$chat_ids[0];
660 if (count($chat_ids) > 0)
662 $room_id = (int)$chat_ids[1];
668 include_once
'Modules/Chat/classes/class.ilChatRoom.php';
669 include_once
'Modules/Chat/classes/class.ilObjChat.php';
670 include_once
'Modules/Chat/classes/class.ilObjChatGUI.php';
671 include_once
'Modules/Chat/classes/class.ilChatBlockedUsers.php';
673 $obj_id = $ilObjDataCache->lookupObjId($chat_id);
677 $room->setRoomId((
int)$room_id);
680 $no_access = array();
686 $valid_users = array();
690 $entry = $this->abook->getEntry($id);
695 $user_id = $ilUser->getUserIdByLogin($entry[
'login']);
697 !$rbacsystem->checkAccessOfUser($user_id,
'read', $chat_id)
705 $valid_users[] = $user_id;
716 if (count($no_access) || count($no_login))
720 if (count($no_access))
722 $message .= $lng->txt(
'chat_users_without_permission') .
':<br>';
724 foreach($no_access as $e)
726 $list .=
'<li>'.$this->abook->entryToString($e).
'</li>';
734 if (count($no_login))
736 $message .= $lng->txt(
'chat_users_without_login') .
':<br>';
738 foreach($no_login as $e)
740 $list .=
'<li>'.$this->abook->entryToString($e).
'</li>';
754 foreach($valid_users as $id)
757 $chatObject->sendMessageForRoom($id, $room);
759 $link =
'<p><a target="chatframe" href="ilias.php?baseClass=ilChatPresentationGUI&ref_id='.$chat_id.
'&room_id='.$room_id.
'">'.$lng->txt(
'goto_invitation_chat').
'</a></p>';
760 ilUtil::sendInfo($lng->txt(
'chat_users_have_been_invited') . $userlist .$link,
true);
761 $link = $ilCtrl->getLinkTarget($this,
'showAddressbook',
'',
false,
false);
767 include_once
'Services/JSON/classes/class.ilJsonUtil.php';
768 include_once
'Services/Contact/classes/class.ilMailAddressbook.php';
770 $search =
"%" .
$_REQUEST[
"query"] .
"%";
772 $result->response =
new stdClass();
773 $result->response->results = array();
782 $result = $mailAdrBookObj->getAddressbookAsync($search);
790 $this->tabs_gui->addSubTabTarget(
'mail_my_entries', $this->ctrl->getLinkTarget($this));
791 $this->tabs_gui->addSubTabTarget(
'mail_my_mailing_lists', $this->ctrl->getLinkTargetByClass(
'ilmailinglistsgui'));
792 $this->tabs_gui->addSubTabTarget(
'mail_my_courses', $this->ctrl->getLinkTargetByClass(
'ilmailsearchcoursesgui'));
793 $this->tabs_gui->addSubTabTarget(
'mail_my_groups', $this->ctrl->getLinkTargetByClass(
'ilmailsearchgroupsgui'));