require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
if (!CModule::IncludeModule('learning'))
{
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_after.php'); // second system's prolog
if (IsModuleInstalled('learning') && defined('LEARNING_FAILED_TO_LOAD_REASON'))
echo LEARNING_FAILED_TO_LOAD_REASON;
else
CAdminMessage::ShowMessage(GetMessage('LEARNING_MODULE_NOT_FOUND'));
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php'); // system's epilog
exit();
}
require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/learning/prolog.php");
IncludeModuleLangFile(__FILE__);
ClearVars();
$message = null;
$bVarsFromForm = false;
$ID = intval($ID);
$COURSE_ID = intval($COURSE_ID);
$aTabs = array(
array("DIV" => "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