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'));