- Модуль: learning
- Путь к файлу: ~/bitrix/modules/learning/classes/general/ilearngraphnode.php
- Класс: CLearnGraphNode
- Вызов: CLearnGraphNode::_UploadFile
static function _UploadFile ($fieldNameInDB, $arData)
{
if ( ! is_array($arData) )
{
throw new LearnException ('EA_PARAMS: ' . var_export ($arData, true),
LearnException::EXC_ERR_GN_CHECK_PARAMS);
}
// Check for fields needed by CFile::SaveForDB
$fieldsMustBe = array ('name', 'size', 'tmp_name', 'type', 'del', 'MODULE_ID');
if (count(array_diff($fieldsMustBe, array_keys($arData))) !== 0)
{
throw new LearnException ('EA_PARAMS: some fields not found',
LearnException::EXC_ERR_GN_CHECK_PARAMS);
}
if ($arData['del'] !== 'Y')
$arData['del'] = ''; // we can't use N' due to bug in CFile::SaveToDB();
$arFileData = array($fieldNameInDB => $arData);
$rc = CFile::SaveForDB($arFileData, $fieldNameInDB,
'learning'); // learning - is folder in /upload
// This is workaround caused by bug in CFile::SaveToDB();
if (($rc === false) && ($arData['name'] == '') && ($arData['del'] !== 'Y'))
{
// We are not deleting file and not uploading new, so return FALSE, what means no image's ID updates occured
return (false);
}
if ( ($rc === false)
|| ( ! isset($arFileData[$fieldNameInDB]) )
|| ( ($arData['del'] !== 'Y') && ($arFileData[$fieldNameInDB] === false) )
)
{
throw new LearnException ('EA_OTHER: file uploading error: ' . var_export ($rc, true)
. '; ' . var_export ($arFileData, true) . '; ' . var_export ($arData, true),
LearnException::EXC_ERR_GN_FILE_UPLOAD);
}
// If file removed - return NULL
if ($arFileData[$fieldNameInDB] === false)
$fileId = NULL;
else
$fileId = intval($arFileData[$fieldNameInDB]);
return ($fileId);
}