app\locker\data\dashboards\BaseDashboard::actorCount PHP Method

actorCount() public method

Count the number of distinct actors within LRS statements.
public actorCount ( ) : count.
return count.
    public function actorCount()
    {
        $base_match = [];
        if ($this->has_lrs) {
            $base_match['lrs_id'] = new \MongoId($this->lrs);
        }
        $count_array = ['mbox' => '', 'openid' => '', 'mbox_sha1sum' => '', 'account' => ''];
        $count_array['mbox'] = $this->db->statements->aggregate([['$match' => array_merge($base_match, ['statement.actor.mbox' => ['$exists' => true]])], ['$group' => ['_id' => '$statement.actor.mbox']], ['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]]);
        $count_array['openid'] = $this->db->statements->aggregate([['$match' => array_merge($base_match, ['statement.actor.openid' => ['$exists' => true]])], ['$group' => ['_id' => '$statement.actor.openid']], ['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]]);
        $count_array['mbox_sha1sum'] = $this->db->statements->aggregate([['$match' => array_merge($base_match, ['statement.actor.mbox_sha1sum' => ['$exists' => true]])], ['$group' => ['_id' => '$statement.actor.mbox_sha1sum']], ['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]]);
        $count_array['account'] = $this->db->statements->aggregate([['$match' => array_merge($base_match, ['statement.actor.account' => ['$exists' => true]])], ['$group' => ['_id' => ['accountName' => '$statement.actor.account.name', 'accountHomePage' => '$statement.actor.account.homePage']]], ['$group' => ['_id' => 1, 'count' => ['$sum' => 1]]]]);
        $summary = 0;
        foreach ($count_array as $key => $val) {
            if (isset($val['result'][0])) {
                $summary += $val['result'][0]['count'];
            }
        }
        return $summary;
    }