19 declare(strict_types=0);
40 if ($max_points === 0) {
43 return ($reached / $max_points * 100) >= $limit_perc;
46 $required_perc = self::lookupObjectiveRequiredPercentage(
53 if ($max_points === 0) {
56 return ($reached / $max_points * 100) >= $required_perc;
69 $a_test_type = $assignments->getTypeByTest($a_test_ref_id);
71 if ($assignments->isSeparateTest($a_test_ref_id)) {
73 $tst = $factory->getInstanceByRefId($a_test_ref_id,
false);
75 $schema = $tst->getMarkSchema();
76 foreach ($schema->getMarkSteps() as $mark) {
77 if ($mark->getPassed()) {
78 return (
int) $mark->getMinimumLevel();
83 $tst_ref_id = $a_test_ref_id;
91 public static function lookupMaxAttempts(
int $a_container_id,
int $a_objective_id,
int $a_test_ref_id):
int 95 $ilDB = $DIC->database();
98 if (!$assignments->isSeparateTest($a_test_ref_id)) {
103 $query =
'SELECT nr_of_tries FROM tst_tests ' .
107 return (
int) $row->nr_of_tries;
120 public static function lookupQplBySequence(
int $a_test_ref_id,
int $a_sequence_id):
string 125 if (!$a_sequence_id) {
141 $list->loadDefinitions();
144 $translator->loadLabels($list);
147 foreach ($list as $definition) {
148 if ($definition->getId() != $a_sequence_id) {
151 $title = self::buildQplTitleByDefinition($definition, $translator);
161 $filterTitle = array();
164 if (!empty($filterTitle)) {
165 $title .=
' -> ' . implode(
' / ', $filterTitle);
170 public static function hasActiveRun(
int $a_container_id,
int $a_test_ref_id,
int $a_objective_id): bool
179 $ilCtrl = $DIC->ctrl();
180 $ilUser = $DIC->user();
181 $ilAccess = $DIC->access();
188 if ($a_user_id == $ilUser->getId()) {
189 $valid = $ilAccess->checkAccess(
'read',
'', $a_test_ref_id);
192 $valid = $ilAccess->checkAccess(
'write',
'', $a_test_ref_id);
199 $ilCtrl->setParameterByClass(
'ilObjTestGUI',
'ref_id', $a_test_ref_id);
200 $ctrlClasses = array(
'ilRepositoryGUI',
'ilObjTestGUI',
'ilTestResultsGUI');
201 $link = $ilCtrl->getLinkTargetByClass($ctrlClasses);
202 $ilCtrl->setParameterByClass(
'ilObjTestGUI',
'ref_id',
'');
210 $ilCtrl->setParameterByClass(
'ilTestEvaluationGUI',
'ref_id', $a_test_ref_id);
211 $ilCtrl->setParameterByClass(
'ilTestEvaluationGUI',
'active_id', $userActiveId);
212 $link = $ilCtrl->getLinkTargetByClass(array(
'ilRepositoryGUI',
214 'ilTestEvaluationGUI' 215 ),
'outParticipantsResultsOverview');
216 $ilCtrl->setParameterByClass(
'ilTestEvaluationGUI',
'ref_id',
'');
217 $ilCtrl->setParameterByClass(
'ilTestEvaluationGUI',
'active_id',
'');
static hasActiveRun(int $a_container_id, int $a_test_ref_id, int $a_objective_id)
static lookupLimit(int $a_container_id, int $a_objective_id, int $a_test_type)
static buildQplTitleByDefinition(ilTestRandomQuestionSetSourcePoolDefinition $def, ilTestQuestionFilterLabelTranslator $trans)
getTypeFilterLabel(array $filter=[])
static _lookupRandomTest(int $obj_id)
static loookupTestLimit(int $a_test_id, int $a_objective_id)
static lookupObjectiveRequiredPercentage(int $a_container_id, int $a_objective_id, int $a_test_ref_id, int $a_max_points)
static _lookupObjId(int $ref_id)
static getTestResultLinkForUser(int $a_test_ref_id, int $a_user_id)
static getInstanceByRefId(int $ref_id, bool $stop_on_error=true)
get an instance of an Ilias object by reference id
getTaxonomyFilterLabel(array $filter=[], string $filter_delimiter='+', string $tax_node_delimiter=':', string $nodes_delimiter=', ')
static _getTestIDFromObjectID($object_id)
Returns the ILIAS test id for a given object id.
static isCompleted(int $a_cont_oid, int $a_test_rid, int $a_objective_id, int $max_points, int $reached, int $limit_perc)
Check if objective is completed.
static getInstanceByObjId(int $a_obj_id)
static lookupRandomTest(int $a_test_obj_id)
static getInstance(int $a_container_id)
static lookupMaxAttempts(int $a_container_id, int $a_objective_id, int $a_test_ref_id)
getMappedTaxonomyFilter()
get the mapped taxonomy filter conditions
static _getActiveIdOfUser($user_id="", $test_id="")
static visibleUserResultExists($test_obj_id, $user_id)