• Модуль: translate
  • Путь к файлу: ~/bitrix/modules/translate/lib/controller/index/collectlangpath.php
  • Класс: BitrixTranslateControllerIndexCollectLangPath
  • Вызов: CollectLangPath::run
public function run($path = '', $runBefore = false)
{
	if ($runBefore)
	{
		$this->onBeforeRun();
	}

	if (empty($path))
	{
		$path = TranslateConfig::getDefaultPath();
	}

	$path = '/'. trim($path, '/.\');

	// List of files and folders
	if ($this->isNewProcess)
	{
		$pathList = $this->controller->getRequest()->get('pathList');

		if (!empty($pathList))
		{
			$pathList = preg_split("/[rn]+/", $pathList);
			array_walk($pathList, 'trim');
			$pathList = array_unique(array_filter($pathList));
		}

		if (empty($pathList))
		{
			$pathList = [$path];
		}

		$checkIndexExists = $this->controller->getRequest()->get('checkIndexExists') === 'Y';

		foreach ($pathList as $testPath)
		{
			if ($checkIndexExists)
			{
				$indexPath = IndexPathIndex::loadByPath($testPath);
				if ($indexPath instanceof IndexPathIndex)
				{
					if ($indexPath->getIndexed())
					{
						continue;// skip indexing if index exists
					}
				}
			}

			if (TranslateIOPath::isPhpFile($testPath))
			{
				if (!TranslateIOPath::isLangDir($testPath))
				{
					continue;// skip non lang files
				}
			}

			$this->pathList[] = $testPath;
		}

		if (empty($this->pathList))
		{
			return [
				'STATUS' => TranslateControllerSTATUS_COMPLETED,
			];
		}

		$languages = $this->controller->getRequest()->get('languages');
		if (is_array($languages) && !in_array('all', $languages))
		{
			$languages = array_intersect($languages, TranslateConfig::getEnabledLanguages());
			if (!empty($languages))
			{
				$this->languages = $languages;
			}
		}

		$this->isNewProcess = false;
		$this->instanceTimer()->setTimeLimit(5);
	}

	return $this->performStep('runIndexing');
}