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 <archlinux@cryptocrack.de> --- 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