• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/form.php
  • Класс: Bitrix\Crm\WebForm\Form
  • Вызов: Form::getIdByCode
static function getIdByCode($formCode)
{
	$idByCode = array();

	$formCodePieces = explode('_', $formCode);
	if(is_numeric($formCodePieces[0]))
	{
		return (int) $formCodePieces[0];
	}

	$cacheId = 'crm_webform_getIdByCode_' . serialize($formCode);
	$cache = \Bitrix\Main\Data\Cache::createInstance();
	if($cache->startDataCache(36000, $cacheId))
	{
		$formDb = Internals\FormTable::getList(array(
			'select' => array('ID', 'CODE'),
			'filter' => array('=CODE' => $formCode),
			'limit' => 1
		));
		while($form = $formDb->fetch())
		{
			$idByCode[$form['CODE']] = $form['ID'];
		}

		if(isset($idByCode[$formCode]))
		{
			if(defined("BX_COMP_MANAGED_CACHE"))
			{
				global $CACHE_MANAGER;
				$CACHE_MANAGER->startTagCache($cache->getPath($cacheId));
				$CACHE_MANAGER->RegisterTag(Form::getCacheTag($idByCode[$formCode]));
			}
		}

		$cache->endDataCache(array('CODE_BY_ID' => $idByCode));

		if(isset($idByCode[$formCode]))
		{
			if(defined("BX_COMP_MANAGED_CACHE"))
			{
				global $CACHE_MANAGER;
				$CACHE_MANAGER->endTagCache();
			}
		}
	}
	else
	{
		$cacheVars = $cache->getVars();
		if(isset($cacheVars['CODE_BY_ID']))
		{
			$idByCode = $cacheVars['CODE_BY_ID'];
		}
	}

	return isset($idByCode[$formCode]) ? $idByCode[$formCode] : null;
}