summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCallan Barrett <wizzomafizzo@gmail.com>2007-12-30 00:56:33 +0100
committerDan McGee <dan@archlinux.org>2008-01-20 07:21:19 +0100
commit5f4afcc8cb6dcc5dcbe4d5161fad5372eb5f6435 (patch)
tree0dda6299fba24cad2778b793eab2cb5a461aea76
parenta8e574ef2897e9ca709c2cfa5ff78d2f69464092 (diff)
downloadaur-5f4afcc8cb6dcc5dcbe4d5161fad5372eb5f6435.tar.gz
aur-5f4afcc8cb6dcc5dcbe4d5161fad5372eb5f6435.tar.xz
Add support for variable length votes in voting application
Signed-off-by: Callan Barrett <wizzomafizzo@gmail.com>
-rw-r--r--support/schema/aur-schema.sql1
-rw-r--r--web/html/addvote.php38
-rw-r--r--web/html/tu.php131
3 files changed, 104 insertions, 66 deletions
diff --git a/support/schema/aur-schema.sql b/support/schema/aur-schema.sql
index d48917c4..c5790a8f 100644
--- a/support/schema/aur-schema.sql
+++ b/support/schema/aur-schema.sql
@@ -217,6 +217,7 @@ CREATE TABLE IF NOT EXISTS TU_VoteInfo (
Agenda text collate latin1_general_ci NOT NULL,
User char(32) collate latin1_general_ci NOT NULL,
Submitted bigint(20) unsigned NOT NULL,
+ End bigint(20) unsigned NOT NULL,
SubmitterID int(10) unsigned NOT NULL,
Yes tinyint(3) unsigned NOT NULL default '0',
No tinyint(3) unsigned NOT NULL default '0',
diff --git a/web/html/addvote.php b/web/html/addvote.php
index 91a06583..ef1c6c34 100644
--- a/web/html/addvote.php
+++ b/web/html/addvote.php
@@ -18,36 +18,48 @@ if ($atype == "Trusted User" OR $atype == "Developer") {
$dbh = db_connect();
if (!empty($_POST['addVote'])) {
- $aweek = 60*60*24*7;
$error = "";
- if (!empty($_REQUEST['user'])) {
- $qcheck = "SELECT * FROM Users WHERE Username = '" . mysql_real_escape_string($_REQUEST['user']) . "'";
+ if (!empty($_POST['user'])) {
+ $qcheck = "SELECT * FROM Users WHERE Username = '" . mysql_real_escape_string($_POST['user']) . "'";
$check = mysql_num_rows(db_query($qcheck, $dbh));
if ($check == 0) {
$error.= "<div style='color: red; font-weight: bold'>Username does not exist.</div>";
} else {
- $qcheck = "SELECT * FROM TU_VoteInfo WHERE User = '" . mysql_real_escape_string($_REQUEST['user']) . "'";
- $qcheck.= " AND Submitted + " . $aweek . " > UNIX_TIMESTAMP()";
+ $qcheck = "SELECT * FROM TU_VoteInfo WHERE User = '" . mysql_real_escape_string($_POST['user']) . "'";
+ $qcheck.= " AND End > UNIX_TIMESTAMP()";
$check = mysql_num_rows(db_query($qcheck, $dbh));
if ($check != 0) {
- $error.= "<div style='color: red; font-weight: bold'>" . mysql_real_escape_string($_REQUEST['user']) . " already has proposal running for them.</div>";
+ $error.= "<div style='color: red; font-weight: bold'>" . htmlentities($_POST['user']) . " already has proposal running for them.</div>";
}
}
}
- if (empty($_REQUEST['agenda'])) {
+ if (!empty($_POST['length'])) {
+ if (!is_numeric($_POST['length'])) {
+ $error.= "<div style='color: red; font-weight: bold'>Length must be a number.</div>";
+ } else if ($_POST['length'] < 1) {
+ $error.= "<div style='color: red; font-weight: bold'>Length must be at least 1.</div>";
+ } else {
+ $len = (60*60*24)*$_POST['length'];
+ }
+ } else {
+ $len = 60*60*24*7;
+ }
+
+ if (empty($_POST['agenda'])) {
$error.= "<div style='color: red; font-weight: bold'>Proposal cannot be empty.</div>";
}
}
if (!empty($_POST['addVote']) && empty($error)) {
- $q = "INSERT INTO TU_VoteInfo (Agenda, User, Submitted, SubmitterID) VALUES ";
- $q.= "('" . mysql_real_escape_string($_REQUEST['agenda']) . "', ";
- $q.= "'" . mysql_real_escape_string($_REQUEST['user']) . "', ";
- $q.= "UNIX_TIMESTAMP(), " . uid_from_sid($_COOKIE["AURSID"]) . ")";
+ $q = "INSERT INTO TU_VoteInfo (Agenda, User, Submitted, End, SubmitterID) VALUES ";
+ $q.= "('" . mysql_real_escape_string($_POST['agenda']) . "', ";
+ $q.= "'" . mysql_real_escape_string($_POST['user']) . "', ";
+ $q.= "UNIX_TIMESTAMP(), UNIX_TIMESTAMP() + " . mysql_real_escape_string($len);
+ $q.= ", " . uid_from_sid($_COOKIE["AURSID"]) . ")";
db_query($q, $dbh);
print "<p>New proposal submitted.</p>\n";
@@ -60,6 +72,10 @@ if ($atype == "Trusted User" OR $atype == "Developer") {
<input type='text' name='user' value='<?php if (!empty($_POST['user'])) { print htmlentities($_POST['user'], ENT_QUOTES); } ?>'>
(empty if not applicable)
<br />
+<b>Length in days:</b>
+<input type='text' name='length' value='<?php if (!empty($_POST['length'])) { print htmlentities($_POST['length'], ENT_QUOTES); } ?>'>
+(defaults to 7 if empty)
+<br />
<b>Proposal:</b><br />
<textarea name='agenda' rows='10' cols='50'><?php if (!empty($_POST['agenda'])) { print htmlentities($_POST['agenda']); } ?></textarea><br />
<input type='hidden' name='addVote' value='1'>
diff --git a/web/html/tu.php b/web/html/tu.php
index 9ed00bc3..7ddec1a5 100644
--- a/web/html/tu.php
+++ b/web/html/tu.php
@@ -24,8 +24,6 @@ if ($atype == "Trusted User" OR $atype == "Developer") {
# Temp value for results per page
$pp = 5;
- # This needs to be changed for variable length votes I guess, TODO
- $aweek = 60*60*24*7;
if (isset($_REQUEST['id'])) {
# Show application details
@@ -48,7 +46,7 @@ if ($atype == "Trusted User" OR $atype == "Developer") {
# Print out application details, thanks again AUR
#
- $isrunning = (($row['Submitted'] + $aweek) > time()) ? 1 : 0;
+ $isrunning = $row['End'] > time() ? 1 : 0;
$qvoted = "SELECT * FROM TU_Votes WHERE ";
$qvoted.= "VoteID = " . $row['ID'] . " AND ";
@@ -98,6 +96,7 @@ if ($atype == "Trusted User" OR $atype == "Developer") {
}
}
+ # I think I understand why MVC is good for this stuff..
echo "<div class=\"pgbox\">\n";
echo " <div class=\"pgboxtitle\"><span class=\"f3\">Proposal Details</span></div>\n";
echo " <div class=\"pgboxbody\">\n";
@@ -119,9 +118,17 @@ if ($atype == "Trusted User" OR $atype == "Developer") {
print "Submitted: <b>" . gmdate("r", $row['Submitted']) . "</b> by ";
print "<b>" . username_from_id($row['SubmitterID']) . "</b><br />\n";
- print "<br />\n";
- $row['Agenda'] = htmlentities($row['Agenda']);
+ if ($isrunning == 0) {
+ print "Ended: ";
+ } else {
+ print "Ends: ";
+ }
+ print "<b>" . gmdate("r", $row['End']) . "</b><br />\n";
+
+ print "<br />\n";
+
+ $row['Agenda'] = htmlentities($row['Agenda']);
# str_replace seems better than <pre> because it still maintains word wrapping
print str_replace("\n", "<br />\n", $row['Agenda']);
@@ -224,9 +231,8 @@ if ($atype == "Trusted User" OR $atype == "Developer") {
function gen_results($offset, $limit, $sort, $by, $type="normal") {
$dbh = db_connect();
- $aweek = 60*60*24*7;
- if (!empty($offset) AND is_numeric($offset)) {
+ if (!empty($offset) AND is_numeric($offset)) {
if ($offset >= 1) {
$off = $offset;
} else {
@@ -236,16 +242,16 @@ if ($atype == "Trusted User" OR $atype == "Developer") {
$off = 0;
}
- $q = "SELECT * FROM TU_VoteInfo";
- if ($type == "new") {
- $q.= " WHERE Submitted + " . $aweek . " > " . time();
- $application = "Current Votes";
- } else {
- $q.= " WHERE Submitted + " . $aweek . " < " . time();
- $application = "Old Votes";
- }
+ $q = "SELECT * FROM TU_VoteInfo";
- $order = ($by == 'down') ? 'DESC' : 'ASC';
+ if ($type == "new") {
+ $q.= " WHERE End > " . time();
+ $application = "Current Votes";
+ } else {
+ $application = "All Votes";
+ }
+
+ $order = ($by == 'down') ? 'DESC' : 'ASC';
# not much to sort, I'm unsure how to sort by username
# when we only store the userid, someone come up with a nifty
@@ -262,7 +268,7 @@ if ($atype == "Trusted User" OR $atype == "Developer") {
if ($limit != 0) {
$q.= " LIMIT " . $off . ", ". $limit;
- }
+ }
$result = db_query($q, $dbh);
@@ -288,9 +294,13 @@ if ($atype == "Trusted User" OR $atype == "Developer") {
print " bottom'><span class='f2'>";
print "Proposal";
print "</span></th>\n";
+ print " <th style='border-bottom: #666 1px solid; vertical-align:";
+ print " bottom'><span class='f2'>";
+ print "<a href='?off=$off&sort=sub&by=$by_next'>Start</a>";
+ print "</span></th>\n";
print " <th style='border-bottom: #666 1px solid; vertical-align:";
print " bottom'><span class='f2'>";
- print "<a href='?off=$off&sort=sub&by=$by_next'>Submitted</a>";
+ print "End";
print "</span></th>\n";
print " <th style='border-bottom: #666 1px solid; vertical-align:";
print " bottom'><span class='f2'>";
@@ -320,59 +330,70 @@ if ($atype == "Trusted User" OR $atype == "Developer") {
} else {
for ($i = 0; $row = mysql_fetch_assoc($result); $i++) {
# Thankyou AUR
- (($i % 2) == 0) ? $c = "data1" : $c = "data2";
- print "<tr>\n";
- print " <td class='".$c."'><span class='f4'><span class='blue'>";
-
- $prev_Len = 100;
-
- if (strlen($row["Agenda"]) >= $prev_Len) {
- $row["Agenda"] = htmlentities(substr($row["Agenda"], 0, $prev_Len)) . "...";
- } else {
- $row["Agenda"] = htmlentities($row["Agenda"]);
- }
-
- print $row["Agenda"];
- print " <a href='/tu.php?id=" . $row['ID'] . "'>[More]</a>";
- print "</span></span></td>\n";
- print " <td class='".$c."'><span class='f5'><span class='blue'>";
- print gmdate("r", intval($row["Submitted"]));
- print "</span></span></td>\n";
- print " <td class='".$c."'><span class='f6'><span class='blue'>";
-
- if (!empty($row['User'])) {
- print "<a href='packages.php?K=" . $row['User'] . "&SeB=m'>";
- print $row['User'] . "</a>";
- } else {
- print "N/A";
- }
- print "</span></span></td>\n";
+ # alright, I'm going to just have a "new" table and the
+ # "old" table can just have every vote, works just as well
+ # and probably saves on doing some crap
+ #
+
+ (($i % 2) == 0) ? $c = "data1" : $c = "data2";
+ print "<tr>\n";
+ print " <td class='".$c."'><span class='f4'><span class='blue'>";
+
+ $prev_Len = 100;
+
+ if (strlen($row["Agenda"]) >= $prev_Len) {
+ $row["Agenda"] = htmlentities(substr($row["Agenda"], 0, $prev_Len)) . "... -";
+ } else {
+ $row["Agenda"] = htmlentities($row["Agenda"]) . " -";
+ }
+
+ print $row["Agenda"];
+ print " <a href='/tu.php?id=" . $row['ID'] . "'>[More]</a>";
+ print "</span></span></td>\n";
+ print " <td class='".$c."'><span class='f5'><span class='blue'>";
+ # why does the AUR use gmdate with formatting that includes the offset
+ # to GMT?!
+ print gmdate("j M y", $row["Submitted"]);
+ print "</span></span></td>\n";
+ print " <td class='".$c."'><span class='f5'><span class='blue'>";
+ print gmdate("j M y", $row["End"]);
+ print "</span></span></td>\n";
+ print " <td class='".$c."'><span class='f6'><span class='blue'>";
+
+ if (!empty($row['User'])) {
+ print "<a href='packages.php?K=" . $row['User'] . "&SeB=m'>";
+ print $row['User'] . "</a>";
+ } else {
+ print "N/A";
+ }
+
+ print "</span></span></td>\n";
print " <td class='".$c."'><span class='f5'><span class='blue'>";
print $row['Yes'];
print "</span></span></td>\n";
print " <td class='".$c."'><span class='f5'><span class='blue'>";
print $row['No'];
print "</span></span></td>\n";
- print " <td class='".$c."'><span class='f5'><span class='blue'>";
- # See above
+ print " <td class='".$c."'><span class='f5'><span class='blue'>";
+ # See above
# print $row['Abstain'];
# print "</span></span></td>\n";
# print " <td class='".$c."'><span class='f5'><span class='blue'>";
- $qvoted = "SELECT * FROM TU_Votes WHERE ";
+ $qvoted = "SELECT * FROM TU_Votes WHERE ";
$qvoted.= "VoteID = " . $row['ID'] . " AND ";
$qvoted.= "UserID = " . uid_from_sid($_COOKIE["AURSID"]);
- $hasvoted = mysql_num_rows(db_query($qvoted, $dbh));
+ $hasvoted = mysql_num_rows(db_query($qvoted, $dbh));
- if ($hasvoted == 0) {
- print "<span style='color: red; font-weight: bold'>No</span>";
- } else {
- print "<span style='color: green; font-weight: bold'>Yes</span>";
- }
+ if ($hasvoted == 0) {
+ print "<span style='color: red; font-weight: bold'>No</span>";
+ } else {
+ print "<span style='color: green; font-weight: bold'>Yes</span>";
+ }
print "</span></span></td>\n";
- print "</tr>\n";
+ print "</tr>\n";
}
}