• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/mysql/user_counter.php
  • Класс: CUserCounter
  • Вызов: CUserCounter::DeleteByCode
static function DeleteByCode($code)
{
	global $DB, $CACHE_MANAGER;

	if ($code == '')
	{
		return false;
	}

	$pullMessage = Array();
	$bPullEnabled = false;

	$connection = BitrixMainApplication::getConnection();

	$isLiveFeed = (
		mb_strpos($code, self::LIVEFEED_CODE) === 0
		&& $code !== self::LIVEFEED_CODE
	);

	if ($isLiveFeed)
	{
		$DB->Query(
			"DELETE FROM b_user_counter WHERE CODE = '".$code."'",
			false,
			"FILE: " . __FILE__ . "
LINE: " . __LINE__ ); self::$counters = []; $CACHE_MANAGER->CleanDir("user_counter"); if (self::$isLiveFeedJobOn === false && self::CheckLiveMode()) { $application = BitrixMainApplication::getInstance(); $application && $application->addBackgroundJob([__CLASS__, 'sendLiveFeedPull']); self::$isLiveFeedJobOn = true; } return true; } if ( self::CheckLiveMode() && $connection->lock('pull') ) { $bPullEnabled = true; $arSites = []; $by = ''; $order = ''; $res = CSite::GetList($by, $order, array("ACTIVE" => "Y")); while($row = $res->Fetch()) { $arSites[] = $row['ID']; } $helper = $connection->getSqlHelper(); $strSQL = " SELECT uc.USER_ID as CHANNEL_ID, uc.USER_ID, uc.SITE_ID, uc.CODE, uc.CNT FROM b_user_counter uc INNER JOIN b_user u ON u.ID = uc.USER_ID AND (CASE WHEN u.EXTERNAL_AUTH_ID IN ('" . implode("', '", BitrixMainUserTable::getExternalUserTypes()) . "') THEN 'Y' ELSE 'N' END) = 'N' AND u.LAST_ACTIVITY_DATE > ".$helper->addSecondsToDateTime('(-3600)')." WHERE uc.CODE = '" . $code . "'"; $res = $DB->Query($strSQL, false, "FILE: ".__FILE__."
LINE: ".__LINE__); while($row = $res->Fetch()) { self::addValueToPullMessage($row, $arSites, $pullMessage); } } $DB->Query("DELETE FROM b_user_counter WHERE CODE = '".$code."'", false, "FILE: ".__FILE__."
LINE: ".__LINE__); self::$counters = []; $CACHE_MANAGER->CleanDir("user_counter"); if ($bPullEnabled) { $connection->unlock('pull'); } if (self::CheckLiveMode()) { foreach ($pullMessage as $channelId => $arMessage) { BitrixPullEvent::add($channelId, Array( 'module_id' => 'main', 'command' => 'user_counter', 'expiry' => 3600, 'params' => $arMessage, )); } } return null; }