// Change department if user cannot read current department, so chat appears in right menu $filter = erLhcoreClassUserDep::parseUserDepartmetnsForFilter($currentUser->getUserID()); if ($filter !== true && !in_array($chat->dep_id, $filter)) { $dep_id = erLhcoreClassUserDep::getDefaultUserDepartment(); if ($dep_id > 0) { $chat->dep_id = $dep_id; $chat->status_sub = erLhcoreClassModelChat::STATUS_SUB_OWNER_CHANGED; } } } if (!erLhcoreClassChat::hasAccessToRead($chat)) { if ($currentUser->getUserID() == $chatTransfer->transfer_to_user_id) { $dep_id = erLhcoreClassUserDep::getDefaultUserDepartment(); if ($dep_id > 0) { $chat->dep_id = $dep_id; $chat->status_sub = erLhcoreClassModelChat::STATUS_SUB_OWNER_CHANGED; } } else { exit; // User does not have permission to assign chat to himself } } // All ok, we can make changes erLhcoreClassChat::getSession()->update($chat); erLhcoreClassTransfer::getSession()->delete($chatTransfer); if ($Params['user_parameters_unordered']['postaction'] == 'singlewindow') { erLhcoreClassModule::redirect('chat/single/' . $chat->id); exit; } echo json_encode(array('error' => 'false', 'chat_id' => $chat->id)); exit;
$chat->user_id = $user->id; // Assign chat to receiver operator, this way he will get permission to open chat $chat->dep_id = erLhcoreClassUserDep::getDefaultUserDepartment(); // Set default department to chat creator, this way current user will get permission to open it // Store chat erLhcoreClassChat::getSession()->save($chat); // Store User Message $msg->chat_id = $chat->id; $msg->user_id = $currentUser->getUserID(); $msg->time = time(); $msg->name_support = $currentUserData->name . ' ' . $currentUserData->surname; erLhcoreClassChat::getSession()->save($msg); $transfer = new erLhcoreClassModelTransfer(); $transfer->chat_id = $chat->id; $transfer->from_dep_id = $chat->dep_id; // User which is transfering $transfer->transfer_user_id = $currentUser->getUserID(); // To what user $transfer->transfer_to_user_id = $user->id; erLhcoreClassTransfer::getSession()->save($transfer); erLhcoreClassChatEventDispatcher::getInstance()->dispatch('chat.startchatwithoperator_started', array('chat' => &$chat, 'transfer' => &$transfer)); // Redirect user erLhcoreClassModule::redirect('chat/single/' . $chat->id); exit; } else { $tpl->set('errors', $Errors); } } $tpl->set('msg', $msg); $Result['content'] = $tpl->fetch(); $Result['pagelayout'] = 'popup';