• Модуль: learning
  • Путь к файлу: ~/bitrix/modules/learning/classes/general/certification.php
  • Класс: CAllCertification
  • Вызов: CAllCertification::IsCourseCompleted
static function IsCourseCompleted($STUDENT_ID, $COURSE_ID)
{
	global $DB;

	$STUDENT_ID = intval($STUDENT_ID);
	$COURSE_ID = intval($COURSE_ID);

	if ($STUDENT_ID < 1 || $COURSE_ID < 1)
		return false;

	$strSql = "
	SELECT COUNT(*) CNT_ALL, SUM(CASE WHEN G.COMPLETED = 'Y' THEN 1 ELSE 0 END ) CNT_COMPLETED
	FROM b_learn_test T
	INNER JOIN b_learn_course C ON T.COURSE_ID = C.ID
	INNER JOIN b_learn_lesson TUL ON C.LINKED_LESSON_ID = TUL.ID
	LEFT JOIN b_learn_gradebook G ON T.ID = G.TEST_ID AND G.STUDENT_ID = '".$STUDENT_ID."'
	WHERE T.COURSE_ID = '".$COURSE_ID."' AND TUL.ACTIVE = 'Y' AND T.ACTIVE = 'Y'
	";

	$res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); $cntAll = $cntCompleted = null; $isCourseCompleted = false; // can be overrided below if ( ($ar = $res->Fetch()) && intval($ar["CNT_ALL"]) > 0) { $cntAll = $ar['CNT_ALL']; $cntCompleted = $ar['CNT_COMPLETED']; if ($cntCompleted == $cntAll) $isCourseCompleted = true; } $arEventData = array( 'STUDENT_ID' => $STUDENT_ID, 'COURSE_ID' => $COURSE_ID, 'CNT_ALL' => $cntAll, 'CNT_COMPLETED' => $cntCompleted ); foreach(GetModuleEvents('learning', 'OnCheckCourseCompleted', true) as $arEvent) { $rc = ExecuteModuleEventEx($arEvent, array($arEventData)); if ($rc === false) { $isCourseCompleted = false; break; } elseif ($rc === true) { $isCourseCompleted = true; break; } } return $isCourseCompleted; }