fix: PHP 8.3 TypeError in dashboard top-articles SUM casts + CHANGELOG (#32)

- admin/partials/dashboard.php lines 108-109: cast $article->total_clicks
  and $article->total_unique to (int) before number_format(). Both are
  SUM() aggregate columns from $wpdb->get_results() returned as strings;
  same PHP 8.3 TypeError vector as the articles-list fix.
- tests/unit/DashboardTopArticlesCastTest.php: two unit tests mirroring
  the ArticlesListTotalCastTest pattern (numeric string + null cases).
- CHANGELOG [2.5.1]: fix (# 31) typo -> (#32); add dashboard fix entry.
- $topic['total_clicks'] at line 137 is safe (already cast to int in
  Peptide_News_Analytics_Reports::get_popular_topics() at assignment).
- $total_clicks/$total_unique at lines 48/52 are safe (array_sum coerces).

Agent-Session: engineer-infra-dashboard-cast-fix-20260617
This commit is contained in:
peptiderepo
2026-06-17 06:09:49 +00:00
parent c5872c34c9
commit 5c483fdc34
3 changed files with 45 additions and 3 deletions

View File

@@ -105,8 +105,8 @@ $total_articles = count( $top_articles );
<td><a href="<?php echo esc_url( $article->source_url ); ?>" target="_blank" rel="noopener"><?php echo esc_html( $article->title ); ?></a></td>
<td><?php echo esc_html( $article->source ); ?></td>
<td><?php echo esc_html( $article->categories ); ?></td>
<td><strong><?php echo esc_html( number_format( $article->total_clicks ) ); ?></strong></td>
<td><?php echo esc_html( number_format( $article->total_unique ) ); ?></td>
<td><strong><?php echo esc_html( number_format( (int) $article->total_clicks ) ); ?></strong></td>
<td><?php echo esc_html( number_format( (int) $article->total_unique ) ); ?></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>