• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/internal/entitytable.php
  • Класс: BitrixTasksScrumInternalEntityTable
  • Вызов: EntityTable::getMap
static function getMap()
{
	$id = new FieldsIntegerField('ID');
	$id->configurePrimary(true);
	$id->configureAutocomplete(true);

	$groupId = new FieldsIntegerField('GROUP_ID');

	$entityType = new FieldsEnumField('ENTITY_TYPE');
	$entityType->addValidator(new ValidatorsLengthValidator(1, 20));
	$entityType->configureValues([
		EntityForm::BACKLOG_TYPE,
		EntityForm::SPRINT_TYPE
	]);
	$entityType->configureDefaultValue(EntityForm::SPRINT_TYPE);

	$name = new FieldsStringField('NAME');
	$name->addValidator(new ValidatorsLengthValidator(null, 255));

	$sort = new FieldsIntegerField('SORT');

	$createdBy = new FieldsIntegerField('CREATED_BY');

	$modifiedBy = new FieldsIntegerField('MODIFIED_BY');

	$dateStart = new FieldsDatetimeField('DATE_START');

	$dateEnd = new FieldsDatetimeField('DATE_END');

	//todo add default timezone from server and user
	$dateStartTz = new FieldsStringField('DATE_START_TZ');
	$dateStartTz->addValidator(new ValidatorsLengthValidator(null, 50));
	$dateEndTz = new FieldsStringField('DATE_END_TZ');
	$dateEndTz->addValidator(new ValidatorsLengthValidator(null, 50));

	$status = new FieldsEnumField('STATUS');
	$status->addValidator(new ValidatorsLengthValidator(null, 20));
	$status->configureValues([
		EntityForm::SPRINT_ACTIVE,
		EntityForm::SPRINT_PLANNED,
		EntityForm::SPRINT_COMPLETED
	]);

	$info = new FieldsObjectField('INFO');
	$info->configureObjectClass(EntityInfo::class);
	$info->configureSerializeCallback(function (?EntityInfo $entityInfo)
	{
		return $entityInfo ? Json::encode($entityInfo->getInfoData()) : [];
	});
	$info->configureUnserializeCallback(function ($value)
	{
		$data = (is_string($value) && !empty($value) ? Json::decode($value) : []);

		$entityInfo = new EntityInfo();
		$entityInfo->setInfoData($data);

		return $entityInfo;
	});

	$items = new OneToMany('ITEMS', ItemTable::class, 'ENTITY');
	$items->configureJoinType(Join::TYPE_LEFT);

	return [
		$id,
		$groupId,
		$entityType,
		$name,
		$sort,
		$createdBy,
		$modifiedBy,
		$dateStart,
		$dateEnd,
		$dateStartTz,
		$dateEndTz,
		$status,
		$info,
		$items
	];
}