• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/hook/page/themefonts.php
  • Класс: BitrixLandingHookPageThemeFonts
  • Вызов: ThemeFonts::migrateFromTypoThemes
static function migrateFromTypoThemes(int $lid, int $siteId): void
{
	$migrations = [
		'1construction' => [
			'CODE' => 'Alegreya Sans',
			'CODE_H' => 'Alegreya Sans',
			'SIZE' => '1.14286',
		],
		'2business' => [
			'CODE' => 'Roboto',
			'CODE_H' => 'Roboto',
			'SIZE' => '1',
		],
		'3corporate' => [
			'CODE' => 'Roboto',
			'CODE_H' => 'Roboto',
			'SIZE' => '1',
		],
		'accounting' => [
			'CODE' => 'Open Sans',
			'CODE_H' => 'Open Sans',
			'SIZE' => '1',
		],
		'agency' => [
			'CODE' => 'Roboto',
			'CODE_H' => 'Roboto',
			'SIZE' => '1',
		],
		'app' => [
			'CODE' => 'Open Sans',
			'CODE_H' => 'Open Sans',
			'SIZE' => '1.14286',
		],
		'architecture' => [
			'CODE' => 'Open Sans',
			'CODE_H' => 'Open Sans',
			'SIZE' => '1',
		],
		'charity' => [
			'CODE' => 'Open Sans',
			'CODE_H' => 'Open Sans',
			'SIZE' => '0.92857',
		],
		'consulting' => [
			'CODE' => 'Open Sans',
			'CODE_H' => 'Open Sans',
			'SIZE' => '1',
		],
		'courses' => [
			'CODE' => 'Alegreya Sans',
			'CODE_H' => 'Alegreya Sans',
			'SIZE' => '1',
		],
		'event' => [
			'CODE' => 'Open Sans',
			'CODE_H' => 'Open Sans',
			'SIZE' => '1.14286',
		],
		'gym' => [
			'CODE' => 'Roboto',
			'CODE_H' => 'Roboto',
			'SIZE' => '1',
		],
		'lawyer' => [
			'CODE' => 'Roboto',
			'CODE_H' => 'Open Sans',
			'SIZE' => '1',
		],
		'music' => [
			'CODE' => 'Open Sans',
			'CODE_H' => 'Open Sans',
			'SIZE' => '0.92857',
		],
		'photography' => [
			'CODE' => 'Roboto',
			'CODE_H' => 'Roboto',
			'SIZE' => '0.92857',
		],
		'real-estate' => [
			'CODE' => 'Open Sans',
			'CODE_H' => 'Open Sans',
			'SIZE' => '1',
		],
		'restaurant' => [
			'CODE' => 'Montserrat',
			'CODE_H' => 'Montserrat',
			'SIZE' => '0.92857',
		],
		'shipping' => [
			'CODE' => 'Open Sans',
			'CODE_H' => 'Open Sans',
			'SIZE' => '1',
		],
		'spa' => [
			'CODE' => 'Open Sans',
			'CODE_H' => 'Open Sans',
			'SIZE' => '1',
		],
		'travel' => [
			'CODE' => 'Roboto',
			'CODE_H' => 'Roboto',
			'SIZE' => '1',
		],
		'wedding' => [
			'CODE' => 'Montserrat',
			'CODE_H' => 'Montserrat',
			'SIZE' => '1',
		],
	];

	$queryOld = HookDataTable::query()
		->addSelect('ID')
		->addSelect('VALUE')
		->addSelect('PUBLIC')
		->addSelect('ENTITY_ID')
		->addSelect('ENTITY_TYPE')
		->where('HOOK', 'THEME')
		->where('CODE', 'CODE_TYPO')
		->where(Query::filter()
			->logic('or')
			->where(Query::filter()
				->where('ENTITY_ID', $lid)
				->where('ENTITY_TYPE', Hook::ENTITY_TYPE_LANDING)
			)
			->where(Query::filter()
				->where('ENTITY_ID', $siteId)
				->where('ENTITY_TYPE', Hook::ENTITY_TYPE_SITE)
			)
		);

	while ($old = $queryOld->fetch())
	{
		// check exist
		$existing = HookDataTable::query()
			->addSelect('ID')
			->where('HOOK', 'THEMEFONTS')
			->where('ENTITY_ID', $old['ENTITY_ID'])
			->where('ENTITY_TYPE', $old['ENTITY_TYPE'])
			->where('PUBLIC', $old['PUBLIC'])
			->fetch();
		if (!$existing)
		{
			//process
			$migrations[$old['VALUE']]['USE'] = 'Y';
			foreach ($migrations[$old['VALUE']] as $code => $value)
			{
				HookDataTable::add(
					[
						'ENTITY_ID' => $old['ENTITY_ID'],
						'ENTITY_TYPE' => $old['ENTITY_TYPE'],
						'PUBLIC' => $old['PUBLIC'],
						'HOOK' => 'THEMEFONTS',
						'CODE' => $code,
						'VALUE' => $value,
					]
				);
			}
		}

		HookDataTable::delete($old['ID']);
	}
}