• Модуль: learning
  • Путь к файлу: ~/bitrix/modules/learning/classes/mysql/attempt.php
  • Класс: CTestAttempt
  • Вызов: CTestAttempt::_GetListSQLFormer
static function _GetListSQLFormer ($sSelect, $obUserFieldsSql, $bCheckPerm, $USER, $arFilter, $strSqlSearch, &$strSqlFrom)
{
	$oPermParser = new CLearnParsePermissionsFromFilter ($arFilter);

	$strSqlFrom = "FROM b_learn_attempt A ".
	"INNER JOIN b_learn_test T ON A.TEST_ID = T.ID ".
	"INNER JOIN b_user U ON U.ID = A.STUDENT_ID ".
	"LEFT JOIN b_learn_course C ON C.ID = T.COURSE_ID ".
	"LEFT JOIN b_learn_test_mark TM ON A.TEST_ID = TM.TEST_ID ".
	$obUserFieldsSql->GetJoin("A.ID") .
	" WHERE 
		(TM.SCORE IS NULL 
		OR TM.SCORE = 
			(SELECT MIN(SCORE) 
				FROM b_learn_test_mark 
				WHERE SCORE >= 
					CASE WHEN A.STATUS = 'F' 
						THEN 1.0*A.SCORE/A.MAX_SCORE*100 
						ELSE 0 
					END 
					AND TEST_ID = A.TEST_ID
			)
		) ";

	if ($oPermParser->IsNeedCheckPerm())
		$strSqlFrom .= " AND C.LINKED_LESSON_ID IN (" . $oPermParser->SQLForAccessibleLessons() . ") ";

	$strSqlFrom .= $strSqlSearch;

	$strSql =
	"SELECT DISTINCT ".
	$sSelect." ".
	$obUserFieldsSql->GetSelect()." ". $strSqlFrom;

	return ($strSql);
}