ILIAS
release_6 Revision v6.24-5-g0c8bfefb3b8
◀ ilDoc Overview
Main Page
Related Pages
Modules
+
Namespaces
Namespace List
+
Namespace Members
+
All
$
_
a
b
c
d
e
f
g
h
i
j
l
m
p
s
t
w
+
Functions
_
a
b
c
f
g
h
i
s
t
w
+
Variables
$
c
d
e
f
g
h
j
l
m
p
s
t
+
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
+
Data Fields
+
All
$
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Variables
$
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Files
File List
+
Globals
+
All
$
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
+
Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
x
+
Variables
$
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Examples
•
All
Data Structures
Namespaces
Files
Functions
Variables
Modules
Pages
class.ilCmiXapiHighscoreReportLinkBuilder.php
Go to the documentation of this file.
1
<?php
2
3
/* Copyright (c) 1998-2019 ILIAS open source, Extended GPL, see docs/LICENSE */
4
5
15
class
ilCmiXapiHighscoreReportLinkBuilder
extends
ilCmiXapiAbstractReportLinkBuilder
16
{
20
protected
function
buildPipeline
() : array
21
{
22
$pipeline = [];
23
24
$pipeline[] = $this->
buildFilterStage
();
25
$pipeline[] = $this->
buildOrderStage
();
26
27
28
$obj
= $this->
getObj
();
29
$id = null;
30
if
(
$obj
instanceof
ilObjLTIConsumer
||
$obj
->getContentType() ==
ilObjCmiXapi::CONT_TYPE_GENERIC
)
31
{
32
$id =
'$statement.actor.mbox'
;
33
}
34
if
(
$obj
instanceof
ilObjCmiXapi
&&
$obj
->getContentType() ==
ilObjCmiXapi::CONT_TYPE_CMI5
&& !
$obj
->isMixedContentType())
35
{
36
$id =
'$statement.actor.account.name'
;
37
}
38
$pipeline[] = [
'$group'
=> [
39
'_id'
=> $id,
40
'mbox'
=> [
'$last'
=>
'$statement.actor.mbox'
],
41
'account'
=> [
'$last'
=>
'$statement.actor.account.name'
],
42
'username'
=> [
'$last'
=>
'$statement.actor.name'
],
43
'timestamp'
=> [
'$last'
=>
'$statement.timestamp'
],
44
'duration'
=> [
'$push'
=>
'$statement.result.duration'
],
45
'score'
=> [
'$last'
=>
'$statement.result.score'
]
46
]];
47
return
$pipeline;
48
}
49
50
protected
function
buildFilterStage
()
51
{
52
$stage = array();
53
54
$stage[
'statement.object.objectType'
] =
'Activity'
;
55
$stage[
'statement.actor.objectType'
] =
'Agent'
;
56
57
$stage[
'statement.object.id'
] = $this->filter->getActivityId();
58
59
$stage[
'statement.result.score.scaled'
] = [
60
'$exists'
=> 1
61
];
62
63
$obj
= $this->
getObj
();
64
if
(
$obj
instanceof
ilObjLTIConsumer
|| (
$obj
->getContentType() ==
ilObjCmiXapi::CONT_TYPE_GENERIC
) ||
$obj
->isMixedContentType())
65
{
66
$stage[
'$or'
] = $this->
getUsersStack
();
67
}
68
69
return
[
70
'$match'
=> $stage
71
];
72
}
73
74
protected
function
buildOrderStage
()
75
{
76
return
[
'$sort'
=> [
77
'statement.timestamp'
=> 1
78
]];
79
}
80
81
// not used in cmi5 see above
82
protected
function
getUsersStack
()
83
{
84
$users = [];
85
$obj
= $this->
getObj
();
86
if
(
$obj
instanceof
ilObjCmiXapi
&&
$obj
->isMixedContentType())
87
{
88
foreach
(
ilCmiXapiUser::getUsersForObject
($this->
getObjId
()) as $cmixUser)
89
{
90
$users[] = [
'statement.actor.mbox'
=>
"mailto:{$cmixUser->getUsrIdent()}"
];
91
$users[] = [
'statement.actor.account.name'
=>
"{$cmixUser->getUsrIdent()}"
];
92
}
93
}
94
else
95
{
96
foreach
(
ilCmiXapiUser::getUsersForObject
($this->
getObjId
()) as $cmixUser)
97
{
98
$users[] = [
99
'statement.actor.mbox'
=>
"mailto:{$cmixUser->getUsrIdent()}"
100
];
101
}
102
}
103
return
$users;
104
}
105
106
public
function
getPipelineDebug
()
107
{
108
return
'<pre>'
. json_encode($this->
buildPipeline
(), JSON_PRETTY_PRINT) .
'</pre>'
;
109
}
110
}
ilCmiXapiUser\getUsersForObject
static getUsersForObject($objId, $asUsrId=false)
Definition:
class.ilCmiXapiUser.php:442
ilCmiXapiHighscoreReportLinkBuilder\buildOrderStage
buildOrderStage()
Definition:
class.ilCmiXapiHighscoreReportLinkBuilder.php:74
ilObjLTIConsumer
Definition:
class.ilObjLTIConsumer.php:14
ilCmiXapiHighscoreReportLinkBuilder\buildPipeline
buildPipeline()
Definition:
class.ilCmiXapiHighscoreReportLinkBuilder.php:20
ilCmiXapiAbstractReportLinkBuilder
Definition:
class.ilCmiXapiAbstractReportLinkBuilder.php:15
ilObjCmiXapi
Definition:
class.ilObjCmiXapi.php:15
ilCmiXapiHighscoreReportLinkBuilder\buildFilterStage
buildFilterStage()
Definition:
class.ilCmiXapiHighscoreReportLinkBuilder.php:50
ilObjCmiXapi\CONT_TYPE_GENERIC
const CONT_TYPE_GENERIC
Definition:
class.ilObjCmiXapi.php:45
ilCmiXapiHighscoreReportLinkBuilder\getPipelineDebug
getPipelineDebug()
Definition:
class.ilCmiXapiHighscoreReportLinkBuilder.php:106
ilCmiXapiAbstractReportLinkBuilder\getObjId
getObjId()
Definition:
class.ilCmiXapiAbstractReportLinkBuilder.php:90
ilObjCmiXapi\CONT_TYPE_CMI5
const CONT_TYPE_CMI5
Definition:
class.ilObjCmiXapi.php:46
ilCmiXapiAbstractReportLinkBuilder\$obj
$obj
Definition:
class.ilCmiXapiAbstractReportLinkBuilder.php:32
ilCmiXapiHighscoreReportLinkBuilder\getUsersStack
getUsersStack()
Definition:
class.ilCmiXapiHighscoreReportLinkBuilder.php:82
ilCmiXapiHighscoreReportLinkBuilder
Definition:
class.ilCmiXapiHighscoreReportLinkBuilder.php:15
ilCmiXapiAbstractReportLinkBuilder\getObj
getObj()
Definition:
class.ilCmiXapiAbstractReportLinkBuilder.php:106
Modules
CmiXapi
classes
XapiReport
class.ilCmiXapiHighscoreReportLinkBuilder.php
Generated on Wed Apr 23 2025 20:00:53 for ILIAS by
1.8.13 (using
Doxyfile
)