- Модуль: learning
- Путь к файлу: ~/bitrix/modules/learning/classes/general/certification.php
- Класс: CAllCertification
- Вызов: CAllCertification::Certificate
static function Certificate($STUDENT_ID, $COURSE_ID, $checkPerms = true)
{
global $DB;
$STUDENT_ID = intval($STUDENT_ID);
$COURSE_ID = intval($COURSE_ID);
if ($STUDENT_ID < 1 || $COURSE_ID < 1)
return false;
if (CCertification::IsCourseCompleted($STUDENT_ID, $COURSE_ID))
{
$strSql = "SELECT SUM(G.RESULT) CNT, SUM(G.MAX_RESULT) MAX_CNT FROM b_learn_gradebook G
INNER JOIN b_learn_test T ON T.ID = G.TEST_ID
WHERE G.COMPLETED = 'Y' AND G.STUDENT_ID = '".$STUDENT_ID."' AND T.COURSE_ID = '".$COURSE_ID."'";
$res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
$SUMMARY = $MAX_SUMMARY = 0;
if ($ar = $res->Fetch())
{
$SUMMARY = $ar["CNT"];
$MAX_SUMMARY = $ar["MAX_CNT"];
}
$arFields = array(
'STUDENT_ID' => $STUDENT_ID,
'COURSE_ID' => $COURSE_ID,
'SUMMARY' => &$SUMMARY,
'MAX_SUMMARY' => &$MAX_SUMMARY
);
foreach(GetModuleEvents('learning', 'OnBeforeCertificate', true) as $arEvent)
{
if (ExecuteModuleEventEx($arEvent, array(&$arFields))===false)
return (false);
}
$arParams = array();
if ( ! $checkPerms )
$arParams['CHECK_PERMISSIONS'] = 'N';
$strSql = "SELECT ID FROM b_learn_certification WHERE STUDENT_ID = '".$STUDENT_ID."' AND COURSE_ID = '".$COURSE_ID."'";
$res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
if ($ar = $res->Fetch())
{
return CCertification::Update($ar["ID"], Array("SUMMARY" => $SUMMARY, "MAX_SUMMARY" => $MAX_SUMMARY, "ACTIVE" => "Y"), $arParams);
}
else
{
$arFields = Array(
"STUDENT_ID" => $STUDENT_ID,
"COURSE_ID" => $COURSE_ID,
"SUMMARY" => $SUMMARY,
"MAX_SUMMARY" => $MAX_SUMMARY,
"~DATE_CREATE" => CDatabase::CurrentTimeFunction(),
);
$ID = CCertification::Add($arFields, $arParams);
return ($ID > 0);
}
}
return false;
}