• Модуль: learning
  • Путь к файлу: ~/bitrix/modules/learning/classes/general/clearnlesson.php
  • Класс: CLearnLesson
  • Вызов: CLearnLesson::_CanonizeAndCheckAdditionalParamsForAddCourse
static function _CanonizeAndCheckAdditionalParamsForAddCourse ($arFields, $forUpdate = false)
{
	if ( ! is_array($arFields) )
		throw new LearnException ('EA_PARAMS', LearnException::EXC_ERR_ALL_PARAMS);

	$arAllowedFields = array ('COURSE_SORT', 'ACTIVE_FROM', 'ACTIVE_TO', 'RATING', 'RATING_TYPE', 'SCORM');

	if ( ! $forUpdate )
	{
		$defaultsValues = array (
			'COURSE_SORT' => 500,
			'ACTIVE_FROM' => NULL,
			'ACTIVE_TO'   => NULL,
			'RATING'      => 'N',
			'RATING_TYPE' => NULL,
			'SCORM'       => 'N'
			);

		// set defaults values, if need
		foreach ($defaultsValues as $fieldName => $defaultValue)
		{
			if ( ! array_key_exists($fieldName, $arFields) )
				$arFields[$fieldName] = $defaultValue;
		}
	}

	// check for admitted regions (do all checks only if not forUpdate mode OR in forUpdate mode and field given):

	// COURSE_SORT
	if ( ( ! $forUpdate) || array_key_exists('COURSE_SORT', $arFields) )
		self::_EnsureArgsStrictlyCastableToIntegers ($arFields['COURSE_SORT']);

	// ACTIVE_FROM
	if ( ( ! $forUpdate) || isset($arFields['ACTIVE_FROM']) )
	{
		if ( ($arFields['ACTIVE_FROM'] !== NULL)
			&& ( ! is_string($arFields['ACTIVE_FROM']) )
		)
		{
			throw new LearnException ('EA_PARAMS', LearnException::EXC_ERR_ALL_PARAMS);
		}
	}

	// ACTIVE_TO
	if ( ( ! $forUpdate) || isset($arFields['ACTIVE_TO']) )
	{
		if ( ($arFields['ACTIVE_TO'] !== NULL)
			&& ( ! is_string($arFields['ACTIVE_TO']) )
		)
		{
			throw new LearnException ('EA_PARAMS', LearnException::EXC_ERR_ALL_PARAMS);
		}
	}

	// RATING
	if ( ( ! $forUpdate) || array_key_exists('RATING', $arFields) )
	{
		if ($arFields['RATING'] === '')
			$arFields['RATING'] = NULL;

		if ( ! in_array ($arFields['RATING'], array ('Y', 'N', NULL), true) )
			throw new LearnException ('EA_PARAMS: RATING is ' . $arFields['RATING'], LearnException::EXC_ERR_ALL_PARAMS);
	}

	// RATING_TYPE
	if ( ( ! $forUpdate) || array_key_exists('RATING_TYPE', $arFields) )
	{
		if ( ($arFields['RATING_TYPE'] !== NULL)
			&&
			( ! in_array (
					$arFields['RATING_TYPE'],
					array ('like', 'standart_text', 'like_graphic', 'standart'),
					true)
			)
		)
		{
			throw new LearnException ('EA_PARAMS', LearnException::EXC_ERR_ALL_PARAMS);
		}
	}

	// SCORM
	if ( ( ! $forUpdate) || array_key_exists('SCORM', $arFields) )
	{
		if ( ! in_array ($arFields['SCORM'], array ('Y', 'N'), true) )
			throw new LearnException ('EA_PARAMS', LearnException::EXC_ERR_ALL_PARAMS);
	}


	// Return only exists fields (some fields may be omitted in case $forUpdate = true)
	$rc = array();
	foreach ($arAllowedFields as $fieldName)
	{
		if (array_key_exists($fieldName, $arFields))
			$rc[$fieldName] = $arFields[$fieldName];
	}

	return ($rc);
}