private static function getDataToCheck($messageId) { $return = false; if ($messageId > 0 && Loader::includeModule("forum")) { if (!array_key_exists($messageId, self::$messages)) { $cacheTtl = 2592000; $cacheId = 'forum_message_' . $messageId; $cachePath = \CComponentEngine::makeComponentPath("forum.topic.read"); $cache = new \CPHPCache(); $messages = $topics = array(); if ($cache->initCache($cacheTtl, $cacheId, $cachePath)) { list($messages, $topics) = $cache->getVars(); } else { $dbRes = \CForumMessage::getListEx(array("ID" => "ASC"), array("TOPIC" => "Y", "TOPIC_MESSAGE_ID" => $messageId, ">=ID" => $messageId), false, 10); while ($res = $dbRes->fetch()) { $messages["M" . $res["ID"]] = array_intersect_key($res, array("ID" => "", "TOPIC_ID" => "", "FORUM_ID" => "", "USER_ID" => "", "NEW_TOPIC" => "", "PARAM1" => "", "PARAM2" => "")); if (!array_key_exists("T" . $res["TOPIC_ID"], $topics)) { $topics["T" . $res["TOPIC_ID"]] = array("TITLE" => $res["TITLE"], "USER_ID" => $res["USER_START_ID"], "XML_ID" => $res["TOPIC_XML_ID"], "SOCNET_GROUP_ID" => $res["TOPIC_SOCNET_GROUP_ID"], "OWNER_ID" => $res["TOPIC_OWNER_ID"]); } } if (!empty($messages)) { $cache->startDataCache(); $res = reset($topics); /** @noinspection PhpDynamicAsStaticMethodCallInspection */ \CForumCacheManager::setTag($cachePath, "forum_topic_" . $res['ID']); $cache->endDataCache(array($messages, $topics)); } } self::$messages += $messages; self::$topics += $topics; } if (array_key_exists("M" . $messageId, self::$messages)) { $return = array(self::$messages["M" . $messageId], self::$topics["T" . self::$messages["M" . $messageId]["TOPIC_ID"]], \CForumNew::getByIDEx(self::$messages["M" . $messageId]["FORUM_ID"], SITE_ID)); } } return $return; }