protected function DashboardForm::buildUserMetrics in Opigno statistics 3.x
Same name and namespace in other branches
- 8 src/Form/DashboardForm.php \Drupal\opigno_statistics\Form\DashboardForm::buildUserMetrics()
Builds user metrics.
Parameters
array $lp_ids: Learning path IDs.
Return value
array Render array.
1 call to DashboardForm::buildUserMetrics()
- DashboardForm::buildForm in src/
Form/ DashboardForm.php - Form constructor.
File
- src/
Form/ DashboardForm.php, line 308
Class
- DashboardForm
- Implements the statistics dashboard.
Namespace
Drupal\opigno_statistics\FormCode
protected function buildUserMetrics(array $lp_ids = []) : array {
$query = $this->database
->select('users', 'u');
if ($lp_ids) {
$query
->leftJoin('group_content_field_data', 'g_c_f_d', 'u.uid = g_c_f_d.entity_id');
$query
->condition('g_c_f_d.type', 'learning_path-group_membership');
$query
->condition('g_c_f_d.gid', $lp_ids, 'IN');
}
$query
->condition('u.uid', 0, '<>');
$query
->groupBy('u.uid');
$users = $query
->countQuery()
->execute()
->fetchField();
$now = $this->time
->getRequestTime();
// Last 7 days.
$period = 60 * 60 * 24 * 7;
$query = $this->database
->select('users_field_data', 'u');
if ($lp_ids) {
$query
->leftJoin('group_content_field_data', 'g_c_f_d', 'u.uid = g_c_f_d.entity_id');
$query
->condition('g_c_f_d.type', 'learning_path-group_membership');
$query
->condition('g_c_f_d.gid', $lp_ids, 'IN');
}
$query
->condition('u.uid', 0, '<>');
$query
->condition('u.created', $now - $period, '>');
$query
->groupBy('u.uid');
$new_users = $query
->countQuery()
->execute()
->fetchField();
$query = $this->database
->select('users_field_data', 'u');
if ($lp_ids) {
$query
->leftJoin('group_content_field_data', 'g_c_f_d', 'u.uid = g_c_f_d.entity_id');
$query
->condition('g_c_f_d.type', 'learning_path-group_membership');
$query
->condition('g_c_f_d.gid', $lp_ids, 'IN');
}
$query
->condition('u.uid', 0, '<>');
$query
->condition('u.access', $now - $period, '>');
$query
->groupBy('u.uid');
$active_users = $query
->countQuery()
->execute()
->fetchField();
return [
'#theme' => 'opigno_statistics_user_metrics',
'users' => $this
->buildUserMetric($this
->t('Users'), $users),
'new_users' => $this
->buildUserMetric($this
->t('New users'), $new_users),
'active_users' => $this
->buildUserMetric($this
->t('Recently active users'), $active_users),
];
}