- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/update/forumcommentsindex.php
- Класс: BitrixTasksUpdateForumCommentsIndex
- Вызов: ForumCommentsIndex::execute
public function execute(array &$result)
{
if (!(BitrixMainLoader::includeModule("tasks") &&
CTasksTools::getForumIdForIntranet() > 0 &&
BitrixMainLoader::includeModule("forum") &&
BitrixMainLoader::includeModule("search")
))
return false;
$params = BitrixMainConfigOption::get("tasks", "update1758", "");
$params = ($params !== "" ? @unserialize($params) : array());
$params = (is_array($params) ? $params : array());
if (empty($params))
{
$params = array(
"lastMessageId" => 0,
"number" => 0,
"count" => BitrixForumMessageTable::getCount(
array(
"FORUM_ID" => CTasksTools::getForumIdForIntranet(),
"APPROVED" => "Y",
"=%XML_ID" => "TASK_%"
)
)
);
}
$return = false;
if ($params["count"] > 0)
{
$result["count"] = $params["count"];
$result["progress"] = 1;
$result["steps"] = "";
$NS = array(
"CLEAR" => "N",
"MODULE" => "forum",
"ID" => $params["lastMessageId"] + 1,
"CNT" => 0,
"SESS_ID" => md5(uniqid("")),
"TO_MODULE_ID" => "forum",
"FILTER" => array(
"F.ID=".CTasksTools::getForumIdForIntranet(),
"FM.XML_ID LIKE 'TASK_%'"
)
);
$oCallBack = new CSearchCallback;
$oCallBack->MODULE = $NS["TO_MODULE_ID"];
$oCallBack->CNT = 0;
$oCallBack->SESS_ID = $NS["SESS_ID"];
$cnt = intval(BitrixMainConfigOption::get("forum", "search_message_count", 0));
BitrixMainConfigOption::set("forum", "search_message_count", 15);
$params["lastMessageId"] = CForumNew::reindex($NS, $oCallBack, "Index");
$params["number"] += $oCallBack->CNT;
if (isset($NS["SKIPPED"]) && is_array($NS["SKIPPED"]))
{
while($id = array_pop($NS["SKIPPED"]))
{
CSearch::DeleteIndex("forum", $id);
$params["number"]++;
}
}
if ($params["lastMessageId"] > 0)
{
$params = array(
"lastMessageId" => $params["lastMessageId"],
"number" => $params["number"],
"count" => $params["count"]
);
BitrixMainConfigOption::set("tasks", "update1758", serialize($params));
CSearch::DeleteOld($NS["SESS_ID"], $NS["TO_MODULE_ID"]);
$return = true;
}
if ($cnt > 0)
BitrixMainConfigOption::set("forum", "search_message_count", $cnt);
else
BitrixMainConfigOption::delete("forum", array("name" => "search_message_count"));
$result["steps"] = $params["number"];
if ($return === false)
BitrixMainConfigOption::delete("tasks", array("name" => "update1758"));
}
return $return;
}