• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/update/fulltasksindexer.php
  • Класс: BitrixTasksUpdateFullTasksIndexer
  • Вызов: FullTasksIndexer::execute
public function execute(array &$result)
{
	if (!(
		Loader::includeModule("tasks") &&
		Option::get("tasks", "needFullTasksIndexing", "Y") == 'Y'
	))
	{
		return false;
	}

	$return = false;

	$params = Option::get("tasks", "fulltasksindexing", "");
	$params = ($params !== ""? @unserialize($params, ['allowed_classes' => false]) : []);
	$params = (is_array($params)? $params : []);

	if (empty($params))
	{
		$params = static::fillSourceParams();
	}

	$found = false;

	if ($params["count"] > 0)
	{
		$result["progress"] = 1;
		$result["steps"] = "";
		$result["count"] = $params["count"];

		$time = time();

		if ($params["last_task_id"] !== $params["last_task_to_index"])
		{
			$tasksHandlerInfo = static::handleTasks($time, $params);

			$found = $tasksHandlerInfo['FOUND'];
			$params = $tasksHandlerInfo['PARAMS'];
		}
		else if (static::checkForumIncluded())
		{
			$commentsHandlerInfo = static::handleComments($time, $params);

			$found = $commentsHandlerInfo['FOUND'];
			$params = $commentsHandlerInfo['PARAMS'];
		}

		if ($found)
		{
			Option::set("tasks", "fulltasksindexing", serialize($params));
			$return = true;
		}

		$result["progress"] = (int)($params["number"] * 100 / $params["count"]);
		$result["steps"] = $params["number"];
	}

	if ($found === false)
	{
		Option::delete("tasks", ["name" => "fulltasksindexing"]);
		Option::set("tasks", "needFullTasksIndexing", "N");
	}

	return $return;
}