Esempio n. 1
0
        $arContent["SELECTED"] = _IsItemSelected(array($itemURL, $selftestURL));
        $lessonCount++;
    }
    if ($arContent["SELECTED"]) {
        $lessonCurrent = $lessonCount;
    }
    $arResult["ITEMS"][] = $arContent;
}
//Page Properties
$APPLICATION->SetPageProperty("learning_course_name", $arResult["COURSE"]["NAME"]);
$APPLICATION->SetPageProperty("learning_lesson_count", $lessonCount);
$APPLICATION->SetPageProperty("learning_lesson_current", $lessonCurrent);
//Test list item
$url = CComponentEngine::MakePathFromTemplate($arParams["TESTS_LIST_TEMPLATE"], array("COURSE_ID" => $arParams["COURSE_ID"]));
$arSelectedItems = array($url);
$rsTest = CTest::GetList(array(), array("COURSE_ID" => $arParams["COURSE_ID"], "ACTIVE" => "Y"));
$rsTest->NavStart(100);
while ($arTest = $rsTest->Fetch()) {
    $arSelectedItems[] = CComponentEngine::MakePathFromTemplate($arParams["TEST_DETAIL_TEMPLATE"], array("TEST_ID" => $arTest["ID"], "COURSE_ID" => $arParams["COURSE_ID"]));
}
$arResult["ITEMS"][] = array("NAME" => GetMessage('LEARNING_TEST_LIST') . " (" . $rsTest->SelectedRowsCount() . ")", "URL" => $url, "TYPE" => "TL", "SELECTED" => _IsItemSelected($arSelectedItems), "DEPTH_LEVEL" => 1);
unset($arContent);
unset($rsContent);
//Open chapters from Cookies
$arOpenChapters = array();
if (array_key_exists("LEARN_MENU_" . $arParams["COURSE_ID"], $_COOKIE)) {
    $arOpenChapters = split(",", $_COOKIE["LEARN_MENU_" . $arParams["COURSE_ID"]]);
}
//Chapter open if child selected
for ($itemIndex = 0, $size = count($arResult["ITEMS"]); $itemIndex < $size; $itemIndex++) {
    if ($arResult["ITEMS"][$itemIndex]["TYPE"] != "CH" || $arResult["ITEMS"][$itemIndex]["SELECTED"] === true) {
Esempio n. 2
0
if (!CModule::IncludeModule("learning")) {
    ShowError(GetMessage("LEARNING_MODULE_NOT_FOUND"));
    return;
}
$arParams["COURSE_ID"] = isset($arParams["COURSE_ID"]) && intval($arParams["COURSE_ID"]) > 0 ? intval($arParams["COURSE_ID"]) : intval($_REQUEST["COURSE_ID"]);
$arParams["TEST_DETAIL_TEMPLATE"] = strlen($arParams["TEST_DETAIL_TEMPLATE"]) > 0 ? htmlspecialchars($arParams["TEST_DETAIL_TEMPLATE"]) : 'test.php?TEST_ID=#TEST#';
$arParams["CHECK_PERMISSIONS"] = isset($arParams["CHECK_PERMISSIONS"]) && $arParams["CHECK_PERMISSIONS"] == "N" ? "N" : "Y";
$arParams["TESTS_PER_PAGE"] = intval($arParams["TESTS_PER_PAGE"]) > 0 ? intval($arParams["TESTS_PER_PAGE"]) : 20;
//Title
$arParams["SET_TITLE"] = $arParams["SET_TITLE"] == "N" ? "N" : "Y";
if ($arParams["SET_TITLE"] == "Y") {
    $APPLICATION->SetTitle(GetMessage("LEARNING_TESTS_LIST"));
}
//arResult
$arResult = array("TESTS" => array(), "TESTS_COUNT" => 0, "ERROR_MESSAGE" => "", "NAV_SRTING" => "", "NAV_RESULT" => null);
$rsTest = CTest::GetList(array("SORT" => "ASC"), array("COURSE_ID" => $arParams["COURSE_ID"], "ACTIVE" => "Y", "CHECK_PERMISSIONS" => $arParams["CHECK_PERMISSIONS"]));
CPageOption::SetOptionString("main", "nav_page_in_session", "N");
$rsTest->NavStart($arParams["TESTS_PER_PAGE"]);
$arResult["NAV_STRING"] = $rsTest->GetPageNavString(GetMessage("LEARNING_TESTS_NAV"));
$arResult["NAV_RESULT"] = $rsTest;
while ($arTest = $rsTest->GetNext()) {
    //Test URL
    $arTest["TEST_DETAIL_URL"] = CComponentEngine::MakePathFromTemplate($arParams["TEST_DETAIL_TEMPLATE"], array("TEST_ID" => $arTest["ID"], "COURSE_ID" => $arTest["COURSE_ID"]));
    if ($_SERVER['REDIRECT_STATUS'] == '404' || isset($_REQUEST["SEF_APPLICATION_CUR_PAGE_URL"])) {
        $arTest["TEST_DETAIL_URL"] = "/bitrix/urlrewrite.php?SEF_APPLICATION_CUR_PAGE_URL=" . urlencode($arTest["TEST_DETAIL_URL"]);
    }
    //Unfinished attempt exists?
    $arTest["ATTEMPT"] = false;
    if ($USER->IsAuthorized()) {
        $rsAttempt = CTestAttempt::GetList(array(), array("TEST_ID" => $arTest["ID"], "STATUS" => "B", "STUDENT_ID" => intval($USER->GetID())));
        $arTest["ATTEMPT"] = $rsAttempt->GetNext();
Esempio n. 3
0
 /**
  * WARNING: don't use this method, it's for internal use only
  * 
  * Convert course to non-course lesson (course will be removed,
  * but lesson will stay exists)
  * 
  * WARNING: this method terminates (by die()/exit()) current execution flow
  * when SQL server error occured. It's due to bug in CDatabase::Update() in main
  * module (version info:
  *    define("SM_VERSION","11.0.12");
  *    define("SM_VERSION_DATE","2012-02-21 17:00:00"); // YYYY-MM-DD HH:MI:SS
  * )
  *
  * @param int $courseId (returned by GetLinkedCourse($lessonId) )
  * 
  * @access private
  */
 protected static function CourseBecomeLesson($courseId)
 {
     global $DB;
     self::_EnsureArgsStrictlyCastableToIntegers($courseId);
     $linkedLessonId = CCourse::CourseGetLinkedLesson($courseId);
     if ($linkedLessonId === false) {
         return false;
     }
     // Check certificates (if exists => forbid removing course)
     $certificate = CCertification::GetList(array(), array("COURSE_ID" => $courseId, 'CHECK_PERMISSIONS' => 'N'));
     if ($certificate === false || $certificate->GetNext()) {
         return false;
     }
     // Remove tests
     $tests = CTest::GetList(array(), array("COURSE_ID" => $courseId));
     if ($tests === false) {
         return false;
     }
     while ($arTest = $tests->Fetch()) {
         if (!CTest::Delete($arTest["ID"])) {
             return false;
         }
     }
     // Remove all prohibitions for lessons in context of course to be removed
     // and remove prohibitions for course to be removed in context of all other courses
     self::PublishProhibitionPurge($linkedLessonId, self::PUBLISH_PROHIBITION_PURGE_ALL_LESSONS_IN_COURSE_CONTEXT | self::PUBLISH_PROHIBITION_PURGE_LESSON_IN_ALL_COURSE_CONTEXT);
     $rc = $DB->Query("DELETE FROM b_learn_course\n\t\t\tWHERE ID=" . (string) (int) $courseId, true);
     // reload cache of LINKED_LESSON_ID -> COURSE_ID
     self::GetCourseToLessonMap_ReloadCache();
     CLearnCacheOfLessonTreeComponent::MarkAsDirty();
     /**
      * This code will be useful after bug in CDatabase::Update()
      * and CDatabase::Insert() will be solved and $ignore_errors setted
      * to true in Insert()/Update() call above.
      */
     if ($rc === false) {
         throw new LearnException('EA_SQLERROR', LearnException::EXC_ERR_ALL_GIVEUP);
     }
     // If data not updated
     if ($rc === 0) {
         throw new LearnException('EA_OTHER: data not updated', LearnException::EXC_ERR_ALL_GIVEUP);
     }
 }
Esempio n. 4
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
if (!CModule::IncludeModule("learning")) {
    return;
}
$arCourses = array();
$courses = CCourse::GetList(array("SORT" => "ASC"));
while ($arRes = $courses->Fetch()) {
    $arCourses[$arRes["ID"]] = $arRes["NAME"];
}
$arTests = array();
if ($arCurrentValues["COURSE_ID"] && intval($arCurrentValues["COURSE_ID"]) > 0) {
    $rsTest = CTest::GetList(array("SORT" => "ASC"), array("ACTIVE" => "Y", "COURSE_ID" => $arCurrentValues["COURSE_ID"]));
    while ($arTest = $rsTest->GetNext()) {
        $arTests[$arTest["ID"]] = "[" . $arTest["ID"] . "] " . $arTest["NAME"];
    }
}
$arComponentParameters = array("PARAMETERS" => array("COURSE_ID" => array("NAME" => GetMessage("LEARNING_COURSE_ID"), "TYPE" => "LIST", "VALUES" => $arCourses, "PARENT" => "BASE", "ADDITIONAL_VALUES" => "Y", "REFRESH" => "Y", "DEFAULT" => '={$_REQUEST["COURSE_ID"]}'), "TEST_ID" => array("NAME" => GetMessage("T_LEARNING_DETAIL_ID"), "TYPE" => "LIST", "VALUES" => $arTests, "ADDITIONAL_VALUES" => "Y", "PARENT" => "BASE", "DEFAULT" => '={$_REQUEST["TEST_ID"]}'), "PAGE_NUMBER_VARIABLE" => array("NAME" => GetMessage("T_LEARNING_PAGE_NUMBER_VARIABLE"), "TYPE" => "STRING", "PARENT" => "ADDITIONAL_SETTINGS", "DEFAULT" => 'PAGE'), "GRADEBOOK_TEMPLATE" => array("NAME" => GetMessage("LEARNING_GRADEBOOK_TEMPLATE_NAME"), "TYPE" => "STRING", "PARENT" => "URL_TEMPLATES", "DEFAULT" => '../gradebook.php?TEST_ID=#TEST_ID#', "COLS" => 45), "PAGE_WINDOW" => array("NAME" => GetMessage("LEARNING_PAGE_WINDOW_NAME"), "TYPE" => "STRING", "PARENT" => "ADDITIONAL_SETTINGS", "DEFAULT" => '10'), "SHOW_TIME_LIMIT" => array("NAME" => GetMessage("LEARNING_SHOW_TIME_LIMIT"), "TYPE" => "CHECKBOX", "PARENT" => "ADDITIONAL_SETTINGS", "DEFAULT" => "Y"), "SET_TITLE" => array()));
Esempio n. 5
0
        $itemURL .= 'LESSON_PATH=' . $arContent['~#LESSON_PATH'];
    }
    $arContent["URL"] = htmlspecialcharsbx($itemURL);
    if ($arContent["SELECTED"]) {
        $lessonCurrent = $lessonCount;
    }
    $arResult["ITEMS"][] = $arContent;
}
//Page Properties
$APPLICATION->SetPageProperty("learning_course_name", $arResult["COURSE"]["NAME"]);
$APPLICATION->SetPageProperty("learning_lesson_count", $lessonCount);
$APPLICATION->SetPageProperty("learning_lesson_current", $lessonCurrent);
//Test list item
$url = CComponentEngine::MakePathFromTemplate($arParams["TESTS_LIST_TEMPLATE"], array("COURSE_ID" => $arParams["COURSE_ID"]));
$arSelectedItems = array($url);
$rsTest = CTest::GetList(array(), array("COURSE_ID" => $arParams["COURSE_ID"], "ACTIVE" => "Y", 'CHECK_PERMISSIONS' => 'N'));
$rsTest->NavStart(100);
while ($arTest = $rsTest->Fetch()) {
    $arSelectedItems[] = CComponentEngine::MakePathFromTemplate($arParams["TEST_DETAIL_TEMPLATE"], array("TEST_ID" => $arTest["ID"], "COURSE_ID" => $arParams["COURSE_ID"]));
}
if ($rsTest->SelectedRowsCount() > 0) {
    $arResult["ITEMS"][] = array("NAME" => GetMessage('LEARNING_TEST_LIST') . "&nbsp;(" . $rsTest->SelectedRowsCount() . ")", "URL" => $url, "TYPE" => "TL", "SELECTED" => $parent->arResult["VARIABLES"]["TEST_LIST"] == "Y", "DEPTH_LEVEL" => 1);
}
unset($arContent);
unset($rsContent);
//Open chapters from Cookies
$arOpenChapters = array();
if (array_key_exists("LEARN_MENU_" . $arParams["COURSE_ID"], $_COOKIE)) {
    $arOpenChapters = explode(",", $_COOKIE["LEARN_MENU_" . $arParams["COURSE_ID"]]);
}
//Chapter open if child selected
Esempio n. 6
0
                $ch = new CTest();
                $arFields = array("ACTIVE" => $_REQUEST['action'] == "activate" ? "Y" : "N");
                if (!$ch->Update($ID, $arFields)) {
                    if ($e = $APPLICATION->GetException()) {
                        $lAdmin->AddGroupError(GetMessage("SAVE_ERROR") . $ID . ": " . $e->GetString(), $ID);
                    }
                }
                break;
        }
    }
    if (isset($return_url) && strlen($return_url) > 0 && check_bitrix_sessid()) {
        LocalRedirect($return_url);
    }
}
// fetch data
$rsData = CTest::GetList(array($by => $order), $arFilter);
$rsData = new CAdminResult($rsData, $sTableID);
$rsData->NavStart();
// navigation string setup
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("LEARNING_TESTS")));
// list header
$lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "id", "default" => true), array("id" => "TIMESTAMP_X", "content" => GetMessage('LEARNING_COURSE_ADM_DATECH'), "sort" => "timestamp_x", "default" => true), array("id" => "NAME", "content" => GetMessage('LEARNING_NAME'), "sort" => "name", "default" => true), array("id" => "SORT", "content" => GetMessage('LEARNING_COURSE_ADM_SORT'), "sort" => "sort", "default" => true), array("id" => "ACTIVE", "content" => GetMessage('LEARNING_COURSE_ADM_ACT'), "sort" => "active", "default" => true), array("id" => "TESTS_STATS", "content" => GetMessage('LEARNING_TEST_ADM_STATS'), "default" => true)));
// building list
while ($arRes = $rsData->NavNext(true, "f_")) {
    $row =& $lAdmin->AddRow($f_ID, $arRes);
    $arStat = CTest::GetStats($f_ID);
    $row->AddCheckField("ACTIVE");
    $row->AddInputField("NAME", array("size" => "35"));
    $row->AddInputField("SORT", array("size" => "3"));
    $index = '-';
    if ($arStat["ALL_CNT"] > 0.1) {
" size="47"></td>
	</tr>

	<tr>
		<td><?php 
echo GetMessage("LEARNING_ADMIN_TEST");
?>
:</td>
		<td>
			<select name="filter_test_id">
				<option value=""><?php 
echo GetMessage("LEARNING_ALL");
?>
</option>
			<?php 
$l = CTest::GetList(array(), array());
while ($l->ExtractFields("l_")) {
    ?>
<option value="<?php 
    echo $l_ID;
    ?>
"<?php 
    if ($filter_test_id == $l_ID) {
        echo " selected";
    }
    ?>
><?php 
    echo $l_NAME;
    ?>
</option><?php 
}
Esempio n. 8
0
    echo $f_ID;
    ?>
" <?php 
    if (IntVal($f_ID) == $PREVIOUS_TEST_COURSE_ID || !isset($PREVIOUS_TEST_COURSE_ID) && IntVal($f_ID) == $COURSE_ID) {
        echo "selected";
    }
    ?>
><?php 
    echo $f_NAME;
    ?>
</option><?php 
}
?>
		</select>
		<?php 
$t = CTest::GetList(array(), array("ACTIVE" => "Y"));
?>
		<select name="PREVIOUS_TEST_ID" id="PREVIOUS_TEST_ID" onchange="OnChangePreviousTest();">
			<option value="0">&lt;<?php 
echo GetMessage("LEARNING_TEST_NO_DEPENDS");
?>
&gt;</option>
			<?php 
while ($t->ExtractFields("t_")) {
    if (!isset($ID) || $ID != $t_ID) {
        ?>
					<option data-course="<?php 
        echo intval($t_COURSE_ID);
        ?>
" value="<?php 
        echo $t_ID;
Esempio n. 9
0
        $arTest["CURRENT_INDICATION_PERCENT"] = $arTest["CURRENT_INDICATION"] & 1 ? "Y" : "N";
        $arTest["CURRENT_INDICATION_MARK"] = ($arTest["CURRENT_INDICATION"] & 2) >> 1 ? "Y" : "N";
        $arTest["FINAL_INDICATION_CORRECT_COUNT"] = $arTest["FINAL_INDICATION"] & 1 ? "Y" : "N";
        $arTest["FINAL_INDICATION_SCORE"] = ($arTest["FINAL_INDICATION"] & 2) >> 1 ? "Y" : "N";
        $arTest["FINAL_INDICATION_MARK"] = ($arTest["FINAL_INDICATION"] & 4) >> 2 ? "Y" : "N";
        $arTest["FINAL_INDICATION_MESSAGE"] = ($arTest["FINAL_INDICATION"] & 8) >> 3 ? "Y" : "N";
    } else {
        $arTest["CURRENT_INDICATION_PERCENT"] = "N";
        $arTest["CURRENT_INDICATION_MARK"] = "N";
        $arTest["FINAL_INDICATION_CORRECT_COUNT"] = "N";
        $arTest["FINAL_INDICATION_SCORE"] = "N";
        $arTest["FINAL_INDICATION_MARK"] = "N";
        $arTest["FINAL_INDICATION_MESSAGE"] = "N";
    }
    if ($arTest["PREVIOUS_TEST_ID"] > 0 && $arTest["PREVIOUS_TEST_SCORE"] > 0) {
        $rsPrevTest = CTest::GetList(array(), array("ID" => $arTest["PREVIOUS_TEST_ID"], 'CHECK_PERMISSIONS' => 'N'));
        if ($arPrevTest = $rsPrevTest->GetNext()) {
            if ($parent = $this->GetParent()) {
                $testUrlTemplate = CComponentEngine::MakePathFromTemplate($parent->arResult["URL_TEMPLATES"]["test"], array("TEST_ID" => $arPrevTest["ID"], "COURSE_ID" => $arPrevTest["COURSE_ID"]));
                $arTest["PREVIOUS_TEST_LINK"] = "<a href=\"" . $testUrlTemplate . "\">" . $arPrevTest["NAME"] . "</a>";
            }
        }
    }
}
if ($USER->GetID()) {
    $arTest["ATTEMPT_LIMIT"] += CGradeBook::GetExtraAttempts($USER->GetID(), $arParams["TEST_ID"]);
}
$oAccess = CLearnAccess::GetInstance($USER->GetID());
$isRelativelyHighAccessLevel = $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_CREATE | CLearnAccess::OP_LESSON_READ | CLearnAccess::OP_LESSON_WRITE | CLearnAccess::OP_LESSON_REMOVE);
$bCheckPerm = !$isRelativelyHighAccessLevel && !$USER->IsAdmin();
if ($bCheckPerm && $arTest["PREVIOUS_TEST_ID"] > 0 && $arTest["PREVIOUS_TEST_SCORE"] > 0 && !CTest::isPrevPassed($arTest["PREVIOUS_TEST_ID"], $arTest["PREVIOUS_TEST_SCORE"])) {
Esempio n. 10
0
 function GetByID($ID)
 {
     return CTest::GetList($arOrder = array(), $arFilter = array("ID" => $ID));
 }