Your IP : 18.117.97.59


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/imopenlines/handlers/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/imopenlines/handlers/ajax.php

<?php
$request = Bitrix\Main\HttpApplication::getInstance()->getContext()->getRequest();

if ($request->isPost() &&
	$request->get('IM_AJAX_CALL') === 'Y' &&
	$request->getPost('IM_OPEN_LINES_CLIENT') == 'Y'
)
{
	$chatId = intval($request->getPost('CHAT_ID'));
	$userId = intval($USER->GetId());

	if ($userId <= 0 || !(IsModuleInstalled('imopenlines') && \Bitrix\Main\Loader::includeModule('im') && \Bitrix\Im\User::getInstance($userId)->isConnector()))
	{
		echo \Bitrix\ImOpenLines\Common::objectEncode(Array('ERROR' => 'AUTHORIZE_ERROR'));
		CMain::FinalActions();
		die();
	}

	if (!check_bitrix_sessid())
	{
		echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
			'BITRIX_SESSID' => bitrix_sessid(),
			'ERROR' => 'SESSION_ERROR'
		));
		CMain::FinalActions();
		die();
	}

	if ($request->getPost('COMMAND') == "sendLivechatForm")
	{
		$params = Array();

		$request->addFilter(new \Bitrix\Main\Web\PostDecodeFilter());

		$control = new \Bitrix\ImOpenLines\Widget\Form($chatId, $userId);
		$result = $control->saveForm($request->getPost('FORM'), $request->getPost('FIELDS'));
		if ($result->isSuccess())
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			$errors = $result->getErrors();
			$error = current($errors);

			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $error->getCode(),
				'ERROR' => $error->getMessage()
			));
		}
	}
}
else if($request->isPost() &&
	$request->get('IM_AJAX_CALL') === 'Y' &&
	$request->getPost('IM_OPEN_LINES') == 'Y'
)
{
	if (intval($USER->GetID()) <= 0 || !(IsModuleInstalled('imopenlines') && (!IsModuleInstalled('extranet') || CModule::IncludeModule('extranet') && CExtranet::IsIntranetUser())))
	{
		echo \Bitrix\ImOpenLines\Common::objectEncode(Array('ERROR' => 'AUTHORIZE_ERROR'));
		CMain::FinalActions();
		die();
	}

	if (!check_bitrix_sessid())
	{
		echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
			'BITRIX_SESSID' => bitrix_sessid(),
			'ERROR' => 'SESSION_ERROR'
		));
		CMain::FinalActions();
		die();
	}

	$chatId = intval($request->getPost('CHAT_ID'));
	$userId = intval($USER->GetId());

	if ($request->getPost('COMMAND') == 'answer')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->answer();
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	//skip the dialogue
	else if ($request->getPost('COMMAND') == 'skip')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->skip();
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'transfer')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->transfer(Array(
			'TRANSFER_ID' => $request->getPost('TRANSFER_ID'),
		));
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'silentMode')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->setSilentMode($request->getPost('ACTIVATE') == 'Y');
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'pinMode')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->setPinMode($request->getPost('ACTIVATE') == 'Y');
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'closeDialog')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->closeDialog();
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'markSpam')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->markSpam();
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'interceptSession')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->interceptSession();
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'createLead')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->createLead();
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'cancelCrmExtend')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->cancelCrmExtend($request->getPost('MESSAGE_ID'));
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'changeCrmEntity')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->changeCrmEntity($request->getPost('MESSAGE_ID'), mb_strtoupper($request->getPost('ENTITY_TYPE')), $request->getPost('ENTITY_ID'));
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'openSession')
	{
		$control = new \Bitrix\ImOpenLines\Operator(0, $userId);
		$result = $control->openChat($request->getPostList()->getRaw('USER_CODE'));
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CHAT_ID' => $result['ID'],
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'voteHead')
	{
		$request->addFilter(new \Bitrix\Main\Web\PostDecodeFilter());

		$control = new \Bitrix\ImOpenLines\Operator(0, $userId);
		$result = $control->voteAsHead($request->getPost('SESSION_ID'), $request->getPost('RATING'), $request->getPost('COMMENT'));
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'joinSession')
	{
		$control = new \Bitrix\ImOpenLines\Operator($request->getPost('CHAT_ID'), $userId);
		$result = $control->joinSession();
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CHAT_ID' => $request->getPost('CHAT_ID'),
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'startSession')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->startSession();
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'startSessionByMessage')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->startSessionByMessage($request->getPost('MESSAGE_ID'));
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'saveToQuickAnswers')
	{
		$control = new \Bitrix\ImOpenLines\Operator($chatId, $userId);
		$result = $control->saveToQuickAnswers($request->getPost('MESSAGE_ID'));
		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
	else if ($request->getPost('COMMAND') == 'sessionGetHistory')
	{
		$control = new \Bitrix\ImOpenLines\Operator(0, $userId);
		$result = $control->getSessionHistory($request->getPost('SESSION_ID'));

		if ($result)
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CHAT_ID' => $result['chatId'],
				'CAN_JOIN' => $result['canJoin'],
				'CAN_VOTE_HEAD' => $result['canVoteAsHead'],
				'SESSION_ID' => $result['sessionId'],
				'SESSION_VOTE_HEAD' => $result['sessionVoteHead'],
				'SESSION_COMMENT_HEAD' => $result['sessionCommentHead'],
				'USER_ID' => 'chat'.$result['chatId'],
				'MESSAGE' => isset($result['message'])? $result['message']: Array(),
				'USERS_MESSAGE' => isset($result['message'])? $result['usersMessage']: Array(),
				'USERS' => isset($result['users'])? $result['users']: Array(),
				'OPENLINES' => isset($result['openlines'])? $result['openlines']: Array(),
				'USER_IN_GROUP' => isset($result['userInGroup'])? $result['userInGroup']: Array(),
				'WO_USER_IN_GROUP' => isset($result['woUserInGroup'])? $result['woUserInGroup']: Array(),
				'CHAT' => isset($result['chat'])? $result['chat']: Array(),
				'USER_BLOCK_CHAT' => isset($result['userChatBlockStatus'])? $result['userChatBlockStatus']: Array(),
				'USER_IN_CHAT' => isset($result['userInChat'])? $result['userInChat']: Array(),
				'FILES' => isset($result['files'])? $result['files']: Array(),
				'ERROR' => ''
			));
		}
		else
		{
			echo \Bitrix\ImOpenLines\Common::objectEncode(Array(
				'CODE' => $control->getError()->code,
				'ERROR' => $control->getError()->msg
			));
		}
	}
}

CMain::FinalActions();
die();
?>