- Модуль: 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
];
}