Esempio n. 1
0
     //add new
     foreach ($arNewIDs as $i) {
         if (strlen(${"N_MARK_" . $i}) <= 0 && strlen(${"N_SCORE_" . $i}) <= 0) {
             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
Esempio n. 2
0
 function GetList($arOrder = array(), $arFilter = array())
 {
     global $DB, $USER;
     $arSqlSearch = CLTestMark::GetFilter($arFilter);
     $strSqlSearch = "";
     for ($i = 0; $i < count($arSqlSearch); $i++) {
         if (strlen($arSqlSearch[$i]) > 0) {
             $strSqlSearch .= " AND " . $arSqlSearch[$i] . " ";
         }
     }
     $strSql = "SELECT TM.* " . "FROM b_learn_test_mark TM " . "WHERE 1=1 " . $strSqlSearch;
     if (!is_array($arOrder)) {
         $arOrder = array();
     }
     foreach ($arOrder as $by => $order) {
         $by = strtolower($by);
         $order = strtolower($order);
         if ($order != "asc") {
             $order = "desc";
         }
         if ($by == "id") {
             $arSqlOrder[] = " TM.ID " . $order . " ";
         } elseif ($by == "mark") {
             $arSqlOrder[] = " TM.MARK " . $order . " ";
         } elseif ($by == "score") {
             $arSqlOrder[] = " TM.SCORE " . $order . " ";
         } elseif ($by == "rand") {
             $arSqlOrder[] = CTest::GetRandFunction();
         } else {
             $arSqlOrder[] = " TM.ID " . $order . " ";
             $by = "id";
         }
     }
     $strSqlOrder = "";
     DelDuplicateSort($arSqlOrder);
     for ($i = 0; $i < count($arSqlOrder); $i++) {
         if ($i == 0) {
             $strSqlOrder = " ORDER BY ";
         } else {
             $strSqlOrder .= ",";
         }
         $strSqlOrder .= $arSqlOrder[$i];
     }
     $strSql .= $strSqlOrder;
     //echo $strSql;
     return $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
 }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
 $sessAttemptFinished = null;
 $sessAttempt = null;
 //Title
 $arParams["SET_TITLE"] = $arParams["SET_TITLE"] == "N" ? "N" : "Y";
 if ($arParams["SET_TITLE"] == "Y") {
     $APPLICATION->SetTitle($arResult["TEST"]["NAME"]);
 }
 //Actions
 $bTestCreate = $_SERVER["REQUEST_METHOD"] == "POST" && !isset($sessAttemptID);
 $bPostAnswer = $_SERVER["REQUEST_METHOD"] == "POST" && isset($sessAttemptID) && $_POST["ANSWERED"] == "Y";
 $arResult["COMPLETE_PERCENT"] = 0;
 $arResult["CURRENT_MARK"] = "";
 if (isset($sessAttemptID) && intval($sessAttemptID) > 0) {
     $arResult["COMPLETE_PERCENT"] = CTestResult::GetPercent(@$sessAttemptID);
     if ($arResult["COMPLETE_PERCENT"]) {
         $arResult["CURRENT_MARK"] = CLTestMark::GetByPercent($arTest["ID"], $arResult["COMPLETE_PERCENT"]);
     }
 }
 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
Esempio n. 5
0
	/**
	 * <p>Метод удаляет тест с идентификатором ID.</p>
	 *
	 *
	 *
	 *
	 * @param int $ID  Идентификатор теста.
	 *
	 *
	 *
	 * @return bool <p>Метод возвращает <i>true</i> в случае успешного удаления теста, в
	 * противном случае возвращает <i>false</i>.</p><a name="examples"></a>
	 *
	 *
	 * <h4>Example</h4> 
	 * <pre>
	 * &lt;?
	 * if (CModule::IncludeModule("learning"))
	 * {
	 * 
	 *     $TEST_ID = 99;
	 *     $COURSE_ID = 97;
	 * 
	 *     if (CCourse::GetPermission($COURSE_ID) &gt;= 'W')
	 *     {
	 *         @set_time_limit(0);
	 *         $DB-&gt;StartTransaction();
	 *         if (!CTest::Delete($TEST_ID))
	 *         {
	 *             echo "Error!";
	 *             $DB-&gt;Rollback();
	 *         }
	 *         else
	 *             $DB-&gt;Commit();
	 *     }
	 * }
	 * ?&gt;
	 * </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;

	}