Instead of computing vote participation at the beginning of a vote only,
update the number of active TUs whenever a TU becomes active during the
voting period.

A TU is considered active (with regard to a specific vote) if there
exists a point in time during the voting period when he is active.

Signed-off-by: Lukas Fleischer <[email protected]>
---
 web/lib/acctfuncs.inc.php | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/web/lib/acctfuncs.inc.php b/web/lib/acctfuncs.inc.php
index 3f7b595..3a4ff51 100644
--- a/web/lib/acctfuncs.inc.php
+++ b/web/lib/acctfuncs.inc.php
@@ -287,6 +287,23 @@ function 
process_account_form($UTYPE,$TYPE,$A,$U="",$T="",$S="",$E="",
                                print __("The account, %s%s%s, has been 
successfully modified.",
                                                "<strong>", 
htmlspecialchars($U,ENT_QUOTES), "</strong>");
                        }
+
+                       if ($T == 2 && $inactivity_ts == 0) {
+                               /*
+                                * A (new) TU became active -- add him to the
+                                * active TU list for all running votes.
+                                */
+                               $q = "INSERT INTO TU_VoteActive (UserID, ";
+                               $q.= "VoteID) SELECT " . intval($UID) . " ";
+                               $q.= "AS UserID, ID AS VoteID FROM ";
+                               $q.= "TU_VoteInfo WHERE End >= ";
+                               $q.= "UNIX_TIMESTAMP() AND NOT EXISTS (";
+                               $q.= "SELECT * FROM TU_VoteActive WHERE ";
+                               $q.= "TU_VoteActive.UserID = " . intval($UID);
+                               $q.= " AND TU_VoteActive.VoteID = ";
+                               $q.= "TU_VoteInfo.ID)";
+                               $dbh->exec($q);
+                       }
                }
        }
        return;
-- 
1.8.4.rc1.383.g13e9f3f

Reply via email to