- Модуль: learning
- Путь к файлу: ~/bitrix/modules/learning/classes/general/ilearngraphnode.php
- Класс: CLearnGraphNode
- Вызов: CLearnGraphNode::_PrepareDataForQuery
static function _PrepareDataForQuery ($arFieldsMap, $arFields, $lessonId)
{
global $DB;
$arLessonData = false;
// if data prepartation for update - cache data about lesson to be updated
if ($lessonId !== false)
{
// if lesson data not cached - get it
if ($arLessonData === false)
$arLessonData = self::GetByID ($lessonId);
}
$arFieldsToDb = array ();
foreach ($arFields as $field => $value)
{
$fieldNameInDB = $arFieldsMap[$field]['field'];
if ( ($field === 'PREVIEW_PICTURE')
|| ($field === 'DETAIL_PICTURE')
|| ($fieldNameInDB === 'PREVIEW_PICTURE')
|| ($fieldNameInDB === 'DETAIL_PICTURE')
)
{
$error = CFile::CheckImageFile($value);
if ($error <> '')
{
throw new LearnException (
'EA_PARAMS: ' . $error,
LearnException::EXC_ERR_GN_CHECK_PARAMS);
}
// if data prepartation for update - gets prev pictures names
if ($lessonId !== false)
{
if ( ! array_key_exists($field, $arLessonData) )
throw new LearnException ('EA_LOGIC', LearnException::EXC_ERR_ALL_LOGIC);
$arFields[$field]['old_file'] = $arLessonData[$field];
$value = $arFields[$field];
}
// throws LearnException on error, returns FALSE if id of image not updated
$fileId = self::_UploadFile ($fieldNameInDB, $value);
if ($fileId === false)
continue; // id of image not updated
// replace value for current field to fileId
$value = $arFields[$field] = $fileId;
}
if ($value === NULL)
$arFieldsToDb[$fieldNameInDB] = false;
else
$arFieldsToDb[$fieldNameInDB] = $value;
}
return ($arFieldsToDb);
}