- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/lib/rest/helper.php
- Класс: BitrixVoximplantRestHelper
- Вызов: Helper::attachRecord
static function attachRecord($callId, $fileName, $fileContent, $restServer)
{
$result = new Result();
$statisticRecord = StatisticTable::getByCallId($callId);
if (!$statisticRecord)
{
$result->addError(new Error("Call is not found in the statistic table. Looks like it is not finished yet."));
return $result;
}
if ($fileContent === null)
{
$result->setData([
'uploadUrl' => CRestUtil::getUploadUrl(['callId' => $callId], $restServer),
'fieldName' => static::FILE_FIELD
]);
return $result;
}
if ($fileName == '')
{
$result->addError(new Error("File name is empty"));
return $result;
}
$allowedExtensions = ['wav', 'mp3'];
if (!in_array(GetFileExtension($fileName), $allowedExtensions))
{
$result->addError(new Error("Wrong file extension. Only wav and mp3 are allowed"));
return $result;
}
$fileArray = CRestUtil::saveFile($fileContent, $fileName);
if ($fileArray === false)
{
$result->addError(new Error("File content is empty."));
return $result;
}
if (is_null($fileArray))
{
$result->addError(new Error("File content is not properly encoded. Base64 encoding is expected."));
return $result;
}
if (!is_array($fileArray))
{
$result->addError(new Error("Unknown error encountered while saving file."));
return $result;
}
$isCorrectFileResult = SecurityRecordFile::isCorrectFromArray($fileArray);
if (!$isCorrectFileResult->isSuccess())
{
return $result->addErrors($isCorrectFileResult->getErrors());
}
$saveResult =
static::saveFile(
$statisticRecord['CALL_START_DATE']->format("Y-m"),
$fileName,
$fileArray,
$statisticRecord['PORTAL_USER_ID']
)
;
if (!$saveResult->isSuccess())
{
$result->addErrors($saveResult->getErrors());
return $result;
}
$saveResultData = $saveResult->getData();
$file = $saveResultData['FILE'];
if ($statisticRecord['CALL_WEBDAV_ID'])
{
Application::getInstance()->addBackgroundJob(
[__CLASS__, 'deleteFile'],
[$statisticRecord['CALL_WEBDAV_ID'], $statisticRecord['PORTAL_USER_ID']]
);
}
$attachResult = static::attachFile($callId, $file);
if (!$attachResult->isSuccess())
{
$result->addErrors($attachResult->getErrors());
return $result;
}
$result->setData([
'FILE_ID' => $file->getId()
]);
return $result;
}