• Модуль: photogallery
  • Путь к файлу: ~/bitrix/modules/photogallery/lib/copy/stepper/section.php
  • Класс: BitrixPhotogalleryCopyStepperSection
  • Вызов: Section::execute
public function execute(array &$option)
{
	if (!Loader::includeModule("iblock") || !Loader::includeModule("photogallery"))
	{
		return false;
	}

	try
	{
		$queue = $this->getQueue();
		$this->setQueue($queue);
		$queueOption = $this->getQueueOption();
		if (empty($queueOption))
		{
			$this->deleteQueueOption();
			return !$this->isQueueEmpty();
		}

		$sectionId = ($queueOption["sectionId"] ?: 0);
		$copiedSectionId = ($queueOption["copiedSectionId"] ?: 0);
		$errorOffset = ($queueOption["errorOffset"] ?: 0);

		$limit = 5;
		$offset = $this->getOffset($copiedSectionId) + $errorOffset;

		$enumRatio = ($queueOption["enumRatio"] ?: []);
		$sectionsRatio = ($queueOption["sectionsRatio"] ?: []);
		$mapIdsCopiedElements = ($queueOption["mapIdsCopiedElements"] ?: []);

		if ($sectionId)
		{
			list($elementIds, $selectedRowsCount) = $this->getElementIds($sectionId, $limit, $offset);

			$elementCopier = $this->getElementCopier();
			$containerCollection = $this->getContainerCollection($elementIds, $sectionsRatio, $enumRatio);
			$result = $elementCopier->copy($containerCollection);
			if (!$result->isSuccess())
			{
				$queueOption["errorOffset"] += $this->getErrorOffset($elementCopier);
			}

			$mapIdsCopiedElements = $elementCopier->getMapIdsCopiedEntity() + $mapIdsCopiedElements;
			$queueOption["mapIdsCopiedElements"] = $mapIdsCopiedElements;
			$this->saveQueueOption($queueOption);

			if ($selectedRowsCount < $limit)
			{
				$this->onAfterQueueCopy($queueOption);
				$this->deleteQueueOption();
				return !$this->isQueueEmpty();
			}
			else
			{
				$option["steps"] = $offset;
				return true;
			}
		}
		else
		{
			$this->onAfterQueueCopy($queueOption);
			$this->deleteQueueOption();
			return !$this->isQueueEmpty();
		}
	}
	catch (Exception $exception)
	{
		$this->writeToLog($exception);
		$this->deleteQueueOption();
		return false;
	}
}