Example #1
0
 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\n\t\t\tINNER JOIN b_learn_test T ON T.ID = G.TEST_ID\n\t\t\tWHERE G.COMPLETED = 'Y' AND G.STUDENT_ID = '" . $STUDENT_ID . "' AND T.COURSE_ID = '" . $COURSE_ID . "'";
         $res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>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__ . "<br>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;
 }
Example #2
0
	/**
	 * <p>Добавляет или изменяет сертификат, если курс был пройден.</p>
	 *
	 *
	 *
	 *
	 * @param int $STUDENT_ID  Идентификатор студента.
	 *
	 *
	 *
	 * @param int $COURSE_ID  Идентификатор курса.
	 *
	 *
	 *
	 * @return bool <p>Метод возвращает <i>true</i>, если сертификация прошла успешно,
	 * иначе - <i>false</i>.</p>
	 *
	 *
	 * <h4>Example</h4> 
	 * <pre>
	 * &lt;?<br>if (CModule::IncludeModule("learning"))<br>{<br>    $STUDENT_ID = 1;<br>    $COURSE_ID = 92;<br><br>    $done = CCertification::Certificate($STUDENT_ID, $COURSE_ID);<br><br>    if ($done)<br>        echo "Success!";<br>    else<br>        echo "Course is not completed";<br>}<br>?&gt;
	 * </pre>
	 *
	 *
	 *
	 * <h4>See Also</h4> 
	 * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/learning/classes/ccertification/index.php">CCertification</a>::<a
	 * href="http://dev.1c-bitrix.ru/api_help/learning/classes/ccertification/add.php">Add</a> </li> <li> <a
	 * href="http://dev.1c-bitrix.ru/api_help/learning/classes/ccertification/index.php">CCertification</a>::<a
	 * href="http://dev.1c-bitrix.ru/api_help/learning/classes/ccertification/update.php">Update</a> </li> <li> <a
	 * href="http://dev.1c-bitrix.ru/api_help/learning/classes/ctest/index.php">CTest</a>::<a
	 * href="http://dev.1c-bitrix.ru/api_help/learning/classes/ctest/getlist.php">GetList</a> </li> <li> <a
	 * href="http://dev.1c-bitrix.ru/api_help/learning/classes/cgradebook/index.php">CGradeBook</a>::<a
	 * href="http://dev.1c-bitrix.ru/api_help/learning/classes/cgradebook/getlist.php">GetList</a> </li> </ul><a
	 * name="examples"></a>
	 *
	 *
	 * @static
	 * @link http://dev.1c-bitrix.ru/api_help/learning/classes/ccertification/certificate.php
	 * @author Bitrix
	 */
	public static function Certificate($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;

		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__."<br>Line: ".__LINE__);

			$SUMMARY = $MAX_SUMMARY = 0;

			if ($ar = $res->Fetch())
			{
				$SUMMARY = $ar["CNT"];
				$MAX_SUMMARY = $ar["MAX_CNT"];
			}

			$strSql = "SELECT ID FROM b_learn_certification WHERE STUDENT_ID = '".$STUDENT_ID."' AND COURSE_ID = '".$COURSE_ID."'";
			$res = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			if ($ar = $res->Fetch())
			{
				return CCertification::Update($ar["ID"], Array("SUMMARY" => $SUMMARY, "MAX_SUMMARY" => $MAX_SUMMARY, "ACTIVE" => "Y") );
			}
			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);
				return ($ID > 0);
			}
		}
		return false;
	}