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');
441 foreach ($entries as $entry)
445 $this->ctrl->setParameter($this,
'addr_id', $entry[
'addr_id']);
447 if ($entry[
"login"] !=
"")
449 if ($mailing_allowed)
451 $result[$counter][
'login_linked_link'] = $this->ctrl->getLinkTarget($this,
'mailToUsers');
452 $result[$counter][
'login_linked_login'] = $entry[
"login"];
455 $result[$counter][
'login_unliked'] = $entry[
"login"];
458 $result[$counter][
'firstname'] = $entry[
"firstname"];
459 $result[$counter][
'lastname'] = $entry[
"lastname"];
461 if (
$_GET[
"baseClass"] ==
"ilMailGUI" && $rbacsystem->checkAccess(
"smtp_mail", $this->umail->getMailObjectReferenceId()))
463 $result[$counter][
'email_linked_email'] = $entry[
"email"];
464 $result[$counter][
'email_linked_link'] = $this->ctrl->getLinkTarget($this,
"mailToUsers");
467 $result[$counter][
'email_unlinked'] = $entry[
"email"] ? $entry[
"email"] :
" ";
470 $current_selection_list->setListTitle($this->lng->txt(
"actions"));
471 $current_selection_list->setId(
"act_".$counter);
473 $current_selection_list->addItem($this->lng->txt(
"edit"),
'', $this->ctrl->getLinkTarget($this,
"showAddressForm"));
475 if ($mailing_allowed)
476 $current_selection_list->addItem($this->lng->txt(
"send_mail_to"),
'', $this->ctrl->getLinkTarget($this,
"mailToUsers"));
478 $current_selection_list->addItem($this->lng->txt(
"delete"),
'', $this->ctrl->getLinkTarget($this,
"confirmDelete"));
480 $this->ctrl->clearParameters($this);
482 $result[$counter][
'COMMAND_SELECTION_LIST'] = $current_selection_list->getHTML();
486 if ($mailing_allowed)
487 $tbl->addMultiCommand(
'mailToUsers', $this->lng->txt(
'send_mail_to'));
489 $tbl->addMultiCommand(
'confirmDelete', $this->lng->txt(
'delete'));
494 $tbl->disable(
'header');
495 $tbl->disable(
'footer');
497 $tbl->setNoEntriesText($this->lng->txt(
'mail_search_no'));
500 $tbl->setData($result);
502 $tbl->addCommandButton(
'showAddressForm', $this->lng->txt(
'add'));
504 $this->tpl->setVariable(
'TABLE', $tbl->getHTML());
521 $addr_ids = ((int)
$_GET[
'addr_id']) ? array((
int)
$_GET[
'addr_id']) :
$_POST[
'addr_id'];
527 ilUtil::redirect($ilCtrl->getLinkTarget($this,
'showAddressbook',
'',
false,
false));
536 foreach($addr_ids as $id)
538 $entry = $this->abook->getEntry($id);
541 if (!$entry[
'login'])
548 if (count($no_login))
550 $message .= $lng->txt(
'chat_users_without_login') .
':<br>';
552 foreach($no_login as $e)
554 $list .=
'<li>'.$this->abook->entryToString($e).
'</li>';
565 include_once
'Modules/Chat/classes/class.ilChatRoom.php';
566 include_once
'Modules/Chat/classes/class.ilObjChat.php';
567 include_once
'Modules/Chat/classes/class.ilObjChatGUI.php';
568 include_once
'Modules/Chat/classes/class.ilChatBlockedUsers.php';
571 $chat_rooms = ilChatRoom::getAllRooms();
573 foreach($chat_rooms as $room)
576 $rooms[count($rooms)-1][
"subrooms"] = ilChatRoom::getRoomsOfObject($ilObjDataCache->lookupObjId($room[
"ref_id"]), $ilUser->getId());
581 foreach($rooms as $k => $v) {
582 $titel[$k] = strtolower($v[
'title']);
584 array_multisort($titel, SORT_STRING, $rooms);
587 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
590 $form->setTitle($lng->txt(
"mail_invite_users_to_chat"));
593 foreach($rooms as $room)
596 if (ilChatBlockedUsers::_isBlocked($ilObjDataCache->lookupObjId(
$ref_id), $ilUser->getId()))
599 $options[
$ref_id] = $room[
'title'];
600 foreach($room[
'subrooms'] as $subroom)
602 if (ilChatRoom::_checkWriteAccess(
$ref_id, $subroom[
'room_id'], $ilUser->getId()))
603 $options[
$ref_id.
','.$subroom[
'room_id']] =
'+ '.$subroom[
'title'];
607 $form->addItem($psel);
609 $phidden->setValue(join(
',', $addr_ids));
610 $form->addItem($phidden);
611 $form->addCommandButton(
'submitInvitation',$this->lng->txt(
'submit'));
612 $form->addCommandButton(
'cancel',$this->lng->txt(
'cancel'));
613 $form->setFormAction($ilCtrl->getFormAction($this));
616 $tpl->setTitle($lng->txt(
'mail_invite_users_to_chat'));
617 $tpl->setContent($form->getHtml());
627 global $ilObjDataCache, $ilUser,
$ilCtrl, $rbacsystem,
$lng, $ilias;
639 $_POST[
'addr_id'] = explode(
',', $_POST[
"addr_ids"]);
645 $ids = explode(
',',
$_POST[
"addr_ids"]);
649 $chat_ids = explode(
',',
$_POST[
'room_id']);
650 $chat_id = (int)$chat_ids[0];
653 if (count($chat_ids) > 0)
655 $room_id = (int)$chat_ids[1];
661 include_once
'Modules/Chat/classes/class.ilChatRoom.php';
662 include_once
'Modules/Chat/classes/class.ilObjChat.php';
663 include_once
'Modules/Chat/classes/class.ilObjChatGUI.php';
664 include_once
'Modules/Chat/classes/class.ilChatBlockedUsers.php';
666 $obj_id = $ilObjDataCache->lookupObjId($chat_id);
669 $room =
new ilChatRoom($chat_id);
670 $room->setRoomId((
int)$room_id);
673 $no_access = array();
679 $valid_users = array();
683 $entry = $this->abook->getEntry($id);
688 $user_id = $ilUser->getUserIdByLogin($entry[
'login']);
690 !$rbacsystem->checkAccessOfUser($user_id,
'read', $chat_id)
691 || ilChatBlockedUsers::_isBlocked($obj_id, $user_id)
698 $valid_users[] = $user_id;
709 if (count($no_access) || count($no_login))
713 if (count($no_access))
715 $message .= $lng->txt(
'chat_users_without_permission') .
':<br>';
717 foreach($no_access as $e)
719 $list .=
'<li>'.$this->abook->entryToString($e).
'</li>';
727 if (count($no_login))
729 $message .= $lng->txt(
'chat_users_without_login') .
':<br>';
731 foreach($no_login as $e)
733 $list .=
'<li>'.$this->abook->entryToString($e).
'</li>';
746 $chatObject =
new ilObjChat(
$ref_id);
747 foreach($valid_users as $id)
750 $chatObject->sendMessageForRoom($id, $room);
752 $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>';
753 ilUtil::sendInfo($lng->txt(
'chat_users_have_been_invited') . $userlist .$link,
true);
754 $link = $ilCtrl->getLinkTarget($this,
'showAddressbook',
'',
false,
false);
760 include_once
'Services/JSON/classes/class.ilJsonUtil.php';
761 include_once
'Services/Contact/classes/class.ilMailAddressbook.php';
763 $search =
"%" .
$_REQUEST[
"query"] .
"%";
764 $result =
new stdClass();
765 $result->response =
new stdClass();
766 $result->response->results = array();
769 $result->response->total = 0;
783 $this->tabs_gui->addSubTabTarget(
'mail_my_entries', $this->ctrl->getLinkTarget($this));
784 $this->tabs_gui->addSubTabTarget(
'mail_my_mailing_lists', $this->ctrl->getLinkTargetByClass(
'ilmailinglistsgui'));
785 $this->tabs_gui->addSubTabTarget(
'mail_my_courses', $this->ctrl->getLinkTargetByClass(
'ilmailsearchcoursesgui'));
786 $this->tabs_gui->addSubTabTarget(
'mail_my_groups', $this->ctrl->getLinkTargetByClass(
'ilmailsearchgroupsgui'));