public static function closeChat($params) { if (isset($params['no_ui_update'])) { $permissionsArray = erLhcoreClassRole::accessArrayByUserID($params['user']->id); if ($params['chat']->user_id == $params['user']->id || erLhcoreClassRole::canUseByModuleAndFunction($permissionsArray, 'lhchat', 'allowcloseremote')) { erLhcoreClassChatHelper::closeChat($params); return array('processed' => true, 'process_status' => erTranslationClassLhTranslation::getInstance()->getTranslation('chat/chatcommand', 'Chat was closed!')); } else { return array('processed' => true, 'process_status' => erTranslationClassLhTranslation::getInstance()->getTranslation('chat/chatcommand', 'You do not have permission to close a chat!')); } } else { // Schedule interface update $params['chat']->operation_admin .= "lhinst.closeActiveChatDialog('{$params['chat']->id}',\$('#tabs'),true);"; // Update only $db = ezcDbInstance::get(); $stmt = $db->prepare('UPDATE lh_chat SET operation_admin = :operation_admin WHERE id = :id'); $stmt->bindValue(':id', $params['chat']->id, PDO::PARAM_INT); $stmt->bindValue(':operation_admin', $params['chat']->operation_admin, PDO::PARAM_STR); $stmt->execute(); return array('processed' => true, 'process_status' => erTranslationClassLhTranslation::getInstance()->getTranslation('chat/chatcommand', 'Chat was closed!')); } }
<?php // Set new chat owner $currentUser = erLhcoreClassUser::instance(); $currentUser->getUserID(); $chat = erLhcoreClassChat::getSession()->load('erLhcoreClassModelChat', $Params['user_parameters']['chat_id']); // Chat can be closed only by owner if ($chat->user_id == $currentUser->getUserID() || $currentUser->hasAccessTo('lhchat', 'allowcloseremote')) { if (!$currentUser->validateCSFRToken($Params['user_parameters_unordered']['csfr'])) { die('Invalid CSRF Token'); exit; } $userData = $currentUser->getUserData(true); erLhcoreClassChatHelper::closeChat(array('user' => $userData, 'chat' => $chat)); } CSCacheAPC::getMem()->removeFromArray('lhc_open_chats', (int) $Params['user_parameters']['chat_id']); header('Location: ' . $_SERVER['HTTP_REFERER']); exit;