Example #1
0
 function CheckFields(&$arFields, $ID = false)
 {
     global $DB;
     $arMsg = array();
     if ((is_set($arFields, "ANSWER") || $ID === false) && strlen(trim($arFields["ANSWER"])) <= 0) {
         $arMsg[] = array("id" => "NAME", "text" => GetMessage("LEARNING_BAD_NAME"));
     }
     if ($ID === false && !is_set($arFields, "QUESTION_ID") || is_set($arFields, "QUESTION_ID") && intval($arFields["QUESTION_ID"]) < 1) {
         $arMsg[] = array("id" => "QUESTION_ID", "text" => GetMessage("LEARNING_BAD_QUESTION_ID"));
     } elseif (is_set($arFields, "QUESTION_ID")) {
         $res = CLQuestion::GetByID($arFields["QUESTION_ID"]);
         if (!($arRes = $res->Fetch())) {
             $arMsg[] = array("id" => "QUESTION_ID", "text" => GetMessage("LEARNING_BAD_QUESTION_ID"));
         }
     }
     if (!empty($arMsg)) {
         $e = new CAdminException($arMsg);
         $GLOBALS["APPLICATION"]->ThrowException($e);
         return false;
     }
     if (is_set($arFields, "CORRECT") && $arFields["CORRECT"] != "Y") {
         $arFields["CORRECT"] = "N";
     }
     return true;
 }
Example #2
0
 public static function CheckFields(&$arFields, $ID = false)
 {
     global $DB, $APPLICATION;
     if ($ID === false) {
         if (is_set($arFields, "ATTEMPT_ID")) {
             $r = CTestAttempt::GetByID($arFields["ATTEMPT_ID"]);
             if (!$r->Fetch()) {
                 $APPLICATION->ThrowException(GetMessage("LEARNING_BAD_ATTEMPT_ID_EX"), "ERROR_NO_ATTEMPT_ID");
                 return false;
             }
         } else {
             $APPLICATION->ThrowException(GetMessage("LEARNING_BAD_ATTEMPT_ID"), "EMPTY_ATTEMPT_ID");
             return false;
         }
         if (is_set($arFields, "QUESTION_ID")) {
             $r = CLQuestion::GetByID($arFields["QUESTION_ID"]);
             if (!$r->Fetch()) {
                 $APPLICATION->ThrowException(GetMessage("LEARNING_BAD_QUESTION_ID"), "EMPTY_QUESTION_ID");
                 return false;
             }
         } else {
             $APPLICATION->ThrowException(GetMessage("LEARNING_BAD_QUESTION_ID"), "EMPTY_QUESTION_ID");
             return false;
         }
     }
     if (is_set($arFields, "RESPONSE") && is_array($arFields["RESPONSE"])) {
         $s = "";
         foreach ($arFields["RESPONSE"] as $val) {
             $s .= $val . ",";
         }
         $arFields["RESPONSE"] = substr($s, 0, -1);
     }
     /*
     if (is_set($arFields, "ANSWERED") && is_set($arFields, "RESPONSE"))
     {
     	if ($arFields["ANSWERED"]=="Y" && strlen($arFields["RESPONSE"]) <= 0)
     	{
     		$APPLICATION->ThrowException(GetMessage("LEARNING_BAD_NO_ANSWERS"), "EMPTY_ANSWERS");
     		return false;
     	}
     }
     */
     if (is_set($arFields, "CORRECT") && $arFields["CORRECT"] != "Y") {
         $arFields["CORRECT"] = "N";
     }
     return true;
 }
            LocalRedirect("/bitrix/admin/learn_question_edit.php?lang=" . LANG . '&LESSON_PATH=' . $uriLessonPath . "&ID=" . $ID . "&" . $tabControl->ActiveTabParam() . GetFilterParams("filter_", false) . ($from == "learn_admin" ? "&from=learn_admin" : ""));
        }
    }
}
//Defaults
$str_SELF = "N";
$str_ACTIVE = "Y";
$str_CORRECT_REQUIRED = "N";
$str_COMMENT_TEXT = '';
$str_DIRECTION = "V";
$str_DESCRIPTION_TYPE = "text";
$str_SORT = "500";
$str_QUESTION_TYPE = "S";
$str_POINT = 10;
$str_EMAIL_ANSWER = "N";
$result = CLQuestion::GetByID($ID);
if (!$result->ExtractFields("str_")) {
    $ID = 0;
}
if ($bVarsFromForm) {
    $ACTIVE = $ACTIVE != "Y" ? "N" : "Y";
    $DB->InitTableVarsForEdit("b_learn_question", "", "str_");
    $str_FILE_ID = 0;
}
if (isset($QUESTION_TYPE) && strlen($QUESTION_TYPE) === 1) {
    $str_QUESTION_TYPE = $QUESTION_TYPE;
}
if ($ID > 0) {
    $APPLICATION->SetTitle(GetMessage("LEARNING_QUESTION") . ": " . GetMessage("LEARNING_EDIT_TITLE"));
} else {
    $APPLICATION->SetTitle(GetMessage('LEARNING_QUESTION') . ": " . GetMessage("LEARNING_NEW_TITLE"));
 $ID = intval($ID);
 switch ($_REQUEST['action']) {
     case "delete":
         @set_time_limit(0);
         $DB->StartTransaction();
         $cl = new CLQuestion();
         if (!$cl->Delete($ID)) {
             $DB->Rollback();
             $lAdmin->AddGroupError(GetMessage("LEARNING_DELETE_ERROR"), $ID);
         }
         $DB->Commit();
         break;
     case "self":
     case "deself":
         // We shouldn't do this for text lessons
         $rs = CLQuestion::GetByID($ID);
         $arQuestionData = $rs->Fetch();
         if ($arQuestionData) {
             if ($arQuestionData['QUESTION_TYPE'] !== 'T') {
                 $cl = new CLQuestion();
                 $arFields = array("SELF" => $_REQUEST['action'] == "self" ? "Y" : "N");
                 if (!$cl->Update($ID, $arFields)) {
                     if ($e = $APPLICATION->GetException()) {
                         $lAdmin->AddGroupError(GetMessage("SAVE_ERROR") . $ID . ": " . $e->GetString(), $ID);
                     }
                 }
             } else {
                 $lAdmin->AddGroupError(GetMessage('LEARNING_QUESTION_OF_TEXT_TYPE_IGNORED'), $ID);
             }
         }
         break;
Example #5
0
 $rsTestResult = CTestResult::GetList(array(), $arFields);
 if (!($arTestResult = $rsTestResult->GetNext())) {
     $sessAttemptID = null;
     $sessAttemptError = GetMessage("LEARNING_RESPONSE_SAVE_ERROR");
     LocalRedirect($arResult["REDIRECT_PAGE"]);
 }
 //Save User answer
 if ($arTest["TIME_LIMIT"] == 0 || $arTest["TIME_LIMIT"] * 60 >= time() - MakeTimeStamp($arAttempt["DATE_START"])) {
     if ($arTest["PASSAGE_TYPE"] == 0 || array_key_exists("answer", $_REQUEST)) {
         $result = CTestResult::AddResponse($testResultID, $_REQUEST["answer"]);
         if (!$result) {
             $sessAttemptID = null;
             $sessAttemptError = ($ex = $APPLICATION->GetException()) ? $ex->GetString() : GetMessage("LEARNING_RESPONSE_SAVE_ERROR");
             LocalRedirect($arResult["REDIRECT_PAGE"]);
         } else {
             $rsQuestion = CLQuestion::GetByID($arTestResult["QUESTION_ID"]);
             if ($arQuestion = $rsQuestion->GetNext()) {
                 // Resolve links "?COURSE_ID={SELF}". Don't relay on it, this behaviour
                 // can be changed in future without any notifications.
                 if (isset($arQuestion['DESCRIPTION'])) {
                     $arQuestion['DESCRIPTION'] = CLearnHelper::PatchLessonContentLinks($arQuestion['DESCRIPTION'], $arParams['COURSE_ID']);
                 }
                 if ($arQuestion["QUESTION_TYPE"] != "T") {
                     if ($arTest["SHOW_ERRORS"] == "Y" && $result["CORRECT"] == "N" && $result["ANSWERED"] == "Y" && $arQuestion["INCORRECT_MESSAGE"]) {
                         $sessIncorrectMessage = $arQuestion;
                         if ($arTest["NEXT_QUESTION_ON_ERROR"] == "N" && $arTest["PASSAGE_TYPE"] == 2) {
                             $arResult["REDIRECT_PAGE"] = str_replace("#PAGE_ID#", array_key_exists($arParams["PAGE_NUMBER_VARIABLE"], $_REQUEST) ? $arResult["NAV"]["PAGE_NUMBER"] - 1 : 1, $arResult["PAGE_TEMPLATE"]);
                         }
                     }
                 } elseif ($arQuestion["EMAIL_ANSWER"] == "Y") {
                     $rsLesson = CLearnLesson::GetList(array(), array("LESSON_ID" => $arQuestion['LESSON_ID'], "CHECK_PERMISSIONS" => "N"));
                break;
        }
    }
}
// fetch data
$rsData = CTestResult::GetList(array($by => $order), $arFilter);
$rsData = new CAdminResult($rsData, $sTableID);
$rsData->NavStart();
// navigation string setup
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("LEARNING_ADMIN_RESULTS")));
// list header
$lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "id", "default" => true), array("id" => "QUESTION_NAME", "content" => GetMessage('LEARNING_ADMIN_QUESTION_NAME'), "sort" => "question_name", "default" => true), array("id" => "ANSWERED", "content" => GetMessage('LEARNING_ADMIN_ANSWERED'), "sort" => "answered", "default" => true), array("id" => "CORRECT", "content" => GetMessage('LEARNING_ADMIN_CORRECT'), "sort" => "correct", "default" => true), array("id" => "POINT", "content" => GetMessage('LEARNING_ADMIN_POINT'), "sort" => "point", "default" => true), array("id" => "RESPONSE_TEXT", "content" => GetMessage('LEARNING_ADMIN_USER_RESPONSE_TEXT'), "sort" => "point", "default" => true)));
// building list
while ($arRes = $rsData->NavNext(true, "f_")) {
    $arRes['RESPONSE_TEXT'] = '';
    $result = CLQuestion::GetByID($arRes['QUESTION_ID']);
    $arData = $result->Fetch();
    if ($arData['QUESTION_TYPE'] === 'T') {
        $arRes['RESPONSE_TEXT'] = $arRes['RESPONSE'];
    } elseif (!empty($arRes['RESPONSE'])) {
        $arResponseIDs = explode(',', $arRes['RESPONSE']);
        foreach ($arResponseIDs as $responseID) {
            $rsResponse = CLAnswer::GetByID((int) $responseID);
            $arResponseData = $rsResponse->GetNext();
            if (strlen($arRes['RESPONSE_TEXT']) > 0) {
                $arRes['RESPONSE_TEXT'] .= '<hr>';
            }
            $arRes['RESPONSE_TEXT'] .= $arResponseData['ANSWER'];
        }
    }
    $row =& $lAdmin->AddRow($f_ID, $arRes);