• Модуль: learning
  • Путь к файлу: ~/bitrix/modules/learning/classes/general/grouplesson.php
  • Класс: CLearningGroupLesson
  • Вызов: CLearningGroupLesson::setDelays
static function setDelays($learningGroupId, $arDelays)
{
	if ( ! is_array($arDelays) )
		return false;

	$learningGroupId = (int) $learningGroupId;

	$arLessonsIds = array();

	// first, collect lessons ids
	foreach ($arDelays as $lessonId => $delay)
		$arLessonsIds[] = (int) $lessonId;

	$arLessonsIds = array_unique(array_filter($arLessonsIds));

	// determine already registered delays in DB
	$arRegistered = array();
	if ( ! empty($arLessonsIds) )
	{
		$rs = self::getList(
			array(),
			array(
				'LEARNING_GROUP_ID' => $learningGroupId,
				'LESSON_ID'         => $arLessonsIds
			),
			array('LESSON_ID')
		);

		while ($ar = $rs->fetch())
			$arRegistered[] = (int) $ar['LESSON_ID'];
	}

	$arRegistered = array_unique(array_filter($arRegistered));

	// Do update/add
	foreach ($arDelays as $lessonId => $delay)
	{
		$arFields = array(
			'DELAY'             => abs((int)$delay),
			'LESSON_ID'         => (int) $lessonId,
			'LEARNING_GROUP_ID' => $learningGroupId
		);

		if (in_array((int)$lessonId, $arRegistered, true))
			self::update($arFields);
		else
			self::add($arFields);
	}
}