Skip to content

Commit aa64dbb

Browse files
author
daniel-abbey
committed
Merge pull request #690 from LearningLocker/issue/689
Fixed learner count on admin and LRS dashboards.
2 parents 4aea311 + 81686f7 commit aa64dbb

File tree

2 files changed

+54
-25
lines changed

2 files changed

+54
-25
lines changed

app/locker/data/dashboards/AdminDashboard.php

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,40 @@ public function lrsCount(){
5858
*
5959
**/
6060
public function actorCount(){
61-
$mbox = intval( \Statement::distinct('statement.actor.mbox')->remember(5)->count() );
62-
$openid = intval( \Statement::distinct('statement.actor.openid')->remember(5)->count() );
63-
$mbox_sha1sum = intval( \Statement::distinct('statement.actor.mbox_sha1sum')->remember(5)->count() );
64-
$account = intval( \Statement::distinct('statement.actor.account.name')->remember(5)->count() );
65-
return ($mbox + $openid + $mbox_sha1sum + $account);
61+
$count_array = ['mbox' => '', 'openid' => '', 'mbox_sha1sum' => '', 'account' => ''];
62+
63+
$count_array['mbox'] = $this->db->statements->aggregate([
64+
['$match' => ['statement.actor.mbox' => ['$exists' => true]]],
65+
['$group' => ['_id' => '$statement.actor.mbox']],
66+
['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]
67+
]);
68+
69+
$count_array['openid'] = $this->db->statements->aggregate([
70+
['$match' => ['statement.actor.openid' => ['$exists' => true]]],
71+
['$group' => ['_id' => '$statement.actor.openid']],
72+
['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]
73+
]);
74+
75+
$count_array['mbox_sha1sum'] = $this->db->statements->aggregate([
76+
['$match' => ['statement.actor.mbox_sha1sum' => ['$exists' => true]]],
77+
['$group' => ['_id' => '$statement.actor.mbox_sha1sum']],
78+
['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]
79+
]);
80+
81+
$count_array['account'] = $this->db->statements->aggregate([
82+
['$match' => ['statement.actor.account' => ['$exists' => true]]],
83+
['$group' => ['_id' => ['accountName' => '$statement.actor.account.name', 'accountHomePage' => '$statement.actor.account.homePage']]],
84+
['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]
85+
]);
86+
87+
$summary = 0;
88+
foreach ($count_array as $key => $val) {
89+
if( isset($val['result'][0]) ){
90+
$summary += $val['result'][0]['count'];
91+
}
92+
}
93+
94+
return $summary;
6695
}
6796

6897
/**

app/locker/data/dashboards/LrsDashboard.php

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -54,29 +54,29 @@ public function statementCount(){
5454
public function actorCount(){
5555
$count_array = ['mbox' => '', 'openid' => '', 'mbox_sha1sum' => '', 'account' => ''];
5656

57-
$count_array['mbox'] = $this->db->statements->aggregate(
58-
['$match' => $this->getMatch( $this->lrs )],
59-
['$group' => ['_id' => '$statement.actor.mbox']],
60-
['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]
61-
);
57+
$count_array['mbox'] = $this->db->statements->aggregate([
58+
['$match' => ['lrs._id' => $this->lrs, 'statement.actor.mbox' => ['$exists' => true]]],
59+
['$group' => ['_id' => '$statement.actor.mbox']],
60+
['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]
61+
]);
6262

63-
$count_array['openid'] = $this->db->statements->aggregate(
64-
['$match' => $this->getMatch( $this->lrs )],
65-
['$group' => ['_id' => '$statement.actor.openid']],
66-
['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]
67-
);
63+
$count_array['openid'] = $this->db->statements->aggregate([
64+
['$match' => ['lrs._id' => $this->lrs, 'statement.actor.openid' => ['$exists' => true]]],
65+
['$group' => ['_id' => '$statement.actor.openid']],
66+
['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]
67+
]);
6868

69-
$count_array['mbox_sha1sum'] = $this->db->statements->aggregate(
70-
['$match' => $this->getMatch( $this->lrs )],
71-
['$group' => ['_id' => '$statement.actor.mbox_sha1sum']],
72-
['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]
73-
);
69+
$count_array['mbox_sha1sum'] = $this->db->statements->aggregate([
70+
['$match' => ['lrs._id' => $this->lrs, 'statement.actor.mbox_sha1sum' => ['$exists' => true]]],
71+
['$group' => ['_id' => '$statement.actor.mbox_sha1sum']],
72+
['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]
73+
]);
7474

75-
$count_array['account'] = $this->db->statements->aggregate(
76-
['$match' => $this->getMatch( $this->lrs )],
77-
['$group' => ['_id' => ['accountName' => '$statement.actor.account.name', 'accountHomePage' => '$statement.actor.account.homePage']]],
78-
['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]
79-
);
75+
$count_array['account'] = $this->db->statements->aggregate([
76+
['$match' => ['lrs._id' => $this->lrs, 'statement.actor.account' => ['$exists' => true]]],
77+
['$group' => ['_id' => ['accountName' => '$statement.actor.account.name', 'accountHomePage' => '$statement.actor.account.homePage']]],
78+
['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]
79+
]);
8080

8181
$summary = 0;
8282
foreach ($count_array as $key => $val) {

0 commit comments

Comments
 (0)