Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/forum/lib/update/ |
Upload File : |
<? namespace Bitrix\Forum\Update; use \Bitrix\Main\Update\Stepper; use \Bitrix\Forum\Integration; use \Bitrix\Main\Loader; use \Bitrix\Main; use \Bitrix\Forum\MessageTable; class TopicServiceCounter extends Stepper { protected static $moduleId = "forum"; protected const TOPIC_LIMIT = 100; public function execute(array &$result) { if (!Loader::includeModule("forum")) { return self::finishExecution(); } if (Main\Config\Option::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 \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(*)') ] ]); $topicData = $res->fetch(); $result["count"] = (int)$topicData['CNT']; } $filter = [ '>SERVICE_TYPE' => 0 ]; if ($result["lastId"] > 0) { $filter["<TOPIC_ID"] = $result["lastId"]; } Main\Config\Option::set("forum", "TopicServiceCounterStepper", "inProgress"); $lastId = 0; $res = MessageTable::getList([ "select" => ["TOPIC_ID", "CNT"], "filter" => $filter, 'runtime' => [ new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(*)') ], "group" => ["TOPIC_ID"], "limit" => self::TOPIC_LIMIT, "order" => ["TOPIC_ID" => "DESC"] ]); while($topicData = $res->fetch()) { $topic = \Bitrix\Forum\EO_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; } protected static function finishExecution() { Main\Config\Option::delete("forum", ["name" => "TopicServiceCounterStepper"]); return self::FINISH_EXECUTION; } } ?>