- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/search/reindex/baseobjectindex.php
- Класс: BitrixDiskSearchReindexBaseObjectIndex
- Вызов: BaseObjectIndex::execute
public function execute(array &$result)
{
$statusAgent = self::getStatus();
if ($statusAgent === self::STATUS_STOP || $statusAgent === self::STATUS_PAUSE)
{
return self::FINISH_EXECUTION;
}
$status = $this->loadCurrentStatus();
if (empty($status['count']) || $status['count'] < 0 || $status['steps'] >= $status['count'])
{
self::stopExecution();
return self::FINISH_EXECUTION;
}
$newStatus = array(
'count' => $status['count'],
'steps' => $status['steps'],
);
$objectRows = ObjectTable::getList(
array(
'select' => array('*', 'HAS_SEARCH_INDEX'),
'filter' => array(
'>ID' => $status['lastId'],
),
'order' => array('ID' => 'ASC'),
'offset' => 0,
'limit' => $this->portionSize,
)
);
$indexManager = Driver::getInstance()->getIndexManager();
$indexManager->disableUsingSearchModule();
$contentManager = new ContentManager();
foreach ($objectRows as $objectRow)
{
if (empty($objectRow['HAS_SEARCH_INDEX']))
{
try
{
$object = BaseObject::buildFromArray($objectRow);
if ($object instanceof Folder)
{
$indexManager->indexFolder($object);
}
elseif ($object instanceof File)
{
$indexManager->indexFile(
$object,
array(
'content' => $contentManager->getFileContentFromIndex($object),
)
);
}
}
catch (ArgumentTypeException $exception)
{
}
}
$newStatus['lastId'] = $objectRow['ID'];
$newStatus['steps']++;
}
if (!empty($newStatus['lastId']))
{
Option::set('disk', 'baseobjectindex', serialize($newStatus));
$result = array(
'count' => $newStatus['count'],
'steps' => $newStatus['steps'],
);
return self::CONTINUE_EXECUTION;
}
self::stopExecution();
return self::FINISH_EXECUTION;
}