- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/lib/update/topicservicecounter.php
- Класс: BitrixForumUpdateTopicServiceCounter
- Вызов: TopicServiceCounter::execute
public function execute(array &$result)
{
if (!Loader::includeModule("forum"))
{
return self::finishExecution();
}
if (MainConfigOption::get("forum", "LivefeedConvertServiceMessageStepper") === "inProgress")
{
return self::CONTINUE_EXECUTION;
}
if (!array_key_exists("lastId", $result) || (int)$result["lastId"] <= 0)
{
$result["lastId"] = 0;
$res = MessageTable::getList([
"select" => [ "CNT"],
"filter" => [
'>SERVICE_TYPE' => 0
],
'runtime' => [
new BitrixMainEntityExpressionField('CNT', 'COUNT(*)')
]
]);
$topicData = $res->fetch();
$result["count"] = (int)$topicData['CNT'];
}
$filter = [
'>SERVICE_TYPE' => 0
];
if ($result["lastId"] > 0)
{
$filter[" ["TOPIC_ID", "CNT"],
"filter" => $filter,
'runtime' => [
new BitrixMainEntityExpressionField('CNT', 'COUNT(*)')
],
"group" => ["TOPIC_ID"],
"limit" => self::TOPIC_LIMIT,
"order" => ["TOPIC_ID" => "DESC"]
]);
while($topicData = $res->fetch())
{
$topic = BitrixForumEO_Topic::wakeUp($topicData["TOPIC_ID"]);
$topic->setPostsService($topicData["CNT"]);
$topic->save();
$lastId = $topicData["TOPIC_ID"];
}
if ($lastId > 0)
{
$result["lastId"] = $lastId;
}
else
{
return self::finishExecution();
}
return self::CONTINUE_EXECUTION;
}