%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/learning.student.gradebook/ |
Current File : /home/bitrix/www/bitrix/components/bitrix/learning.student.gradebook/component.php |
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); //Authorized? if (!$USER->IsAuthorized()) $APPLICATION->AuthForm(GetMessage("LEARNING_NO_AUTHORIZE")); //Module if (!CModule::IncludeModule("learning")) { ShowError(GetMessage("LEARNING_MODULE_NOT_FOUND")); return; } //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']; } // Add info about last tests' attempts for each test $arResult['LAST_TEST_INFO'] = array(); foreach ($arTestsIds as $key => $testId) { $arAttempt = false; $attempts = CTestAttempt::GetList( array('ID' => 'DESC'), array( 'TEST_ID' => $testId, 'STUDENT_ID' => (int) $USER->getId() ), array( 'ID', 'TEST_ID', 'STUDENT_ID', 'SCORE', 'COMPLETED' ), array( 'NAV_PARAMS' => array( 'nPageTop' => 1 ) ) ); $lastScore = false; $lastCompleted = false; if ($arAttempt = $attempts->fetch()) { $lastScore = $arAttempt['SCORE']; $lastCompleted = $arAttempt['COMPLETED']; } $arResult['LAST_TEST_INFO'][$testId] = array( 'LAST_SCORE' => $lastScore, 'LAST_COMPLETED' => $lastCompleted ); } unset($rsGradebook); unset($arGradebook); //Attempts if (array_key_exists($arParams["TEST_ID_VARIABLE"], $_REQUEST) && intval($_REQUEST[$arParams["TEST_ID_VARIABLE"]]) > 0) { $rsAttempt = CTestAttempt::GetList( Array("ID" => "DESC"), Array( "TEST_ID"=> intval($_REQUEST[$arParams["TEST_ID_VARIABLE"]]), "STUDENT_ID" => intval($USER->GetID()) ) ); while ($arAttempt = $rsAttempt->GetNext()) { $arResult["ATTEMPTS"][] = $arAttempt; } unset($arAttempt); unset($rsAttempt); } $this->IncludeComponentTemplate();