Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/catalog/lib/integration/ai/
Upload File :
Current File : /var/www/homesaver/www/bitrix/modules/catalog/lib/integration/ai/settings.php

<?php

namespace Bitrix\Catalog\Integration\AI;

use Bitrix\AI\Context;
use Bitrix\AI\Engine;
use Bitrix\AI\Tuning;
use Bitrix\Main\Entity;
use Bitrix\Main\Loader;
use Bitrix\Main\Localization\Loc;

class Settings
{
	private const TEXT_CATEGORY = 'text';
	private const TUNING_CODE_TEXT_PRODUCT_CARD = 'catalog_product_card_allow_text_generate';

	public static function isTextProductCardAvailable(): bool
	{
		if (!self::checkEngineAvailable(self::TEXT_CATEGORY))
		{
			return false;
		}

		$item = (new Tuning\Manager())->getItem(self::TUNING_CODE_TEXT_PRODUCT_CARD);

		return $item ? $item->getValue() : true;
	}

	private static function checkEngineAvailable(string $type): bool
	{
		if (!Loader::includeModule('ai'))
		{
			return false;
		}

		$engine = Engine::getByCategory($type, Context::getFake());

		if (!$engine)
		{
			return false;
		}

		return true;
	}

	public static function onTuningLoad(): Entity\EventResult
	{
		$result = new Entity\EventResult();

		$items = [];
		$groups = [];

		if (Engine::getByCategory(self::TEXT_CATEGORY, Context::getFake()))
		{
			$items[self::TUNING_CODE_TEXT_PRODUCT_CARD] = [
				'group' => Tuning\Defaults::GROUP_TEXT,
				'header' => Loc::getMessage('CATALOG_AI_SETTINGS_ALLOW_TEXT_PROSUCT_CARD_COPILOT_DESC'),
				'title' => Loc::getMessage('CATALOG_AI_SETTINGS_COPILOT_PRODUCT_CARD_TITLE'),
				'type' => Tuning\Type::BOOLEAN,
				'default' => true,
				'sort' => 700,
			];
		}

		$result->modifyFields([
			'items' => $items,
			'groups' => $groups,
		]);

		return $result;
	}
}