- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/call/conference.php
- Класс: BitrixImCallConference
- Вызов: Conference::validateFields
static function validateFields(array $fields): BitrixImV2Result
{
$result = new BitrixImV2Result();
$validatedFields = [];
$fields = array_change_key_case($fields, CASE_UPPER);
if (isset($fields['TITLE']) && is_string($fields['TITLE']))
{
$fields['TITLE'] = trim($fields['TITLE']);
$validatedFields['TITLE'] = $fields['TITLE'];
}
if (isset($fields['PASSWORD']) && is_string($fields['PASSWORD']) && $fields['PASSWORD'] !== '')
{
$fields['PASSWORD'] = trim($fields['PASSWORD']);
if (strlen($fields['PASSWORD']) < 3)
{
return $result->addError(
new Error(
Loc::getMessage('IM_CALL_CONFERENCE_ERROR_PASSWORD_LENGTH_NEW'),
'PASSWORD_SHORT_ERROR'
)
);
}
$validatedFields['VIDEOCONF']['PASSWORD'] = $fields['PASSWORD'];
}
else
{
$validatedFields['VIDEOCONF']['PASSWORD'] = $fields['VIDEOCONF']['PASSWORD'] ?? '';
}
if (isset($fields['INVITATION']) && is_string($fields['INVITATION']))
{
$fields['INVITATION'] = trim($fields['INVITATION']);
if (strlen($fields['INVITATION']) > 255)
{
return $result->addError(
new Error(
Loc::getMessage('IM_CALL_CONFERENCE_ERROR_INVITATION_LENGTH'),
'INVITATION_LONG_ERROR'
)
);
}
$validatedFields['VIDEOCONF']['INVITATION'] = $fields['INVITATION'];
}
elseif (isset($fields['VIDEOCONF']['INVITATION']) && is_string($fields['VIDEOCONF']['INVITATION']))
{
$validatedFields['VIDEOCONF']['INVITATION'] = $fields['VIDEOCONF']['INVITATION'];
}
if (isset($fields['USERS']) && is_array($fields['USERS']))
{
$validatedFields['USERS'] = [];
foreach ($fields['USERS'] as $userId)
{
$validatedFields['USERS'][] = (int)$userId;
}
}
if (isset($fields['BROADCAST_MODE']) && $fields['BROADCAST_MODE'] === true && Settings::isBroadcastingEnabled())
{
if (count($fields['PRESENTERS']) === 0)
{
return $result->addError(
new Error(
Loc::getMessage('IM_CALL_CONFERENCE_ERROR_NO_PRESENTERS'),
'PRESENTERS_EMPTY_ERROR'
)
);
}
if (count($fields['PRESENTERS']) > self::PRESENTERS_LIMIT)
{
return $result->addError(
new Error(
Loc::getMessage('IM_CALL_CONFERENCE_ERROR_TOO_MANY_PRESENTERS'),
'PRESENTERS_TOO_MANY_ERROR'
)
);
}
$validatedFields['VIDEOCONF']['IS_BROADCAST'] = 'Y';
$validatedFields['VIDEOCONF']['PRESENTERS'] = [];
foreach ($fields['PRESENTERS'] as $userId)
{
$validatedFields['USERS'][] = (int)$userId;
$validatedFields['VIDEOCONF']['PRESENTERS'][] = (int)$userId;
}
}
else
{
$validatedFields['VIDEOCONF']['IS_BROADCAST'] = 'N';
}
if (isset($fields['ALIAS_DATA']))
{
if (static::isAliasCorrect($fields['ALIAS_DATA']))
{
$validatedFields['VIDEOCONF']['ALIAS_DATA'] = $fields['ALIAS_DATA'];
}
else
{
return $result->addError(
new Error(
Loc::getMessage('IM_CALL_CONFERENCE_ERROR_ALIAS'),
'WRONG_ALIAS_ERROR'
)
);
}
}
else
{
if (isset($fields['VIDEOCONF']['ALIAS_DATA']))
{
$validatedFields['VIDEOCONF']['ALIAS_DATA'] = $fields['VIDEOCONF']['ALIAS_DATA'];
}
else
{
$validatedFields['VIDEOCONF']['ALIAS_DATA'] = Alias::addUnique([
"ENTITY_TYPE" => Alias::ENTITY_TYPE_VIDEOCONF,
"ENTITY_ID" => 0
]);
}
}
$result->setData(['FIELDS' => $validatedFields]);
return $result;
}