Example #1
0
//Params
$arParams["TEST_DETAIL_TEMPLATE"] = strlen($arParams["TEST_DETAIL_TEMPLATE"]) > 0 ? htmlspecialcharsbx($arParams["TEST_DETAIL_TEMPLATE"]) : "course/test.php?TEST_ID=#TEST_ID#";
$arParams["COURSE_DETAIL_TEMPLATE"] = strlen($arParams["COURSE_DETAIL_TEMPLATE"]) > 0 ? htmlspecialcharsbx($arParams["COURSE_DETAIL_TEMPLATE"]) : "course/index.php?COURSE_ID=#COURSE_ID#";
if (strlen($arParams["TEST_ID_VARIABLE"]) <= 0 || !preg_match("#^[A-Za-z_][A-Za-z01-9_]*\$#", $arParams["TEST_ID_VARIABLE"])) {
    $arParams["TEST_ID_VARIABLE"] = "TEST_ID";
}
//Set Title
$arParams["SET_TITLE"] = $arParams["SET_TITLE"] == "N" ? "N" : "Y";
if ($arParams["SET_TITLE"] == "Y") {
    $APPLICATION->SetTitle(GetMessage("LEARNING_PROFILE_TITLE"));
}
$currentPage = GetPagePath(false, false);
$queryString = htmlspecialcharsbx(DeleteParam(array($arParams["TEST_ID_VARIABLE"])));
$arResult = array("RECORDS" => array(), "ATTEMPTS" => array(), "CURRENT_PAGE" => $currentPage . ($queryString == "" ? "" : "?") . $queryString);
//GradeBook
$rsGradebook = CGradeBook::GetList(array("ID" => "DESC"), array("STUDENT_ID" => intval($USER->GetID()), "SITE_ID" => LANG, "TEST_ID" => array_key_exists($arParams["TEST_ID_VARIABLE"], $_REQUEST) ? intval($_REQUEST[$arParams["TEST_ID_VARIABLE"]]) : ""));
// Collection of tests' ids
$arTestsIds = array();
while ($arGradebook = $rsGradebook->GetNext()) {
    //Test Url
    $arGradebook["TEST_DETAIL_URL"] = CComponentEngine::MakePathFromTemplate($arParams["TEST_DETAIL_TEMPLATE"], array("TEST_ID" => $arGradebook["TEST_ID"], "COURSE_ID" => $arGradebook["COURSE_ID"]));
    $arGradebook['APPROVED'] = $arGradebook['TEST_APPROVED'];
    //Course Url
    $arGradebook["COURSE_DETAIL_URL"] = CComponentEngine::MakePathFromTemplate($arParams["COURSE_DETAIL_TEMPLATE"], array("COURSE_ID" => $arGradebook["COURSE_ID"]));
    $arGradebook["ATTEMPT_DETAIL_URL"] = $arResult["CURRENT_PAGE"] . ($queryString == "" ? "?" : "&") . $arParams["TEST_ID_VARIABLE"] . "=" . $arGradebook["TEST_ID"];
    $arResult["RECORDS"][] = $arGradebook;
    // collect tests' ids
    if (!in_array($arGradebook['TEST_ID'], $arTestsIds)) {
        $arTestsIds[] = $arGradebook['TEST_ID'];
    }
}
Example #2
0
	/**
	 * <p>Возвращает запись журнала по идентификатору ID. Учитываются права доступа текущего пользователя.</p>
	 *
	 *
	 *
	 *
	 * @param int $ID  Идентификатор записи в журнале.
	 *
	 *
	 *
	 * @return CDBResult <p>Возвращается объект <a
	 * href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php">CDBResult</a>.</p>
	 *
	 *
	 * <h4>Example</h4> 
	 * <pre>
	 * &lt;?
	 * if (CModule::IncludeModule("learning"))
	 * {
	 *     $RECORD_ID = 95;
	 *     
	 *     $res = CGradeBook::GetByID($RECORD_ID);
	 * 
	 *     if ($arGradeBook = $res-&gt;GetNext())
	 *     {
	 *         echo "Test: ".$arGradeBook["TEST_NAME"]." User: "******"USER_NAME"]." Score: ".$arGradeBook["RESULT"];
	 *     }
	 * }
	 * 
	 * ?&gt;
	 * </pre>
	 *
	 *
	 *
	 * <h4>See Also</h4> 
	 * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php">CDBResult</a> </li> <li> <a
	 * href="http://dev.1c-bitrix.ru/api_help/learning/fields.php#gradebook">Поля журнала</a> </li> <li> <a
	 * href="http://dev.1c-bitrix.ru/api_help/learning/classes/cgradebook/index.php">CGradeBook</a>::<a
	 * href="http://dev.1c-bitrix.ru/api_help/learning/classes/cgradebook/getlist.php">GetList</a> </li> </ul><a
	 * name="examples"></a>
	 *
	 *
	 * @static
	 * @link http://dev.1c-bitrix.ru/api_help/learning/classes/cgradebook/getbyid.php
	 * @author Bitrix
	 */
	public static function GetByID($ID)
	{
		return CGradeBook::GetList(Array(), Array("ID"=>$ID));
	}
Example #3
0
 function GetByID($ID)
 {
     return CGradeBook::GetList(array(), array("ID" => $ID));
 }
                break;
            case "completed":
            case "uncompleted":
                $ob = new CGradeBook();
                $arFields = array("COMPLETED" => $_REQUEST['action'] == "completed" ? "Y" : "N");
                if (!$ob->Update($ID, $arFields)) {
                    if ($e = $APPLICATION->GetException()) {
                        $lAdmin->AddGroupError(GetMessage("SAVE_ERROR") . $ID . ": " . $e->GetString(), $ID);
                    }
                }
                break;
        }
    }
}
// fetch data
$rsData = CGradeBook::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" => "TEST_NAME", "content" => GetMessage('LEARNING_ADMIN_TEST'), "sort" => "test_name", "default" => true), array("id" => "USER_NAME", "content" => GetMessage('LEARNING_ADMIN_STUDENT'), "sort" => "user_name", "default" => true), array("id" => "RESULT", "content" => GetMessage('LEARNING_ADMIN_RESULT'), "sort" => "result", "default" => true), array("id" => "MAX_RESULT", "content" => GetMessage('LEARNING_ADMIN_MAX_RESULT'), "sort" => "max_result", "default" => true), array("id" => "ATTEMPTS", "content" => GetMessage('LEARNING_ADMIN_ATTEMPTS'), "default" => true, "align" => "center"), array("id" => "COMPLETED", "content" => GetMessage('LEARNING_ADMIN_APPROVED'), "sort" => "completed", "default" => true), array("id" => "EXTRA_ATTEMPTS", "content" => GetMessage('LEARNING_ADMIN_EXTRA_ATTEMPTS'), "default" => true)));
// building list
while ($arRes = $rsData->NavNext(true, "f_")) {
    $row =& $lAdmin->AddRow($f_ID, $arRes);
    $row->AddInputField("RESULT", array("size" => "3"));
    $row->AddInputField("MAX_RESULT", array("size" => "3"));
    $row->AddCheckField("COMPLETED");
    $row->AddViewField("USER_NAME", "[<a href=\"user_edit.php?lang=" . LANG . "&ID=" . $f_USER_ID . "\" title=\"" . GetMessage("LEARNING_CHANGE_USER_PROFILE") . "\">" . $f_USER_ID . "</a>] " . $f_USER_NAME);
    $row->AddViewField("ATTEMPTS", "<a href=\"learn_attempt_admin.php?lang=" . LANG . "&filter_student_id=" . $f_STUDENT_ID . "&filter_test_id=" . $f_TEST_ID . "&set_filter=Y\">" . $f_ATTEMPTS . "</a>" . ($f_ATTEMPT_LIMIT > 0 ? " / " . $f_ATTEMPT_LIMIT : ""));
    $row->AddViewField("TEST_NAME", "<a href=\"/bitrix/admin/learn_test_edit.php?lang=" . LANGUAGE_ID . "&COURSE_ID=" . $f_COURSE_ID . "&PARENT_LESSON_ID=" . $f_LINKED_LESSON_ID . "&LESSON_PATH=" . $f_LINKED_LESSON_ID . "&ID=" . $f_TEST_ID . "&filter=Y&set_filter=Y\">" . $f_TEST_NAME . "</a>");
Example #5
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;
 }
Example #6
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;

	}