"edit1", "TAB" => GetMessage('LEARNING_TEST'), "ICON"=>"main_user_edit", "TITLE"=>GetMessage('LEARNING_TEST_TITLE')), array("DIV" => "edit2", "TAB" => GetMessage('LEARNING_DESC'), "ICON"=>"main_user_edit", "TITLE"=>GetMessage('LEARNING_DESC_TITLE')), array("DIV" => "edit3", "TAB" => GetMessage('LEARNING_MARKS'), "ICON"=>"main_user_edit", "TITLE"=>GetMessage('LEARNING_MARKS_TITLE')), ); $tabControl = new CAdminForm("testTabControl", $aTabs); $isReadAccess = false; $isCreateOrEditAccess = false; $isBtnsDisabled = true; $oAccess = CLearnAccess::GetInstance($USER->GetID()); $linkedLessonId = CCourse::CourseGetLinkedLesson ($COURSE_ID); if ($linkedLessonId !== false) { if ($oAccess->IsLessonAccessible ($linkedLessonId, CLearnAccess::OP_LESSON_READ)) $isReadAccess = true; if ($oAccess->IsLessonAccessible ($linkedLessonId, CLearnAccess::OP_LESSON_WRITE)) { $isReadAccess = true; $isCreateOrEditAccess = true; $isBtnsDisabled = false; } } if ($isReadAccess === false) { $APPLICATION->SetTitle(GetMessage('LEARNING_TESTS')); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $aContext = array( array( "ICON" => "btn_list", "TEXT"=>GetMessage("LEARNING_BACK_TO_ADMIN"), "LINK"=>"learn_unilesson_admin.php?lang=" . LANG . '&PARENT_LESSON_ID=-1' . GetFilterParams("filter_"), "TITLE"=>GetMessage("LEARNING_BACK_TO_ADMIN") ), ); $context = new CAdminContextMenu($aContext); $context->Show(); CAdminMessage::ShowMessage(GetMessage("LEARNING_BAD_COURSE")); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); die(); } $arNewIDs = array(); $nextNum = 0; if ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST["Update"] <> '' && check_bitrix_sessid() && $isCreateOrEditAccess) { $test = new CTest; foreach($_POST as $key=>$val) { if (mb_substr($key, 0, 7) == "N_MARK_") { $arNewIDs[] = intval(mb_substr($key, 7)); } } if (count($arNewIDs) > 0) $nextNum = max($arNewIDs); $QUESTIONS_AMOUNT = (intval(${"QUESTIONS_AMOUNT_".$QUESTIONS_FROM})>0 ? intval(${"QUESTIONS_AMOUNT_".$QUESTIONS_FROM}) : 0); $QUESTIONS_FROM_ID = (intval(${"QUESTIONS_FROM_ID_".$QUESTIONS_FROM})>0 ? intval(${"QUESTIONS_FROM_ID_".$QUESTIONS_FROM}) : 0); if ($CURRENT_INDICATION == "Y") { $CURRENT_INDICATION = ($CURRENT_INDICATION_PERCENT == "Y" ? 1 : 0) + ($CURRENT_INDICATION_MARK == "Y" ? 2 : 0); } else { $CURRENT_INDICATION = 0; } if ($FINAL_INDICATION == "Y") { $FINAL_INDICATION = ($FINAL_INDICATION_CORRECT_COUNT == "Y" ? 1 : 0) + ($FINAL_INDICATION_SCORE == "Y" ? 2 : 0) + ($FINAL_INDICATION_MARK == "Y" ? 4 : 0) + ($FINAL_INDICATION_MESSAGE == "Y" ? 8 : 0); } else { $FINAL_INDICATION = 0; } $MIN_TIME_BETWEEN_ATTEMPTS = (int)$MIN_TIME_BETWEEN_ATTEMPTS_D * 60 * 24 + (int)$MIN_TIME_BETWEEN_ATTEMPTS_H * 60 + (int)$MIN_TIME_BETWEEN_ATTEMPTS_M ; $NEXT_QUESTION_ON_ERROR = ($SHOW_ERRORS == "Y" && $NEXT_QUESTION_ON_ERROR == "N" && $PASSAGE_TYPE == "2") ? "N" : "Y"; $arFields = Array( "ACTIVE" => $ACTIVE, "COURSE_ID" => $COURSE_ID, "NAME" => $NAME, "CODE" => $CODE, "SORT" => $SORT, "DESCRIPTION" => $DESCRIPTION, "DESCRIPTION_TYPE" => $DESCRIPTION_TYPE, "TIME_LIMIT" => $TIME_LIMIT, "ATTEMPT_LIMIT" => $ATTEMPT_LIMIT, "COMPLETED_SCORE" => $COMPLETED_SCORE, "QUESTIONS_FROM" => $QUESTIONS_FROM, "QUESTIONS_AMOUNT" => $QUESTIONS_AMOUNT, "QUESTIONS_FROM_ID" => $QUESTIONS_FROM_ID, "RANDOM_QUESTIONS" => $RANDOM_QUESTIONS, "RANDOM_ANSWERS" => $RANDOM_ANSWERS, "APPROVED" => $APPROVED, "INCLUDE_SELF_TEST" => $INCLUDE_SELF_TEST, "PASSAGE_TYPE" => $PASSAGE_TYPE, "PREVIOUS_TEST_ID" => $PREVIOUS_TEST_ID, "PREVIOUS_TEST_SCORE" => $PREVIOUS_TEST_SCORE, "INCORRECT_CONTROL" => $INCORRECT_CONTROL, "CURRENT_INDICATION" => $CURRENT_INDICATION, "FINAL_INDICATION" => $FINAL_INDICATION, "SHOW_ERRORS" => $SHOW_ERRORS, "NEXT_QUESTION_ON_ERROR" => $NEXT_QUESTION_ON_ERROR, "MIN_TIME_BETWEEN_ATTEMPTS" => $MIN_TIME_BETWEEN_ATTEMPTS, ); if ($arFields["COMPLETED_SCORE"] == '') { unset($arFields["COMPLETED_SCORE"]); $arFields["APPROVED"] = "N"; } if (intval($arFields["PREVIOUS_TEST_ID"]) <= 0) { $arFields["PREVIOUS_TEST_ID"] = false; } if ($arFields["PREVIOUS_TEST_SCORE"] == '') { $arFields["PREVIOUS_TEST_SCORE"] = 0; } $DB->StartTransaction(); if($ID>0) { $actionType = "update"; $res = $test->Update($ID, $arFields); } else { $actionType = "add"; $ID = $test->Add($arFields); $res = ($ID>0); } if(!$res) { if($e = $APPLICATION->GetException()) $message = new CAdminMessage(GetMessage("LEARNING_ERROR"), $e); $bVarsFromForm = true; } else { //Marks $marks = CLTestMark::GetList(Array(),Array("TEST_ID" => $ID)); $arMarks = $arScores = array(); while ($m = $marks->GetNext()) { //delete? if (${"MARK_".$m["ID"]."_DEL"} == "Y") { if(!CLTestMark::Delete($m["ID"])) { $message = new CAdminMessage(Array("MESSAGE" => GetMessage("LEARNING_DELETE_ERROR").$m["ID"])); $bVarsFromForm = true; } } if(in_array(${"SCORE_".$m["ID"]}, $arScores)) { $message = new CAdminMessage(Array("MESSAGE" => str_replace("##SCORE##", ${"SCORE_".$m["ID"]}, GetMessage("LEARNING_SCORE_EXISTS_ERROR")))); $bVarsFromForm = true; } elseif(in_array(${"MARK_".$m["ID"]}, $arMarks)) { $message = new CAdminMessage(Array("MESSAGE" => str_replace("##MARK##", ${"MARK_".$m["ID"]}, GetMessage("LEARNING_MARK_EXISTS_ERROR")))); $bVarsFromForm = true; } else { if (${"MARK_".$m["ID"]."_DEL"} != "Y") { $arMarks[] = ${"MARK_".$m["ID"]}; $arScores[] = ${"SCORE_".$m["ID"]}; } $arFields = Array( "TEST_ID" => $ID, "SCORE" => ${"SCORE_".$m["ID"]}, "MARK" => ${"MARK_".$m["ID"]}, "DESCRIPTION" => ${"DESCRIPTION_".$m["ID"]}, ); $mrk = new CLTestMark; $res = $mrk->Update($m["ID"], $arFields); if (!$res) { $message = new CAdminMessage(Array("MESSAGE" => GetMessage("LEARNING_SAVE_ERROR").$m["ID"])); $bVarsFromForm = true; } } } //add new foreach ($arNewIDs as $i) { if (${"N_MARK_".$i} == '' && ${"N_SCORE_".$i} == '') continue; if(in_array(${"N_SCORE_".$i}, $arScores)) { $message = new CAdminMessage(Array("MESSAGE" => str_replace("##SCORE##", ${"N_SCORE_".$i}, GetMessage("LEARNING_SCORE_EXISTS_ERROR")))); $bVarsFromForm = true; } elseif(in_array(${"N_MARK_".$i}, $arMarks)) { $message = new CAdminMessage(Array("MESSAGE" => str_replace("##MARK##", ${"N_MARK_".$i}, GetMessage("LEARNING_MARK_EXISTS_ERROR")))); $bVarsFromForm = true; } else { $arMarks[] = ${"N_MARK_".$i}; $arScores[] = ${"N_SCORE_".$i}; $arFields = Array( "SCORE" => ${"N_SCORE_".$i}, "MARK" => ${"N_MARK_".$i}, "DESCRIPTION" => ${"N_DESCRIPTION_".$i}, "TEST_ID" => $ID, ); $mark = new CLTestMark; $MarkID = $mark->Add($arFields); if (intval($MarkID)<=0) { if ($e = $APPLICATION->GetException()) $message = new CAdminMessage(GetMessage("LEARNING_ERROR"), $e); $bVarsFromForm = true; } } } if (sizeof($arScores) && !in_array(100, $arScores)) { $message = new CAdminMessage(Array("MESSAGE" => GetMessage("LEARNING_MAX_MARK_ERROR"))); $bVarsFromForm = true; } } //Redirect if (!$bVarsFromForm) { $DB->Commit(); if($apply == '') { if($from == "learn_admin") { LocalRedirect("/bitrix/admin/learn_unilesson_admin.php?lang=".LANG . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . urlencode($_GET['LESSON_PATH']) ."&".GetFilterParams("filter_", false)); } elseif ($return_url <> '') { if(mb_strpos($return_url, "#TEST_ID#") !== false) { $return_url = str_replace("#TEST_ID#", $ID, $return_url); } LocalRedirect($return_url); } else { LocalRedirect("/bitrix/admin/learn_test_admin.php?lang=".LANG . "&COURSE_ID=" . $COURSE_ID . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . urlencode($_GET['LESSON_PATH']) .GetFilterParams("filter_", false)); } } LocalRedirect("/bitrix/admin/learn_test_edit.php?lang=" . LANG . "&COURSE_ID=" . $COURSE_ID . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . urlencode($_GET['LESSON_PATH']) . "&ID=" . $ID ."&tabControl_active_tab=".urlencode($tabControl_active_tab).GetFilterParams("filter_", false)); } else { if ($actionType == "add") { $ID = 0; } $DB->Rollback(); } } if($ID>0) $APPLICATION->SetTitle(str_replace("#ID#", $ID, GetMessage("LEARNING_EDIT_TITLE2"))); else $APPLICATION->SetTitle(GetMessage("LEARNING_EDIT_TITLE1")); //Defaults $str_ACTIVE = "Y"; $str_SORT = "500"; //$str_APPROVED = "Y"; $str_COMPLETED_SCORE = "95"; //$str_INCLUDE_SELF_TEST = "N"; $str_RANDOM_QUESTIONS = "Y"; $str_RANDOM_ANSWERS="Y"; $str_QUESTIONS_FROM="A"; $str_QUESTIONS_AMOUNT = "0"; $str_TIME_LIMIT = "0"; $str_ATTEMPT_LIMIT = "0"; $str_DESCRIPTION_TYPE = "text"; $str_SKIP_QUESTION = "N"; $str_FINAL_RESPONSE = "Y"; $str_PASSAGE_TYPE = "0"; $str_PREVIOUS_TEST_ID = "0"; $str_PREVIOUS_TEST_SCORE = "95"; $str_INCORRECT_CONTROL = "N"; $str_CURRENT_INDICATION_PERCENT = "N"; $str_CURRENT_INDICATION_MARK = "N"; $str_CURRENT_INDICATION = "N"; $str_FINAL_INDICATION_CORRECT_COUNT = "N"; $str_FINAL_INDICATION_SCORE = "N"; $str_FINAL_INDICATION_MARK = "N"; $str_FINAL_INDICATION_MESSAGE = "N"; $str_FINAL_INDICATION = "N"; $str_SHOW_ERRORS = "N"; $str_NEXT_QUESTION_ON_ERROR = "Y"; $test = new CTest; $res = $test->GetByID($ID); if(!$res->ExtractFields("str_")) { $ID = 0; } else { if ($str_CURRENT_INDICATION > 0) { $str_CURRENT_INDICATION_PERCENT = ($str_CURRENT_INDICATION & 1) ? "Y" : "N"; $str_CURRENT_INDICATION_MARK = ($str_CURRENT_INDICATION & 2) >> 1 ? "Y" : "N"; $str_CURRENT_INDICATION = "Y"; } if ($str_FINAL_INDICATION > 0) { $str_FINAL_INDICATION_CORRECT_COUNT = ($str_FINAL_INDICATION & 1) ? "Y" : "N"; $str_FINAL_INDICATION_SCORE = ($str_FINAL_INDICATION & 2) >> 1 ? "Y" : "N"; $str_FINAL_INDICATION_MARK = ($str_FINAL_INDICATION & 4) >> 2 ? "Y" : "N"; $str_FINAL_INDICATION_MESSAGE = ($str_FINAL_INDICATION & 8) >> 3 ? "Y" : "N"; $str_FINAL_INDICATION = "Y"; } $str_MIN_TIME_BETWEEN_ATTEMPTS_D = floor($str_MIN_TIME_BETWEEN_ATTEMPTS / (60 * 24)); $str_MIN_TIME_BETWEEN_ATTEMPTS_H = floor(($str_MIN_TIME_BETWEEN_ATTEMPTS - $str_MIN_TIME_BETWEEN_ATTEMPTS_D * 60 * 24) / 60); $str_MIN_TIME_BETWEEN_ATTEMPTS_M = $str_MIN_TIME_BETWEEN_ATTEMPTS - $str_MIN_TIME_BETWEEN_ATTEMPTS_D * 60 * 24 - $str_MIN_TIME_BETWEEN_ATTEMPTS_H * 60; } if($bVarsFromForm) { $ACTIVE = ($ACTIVE != "Y"? "N":"Y"); $APPROVED = ($APPROVED != "Y"? "N":"Y"); $RANDOM_QUESTIONS = ($RANDOM_QUESTIONS != "Y"? "N":"Y"); $RANDOM_ANSWERS = ($RANDOM_ANSWERS != "Y"? "N":"Y"); $INCORRECT_CONTROL = ($INCORRECT_CONTROL != "Y"? "N":"Y"); $CURRENT_INDICATION = ($CURRENT_INDICATION == 0 ? "N":"Y"); $FINAL_INDICATION = ($FINAL_INDICATION == 0 ? "N":"Y"); $SHOW_ERRORS = ($SHOW_ERRORS != "Y"? "N":"Y"); $NEXT_QUESTION_ON_ERROR = ($NEXT_QUESTION_ON_ERROR != "Y"? "N":"Y"); $DB->InitTableVarsForEdit("b_learn_test", "", "str_"); $str_CURRENT_INDICATION_PERCENT = ($CURRENT_INDICATION_PERCENT != "Y"? "N":"Y"); $str_CURRENT_INDICATION_MARK = ($CURRENT_INDICATION_MARK != "Y"? "N":"Y"); $str_FINAL_INDICATION_CORRECT_COUNT = ($FINAL_INDICATION_CORRECT_COUNT != "Y"? "N":"Y"); $str_FINAL_INDICATION_SCORE = ($FINAL_INDICATION_SCORE != "Y"? "N":"Y"); $str_FINAL_INDICATION_MARK = ($FINAL_INDICATION_MARK != "Y"? "N":"Y"); $str_FINAL_INDICATION_MESSAGE = ($FINAL_INDICATION_MESSAGE != "Y"? "N":"Y"); $str_MIN_TIME_BETWEEN_ATTEMPTS_D = intval($MIN_TIME_BETWEEN_ATTEMPTS_D); $str_MIN_TIME_BETWEEN_ATTEMPTS_H = intval($MIN_TIME_BETWEEN_ATTEMPTS_H); $str_MIN_TIME_BETWEEN_ATTEMPTS_M = intval($MIN_TIME_BETWEEN_ATTEMPTS_M); } require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php"); if ($message) echo $message->Show(); $aContext = array( array( "ICON" => "btn_list", "TEXT" => GetMessage("MAIN_ADMIN_MENU_LIST"), "LINK" => "learn_test_admin.php?lang=" . LANG . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . htmlspecialcharsbx($_GET['LESSON_PATH']) . "&COURSE_ID=" . $COURSE_ID . GetFilterParams("filter_"), "TITLE" => GetMessage("MAIN_ADMIN_MENU_LIST") ), ); if ($ID > 0) { $aContext[] = array( "ICON" => "btn_new", "TEXT"=>GetMessage("MAIN_ADMIN_MENU_CREATE"), "LINK"=>"learn_test_edit.php?lang=" . LANG . "&COURSE_ID=" . $COURSE_ID . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . htmlspecialcharsbx($_GET['LESSON_PATH']) . GetFilterParams("filter_"), "TITLE"=>GetMessage("LEARNING_ADD") ); $returnUrl = "/bitrix/admin/learn_test_admin.php?lang=" . LANG . "&COURSE_ID=" . $COURSE_ID . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . urlencode($_GET['LESSON_PATH']) . GetFilterParams("filter_", false); $aContext[] = array( "ICON" => "btn_delete", "TEXT"=>GetMessage("MAIN_ADMIN_MENU_DELETE"), "LINK" => "javascript:if(confirm('".GetMessage("LEARNING_CONFIRM_DEL_MESSAGE")."'))window.location='learn_test_admin.php?lang=".LANG . "&COURSE_ID=" . $COURSE_ID . "&action=delete&ID=" . $ID . "&" . bitrix_sessid_get() . urlencode(GetFilterParams("filter_", false)) . '&return_url=' . urlencode(urlencode($returnUrl)) . "';", ); } $context = new CAdminContextMenu($aContext); $context->Show(); ?>
Warning: Undefined variable $tabControl in D:\ktt\ttepla.com\public_html\bitrix\modules\learning\admin\learn_test_edit.php on line 496

Fatal error: Uncaught Error: Call to a member function BeginEpilogContent() on null in D:\ktt\ttepla.com\public_html\bitrix\modules\learning\admin\learn_test_edit.php:496 Stack trace: #0 {main} thrown in D:\ktt\ttepla.com\public_html\bitrix\modules\learning\admin\learn_test_edit.php on line 496