/** * <p>Метод удаляет запись в журнале с идентификатором ID.</p> * * * * * @param int $ID Идентификатор записи. * * * * @return bool <p>Метод возвращает <i>true</i> в случае успешного удаления записи, в * противном случае возвращает <i>false</i>.</p><a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * if (CModule::IncludeModule("learning")) * { * $RECORD_ID = 96; * * @set_time_limit(0); * $DB->StartTransaction(); * if (!CGradeBook::Delete($RECORD_ID)) * { * echo "Error!"; * $DB->Rollback(); * } * else * $DB->Commit(); * * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/learning/classes/cgradebook/delete.php * @author Bitrix */ public static function Delete($ID) { global $DB; $ID = intval($ID); if ($ID < 1) return false; $strSql = "SELECT TEST_ID, STUDENT_ID FROM b_learn_gradebook WHERE ID = ".$ID; $res = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if (!$arGBook = $res->Fetch()) return false; $attempts = CTestAttempt::GetList(Array(), Array("TEST_ID" => $arGBook["TEST_ID"], "STUDENT_ID" => $arGBook["STUDENT_ID"])); while($arAttempt = $attempts->Fetch()) { if(!CTestAttempt::Delete($arAttempt["ID"])) return false; } $strSql = "DELETE FROM b_learn_gradebook WHERE ID = ".$ID; if (!$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__)) return false; return true; }
LocalRedirect($arResult["REDIRECT_PAGE"]); } } } //Add new attempt $rsAttempt = new CTestAttempt(); $attemptID = $rsAttempt->Add(array("TEST_ID" => $arParams["TEST_ID"], "STUDENT_ID" => $USER->GetID(), "STATUS" => "B")); if (!$attemptID) { $sessAttemptError = ($ex = $APPLICATION->GetException()) ? $ex->GetString() : GetMessage("LEARNING_ATTEMPT_CREATE_ERROR"); LocalRedirect($arResult["REDIRECT_PAGE"]); } //Create test questions $success = CTestAttempt::CreateAttemptQuestions($attemptID); if (!$success) { $sessAttemptError = ($ex = $APPLICATION->GetException()) ? $ex->GetString() : GetMessage("LEARNING_ATTEMPT_CREATE_ERROR"); CTestAttempt::Delete($attemptID); LocalRedirect($arResult["REDIRECT_PAGE"]); } $sessAttemptID = $attemptID; LocalRedirect($arResult["REDIRECT_PAGE"]); } elseif ($bPostAnswer) { $sessIncorrectMessage = null; //Check attempt from session if (!($arAttempt = _AttemptExists($arParams["TEST_ID"], $sessAttemptID))) { $sessAttemptID = null; $sessAttemptError = GetMessage("LEARNING_ATTEMPT_NOT_FOUND_ERROR") . ': ' . $sessAttemptID; LocalRedirect($arResult["REDIRECT_PAGE"]); } //Check test result $testResultID = intval($_REQUEST["TEST_RESULT"]); $arFields = array("ID" => $testResultID, "ATTEMPT_ID" => $sessAttemptID, 'CHECK_PERMISSIONS' => 'N');
function Delete($ID) { global $DB; $ID = intval($ID); if ($ID < 1) { return false; } CLearnHelper::FireEvent('OnBeforeTestDelete', $ID); //Gradebook $records = CGradeBook::GetList(array(), array("TEST_ID" => $ID)); while ($arRecord = $records->Fetch()) { if (!CGradeBook::Delete($arRecord["ID"])) { return false; } } //Attempts $attempts = CTestAttempt::GetList(array(), array("TEST_ID" => $ID)); while ($arAttempt = $attempts->Fetch()) { if (!CTestAttempt::Delete($arAttempt["ID"])) { return false; } } //Marks $marks = CLTestMark::GetList(array(), array("TEST_ID" => $ID)); while ($arMark = $marks->Fetch()) { if (!CLTestMark::Delete($arMark["ID"])) { return false; } } $strSql = "DELETE FROM b_learn_test WHERE ID = " . $ID; if (!$DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__)) { return false; } CEventLog::add(array('AUDIT_TYPE_ID' => 'LEARNING_REMOVE_ITEM', 'MODULE_ID' => 'learning', 'ITEM_ID' => 'T #' . $ID, 'DESCRIPTION' => 'test removed')); CLearnHelper::FireEvent('OnAfterTestDelete', $ID); return true; }
while ($arRes = $rsData->Fetch()) { $arID[] = $arRes['ID']; } } foreach ($arID as $ID) { if (strlen($ID) <= 0) { continue; } $ID = intval($ID); switch ($_REQUEST['action']) { case "delete": @set_time_limit(0); $res = CTestAttempt::GetList(array(), array('ID' => $ID, 'ACCESS_OPERATIONS' => CLearnAccess::OP_LESSON_READ | CLearnAccess::OP_LESSON_WRITE)); if ($ar = $res->Fetch()) { $DB->StartTransaction(); if (!CTestAttempt::Delete($ID)) { $DB->Rollback(); $lAdmin->AddGroupError(GetMessage("LEARNING_DELETE_ERROR"), $ID); } else { CGradeBook::RecountAttempts($ar["STUDENT_ID"], $ar["TEST_ID"]); } $DB->Commit(); } break; } } } // fetch data $rsData = CTestAttempt::GetList(array($by => $order), $arFilter, array(), array('nPageSize' => CAdminResult::GetNavSize($sTableID))); $rsData = new CAdminResult($rsData, $sTableID); // navigation string setup
/** * <p>Метод удаляет тест с идентификатором ID.</p> * * * * * @param int $ID Идентификатор теста. * * * * @return bool <p>Метод возвращает <i>true</i> в случае успешного удаления теста, в * противном случае возвращает <i>false</i>.</p><a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * if (CModule::IncludeModule("learning")) * { * * $TEST_ID = 99; * $COURSE_ID = 97; * * if (CCourse::GetPermission($COURSE_ID) >= 'W') * { * @set_time_limit(0); * $DB->StartTransaction(); * if (!CTest::Delete($TEST_ID)) * { * echo "Error!"; * $DB->Rollback(); * } * else * $DB->Commit(); * } * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/learning/classes/ctest/delete.php * @author Bitrix */ public static function Delete($ID) { global $DB; $ID = intval($ID); if ($ID < 1) return false; CLearnHelper::FireEvent('OnBeforeTestDelete', $ID); //Gradebook $records = CGradeBook::GetList(Array(), Array("TEST_ID" => $ID)); while($arRecord = $records->Fetch()) { if(!CGradeBook::Delete($arRecord["ID"])) return false; } //Attempts $attempts = CTestAttempt::GetList(Array(), Array("TEST_ID" => $ID)); while($arAttempt = $attempts->Fetch()) { if(!CTestAttempt::Delete($arAttempt["ID"])) return false; } //Marks $marks = CLTestMark::GetList(Array(), Array("TEST_ID" => $ID)); while($arMark = $marks->Fetch()) { if(!CLTestMark::Delete($arMark["ID"])) return false; } $strSql = "DELETE FROM b_learn_test WHERE ID = ".$ID; if (!$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__)) return false; CLearnHelper::FireEvent('OnAfterTestDelete', $ID); return true; }