- Модуль: mobile
- Путь к файлу: ~/bitrix/modules/mobile/lib/component/loglist/counter.php
- Класс: BitrixMobileComponentLogListCounter
- Вызов: Counter::clearLogCounter
public function clearLogCounter(&$result)
{
if ($result['currentUserId'] <= 0)
{
return;
}
$params = $this->getComponent()->arParams;
$emptyCounter = false;
if (
$params['LOG_ID'] <= 0
&& $params['NEW_LOG_ID'] <= 0
)
{
$counters = CUserCounter::getValues($result['currentUserId'], SITE_ID);
if (isset($counters[$result["COUNTER_TYPE"]]))
{
$result['LOG_COUNTER'] = (int)$counters[$result['COUNTER_TYPE']];
}
else
{
$emptyCounter = true;
$result['LOG_COUNTER'] = 0;
}
}
$result['COUNTER_TO_CLEAR'] = false;
if ($params['SET_LOG_COUNTER'] === 'Y')
{
if (
$result['LOG_COUNTER'] > 0
|| $emptyCounter
)
{
CUserCounter::clear(
$result['currentUserId'],
$result['COUNTER_TYPE'],
[ SITE_ID, CUserCounter::ALL_SITES ],
false, // sendPull
true // bMultiple
);
$result['COUNTER_TO_CLEAR'] = $result['COUNTER_TYPE'];
$res = getModuleEvents('socialnetwork', 'OnSonetLogCounterClear');
while ($event = $res->fetch())
{
executeModuleEventEx($event, [ $result['COUNTER_TYPE'], (int)$result['LAST_LOG_TS']]);
}
}
elseif ($result['COUNTER_TYPE'] === CUserCounter::LIVEFEED_CODE)
{
$pool = BitrixMainApplication::getInstance()->getConnectionPool();
$pool->useMasterOnly(true);
CUserCounter::clear(
$result['currentUserId'],
$result['COUNTER_TYPE'],
[ SITE_ID, CUserCounter::ALL_SITES ],
false, // sendPull
false, // bMultiple,
false // cleanCache
);
$pool->useMasterOnly(false);
$result['COUNTER_TO_CLEAR'] = $result['COUNTER_TYPE'];
}
if (
$result['COUNTER_TYPE'] === CUserCounter::LIVEFEED_CODE
&& Loader::includeModule('pull')
)
{
BitrixPullEvent::add($result['currentUserId'], [
'module_id' => 'main',
'command' => 'user_counter',
'expiry' => 3600,
'params' => [
SITE_ID => [
CUserCounter::LIVEFEED_CODE => 0
],
],
]);
$result['COUNTER_TO_CLEAR'] = $result['COUNTER_TYPE'];
}
}
if ($result['COUNTER_TO_CLEAR'])
{
$result['COUNTER_SERVER_TIME'] = date('c');
$result['COUNTER_SERVER_TIME_UNIX'] = microtime(true);
}
}