• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/model/section.php
  • Класс: BitrixIblockModelSection
  • Вызов: Section::compileEntityByIblock
static function compileEntityByIblock($iblock)
{
	$iblockId = static::resolveIblockId($iblock);

	if ($iblockId <= 0)
	{
		return null;
	}

	if (!isset(self::$entityInstance[$iblockId]))
	{
		$className = 'Section'.$iblockId.'Table';
		$entityName = "\Bitrix\Iblock\".$className;
		$referenceName = 'BitrixIblockSection'.$iblockId;
		$entity = '
		namespace BitrixIblock;
		class '.$className.' extends BitrixIblockSectionTable
		{
			public static function getUfId()
			{
				return "IBLOCK_'.$iblockId.'_SECTION";
			}
			
			public static function getMap()
			{
				$fields = parent::getMap();
				$fields["PARENT_SECTION"] = array(
					"data_type" => "'.$referenceName.'",
					"reference" => array("=this.IBLOCK_SECTION_ID" => "ref.ID"),
				);
				return $fields;
			}
			
			public static function setDefaultScope($query)
			{
				return $query->where("IBLOCK_ID", '.$iblockId.');
			}
		}';
		eval($entity);
		self::$entityInstance[$iblockId] = $entityName;
	}

	return self::$entityInstance[$iblockId];
}