+ private static function fetchWeeklyUsage(string $url, array $serverdata) {
+ $curlResult = DI::httpClient()->get($url . '/api/v1/instance/activity');
+
+ if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) {
+ return $serverdata;
+ }
+
+ $data = json_decode($curlResult->getBody(), true);
+ if (empty($data)) {
+ return $serverdata;
+ }
+
+ $current_week = [];
+ foreach ($data as $week) {
+ // Use only data from a full week
+ if (empty($week['week']) || (time() - $week['week']) < 7 * 24 * 60 * 60) {
+ continue;
+ }
+
+ // Most likely the data is sorted correctly. But we better are safe than sorry
+ if (empty($current_week['week']) || ($current_week['week'] < $week['week'])) {
+ $current_week = $week;
+ }
+ }
+
+ if (!empty($current_week['logins'])) {
+ $serverdata['active-week-users'] = max($current_week['logins'], 0);
+ }
+
+ return $serverdata;
+ }
+