$aTabs = array(array("DIV" => "edit1", "TAB" => GetMessage("LEARNING_ADMIN_TAB1"), "ICON" => "main_user_edit", "TITLE" => GetMessage("LEARNING_ADMIN_TAB1_EX")), array("DIV" => "edit2", "TAB" => GetMessage("LEARNING_ADMIN_TAB2"), "ICON" => "main_user_edit", "TITLE" => GetMessage("LEARNING_ADMIN_TAB2_EX")), array("DIV" => "edit3", "TAB" => GetMessage("LEARNING_ADMIN_TAB3"), "ICON" => "main_user_edit", "TITLE" => GetMessage("LEARNING_ADMIN_TAB3_EX")));
$aTabs[] = $USER_FIELD_MANAGER->EditFormTab('LEARNING_QUESTIONS');
$tabControl = new CAdminForm("questionTabControl", $aTabs);
if (!$bBadCourse && $_SERVER["REQUEST_METHOD"] == "POST" && strlen($Update) > 0 && check_bitrix_sessid()) {
    $arFILE_ID = $_FILES["FILE_ID"];
    $arFILE_ID["del"] = ${"FILE_ID_del"};
    $arFILE_ID["MODULE_ID"] = "learning";
    $arFILE_ID["description"] = ${"FILE_ID_descr"};
    if ($NEW_LESSON_ID !== false) {
        $LESSON_ID = $NEW_LESSON_ID;
    }
    $cq = new CLQuestion();
    $arFields = array("LESSON_ID" => $LESSON_ID, "NAME" => $NAME, "QUESTION_TYPE" => $QUESTION_TYPE, "SORT" => $SORT, "SELF" => $SELF, "ACTIVE" => $ACTIVE, "CORRECT_REQUIRED" => $CORRECT_REQUIRED, "POINT" => $POINT, "FILE_ID" => $arFILE_ID, "DESCRIPTION" => $DESCRIPTION, "DESCRIPTION_TYPE" => $DESCRIPTION_TYPE, "INCORRECT_MESSAGE" => $INCORRECT_MESSAGE, "COMMENT_TEXT" => $COMMENT_TEXT, "EMAIL_ANSWER" => $EMAIL_ANSWER, "~TIMESTAMP_X" => $DB->CurrentTimeFunction());
    $USER_FIELD_MANAGER->EditFormAddFields('LEARNING_QUESTIONS', $arFields);
    if ($ID > 0) {
        $res = $cq->Update($ID, $arFields);
    } else {
        // check, that default answer selected
        if ($QUESTION_TYPE === 'S' && !isset($_POST['ANSWER_CORRECT'])) {
            $res = false;
            $message = new CAdminMessage(array('MESSAGE' => GetMessage("LEARNING_ERROR"), 'TYPE' => 'ERROR', 'DETAILS' => GetMessage('LEARNING_ADD_RIGHT_ANSWER_NOT_SELECTED'), 'HTML' => false));
        } else {
            $ID = $cq->Add($arFields);
            $res = $ID > 0;
        }
    }
    if (!$res) {
        if ($e = $APPLICATION->GetException()) {
            $message = new CAdminMessage(GetMessage("LEARNING_ERROR"), $e);
        }
        $bVarsFromForm = true;
                break;
            case "activate":
            case "deactivate":
                $cl = new CLQuestion();
                $arFields = array("ACTIVE" => $_REQUEST['action'] == "activate" ? "Y" : "N");
                if (!$cl->Update($ID, $arFields)) {
                    if ($e = $APPLICATION->GetException()) {
                        $lAdmin->AddGroupError(GetMessage("SAVE_ERROR") . $ID . ": " . $e->GetString(), $ID);
                    }
                }
                break;
            case "required":
            case "derequired":
                $cl = new CLQuestion();
                $arFields = array("CORRECT_REQUIRED" => $_REQUEST['action'] == "required" ? "Y" : "N");
                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 = CLQuestion::GetList(array($by => $order), $arFilter, true, $arNavParams);