EntitySearchContentRebuildAgent::doRun

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. EntitySearchContentRebuildAgent
  4. doRun
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/agent/search/entitysearchcontentrebuildagent.php
  • Класс: Bitrix\Crm\Agent\Search\EntitySearchContentRebuildAgent
  • Вызов: EntitySearchContentRebuildAgent::doRun
static function doRun()
{
	$instance = static::getInstance();
	if($instance === null)
	{
		return false;
	}

	if(!$instance->isEnabled())
	{
		//Trace('Disabled', 'Y', 1);
		return false;
	}

	$progressData = $instance->getProgressData();

	$offsetID = isset($progressData['LAST_ITEM_ID']) ? (int)($progressData['LAST_ITEM_ID']) : 0;
	$processedItemQty = isset($progressData['PROCESSED_ITEMS']) ? (int)($progressData['PROCESSED_ITEMS']) : 0;
	$totalItemQty = isset($progressData['TOTAL_ITEMS']) ? (int)($progressData['TOTAL_ITEMS']) : 0;
	if($totalItemQty <= 0)
	{
		$totalItemQty = $instance->getTotalCount();
	}

	$limit = (int)Option::get('crm', '~CRM_SEARCH_CONTENT_STEP_LIMIT',  self::ITEM_LIMIT);
	if($limit <= 0)
	{
		$instance->enable(false);
		//Trace('Canceled', $totalItemQty, 1);
		return false;
	}

	$itemIDs = $instance->prepareItemIDs($offsetID, $limit);
	$itemQty = count($itemIDs);

	if($itemQty === 0)
	{
		$instance->enable(false);
		//Trace('Completed', $totalItemQty, 1);
		return false;
	}

	$instance->rebuild($itemIDs);

	$processedItemQty += $itemQty;
	if($totalItemQty < $processedItemQty)
	{
		$totalItemQty = $instance->getTotalCount();
	}

	$progressData['LAST_ITEM_ID'] = $itemIDs[$itemQty - 1];
	$progressData['PROCESSED_ITEMS'] = $processedItemQty;
	$progressData['TOTAL_ITEMS'] = $totalItemQty;

	$instance->setProgressData($progressData);
	//Trace('Running', "{$processedItemQty} from {$totalItemQty}", 1);
	return true;
}

Добавить комментарий