Your IP : 18.221.7.151


Current Path : /home/bitrix/ext_www/easy-comfort.com.ua/bitrix/modules/messageservice/tools/
Upload File :
Current File : /home/bitrix/ext_www/easy-comfort.com.ua/bitrix/modules/messageservice/tools/callback_smsru.php

<?
define("NOT_CHECK_PERMISSIONS", true);
define("EXTRANET_NO_REDIRECT", true);
define("STOP_STATISTICS", true);
define("NO_KEEP_STATISTIC", "Y");
define("NO_AGENT_STATISTIC","Y");
define("DisableEventsCheck", true);
define('BX_SECURITY_SESSION_READONLY', true);

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

if(!isset($_POST['data']) || !is_array($_POST['data']) || !CModule::IncludeModule("messageservice"))
	die();

$smsStatuses = array();
foreach ($_POST["data"] as $entry)
{
	$lines = explode("\n",$entry);
	if (sizeof($lines) < 3 || $lines[0] !== 'sms_status')
	{
		continue;
	}

	$smsId = $lines[1];
	$statusCode = \Bitrix\MessageService\Sender\Sms\SmsRu::resolveStatus($lines[2]);

	if ($statusCode === null || !preg_match('|[0-9]{6}\-[0-9]+|', $smsId))
	{
		continue;
	}

	$smsStatuses[$smsId] = $statusCode;
}

if ($smsStatuses)
{
	$connection = \Bitrix\Main\Application::getConnection();
	$sqlHelper = $connection->getSqlHelper();

	$tableName = \Bitrix\MessageService\Internal\Entity\MessageTable::getTableName();

	foreach ($smsStatuses as $smsId => $status)
	{
		$connection->queryExecute(
			'UPDATE '.$tableName.' SET STATUS_ID = '.(int)$status
			.' WHERE SENDER_ID = \'smsru\' AND EXTERNAL_ID = \''.$sqlHelper->forSql($smsId).'\''
		);
	}

	//send pull message
	if(\Bitrix\MessageService\Integration\Pull::canUse())
	{
		$query = new \Bitrix\Main\Entity\Query(\Bitrix\MessageService\Internal\Entity\MessageTable::getEntity());
		$query->setSelect(array('ID', 'STATUS_ID'));
		$query->addFilter('=SENDER_ID', 'smsru');
		$query->addFilter('@EXTERNAL_ID', array_keys($smsStatuses));

		\Bitrix\MessageService\Integration\Pull::onMessagesUpdate($query->exec()->fetchAll());
	}
}
echo '100'; // SMS.RU required success answer code
CMain::FinalActions();
die();