/**
  * @param ilChatRoom $room
  * @param int        $scope
  * @param ilObjUser  $inviter
  * @param int        $invited_id
  * @return array
  */
 public function inviteToPrivateRoom(ilChatRoom $room, $scope, ilObjUser $inviter, $invited_id)
 {
     $chat_user = new ilChatroomUser($inviter, $room);
     $user_id = $chat_user->getUserId();
     if ($scope) {
         $room->inviteUserToPrivateRoom($invited_id, $scope);
         $message = json_encode(array('type' => 'private_room_created', 'users' => $invited_id, 'timestamp' => date('c'), 'public' => 0, 'title' => ilChatroom::lookupPrivateRoomTitle($scope), 'proom_id' => $scope, 'message' => array('public' => '0', 'user' => 'system', 'owner' => $user_id)));
         $this->sendMessage($room->getRoomId(), $message, array('public' => 0, 'recipients' => $invited_id));
     }
     if ($room->isSubscribed($user_id)) {
         $message = json_encode(array('type' => 'user_invited', 'title' => ilChatroom::lookupPrivateRoomTitle($scope), 'proom_id' => $scope, 'inviter' => $inviter->getId(), 'invited' => $invited_id));
         $this->sendMessage($room->getRoomId(), $message, array('public' => 0, 'recipients' => $invited_id));
     }
     return array('success' => true, 'message' => 'users invited');
 }
 /**
  * Send chat invitations to selected Users
  */
 public function inviteToChat()
 {
     /**
      * @var $ilUser ilObjUser
      * @var $lng    ilLanguage
      * @var $ilCtrl ilCtrl
      * @var $tpl    ilTemplate
      */
     global $ilUser, $lng, $ilCtrl, $tpl;
     $lng->loadLanguageModule('chatroom');
     $addr_ids = (int) $_GET['addr_id'] ? array((int) $_GET['addr_id']) : $_POST['addr_id'];
     if (!$addr_ids) {
         ilUtil::sendFailure($lng->txt('select_one'), true);
         $ilCtrl->redirect($this, 'showAddressbook');
     }
     $no_login = array();
     foreach ($addr_ids as $id) {
         $entry = $this->abook->getEntry($id);
         if (!$entry['login']) {
             $no_login[] = $id;
         }
     }
     if (count($no_login)) {
         $message = $lng->txt('chat_users_without_login') . ':<br>';
         $list = '';
         foreach ($no_login as $e) {
             $list .= '<li>' . $this->abook->entryToString($e) . '</li>';
         }
         $message .= '<ul>';
         $message .= $list;
         $message .= '</ul>';
         ilUtil::sendFailure($message, true);
         $ilCtrl->redirect($this, 'showAddressbook');
     }
     include_once 'Modules/Chatroom/classes/class.ilChatroom.php';
     $ilChatroom = new ilChatroom();
     $chat_rooms = $ilChatroom->getAllRooms($ilUser->getId());
     $subrooms = array();
     foreach ($chat_rooms as $room_id => $title) {
         $subrooms[] = $ilChatroom->getPrivateSubRooms($room_id, $ilUser->getId());
     }
     include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
     $form = new ilPropertyFormGUI();
     $form->setTitle($lng->txt('mail_invite_users_to_chat'));
     $psel = new ilSelectInputGUI($lng->txt('chat_select_room'), 'room_id');
     $options = array();
     foreach ($chat_rooms as $room_id => $room) {
         $ref_id = $room_id;
         if ($ilChatroom->isUserBanned($ilUser->getId())) {
             continue;
         }
         $options[$ref_id] = $room;
         foreach ($subrooms as $subroom) {
             foreach ($subroom as $sub_id => $parent_id) {
                 if ($parent_id == $ref_id) {
                     $title = ilChatroom::lookupPrivateRoomTitle($sub_id);
                     $options[$ref_id . ',' . $sub_id] = '+&nbsp;' . $title;
                 }
             }
         }
     }
     $psel->setOptions($options);
     $form->addItem($psel);
     $phidden = new ilHiddenInputGUI('addr_ids');
     $phidden->setValue(implode(',', $addr_ids));
     $form->addItem($phidden);
     $form->addCommandButton('submitInvitation', $this->lng->txt('submit'));
     $form->addCommandButton('cancel', $this->lng->txt('cancel'));
     $form->setFormAction($ilCtrl->getFormAction($this));
     $tpl->setTitle($lng->txt('mail_invite_users_to_chat'));
     $tpl->setContent($form->getHtml());
     $tpl->show();
 }