ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilCmiXapiHighscoreReportLinkBuilder Class Reference
+ Inheritance diagram for ilCmiXapiHighscoreReportLinkBuilder:
+ Collaboration diagram for ilCmiXapiHighscoreReportLinkBuilder:

Public Member Functions

 getPipelineDebug ()
 
- Public Member Functions inherited from ilCmiXapiAbstractReportLinkBuilder
 __construct (int $objId, string $aggregateEndPoint, ilCmiXapiStatementsReportFilter $filter)
 ilCmiXapiAbstractReportLinkBuilder constructor. More...
 
 getUrl ()
 
 getObjId ()
 
 getAggregateEndPoint ()
 
 getObj ()
 

Protected Member Functions

 buildPipeline ()
 
 buildFilterStage ()
 
 buildOrderStage ()
 
 getUsersStack ()
 
- Protected Member Functions inherited from ilCmiXapiAbstractReportLinkBuilder
 appendRequestParameters (string $url)
 
 buildPipelineParameter ()
 
 buildPipeline ()
 

Additional Inherited Members

- Protected Attributes inherited from ilCmiXapiAbstractReportLinkBuilder
int $objId
 
string $aggregateEndPoint
 
ilCmiXapiStatementsReportFilter $filter
 

Detailed Description

Member Function Documentation

◆ buildFilterStage()

ilCmiXapiHighscoreReportLinkBuilder::buildFilterStage ( )
protected
Returns
mixed[][]

Definition at line 67 of file class.ilCmiXapiHighscoreReportLinkBuilder.php.

67 : array
68 {
69 $stage = array();
70
71 $stage['statement.object.objectType'] = 'Activity';
72 $stage['statement.actor.objectType'] = 'Agent';
73
74 $stage['statement.object.id'] = $this->filter->getActivityId();
75
76 $stage['statement.result.score.scaled'] = [
77 '$exists' => 1
78 ];
79
80 $obj = $this->getObj();
81 if ((ilObject::_lookupType($this->getObjId()) == 'cmix' && $obj->getContentType() == ilObjCmiXapi::CONT_TYPE_GENERIC) || $obj->isMixedContentType()) {
82 $stage['$or'] = $this->getUsersStack();
83 }
84
85 return [
86 '$match' => $stage
87 ];
88 }
static _lookupType(int $id, bool $reference=false)
filter(string $filter_id, $class_path, string $cmd, bool $activated=true, bool $expanded=true)

References ilObject\_lookupType(), ilObjCmiXapi\CONT_TYPE_GENERIC, ILIAS\Repository\filter(), ilCmiXapiAbstractReportLinkBuilder\getObj(), ilCmiXapiAbstractReportLinkBuilder\getObjId(), and getUsersStack().

Referenced by buildPipeline().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildOrderStage()

ilCmiXapiHighscoreReportLinkBuilder::buildOrderStage ( )
protected
Returns
array<string, array<string, int>>

Definition at line 93 of file class.ilCmiXapiHighscoreReportLinkBuilder.php.

93 : array
94 {
95 return [ '$sort' => [
96 'statement.timestamp' => 1
97 ]];
98 }

Referenced by buildPipeline().

+ Here is the caller graph for this function:

◆ buildPipeline()

ilCmiXapiHighscoreReportLinkBuilder::buildPipeline ( )
protected
Returns
array<int, array<mixed[]>>

Reimplemented from ilCmiXapiAbstractReportLinkBuilder.

Definition at line 35 of file class.ilCmiXapiHighscoreReportLinkBuilder.php.

35 : array
36 {
37 $pipeline = [];
38
39 $pipeline[] = $this->buildFilterStage();
40 $pipeline[] = $this->buildOrderStage();
41
42
43 $obj = $this->getObj();
44 $id = null;
45 $cmix = ilObject::_lookupType($this->getObjId()) == 'cmix';
46 if ($cmix && $obj->getContentType() == ilObjCmiXapi::CONT_TYPE_GENERIC) {
47 $id = '$statement.actor.mbox';
48 }
49 if ($cmix && $obj->getContentType() == ilObjCmiXapi::CONT_TYPE_CMI5 && !$obj->isMixedContentType()) {
50 $id = '$statement.actor.account.name';
51 }
52 $pipeline[] = ['$group' => [
53 '_id' => $id,
54 'mbox' => [ '$last' => '$statement.actor.mbox' ],
55 'account' => [ '$last' => '$statement.actor.account.name'],
56 'username' => [ '$last' => '$statement.actor.name' ],
57 'timestamp' => [ '$last' => '$statement.timestamp' ],
58 'duration' => [ '$push' => '$statement.result.duration' ],
59 'score' => [ '$last' => '$statement.result.score' ]
60 ]];
61 return $pipeline;
62 }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23

References $id, ilObject\_lookupType(), buildFilterStage(), buildOrderStage(), ilObjCmiXapi\CONT_TYPE_CMI5, ilObjCmiXapi\CONT_TYPE_GENERIC, ilCmiXapiAbstractReportLinkBuilder\getObj(), and ilCmiXapiAbstractReportLinkBuilder\getObjId().

Referenced by getPipelineDebug().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPipelineDebug()

ilCmiXapiHighscoreReportLinkBuilder::getPipelineDebug ( )

Definition at line 123 of file class.ilCmiXapiHighscoreReportLinkBuilder.php.

123 : string
124 {
125 return '<pre>' . json_encode($this->buildPipeline(), JSON_PRETTY_PRINT) . '</pre>';
126 }

References buildPipeline().

+ Here is the call graph for this function:

◆ getUsersStack()

ilCmiXapiHighscoreReportLinkBuilder::getUsersStack ( )
protected
Returns
array<string, string>[]

Definition at line 104 of file class.ilCmiXapiHighscoreReportLinkBuilder.php.

104 : array
105 {
106 $users = [];
107 $obj = $this->getObj();
108 if ($obj->isMixedContentType()) {
109 foreach (ilCmiXapiUser::getUsersForObject($this->getObjId()) as $cmixUser) {
110 $users[] = ['statement.actor.mbox' => "mailto:{$cmixUser->getUsrIdent()}"];
111 $users[] = ['statement.actor.account.name' => "{$cmixUser->getUsrIdent()}"];
112 }
113 } else {
114 foreach (ilCmiXapiUser::getUsersForObject($this->getObjId()) as $cmixUser) {
115 $users[] = [
116 'statement.actor.mbox' => "mailto:{$cmixUser->getUsrIdent()}"
117 ];
118 }
119 }
120 return $users;
121 }
static getUsersForObject(int $objId, bool $asUsrId=false)

References ilCmiXapiAbstractReportLinkBuilder\getObj(), ilCmiXapiAbstractReportLinkBuilder\getObjId(), and ilCmiXapiUser\getUsersForObject().

Referenced by buildFilterStage().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

The documentation for this class was generated from the following file: