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';
67 $this->ctrl->setReturn($this,
"showAddressbook");
71 case 'ilmailsearchgroupsgui':
72 include_once
'Services/Contact/classes/class.ilMailSearchGroupsGUI.php';
76 $this->ctrl->setReturn($this,
"showAddressbook");
80 case 'ilmailinglistsgui':
81 include_once
'Services/Contact/classes/class.ilMailingListsGUI.php';
85 $this->ctrl->setReturn($this,
"showAddressbook");
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->setTitle($this->lng->txt(
"mail_addressbook"));
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']))
258 $this->tpl->setTitle($this->lng->txt(
"mail_addressbook"));
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']
375 $this->tpl->setTitle($this->lng->txt(
"mail_addressbook"));
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(
'internal_mail',$mail->getMailObjectReferenceId());
384 include_once(
'./Services/Form/classes/class.ilPropertyFormGUI.php');
386 $searchform->setFormAction($this->ctrl->getFormAction($this,
"saveEntry"));
388 $dsDataLink = $ilCtrl->getLinkTarget($this,
'lookupAddressbookAsync',
'',
true,
false);
389 $inp =
new ilTextInputGUI($this->lng->txt(
'search_for'),
'search_qry');
392 $searchform->addItem($inp);
393 $searchform->addCommandButton(
'search', $this->lng->txt(
"send"));
394 $this->tpl->setVariable(
'SEARCHFORM', $searchform->getHtml());
397 $this->tpl->setVariable(
'ACTION', $this->ctrl->getFormAction($this,
"saveEntry"));
398 $this->tpl->setVariable(
"TXT_SEARCH_FOR",$this->lng->txt(
"search_for"));
399 $this->tpl->setVariable(
"BUTTON_SEARCH",$this->lng->txt(
"send"));
401 if (strlen(trim(
$_SESSION[
"addr_search"])) > 0)
407 $tbl->setTitle($lng->txt(
"mail_addr_entries"));
408 $tbl->setRowTemplate(
"tpl.mail_addressbook_row.html",
"Services/Contact");
410 $tbl->setDefaultOrderField(
'login');
413 $this->abook->setSearchQuery(
$_SESSION[
'addr_search']);
414 $entries = $this->abook->getEntries();
416 $tbl->addColumn(
'',
'check',
'10%',
true);
417 $tbl->addColumn($this->lng->txt(
'login'),
'login',
'20%');
418 $tbl->addColumn($this->lng->txt(
'firstname'),
'firstname',
'20%');
419 $tbl->addColumn($this->lng->txt(
'lastname'),
'lastname',
'20%');
420 $tbl->addColumn($this->lng->txt(
'email'),
'email',
'20%');
421 $tbl->addColumn($this->lng->txt(
'actions'),
'',
'10%');
423 include_once(
"./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
427 $tbl->enable(
'select_all');
428 $tbl->setSelectAllCheckbox(
'addr_id');
430 $chatSettings =
new ilSetting(
'chatroom');
431 $chat_active = $chatSettings->get(
"chat_enabled",
false);
435 foreach ($entries as $entry)
439 $this->ctrl->setParameter($this,
'addr_id', $entry[
'addr_id']);
441 $result[$counter][
'login'] =
'';
442 if($entry[
"login"] !=
"")
446 $result[$counter][
'login_linked_link'] = $this->ctrl->getLinkTarget($this,
'mailToUsers');
447 $result[$counter][
'login'] =
$result[$counter][
'login_linked_login'] = $entry[
"login"];
451 $result[$counter][
'login'] =
$result[$counter][
'login_unliked'] = $entry[
"login"];
455 $result[$counter][
'firstname'] = $entry[
"firstname"];
456 $result[$counter][
'lastname'] = $entry[
"lastname"];
458 if(
$_GET[
"baseClass"] ==
"ilMailGUI" && $rbacsystem->checkAccess(
"smtp_mail", $this->umail->getMailObjectReferenceId()))
460 $result[$counter][
'email'] =
$result[$counter][
'email_linked_email'] = $entry[
"email"];
461 $result[$counter][
'email_linked_link'] = $this->ctrl->getLinkTarget($this,
"mailToUsers");
465 $result[$counter][
'email'] =
$result[$counter][
'email_unlinked'] = $entry[
"email"];
469 $current_selection_list->setListTitle($this->lng->txt(
"actions"));
470 $current_selection_list->setId(
"act_".$counter);
472 $current_selection_list->addItem($this->lng->txt(
"edit"),
'', $this->ctrl->getLinkTarget($this,
"showAddressForm"));
474 if ($mailing_allowed)
475 $current_selection_list->addItem($this->lng->txt(
"send_mail_to"),
'', $this->ctrl->getLinkTarget($this,
"mailToUsers"));
477 $current_selection_list->addItem($this->lng->txt(
"delete"),
'', $this->ctrl->getLinkTarget($this,
"confirmDelete"));
480 $current_selection_list->addItem($this->lng->txt(
"invite_to_chat"),
'', $this->ctrl->getLinkTarget($this,
"inviteToChat"));
482 $this->ctrl->clearParameters($this);
484 $result[$counter][
'COMMAND_SELECTION_LIST'] = $current_selection_list->getHTML();
488 if ($mailing_allowed)
489 $tbl->addMultiCommand(
'mailToUsers', $this->lng->txt(
'send_mail_to'));
491 $tbl->addMultiCommand(
'confirmDelete', $this->lng->txt(
'delete'));
494 $tbl->addMultiCommand(
'inviteToChat', $this->lng->txt(
'invite_to_chat'));
498 $tbl->disable(
'header');
499 $tbl->disable(
'footer');
501 $tbl->setNoEntriesText($this->lng->txt(
'mail_search_no'));
506 $tbl->addCommandButton(
'showAddressForm', $this->lng->txt(
'add'));
508 $this->tpl->setVariable(
'TABLE', $tbl->getHTML());
521 public function inviteToChat()
531 $lng->loadLanguageModule(
'chatroom');
533 $addr_ids = ((int)
$_GET[
'addr_id']) ? array((
int)
$_GET[
'addr_id']) :
$_POST[
'addr_id'];
538 $ilCtrl->redirect($this,
'showAddressbook');
543 foreach($addr_ids as $id)
545 $entry = $this->abook->getEntry($id);
554 $message = $lng->txt(
'chat_users_without_login') .
':<br>';
557 foreach($no_login as $e)
559 $list .=
'<li>' . $this->abook->entryToString($e) .
'</li>';
567 $ilCtrl->redirect($this,
'showAddressbook');
570 include_once
'Modules/Chatroom/classes/class.ilChatroom.php';
573 $chat_rooms = $ilChatroom->getAllRooms($ilUser->getId());
576 foreach($chat_rooms as $room_id =>
$title)
578 $subrooms[] = $ilChatroom->getPrivateSubRooms($room_id, $ilUser->getId());
581 include_once
'Services/Form/classes/class.ilPropertyFormGUI.php';
584 $form->setTitle($lng->txt(
'mail_invite_users_to_chat'));
589 foreach($chat_rooms as $room_id => $room)
593 if($ilChatroom->isUserBanned($ilUser->getId()))
600 foreach($subrooms as $subroom)
602 foreach($subroom as $sub_id => $parent_id)
613 $psel->setOptions($options);
614 $form->addItem($psel);
616 $phidden->setValue(implode(
',', $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));
622 $tpl->setTitle($lng->txt(
'mail_invite_users_to_chat'));
623 $tpl->setContent($form->getHtml());
631 public function submitInvitation()
643 $ilCtrl->redirect($this,
'showAddressbook');
649 $_POST[
'addr_id'] = explode(
',', $_POST[
'addr_ids']);
650 $this->inviteToChat();
655 $ids = explode(
',',
$_POST[
'addr_ids']);
658 $room_ids = explode(
',',
$_POST[
'room_id']);
659 $room_id = (int)$room_ids[0];
662 if(count($room_ids) > 0)
664 $scope = (int)$room_ids[1];
667 include_once
'Modules/Chatroom/classes/class.ilChatroom.php';
670 $no_access = array();
672 $valid_users = array();
673 $valid_user_to_login_map = array();
677 $entry = $this->abook->getEntry($id);
681 $user_id = $ilUser->getUserIdByLogin($entry[
'login']);
687 $ref_id = $room->getRefIdByRoomId($room_id);
692 $room->isUserBanned($user_id)
699 $valid_users[] = $user_id;
700 $valid_user_to_login_map[$user_id] = $entry[
'login'];
709 if(count($no_access) || count($no_login))
713 if(count($no_access))
715 $message .= $lng->txt(
'chat_users_without_permission') .
':<br>';
718 foreach($no_access as $e)
720 $list .=
'<li>' . $this->abook->entryToString($e) .
'</li>';
730 $message .= $lng->txt(
'chat_users_without_login') .
':<br>';
733 foreach($no_login as $e)
735 $list .=
'<li>' . $this->abook->entryToString($e) .
'</li>';
745 $this->inviteToChat();
749 $ref_id = $room->getRefIdByRoomId($room_id);
752 include_once
'Services/Link/classes/class.ilLink.php';
761 $link =
'<p><a target="chatframe" href="' . $url .
'" title="' . $lng->txt(
'goto_invitation_chat') .
'">' .$lng->txt(
'goto_invitation_chat') .
'</a></p>';
764 foreach($valid_users as $id)
766 $room->inviteUserToPrivateRoom($id, $scope);
767 $room->sendInvitationNotification(
768 null, $ilUser->getId(), $id, (int)$scope, $url
770 $userlist[] =
'<li>'.$valid_user_to_login_map[$id].
'</li>';
775 ilUtil::sendSuccess($lng->txt(
'chat_users_have_been_invited') .
'<ul>'.implode(
'', $userlist).
'</ul>' . $link,
true);
777 $ilCtrl->redirect($this,
'showAddressbook');
782 include_once
'Services/JSON/classes/class.ilJsonUtil.php';
783 include_once
'Services/Contact/classes/class.ilMailAddressbook.php';
795 $result = $mailAdrBookObj->getAddressbookAsync($search);
805 if($this->tabs_gui->hasTabs())
807 $this->tabs_gui->addSubTab(
'mail_my_entries', $this->lng->txt(
'mail_my_entries'), $this->ctrl->getLinkTarget($this));
808 $this->tabs_gui->addSubTab(
'mail_my_mailing_lists', $this->lng->txt(
'mail_my_mailing_lists'), $this->ctrl->getLinkTargetByClass(
'ilmailinglistsgui'));
809 $this->tabs_gui->addSubTab(
'mail_my_courses', $this->lng->txt(
'mail_my_courses'), $this->ctrl->getLinkTargetByClass(
'ilmailsearchcoursesgui'));
810 $this->tabs_gui->addSubTab(
'mail_my_groups', $this->lng->txt(
'mail_my_groups'), $this->ctrl->getLinkTargetByClass(
'ilmailsearchgroupsgui'));
811 $this->has_sub_tabs =
true;
815 $ilHelp->setScreenIdComponent(
"contacts");
817 $this->tabs_gui->addTab(
'mail_my_entries', $this->lng->txt(
'mail_my_entries'), $this->ctrl->getLinkTarget($this));
818 $this->tabs_gui->addTab(
'mail_my_mailing_lists', $this->lng->txt(
'mail_my_mailing_lists'), $this->ctrl->getLinkTargetByClass(
'ilmailinglistsgui'));
819 $this->tabs_gui->addTab(
'mail_my_courses', $this->lng->txt(
'mail_my_courses'), $this->ctrl->getLinkTargetByClass(
'ilmailsearchcoursesgui'));
820 $this->tabs_gui->addTab(
'mail_my_groups', $this->lng->txt(
'mail_my_groups'), $this->ctrl->getLinkTargetByClass(
'ilmailsearchgroupsgui'));
826 if($this->has_sub_tabs)
828 $this->tabs_gui->activateSubTab($a_id);
832 $this->tabs_gui->activateTab($a_id);