From 97085daadcbc8b1ae1a01cd777605f66464a02ea Mon Sep 17 00:00:00 2001
From: Dan McGee <dan@archlinux.org>
Date: Wed, 2 May 2012 16:14:01 -0500
Subject: user_table optimization

Rather than looking up by username, it makes more sense to look the
stats up by user ID to reduce the number of needed joins.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
---
 web/html/index.php    |  4 ++--
 web/lib/stats.inc.php | 11 +++++------
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/web/html/index.php b/web/html/index.php
index 0d513d3..21de99d 100644
--- a/web/html/index.php
+++ b/web/html/index.php
@@ -58,8 +58,8 @@ echo __(
 <td class='boxSoft' valign='top'>
 <?php
 if (!empty($_COOKIE["AURSID"])) {
-	$user = username_from_sid($_COOKIE["AURSID"]);
-	user_table($user, $dbh);
+	$userid = uid_from_sid($_COOKIE["AURSID"]);
+	user_table($userid, $dbh);
 	echo '<br />';
 }
 
diff --git a/web/lib/stats.inc.php b/web/lib/stats.inc.php
index 01e6700..2828dc9 100644
--- a/web/lib/stats.inc.php
+++ b/web/lib/stats.inc.php
@@ -17,17 +17,16 @@ function updates_table($dbh) {
 	include('stats/updates_table.php');
 }
 
-function user_table($user, $dbh) {
-	$escuser = db_escape_string($user);
-	$base_q = "SELECT count(*) FROM Packages,Users WHERE Packages.MaintainerUID = Users.ID AND Users.Username='" . $escuser . "'";
+function user_table($userid, $dbh) {
+	$base_q = "SELECT count(*) FROM Packages WHERE Packages.MaintainerUID = " . $userid;
 
 	$maintainer_unsupported_count = db_cache_value($base_q, $dbh,
-		'user_unsupported_count:' . $escuser);
+		'user_unsupported_count:' . $userid);
 
-	$q = "SELECT count(*) FROM Packages,Users WHERE Packages.OutOfDateTS IS NOT NULL AND Packages.MaintainerUID = Users.ID AND Users.Username='" . $escuser . "'";
+	$q = "SELECT count(*) FROM Packages WHERE Packages.OutOfDateTS IS NOT NULL AND Packages.MaintainerUID = " . $userid;
 
 	$flagged_outdated = db_cache_value($q, $dbh,
-		'user_flagged_outdated:' . $escuser);
+		'user_flagged_outdated:' . $userid);
 
 	# If the user is a TU calculate the number of the packages
 	$atype = account_from_sid($_COOKIE["AURSID"]);
-- 
cgit v1.2.3-54-g00ecf