diff --git a/app/Metrics/App/WikiMetrics.php b/app/Metrics/App/WikiMetrics.php index 8998debc..c67ea78d 100644 --- a/app/Metrics/App/WikiMetrics.php +++ b/app/Metrics/App/WikiMetrics.php @@ -36,7 +36,7 @@ public function saveMetrics(Wiki $wiki): void { $quarterlyActions = $this->getNumberOfActions(self::INTERVAL_QUARTERLY); $numberOfEntities = $this->getNumberOfEntities(); $monthlyNumberOfUsersPerActivityType = $this->getNumberOfUsersPerActivityType(); - $numberOfUsersPerWiki = $this->getTotalUserCount(); + $numberOfUsersPerWiki = $wiki->wikiSiteStats()->first()->users ?? 0; $dailyMetrics = new WikiDailyMetrics([ 'id' => $wiki->id . '_' . date('Y-m-d'), @@ -212,17 +212,4 @@ private function getNumberOfEntities(): array { return $result; } - - private function getTotalUserCount() { - $wikiDb = $this->wiki->wikiDb; - $tableUser = "{$wikiDb->name}.{$wikiDb->prefix}_user"; - $query = "SELECT COUNT(*) AS total_users FROM $tableUser"; - $manager = app()->db; - $manager->purge('mw'); - $conn = $manager->connection('mw'); - $pdo = $conn->getPdo(); - $result = $pdo->query($query)->fetch(PDO::FETCH_ASSOC); - - return $result['total_users'] ?? null; - } } diff --git a/tests/Metrics/WikiMetricsTest.php b/tests/Metrics/WikiMetricsTest.php index af9d84ef..f594502f 100644 --- a/tests/Metrics/WikiMetricsTest.php +++ b/tests/Metrics/WikiMetricsTest.php @@ -363,63 +363,4 @@ public function testSavesEntityCountsCorrectly($expectedItemCount, $expectedProp 'entity_schema_count' => $expectedEntitySchemaCount, // redirects should be ignored ]); } - - public function testSavesTotalUserCountCorrectly() { - $wiki = Wiki::factory()->create([ - 'domain' => 'usercounttest.wikibase.cloud', - ]); - - $users = [ - [ - 'user_name' => 'user1', - 'user_real_name' => 'user1', - 'user_password' => 'user1', - 'user_new_password' => 'user1', - 'user_email' => 'user1@email.com', - 'user_touched' => random_bytes(10), - ], - [ - 'user_name' => 'user2', - 'user_real_name' => 'user2', - 'user_password' => 'user2', - 'user_new_password' => 'user2', - 'user_email' => 'user2@email.com', - 'user_touched' => random_bytes(10), - ], - ]; - $wikiDb = WikiDb::first(); - $wikiDb->update(['wiki_id' => $wiki->id]); - - $tableUser = $wikiDb->name . '.' . $wikiDb->prefix . '_user'; - Schema::dropIfExists($tableUser); - Schema::create($tableUser, function (Blueprint $table) { - $table->increments('user_id'); - $table->string('user_name'); - $table->string('user_real_name')->default(0); - $table->string('user_password', 255); - $table->string('user_new_password'); - $table->string('user_email'); - $table->binary('user_touched'); - }); - - // Insert dummy data - DB::table($tableUser)->insert($users); - WikiDailyMetrics::create([ - 'id' => $wiki->id . '_' . now()->subDay()->toDateString(), - 'wiki_id' => $wiki->id, - 'date' => now()->subDay()->toDateString(), - 'pages' => 0, - 'is_deleted' => 0, - ]); - - (new WikiMetrics)->saveMetrics($wiki); - - // clean up after the test - $wiki->forceDelete(); - - $this->assertDatabaseHas('wiki_daily_metrics', [ - 'wiki_id' => $wiki->id, - 'total_user_count' => count($users), - ]); - } }