blob: 350bf39c39d9f1f89df5dd9e9f7b58c1f56d8c5e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
<?php
namespace Studip\LTI13a;
use OAT\Library\Lti1p3Ags\Model\Result\Result;
use OAT\Library\Lti1p3Ags\Model\Result\ResultCollection;
use OAT\Library\Lti1p3Ags\Model\Result\ResultCollectionInterface;
use OAT\Library\Lti1p3Ags\Model\Result\ResultInterface;
use OAT\Library\Lti1p3Ags\Repository\ResultRepositoryInterface;
class ResultRepository implements ResultRepositoryInterface
{
public function findCollectionByLineItemIdentifier(
string $lineItemIdentifier,
?int $limit = null,
?int $offset = null
) : ResultCollectionInterface {
$sql_params = LineItemRepository::getSearchParametersFromLineItemIdentifier($lineItemIdentifier);
if (!$sql_params) {
//Nothing we can search for:
return new ResultCollection();
}
$sql = 'JOIN `grading_definitions` gd
ON (`definition_id` = gd.`id`)
WHERE gd.`course_id` = :course_id
AND gd.`tool` = :tool';
if ($limit) {
$sql .= 'LIMIT :limit ';
$sql_params['limit'] = $limit;
}
if ($offset) {
$sql .= 'OFFSET :offset ';
$sql_params['offset'] = $offset;
}
$grades = \Grading\Instance::findBySQL($sql, $sql_params);
$results = new ResultCollection();
foreach ($grades as $grade) {
$results->add($grade->toResult());
}
return $results;
}
public function findByLineItemIdentifierAndUserIdentifier(
string $lineItemIdentifier,
string $userIdentifier
) : ?ResultInterface {
$search_parameters = LineItemRepository::getSearchParametersFromLineItemIdentifier($lineItemIdentifier);
$search_parameters['user_id'] = $userIdentifier;
$grade = \Grading\Instance::findOneBySQL(
'JOIN `grading_definitions` gd
ON (`definition_id` = gd.`id`)
WHERE gd.`course_id` = :course_id
AND gd.`tool` = :tool
AND `user_id` = :user_id',
$search_parameters
);
if ($grade) {
return $grade->toResult();
}
return null;
}
}
|