/
inviteoperator.php
53 lines (38 loc) · 2.03 KB
/
inviteoperator.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
header ( 'content-type: application/json; charset=utf-8' );
$db = ezcDbInstance::get();
$db->beginTransaction();
try {
if (!isset($_SERVER['HTTP_X_CSRFTOKEN']) || !$currentUser->validateCSFRToken($_SERVER['HTTP_X_CSRFTOKEN'])) {
throw new Exception('Invalid CSRF token!');
}
$item = erLhcoreClassModelGroupChat::fetchAndLock($Params['user_parameters']['id']);
erLhcoreClassGroupChat::inviteOperator($item->id, $Params['user_parameters']['op_id'], ($item->type == erLhcoreClassModelGroupChat::SUPPORT_CHAT ? erLhcoreClassModelGroupChatMember::SUPPORT_CHAT : erLhcoreClassModelGroupChatMember::NORMAL_CHAT));
$userInvited = erLhcoreClassModelUser::fetch($Params['user_parameters']['op_id']);
$msg = new erLhcoreClassModelGroupMsg();
$msg->msg = (string)$currentUser->getUserData(true)->name_official . ' ' . erTranslationClassLhTranslation::getInstance()->getTranslation('chat/adminchat','has invited') . ' ' . $userInvited->name_official . ' ' . erTranslationClassLhTranslation::getInstance()->getTranslation('chat/adminchat','for the private chat.');
$msg->chat_id = $item->id;
$msg->user_id = -1;
$msg->time = time();
$msg->saveThis();
$item->last_msg_id = $msg->id;
$item->updateThis(array('update' => array('last_msg_id')));
// We join only if it's support chat and operator has not joined yet
if ($item->type == erLhcoreClassModelGroupChat::SUPPORT_CHAT && erLhcoreClassModelGroupChatMember::getCount(array('filter' => array('group_id' => $item->id, 'user_id' => $currentUser->getUserID()))) == 0) {
$newMember = new erLhcoreClassModelGroupChatMember();
$newMember->user_id = $currentUser->getUserID();
$newMember->group_id = $item->id;
$newMember->last_activity = time();
$newMember->jtime = time();
$newMember->saveThis();
}
$item->updateMembersCount();
$db->commit();
echo json_encode("ok");
} catch (Exception $e) {
http_response_code(400);
echo json_encode($e->getMessage());
$db->rollback();
}
exit;
?>