Exemple #1
0
     }
 }
 if ($bTestCreate) {
     $sessIncorrectMessage = null;
     //If old attempt exists?
     if ($arAttempt = _AttemptExists($arParams["TEST_ID"])) {
         $sessAttemptID = $arAttempt["ID"];
         if ($arAttempt["STATUS"] == "N") {
             $arFields = array("~DATE_START" => CDatabase::CurrentTimeFunction(), "DATE_END" => false, "STATUS" => "B");
             $ta = new CTestAttempt();
             $res = $ta->Update($arAttempt["ID"], $arFields);
         }
         LocalRedirect($arResult["REDIRECT_PAGE"]);
     }
     //Check attempt limit
     if ($arTest["ATTEMPT_LIMIT"] > 0 && $arTest["ATTEMPT_LIMIT"] <= CTestAttempt::GetCount($arParams["TEST_ID"], $USER->GetID())) {
         $sessAttemptError = GetMessage("LEARNING_LIMIT_ERROR");
         LocalRedirect($arResult["REDIRECT_PAGE"]);
     }
     //Check min time between attempts
     if ($arTest["MIN_TIME_BETWEEN_ATTEMPTS"] > 0) {
         CTimeZone::Disable();
         $rsPrevAttempt = CTestAttempt::GetList(array("DATE_END" => "DESC"), array("TEST_ID" => $arParams["TEST_ID"], "STUDENT_ID" => $USER->GetID()));
         CTimeZone::Enable();
         if ($arPrevAttempt = $rsPrevAttempt->GetNext()) {
             $prevTime = strtotime($arPrevAttempt["DATE_END"]);
             $timeDiff = floor((time() - strtotime($arPrevAttempt["DATE_END"])) / 60);
             //time difference in minutes
             if ($timeDiff < $arTest["MIN_TIME_BETWEEN_ATTEMPTS"]) {
                 $nextAttemptAfter = $arTest["MIN_TIME_BETWEEN_ATTEMPTS"] - $timeDiff;
                 $nextAttemptAfterD = floor($nextAttemptAfter / (60 * 24));