14 if ( ! isset($row[
'COURSE_ID']) )
19 if ($lessonId ===
false)
69 $APPLICATION->ThrowException(
GetMessage(
"LEARNING_BAD_CERTIFICATE_DUPLICATE"),
"ERROR_CERTIFICATE_DUPLICATE");
99 $bCheckRights =
false;
107 $ID =
$DB->Add(
"b_learn_certification",
$arFields, Array(),
"learning");
124 if (
$ID < 1)
return false;
126 $bCheckRights =
true;
127 if (isset(
$arParams[
'CHECK_PERMISSIONS']) && (
$arParams[
'CHECK_PERMISSIONS'] ===
'N'))
128 $bCheckRights =
false;
142 $strUpdate =
$DB->PrepareUpdate(
"b_learn_certification",
$arFields,
"learning");
143 $strSql =
"UPDATE b_learn_certification SET ".$strUpdate.
" WHERE ID=".
$ID;
144 $DB->QueryBind($strSql, $arBinds);
160 if (
$ID < 1)
return false;
164 $strSql =
"SELECT G.ID FROM b_learn_certification C
165 INNER JOIN b_learn_test T ON C.COURSE_ID = T.COURSE_ID
166 INNER JOIN b_learn_gradebook G ON (G.TEST_ID = T.ID AND G.STUDENT_ID = C.STUDENT_ID)
172 while($arRecord =
$res->Fetch())
178 $strSql =
"DELETE FROM b_learn_certification WHERE ID = ".$ID;
180 if (!
$DB->Query($strSql))
195 $arSqlSearch = Array();
201 $cOperationType =
$res[
"OPERATION"];
217 case "PUBLIC_PROFILE":
250 $STUDENT_ID = intval($STUDENT_ID);
251 $COURSE_ID = intval($COURSE_ID);
253 if ($STUDENT_ID < 1 || $COURSE_ID < 1)
257 SELECT COUNT(*) CNT_ALL, SUM(CASE WHEN G.COMPLETED = 'Y' THEN 1 ELSE 0 END ) CNT_COMPLETED
259 INNER JOIN b_learn_course C ON T.COURSE_ID = C.ID
260 INNER JOIN b_learn_lesson TUL ON C.LINKED_LESSON_ID = TUL.ID
261 LEFT JOIN b_learn_gradebook G ON T.ID = G.TEST_ID AND G.STUDENT_ID = '".$STUDENT_ID.
"'
262 WHERE T.COURSE_ID = '".$COURSE_ID.
"' AND TUL.ACTIVE = 'Y' AND T.ACTIVE = 'Y'
267 $cntAll = $cntCompleted =
null;
269 $isCourseCompleted =
false;
270 if ( (
$ar =
$res->Fetch()) && intval(
$ar[
"CNT_ALL"]) > 0)
272 $cntAll =
$ar[
'CNT_ALL'];
273 $cntCompleted =
$ar[
'CNT_COMPLETED'];
275 if ($cntCompleted == $cntAll)
276 $isCourseCompleted =
true;
279 $arEventData =
array(
280 'STUDENT_ID' => $STUDENT_ID,
281 'COURSE_ID' => $COURSE_ID,
282 'CNT_ALL' => $cntAll,
283 'CNT_COMPLETED' => $cntCompleted
286 foreach(
GetModuleEvents(
'learning',
'OnCheckCourseCompleted',
true) as $arEvent)
292 $isCourseCompleted =
false;
297 $isCourseCompleted =
true;
302 return $isCourseCompleted;
306 public static function Certificate($STUDENT_ID, $COURSE_ID, $checkPerms =
true)
310 $STUDENT_ID = intval($STUDENT_ID);
311 $COURSE_ID = intval($COURSE_ID);
313 if ($STUDENT_ID < 1 || $COURSE_ID < 1)
319 $strSql =
"SELECT SUM(G.RESULT) CNT, SUM(G.MAX_RESULT) MAX_CNT FROM b_learn_gradebook G
320 INNER JOIN b_learn_test T ON T.ID = G.TEST_ID
321 WHERE G.COMPLETED = 'Y' AND G.STUDENT_ID = '".$STUDENT_ID.
"' AND T.COURSE_ID = '".$COURSE_ID.
"'";
324 $SUMMARY = $MAX_SUMMARY = 0;
328 $SUMMARY =
$ar[
"CNT"];
329 $MAX_SUMMARY =
$ar[
"MAX_CNT"];
333 'STUDENT_ID' => $STUDENT_ID,
334 'COURSE_ID' => $COURSE_ID,
335 'SUMMARY' => &$SUMMARY,
336 'MAX_SUMMARY' => &$MAX_SUMMARY
339 foreach(
GetModuleEvents(
'learning',
'OnBeforeCertificate',
true) as $arEvent)
350 $strSql =
"SELECT ID FROM b_learn_certification WHERE STUDENT_ID = '".$STUDENT_ID.
"' AND COURSE_ID = '".$COURSE_ID.
"'";
359 "STUDENT_ID" => $STUDENT_ID,
360 "COURSE_ID" => $COURSE_ID,
361 "SUMMARY" => $SUMMARY,
362 "MAX_SUMMARY" => $MAX_SUMMARY,
363 "~DATE_CREATE" => CDatabase::CurrentTimeFunction(),
static CheckFields(&$arFields, $ID=false)
static Add($arFields, $arParams=array())
static Certificate($STUDENT_ID, $COURSE_ID, $checkPerms=true)
static LessonIdByCertId($certId)
static IsCourseCompleted($STUDENT_ID, $COURSE_ID)
static Update($ID, $arFields, $arParams=array())
static GetFilter($arFilter)
static GetList($arOrder=array(), $arFilter=array(), $arNavParams=array())
static CourseGetLinkedLesson($courseId)
static GetList($arOrder=array(), $arFields=array(), $arNavParams=array())
static FilterCreate($fname, $vals, $type, &$bFullJoin, $cOperationType=false, $bSkipEmpty=true)
static MkOperationFilter($key)
static FireEvent($eventName, $eventParams)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
ExecuteModuleEventEx($arEvent, $arParams=[])
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key