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