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;
 }