Mercurial > hg > fapweb
changeset 623:8e6331d7870d
Some work on compo type handling.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 01 Nov 2014 05:46:38 +0200 |
parents | b58495c2d01a |
children | aad32d21091f |
files | msite.inc.php |
diffstat | 1 files changed, 52 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/msite.inc.php Sat Nov 01 05:46:05 2014 +0200 +++ b/msite.inc.php Sat Nov 01 05:46:38 2014 +0200 @@ -416,44 +416,66 @@ function stGetCompoResultsSQL($mode, $compo) { - switch ($mode) + // + // Act based on competition type + // + switch ($compo["type"]) { - case VOTE_FREELY: - $sql = - "SELECT entries.*,SUM(votes.value) AS votesum ". - "FROM entries ". - "LEFT JOIN votes ON votes.entry_id=entries.id"; + case COMPO_NORMAL: + // + // "Normal" competition, where results are somehow + // based on points / voting. + // + switch ($mode) + { + case VOTE_FREELY: + $sql = + "SELECT entries.*,SUM(votes.value) AS votesum ". + "FROM entries ". + "LEFT JOIN votes ON votes.entry_id=entries.id"; + break; + + case VOTE_ACTIVATE: + $sql = + "SELECT entries.*, ". + "(SELECT SUM(votes.value) FROM votes ". + "LEFT JOIN votekeys ON votes.key_id=votekeys.id ". + "WHERE votes.entry_id=entries.id AND votekeys.active<>0) ". + "AS votesum ". + "FROM entries"; + break; + + case VOTE_ASSIGN: + $sql = + "SELECT entries.*, ". + "(SELECT SUM(votes.value) FROM votes ". + "LEFT JOIN votekeys ON votes.key_id=votekeys.id ". + "LEFT JOIN attendees ON votekeys.id=attendees.key_id ". + "WHERE votes.entry_id=entries.id AND attendees.key_id<>0) ". + "AS votesum ". + "FROM entries"; + break; + } + + $extra = + "GROUP BY entries.id ". + "ORDER BY votesum DESC"; break; - case VOTE_ACTIVATE: - $sql = - "SELECT entries.*, ". - "(SELECT SUM(votes.value) FROM votes ". - "LEFT JOIN votekeys ON votes.key_id=votekeys.id ". - "WHERE votes.entry_id=entries.id AND votekeys.active<>0) ". - "AS votesum ". - "FROM entries"; - break; - - case VOTE_ASSIGN: - $sql = - "SELECT entries.*, ". - "(SELECT SUM(votes.value) FROM votes ". - "LEFT JOIN votekeys ON votes.key_id=votekeys.id ". - "LEFT JOIN attendees ON votekeys.id=attendees.key_id ". - "WHERE votes.entry_id=entries.id AND attendees.key_id<>0) ". - "AS votesum ". - "FROM entries"; + case COMPO_POINTS: + case COMPO_ASSIGN: + // + // These essentially do the same ... + // + $sql = "SELECT entries.* FROM entries"; + $extra = "ORDER BY entries.evalue DESC"; break; } - $sql .= " ". + return $sql." ". "WHERE entries.compo_id=".$compo["id"]." ". "AND (entries.flags & ".EFLAG_DISQUALIFIED.")=0 ". - "GROUP BY entries.id ". - "ORDER BY votesum DESC"; - - return $sql; + $extra; }