/** * WARNING: don't use this method, it's for internal use only * * Convert course to non-course lesson (course will be removed, * but lesson will stay exists) * * WARNING: this method terminates (by die()/exit()) current execution flow * when SQL server error occured. It's due to bug in CDatabase::Update() in main * module (version info: * define("SM_VERSION","11.0.12"); * define("SM_VERSION_DATE","2012-02-21 17:00:00"); // YYYY-MM-DD HH:MI:SS * ) * * @param int $courseId (returned by GetLinkedCourse($lessonId) ) * * @access private */ protected static function CourseBecomeLesson($courseId) { global $DB; self::_EnsureArgsStrictlyCastableToIntegers($courseId); $linkedLessonId = CCourse::CourseGetLinkedLesson($courseId); if ($linkedLessonId === false) { return false; } // Check certificates (if exists => forbid removing course) $certificate = CCertification::GetList(array(), array("COURSE_ID" => $courseId, 'CHECK_PERMISSIONS' => 'N')); if ($certificate === false || $certificate->GetNext()) { return false; } // Remove tests $tests = CTest::GetList(array(), array("COURSE_ID" => $courseId)); if ($tests === false) { return false; } while ($arTest = $tests->Fetch()) { if (!CTest::Delete($arTest["ID"])) { return false; } } // Remove all prohibitions for lessons in context of course to be removed // and remove prohibitions for course to be removed in context of all other courses self::PublishProhibitionPurge($linkedLessonId, self::PUBLISH_PROHIBITION_PURGE_ALL_LESSONS_IN_COURSE_CONTEXT | self::PUBLISH_PROHIBITION_PURGE_LESSON_IN_ALL_COURSE_CONTEXT); $rc = $DB->Query("DELETE FROM b_learn_course\n\t\t\tWHERE ID=" . (string) (int) $courseId, true); // reload cache of LINKED_LESSON_ID -> COURSE_ID self::GetCourseToLessonMap_ReloadCache(); CLearnCacheOfLessonTreeComponent::MarkAsDirty(); /** * This code will be useful after bug in CDatabase::Update() * and CDatabase::Insert() will be solved and $ignore_errors setted * to true in Insert()/Update() call above. */ if ($rc === false) { throw new LearnException('EA_SQLERROR', LearnException::EXC_ERR_ALL_GIVEUP); } // If data not updated if ($rc === 0) { throw new LearnException('EA_OTHER: data not updated', LearnException::EXC_ERR_ALL_GIVEUP); } }
if (!$cl->Update($ID, $arFields)) { if ($e = $APPLICATION->GetException()) { $lAdmin->AddGroupError(GetMessage("SAVE_ERROR") . $ID . ": " . $e->GetString(), $ID); } } break; } } } // fetch data if (isset($_REQUEST["mode"]) && $_REQUEST["mode"] == "excel") { $arNavParams = array(); } else { $arNavParams = array('nPageSize' => CAdminResult::GetNavSize($sTableID)); } $rsData = CCertification::GetList(array($by => $order), $arFilter, $arNavParams); $rsData = new CAdminResult($rsData, $sTableID); // navigation string setup $lAdmin->NavText($rsData->GetNavPrint(GetMessage("LEARNING_ADMIN_RESULTS"))); $lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "id", "default" => true), array("id" => "TIMESTAMP_X", "content" => GetMessage('LEARNING_COURSE_ADM_DATECH'), "sort" => "timestamp_x", "default" => true), array("id" => "COURSE_NAME", "content" => GetMessage('LEARNING_ADMIN_COURSE_ID'), "default" => true), array("id" => "USER_NAME", "content" => GetMessage('LEARNING_ADMIN_STUDENT'), "sort" => "user_name", "default" => true), array("id" => "SUMMARY", "content" => GetMessage('LEARNING_ADMIN_SUMMARY'), "sort" => "summary", "default" => true), array("id" => "MAX_SUMMARY", "content" => GetMessage('LEARNING_ADMIN_MAX_SUMMARY'), "sort" => "max_summary", "default" => true), array("id" => "ACTIVE", "content" => GetMessage('LEARNING_COURSE_ADM_ACT'), "sort" => "active", "default" => true), array("id" => "SORT", "content" => GetMessage('LEARNING_COURSE_ADM_SORT'), "sort" => "sort", "default" => true), array("id" => "FROM_ONLINE", "content" => GetMessage('LEARNING_ADMIN_ONLINE'), "sort" => "from_online", "default" => true))); // building list while ($arRes = $rsData->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_ID, $arRes); $row->AddCheckField("ACTIVE"); $row->AddCheckField("PUBLIC"); $row->AddCheckField("FROM_ONLINE"); $row->AddInputField("SUMMARY", array("size" => "3")); $row->AddInputField("MAX_SUMMARY", array("size" => "3")); $row->AddInputField("SORT", array("size" => "3")); $row->AddViewField("USER_NAME", "[<a href=\"user_edit.php?lang=" . LANG . "&ID=" . $f_USER_ID . "\" title=\"" . GetMessage("LEARNING_CHANGE_USER_PROFILE") . "\">" . $f_USER_ID . "</a>] " . $f_USER_NAME); $arActions = array();
ShowError(GetMessage("LEARNING_TRANSCRIPT_PERMISSION_DENIED")); return; } //User exists? $res = CUser::GetByID($arStudent["USER_ID"]); if (!($arUser = $res->GetNext())) { ShowError(GetMessage("LEARNING_TRANSCRIPT_ERROR")); return; } //Images $arUser["PERSONAL_PHOTO_ARRAY"] = CFile::GetFileArray($arUser["PERSONAL_PHOTO"]); $arUser["WORK_LOGO_ARRAY"] = CFile::GetFileArray($arUser["WORK_LOGO"]); //Country $arUser["PERSONAL_COUNTRY_NAME"] = GetCountryByID($arUser["PERSONAL_COUNTRY"]); $arResult = array("STUDENT" => $arStudent, "USER" => $arUser, "CERTIFICATES" => array()); $res = CCertification::GetList(array("SORT" => "ASC", "DATE_CREATE" => "ASC"), array("STUDENT_ID" => $arStudent["USER_ID"], "ACTIVE" => "Y", "PUBLIC" => "Y", "CHECK_PERMISSIONS" => "N")); while ($arCertification = $res->GetNext()) { $arCertification["PREVIEW_PICTURE_ARRAY"] = CFile::GetFileArray($arCertification["PREVIEW_PICTURE"]); $arResult["CERTIFICATES"][] = $arCertification; } unset($res); unset($arStudent); unset($arUser); //Set Title $arParams["SET_TITLE"] = $arParams["SET_TITLE"] == "N" ? "N" : "Y"; if ($arParams["SET_TITLE"] == "Y") { if (strlen($arResult["USER"]["LAST_NAME"]) > 0 || strlen($arResult["USER"]["NAME"]) > 0) { $APPLICATION->SetTitle(CUser::FormatName($arParams["NAME_TEMPLATE"], $arResult["USER"])); } else { $APPLICATION->SetTitle($arResult["USER"]["LOGIN"]); }
function GetByID($ID) { return CCertification::GetList(array(), array("ID" => $ID)); }
/** * <p>Метод удаляет учётную запись студента с кодом пользователя USER_ID.</p> * * * @param int $USER_ID Код пользователя. </h * * @return bool <p>Метод возвращает <i>true</i> в случае успешного удаления учётной * записи студента, в противном случае возвращает <i>false</i>.</p> * * <h4>Example</h4> * <pre> * <? * if (CModule::IncludeModule("learning")) * { * $USER_ID = 3; * if ($USER->IsAdmin()) * { * @set_time_limit(0); * $DB->StartTransaction(); * if (!CStudent::Delete($USER_ID)) * { * echo "Error!"; * $DB->Rollback(); * } * else * $DB->Commit(); * } * } * ?> * </pre> * * * <h4>See Also</h4> * <ul><li> <a href="http://dev.1c-bitrix.ru/api_help/learning/classes/cstudent/index.php">CStudent</a>::<a * href="http://dev.1c-bitrix.ru/api_help/learning/classes/cstudent/add.php">Add</a> </li></ul><a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/learning/classes/cstudent/delete.php * @author Bitrix */ public static function Delete($ID) { global $DB; $ID = intval($ID); if ($ID < 1) { return false; } CLearnHelper::FireEvent('OnBeforeStudentDelete', $ID); //Certification $records = CCertification::GetList(array(), array("STUDENT_ID" => $ID)); while ($arRecord = $records->Fetch()) { if (!CCertification::Delete($arRecord["ID"])) { return false; } } $strSql = "DELETE FROM b_learn_student WHERE USER_ID = " . $ID; if (!$DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__)) { return false; } CLearnHelper::FireEvent('OnAfterStudentDelete', $ID); return true; }
public static function IsCertificatesExists($courseId) { // Check certificates (if exists => forbid removing course) $certificate = CCertification::GetList(array(), array("COURSE_ID" => $courseId, 'CHECK_PERMISSIONS' => 'N')); if ($certificate === false || $certificate->GetNext()) { return true; } else { return false; } }
} //Authorized? if (!$USER->IsAuthorized()) { $APPLICATION->AuthForm(GetMessage("LEARNING_NO_AUTHORIZE")); } //Module if (!CModule::IncludeModule("learning")) { ShowError(GetMessage("LEARNING_MODULE_NOT_FOUND")); return; } //Params $arParams["TESTS_LIST_TEMPLATE"] = strlen($arParams["TESTS_LIST_TEMPLATE"]) > 0 ? htmlspecialcharsbx($arParams["TESTS_LIST_TEMPLATE"]) : "course/test_list.php?COURSE_ID=#COURSE_ID#"; $arParams["COURSE_DETAIL_TEMPLATE"] = strlen($arParams["COURSE_DETAIL_TEMPLATE"]) > 0 ? htmlspecialcharsbx($arParams["COURSE_DETAIL_TEMPLATE"]) : "course/index.php?COURSE_ID=#COURSE_ID#"; $arResult = array("COURSES" => array(), "CERTIFICATES" => array()); //Certificates $rsCertificate = CCertification::GetList(array("ID" => "DESC"), array("STUDENT_ID" => intval($USER->GetID()), "ACTIVE" => "Y")); while ($arCertificate = $rsCertificate->GetNext()) { $arResult["CERTIFICATES"][$arCertificate["COURSE_ID"]] = $arCertificate; } //Courses $rsCourse = CCourse::GetList(array("SORT" => "ASC"), array("ACTIVE" => "Y", "ACTIVE_DATE" => "Y", "SITE_ID" => LANG)); while ($arCourse = $rsCourse->GetNext()) { //Test list Url $arCourse["TESTS_LIST_URL"] = CComponentEngine::MakePathFromTemplate($arParams["TESTS_LIST_TEMPLATE"], array("COURSE_ID" => $arCourse["ID"])); //Course Url $arCourse["COURSE_DETAIL_URL"] = CComponentEngine::MakePathFromTemplate($arParams["COURSE_DETAIL_TEMPLATE"], array("COURSE_ID" => $arCourse["ID"])); $arCourse["COMPLETED"] = array_key_exists($arCourse["ID"], $arResult["CERTIFICATES"]); if (!$arCourse["COMPLETED"]) { $rsTest = CTest::GetList(array(), array("COURSE_ID" => $arCourse["ID"], "ACTIVE" => "Y", 'CHECK_PERMISSIONS' => 'N')); $rsTest->NavStart(1); $arCourse["NO_TESTS"] = !$rsTest->SelectedRowsCount();
/** * <p>Возвращает сертификат по идентификатору ID. Учитываются права доступа текущего пользователя.</p> * * * * * @param int $ID Идентификатор сертификата. * * * * @return CDBResult <p>Возвращается объект <a * href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php">CDBResult</a>.</p> * * * <h4>Example</h4> * <pre> * <?<br>if (CModule::IncludeModule("learning"))<br>{<br> $CERTIFICATE_ID = 13;<br><br> $res = CCertification::GetByID($CERTIFICATE_ID);<br><br> if ($arCertificate = $res->GetNext())<br> {<br> echo "Course: ".$arCertificate["COURSE_NAME"].<br> " User: "******"USER_NAME"].<br> " Score: ".$arCertificate["SUMMARY"];<br> }<br>}<br>?> * </pre> * * * * <h4>See Also</h4> * <ul> <li><a href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php">CDBResult</a></li> <li><a * href="http://dev.1c-bitrix.ru/api_help/learning/fields.php">Поля сертификата</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/getlist.php">GetList</a> </li> </ul><a * name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/learning/classes/ccertification/getbyid.php * @author Bitrix */ public static function GetByID($ID) { return CCertification::GetList(Array(),Array("ID" => $ID)); }