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