[aur-dev] [PATCH] Separate logic from html in packages.php

Callan Barrett wizzomafizzo at gmail.com
Sun Sep 28 14:55:38 EDT 2008


No output mixed with logic now and we're free to play with the headers

Signed-off-by: Callan Barrett <wizzomafizzo at gmail.com>
---
 web/html/packages.php |  621 ++++++++++++++++++++++++-------------------------
 1 files changed, 299 insertions(+), 322 deletions(-)

diff --git a/web/html/packages.php b/web/html/packages.php
index 4cfe9c4..453f095 100644
--- a/web/html/packages.php
+++ b/web/html/packages.php
@@ -8,22 +8,6 @@ include("search_po.inc");   # use some form of this for i18n support
 set_lang();                 # this sets up the visitor's language
 check_sid();                # see if they're still logged in
 
-# set the title to something useful depending on
-# what "page" we're on
-#
-if (isset($_GET['ID'])) {
-	$id = pkgname_from_id($_GET['ID']);
-	if (!empty($id)) {
-		$title = $id;
-	}
-}	else if (!empty($_GET['K'])) {
-	$title = "Search: " . $_GET['K'];
-} else {
-	$title = __("Packages");
-}
-
-html_header($title);              # print out the HTML header
-
 # get login privileges
 #
 if (isset($_COOKIE["AURSID"])) {
@@ -37,94 +21,321 @@ if (isset($_COOKIE["AURSID"])) {
 # grab the list of Package IDs to be operated on
 #
 isset($_POST["IDs"]) ? $ids = $_POST["IDs"] : $ids = array();
-#isset($_REQUEST["All_IDs"]) ?
-#		$all_ids = explode(":", $_REQUEST["All_IDs"]) :
-#		$all_ids = array();
 
-
-# determine what button the visitor clicked
-#
+# Determine what button the visitor clicked.
+# Logic, no output.
+# 
 if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) {
-	if (!$atype) {
-		print __("You must be logged in before you can flag packages.");
-		print "<br />\n";
+	if ($atype && !empty($ids)) {
+		$dbh = db_connect();
+
+		# Flag the packages in $ids array
+		$first = 1;
+		while (list($pid, $v) = each($ids)) {
+			if ($first) {
+				$first = 0;
+				$flag = $pid;
+			} else {
+				$flag .= ", ".$pid;
+			}
+		}
+		$q = "UPDATE Packages SET OutOfDate = 1 ";
+		$q.= "WHERE ID IN (" . $flag . ")";
+		db_query($q, $dbh);
+		
+		# Notification of flagging.
+		$f_name = username_from_sid($_COOKIE['AURSID']);
+		$f_email = email_from_sid($_COOKIE['AURSID']);
+		$f_uid = uid_from_sid($_COOKIE['AURSID']);
+		$q = "SELECT Packages.Name, Users.Email, Packages.ID ";
+		$q.= "FROM Packages, Users ";
+		$q.= "WHERE Packages.ID IN (" . $flag .") ";
+		$q.= "AND Users.ID = Packages.MaintainerUID ";
+		$q.= "AND Users.ID != " . $f_uid;
+		$result = db_query($q, $dbh);
+		if (mysql_num_rows($result)) {
+			while ($row = mysql_fetch_assoc($result)) {
+				# construct email
+				$body = "Your package " . $row['Name'] . " has been flagged out of date by " . $f_name . ". You may view your package at:\nhttp://aur.archlinux.org/packages.php?ID=" . $row['ID'];
+				$body = wordwrap($body, 70);
+				$headers = "To: ".$row['Email']."\nReply-to: nobody at archlinux.org\nFrom:aur-notify at archlinux.org\nX-Mailer: PHP\nX-MimeOLE: Produced By AUR\n";
+				@mail(' ', "AUR Out-of-date Notification for ".$row['Name'], $body, $headers);
+			}
+		}
+	}
+} elseif ($_POST['action'] == "do_UnFlag" || isset($_POST['do_UnFlag'])) {
+	if ($atype && !empty($ids)) {
+		$dbh = db_connect();
 
-	} else {
+		# Un-Flag the packages in $ids array
+		#
+		$first = 1;
+		while (list($pid, $v) = each($ids)) {
+			if ($first) {
+				$first = 0;
+				$unflag = $pid;
+			} else {
+				$unflag .= ", ".$pid;
+			}
+		}
+		$q = "UPDATE Packages SET OutOfDate = 0 ";
+		$q.= "WHERE ID IN (" . $unflag . ")";
+		db_query($q, $dbh);
+	}
+} elseif ($_POST['action'] == "do_Disown" || isset($_POST['do_Disown'])) {
+	if ($atype && !empty($ids)) {
+		$dbh = db_connect();
 
-		if (!empty($ids)) {
-			$dbh = db_connect();
+		# Disown the packages in $ids array
+		#
+		$first = 1;
+		while (list($pid, $v) = each($ids)) {
+			if ($first) {
+				$first = 0;
+				$disown = $pid;
+			} else {
+				$disown .= ", ".$pid;
+			}
+		}
 
-			# Flag the packages in $ids array
-			#
-			$first = 1;
-			while (list($pid, $v) = each($ids)) {
+		$field = "MaintainerUID";
+		$q = "UPDATE Packages ";
+		$q.= "SET ".$field." = 0 ";
+		$q.= "WHERE ID IN (" . $disown . ") ";
+		# If a user is a TU or dev they can disown any package
+     	if ($atype == "User") {
+			$q.= "AND ".$field." = ".uid_from_sid($_COOKIE["AURSID"]);
+		}
+	  	db_query($q, $dbh);
+	}
+} elseif ($_POST['action'] == "do_Delete" || isset($_POST['do_Delete'])) {
+	if ($atype && !empty($ids)) {
+		$dbh = db_connect();
+
+		# Delete the packages in $ids array
+		#
+		$first = 1;
+		while (list($pid, $v) = each($ids)) {
+			if ($first) {
+				$first = 0;
+				$delete = $pid;
+			} else {
+				$delete .= ", ".$pid;
+			}
+		}
+
+		$field = "MaintainerUID";
+
+		# Only grab Unsupported packages that "we" own or are not owned at all
+		#
+		$ids_to_delete = array();
+		$q = "SELECT Packages.ID FROM Packages, PackageLocations ";
+		$q.= "WHERE Packages.ID IN (" . $delete . ") ";
+		$q.= "AND Packages.LocationID = PackageLocations.ID ";
+		$q.= "AND PackageLocations.Location = 'unsupported' ";
+		# If they're a TU or dev, can always delete, otherwise check ownership
+		#
+		if ($atype == "Trusted User" || $atype == "Developer") {
+			$result = db_query($q, $dbh);
+		}
+		if ($result != Null && mysql_num_rows($result) > 0) {
+			while ($row = mysql_fetch_assoc($result)) {
+				$ids_to_delete[] = $row['ID'];
+			}
+		}
+
+		foreach ($ids_to_delete as $id) {
+			# delete from PackageVotes
+			$q = "DELETE FROM PackageVotes WHERE PackageID = " . $id;
+			$result = db_query($q, $dbh);
+
+			# delete from PackageDepends
+			$q = "DELETE FROM PackageDepends WHERE PackageID = " . $id;
+			$result = db_query($q, $dbh);
+
+			# delete from PackageSources
+			$q = "DELETE FROM PackageSources WHERE PackageID = " . $id;
+			$result = db_query($q, $dbh);
+
+			# delete from PackageComments
+			$q = "DELETE FROM PackageComments WHERE PackageID = " . $id;
+			$result = db_query($q, $dbh);
+
+			# delete from Packages
+			$q = "DELETE FROM Packages WHERE ID = " . $id;
+			$result = db_query($q, $dbh);
+
+			# delete from CommentNotify
+			$q = "DELETE FROM CommentNotify WHERE PkgID = " . $id;
+			$result = db_query($q, $dbh);
+		}
+	}
+} elseif ($_POST['action'] == "do_Adopt" || isset($_POST['do_Adopt'])) {
+	if ($atype && !empty($ids)) {
+		$dbh = db_connect();
+
+		# Adopt the packages in $ids array
+		#
+		$first = 1;
+		while (list($pid, $v) = each($ids)) {
+			if ($first) {
+				$first = 0;
+				$adopt = $pid;
+			} else {
+				$adopt .= ", ".$pid;
+			}
+		}
+
+		$field = "MaintainerUID";
+		# NOTE: Only "orphaned" packages can be adopted at a particular
+		#       user class (TU/Dev or User).
+		#
+		$q = "UPDATE Packages ";
+		$q.= "SET ".$field." = ".uid_from_sid($_COOKIE["AURSID"])." ";
+		$q.= "WHERE ID IN (" . $adopt . ") ";
+		if ($atype == "User") {
+			# Regular users may only adopt orphan packages from unsupported
+			# FIXME: We assume that LocationID for unsupported is "2"
+			$q.= "AND ".$field." = 0";
+			$q.= " AND LocationID = 2";
+		}
+		db_query($q, $dbh);
+	}
+} elseif ($_POST['action'] == "do_Vote" || isset($_POST['do_Vote'])) {
+	if ($atype && !empty($ids)) {
+		$dbh = db_connect();
+		$my_votes = pkgvotes_from_sid($_COOKIE["AURSID"]);
+		$uid = uid_from_sid($_COOKIE["AURSID"]);
+		# $vote_ids will contain the string of Package.IDs that
+		# the visitor hasn't voted for already
+		#
+		$first = 1;
+		while (list($pid, $v) = each($ids)) {
+			if (!isset($my_votes[$pid])) {
+				# cast a vote for this package
+				#
 				if ($first) {
 					$first = 0;
-					$flag = $pid;
+					$vote_ids = $pid;
+					$vote_clauses = "(".$uid.", ".$pid.")";
 				} else {
-					$flag .= ", ".$pid;
+					$vote_ids .= ", ".$pid;
+					$vote_clauses .= ", (".$uid.", ".$pid.")";
 				}
 			}
-			$q = "UPDATE Packages SET OutOfDate = 1 ";
-			$q.= "WHERE ID IN (" . $flag . ")";
-			db_query($q, $dbh);
+		}
+		# only vote for packages the user hasn't already voted for
+		#
+		$q = "UPDATE Packages SET NumVotes = NumVotes + 1 ";
+		$q.= "WHERE ID IN (".$vote_ids.")";
+		db_query($q, $dbh);
 
-			print "<p>\n";
-			print __("The selected packages have been flagged out-of-date.");
-			print "</p>\n";
-			
-			# notification by tardo.
-			$f_name = username_from_sid($_COOKIE['AURSID']);
-			$f_email = email_from_sid($_COOKIE['AURSID']);
-			$f_uid = uid_from_sid($_COOKIE['AURSID']);
-			$q = "SELECT Packages.Name, Users.Email, Packages.ID ";
-			$q.= "FROM Packages, Users ";
-			$q.= "WHERE Packages.ID IN (" . $flag .") ";
-			$q.= "AND Users.ID = Packages.MaintainerUID ";
-			$q.= "AND Users.ID != " . $f_uid;
-			$result = db_query($q, $dbh);
-			if (mysql_num_rows($result)) {
-				while ($row = mysql_fetch_assoc($result)) {
-					# construct email
-					$body = "Your package " . $row['Name'] . " has been flagged out of date by " . $f_name . ". You may view your package at:\nhttp://aur.archlinux.org/packages.php?do_Details=1&ID=" . $row['ID'];
-					$body = wordwrap($body, 70);
-					$headers = "To: ".$row['Email']."\nReply-to: nobody at archlinux.org\nFrom:aur-notify at archlinux.org\nX-Mailer: PHP\nX-MimeOLE: Produced By AUR\n";
-					@mail(' ', "AUR Out-of-date Notification for ".$row['Name'], $body, $headers);
+		$q = "INSERT INTO PackageVotes (UsersID, PackageID) VALUES ";
+		$q.= $vote_clauses;
+		db_query($q, $dbh);
+
+		# Update the LastVoted field for this user
+		#
+		$q = "UPDATE Users SET LastVoted = UNIX_TIMESTAMP() ";
+		$q.= "WHERE ID = ".$uid;
+		db_query($q, $dbh);
+	}
+} elseif ($_POST['action'] == "do_UnVote" || isset($_POST['do_UnVote'])) {
+	if (!$atype && !empty($ids)) {
+		$dbh = db_connect();
+		$my_votes = pkgvotes_from_sid($_COOKIE["AURSID"]);
+		$uid = uid_from_sid($_COOKIE["AURSID"]);
+		# $unvote_ids will contain the string of Package.IDs that
+		# the visitor has voted for and wants to unvote.
+		#
+		$first = 1;
+		while (list($pid, $v) = each($ids)) {
+			if (isset($my_votes[$pid])) {
+				# cast a un-vote for this package
+				#
+				if ($first) {
+					$first = 0;
+					$unvote_ids = $pid;
+				} else {
+					$unvote_ids .= ", ".$pid;
 				}
 			}
+		}
+		# only un-vote for packages the user has already voted for
+		#
+		$q = "UPDATE Packages SET NumVotes = NumVotes - 1 ";
+		$q.= "WHERE ID IN (".$unvote_ids.")";
+		db_query($q, $dbh);
+
+		$q = "DELETE FROM PackageVotes WHERE UsersID = ".$uid." ";
+		$q.= "AND PackageID IN (".$unvote_ids.")";
+		db_query($q, $dbh);
+	}
+} elseif ($_POST['action'] == "do_Notify" || isset($_POST['do_Notify'])) {
+	if ($atype && !empty($ids)) {
+		$dbh = db_connect();
+		$uid = uid_from_sid($_COOKIE["AURSID"]);
+		# There currently shouldn't be multiple requests here, but the format in which
+		# it's sent requires this
+		foreach ($ids as $pid => $v) {
+			$q = "SELECT Name FROM Packages WHERE ID = " . $pid;
+			$pkgname = mysql_result(db_query($q, $dbh), 0);
+
+			$q = "SELECT * FROM CommentNotify WHERE UserID = ".$uid;
+			$q.= " AND PkgID = ".$pid;
 			
+			$notifypackages = mysql_num_rows(db_query($q, $dbh));
+			if (!$notifypackages) {
+				$q = "INSERT INTO CommentNotify (PkgID, UserID) VALUES (".$pid.', '.$uid.')';
+				db_query($q, $dbh);
+			} else {
+				$q = "DELETE FROM CommentNotify WHERE PkgID = ".$pid;
+				$q.= " AND UserID = ".$uid;
+				db_query($q, $dbh);
+			}
+		}
+	}
+}
+		
+# set the title to something useful depending on
+# what "page" we're on
+#
+if (isset($_GET['ID'])) {
+	$id = pkgname_from_id($_GET['ID']);
+	if (!empty($id)) {
+		$title = $id;
+	}
+}	else if (!empty($_GET['K'])) {
+	$title = "Search: " . $_GET['K'];
+} else {
+	$title = __("Packages");
+}
+
+html_header($title);
+
+# determine what button the visitor clicked
+# Output - get rid of this soon
+if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) {
+	if (!$atype) {
+		print __("You must be logged in before you can flag packages.");
+		print "<br />\n";
+	} else {
+		if (!empty($ids)) {
+			print "<p>\n";
+			print __("The selected packages have been flagged out-of-date.");
+			print "</p>\n";	
 		} else {
 			print "<p>\n";
 			print __("You did not select any packages to flag.");
 			print "</p>\n";
 		}
 	}
-
 } elseif ($_POST['action'] == "do_UnFlag" || isset($_POST['do_UnFlag'])) {
 	if (!$atype) {
 		print __("You must be logged in before you can unflag packages.");
 		print "<br />\n";
-
 	} else {
-
 		if (!empty($ids)) {
-			$dbh = db_connect();
-
-			# Un-Flag the packages in $ids array
-			#
-			$first = 1;
-			while (list($pid, $v) = each($ids)) {
-				if ($first) {
-					$first = 0;
-					$unflag = $pid;
-				} else {
-					$unflag .= ", ".$pid;
-				}
-			}
-			$q = "UPDATE Packages SET OutOfDate = 0 ";
-			$q.= "WHERE ID IN (" . $unflag . ")";
-			db_query($q, $dbh);
-
 			print "<p>\n";
 			print __("The selected packages have been unflagged.");
 			print "</p>\n";
@@ -132,44 +343,14 @@ if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) {
 			print "<p>\n";
 			print __("You did not select any packages to unflag.");
 			print "</p>\n";
-		}
-
-				
+		}		
 	}
-
 } elseif ($_POST['action'] == "do_Disown" || isset($_POST['do_Disown'])) {
 	if (!$atype) {
 		print __("You must be logged in before you can disown packages.");
 		print "<br />\n";
-
 	} else {
-		# Disown the packages in $ids array
-		#
 		if (!empty($ids)) {
-			$dbh = db_connect();
-
-			# Disown the packages in $ids array
-			#
-			$first = 1;
-			while (list($pid, $v) = each($ids)) {
-				if ($first) {
-					$first = 0;
-					$disown = $pid;
-				} else {
-					$disown .= ", ".$pid;
-				}
-			}
-
-			$field = "MaintainerUID";
-			$q = "UPDATE Packages ";
-			$q.= "SET ".$field." = 0 ";
-			$q.= "WHERE ID IN (" . $disown . ") ";
-			# If a user is a TU or dev they can disown any package
-      if ($atype == "User") {
-				$q.= "AND ".$field." = ".uid_from_sid($_COOKIE["AURSID"]);
-			}
-		  db_query($q, $dbh);
-
 			print "<p>\n";
 			print __("The selected packages have been disowned.");
 			print "</p>\n";
@@ -178,136 +359,34 @@ if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) {
 			print __("You did not select any packages to disown.");
 			print "</p>\n";
 		}
-
-
 	}
-
-
 } elseif ($_POST['action'] == "do_Delete" || isset($_POST['do_Delete'])) {
 	if (!$atype) {
 		print __("You must be logged in before you can disown packages.");
 		print "<br />\n";
 	} else {
-		# Delete the packages in $ids array (but only if they are Unsupported)
-		#
 		if (!empty($ids)) {
-			$dbh = db_connect();
-
-			# Delete the packages in $ids array
-			#
-			$first = 1;
-			while (list($pid, $v) = each($ids)) {
-				if ($first) {
-					$first = 0;
-					$delete = $pid;
-				} else {
-					$delete .= ", ".$pid;
-				}
-			}
-
-			$field = "MaintainerUID";
-
-			# Only grab Unsupported packages that "we" own or are not owned at all
-			#
-			$ids_to_delete = array();
-			$q = "SELECT Packages.ID FROM Packages, PackageLocations ";
-			$q.= "WHERE Packages.ID IN (" . $delete . ") ";
-			$q.= "AND Packages.LocationID = PackageLocations.ID ";
-			$q.= "AND PackageLocations.Location = 'unsupported' ";
-			# If they're a TU or dev, can always delete, otherwise check ownership
-			#
-			if ($atype == "Trusted User" || $atype == "Developer") {
-				$result = db_query($q, $dbh);
-			}
-			if ($result != Null && mysql_num_rows($result) > 0) {
-				while ($row = mysql_fetch_assoc($result)) {
-					$ids_to_delete[] = $row['ID'];
-				}
-			}
 			if (!empty($ids_to_delete)) {
-				# These are the packages that are safe to delete
-				#
-			  foreach ($ids_to_delete as $id) {
-					# delete from PackageVotes
-					$q = "DELETE FROM PackageVotes WHERE PackageID = " . $id;
-					$result = db_query($q, $dbh);
-
-					# delete from PackageDepends
-					$q = "DELETE FROM PackageDepends WHERE PackageID = " . $id;
-					$result = db_query($q, $dbh);
-
-					# delete from PackageSources
-					$q = "DELETE FROM PackageSources WHERE PackageID = " . $id;
-					$result = db_query($q, $dbh);
-
-					# delete from PackageComments
-					$q = "DELETE FROM PackageComments WHERE PackageID = " . $id;
-					$result = db_query($q, $dbh);
-
-					# delete from Packages
-					$q = "DELETE FROM Packages WHERE ID = " . $id;
-					$result = db_query($q, $dbh);
-
-					# delete from CommentNotify
-					$q = "DELETE FROM CommentNotify WHERE PkgID = " . $id;
-					$result = db_query($q, $dbh);
-
-					# Print the success message
-					print "<p>\n";
-		      print __("The selected packages have been deleted.");
-		      print "</p>\n";
-				}
+				print "<p>\n";
+			    print __("The selected packages have been deleted.");
+			    print "</p>\n";
 			} else {
 				print "<p>\n";
 				print __("None of the selected packages could be deleted.");
 				print "</p>\n";
-			} # end if (!empty($ids_to_delete))
+			}
 		} else {
 			print "<p>\n";
 			print __("You did not select any packages to delete.");
 			print "</p>\n";
-		} # end if (!empty($ids))
-	} # end if (!atype)
-
+		}
+	}
 } elseif ($_POST['action'] == "do_Adopt" || isset($_POST['do_Adopt'])) {
 	if (!$atype) {
 		print __("You must be logged in before you can adopt packages.");
 		print "<br />\n";
-
 	} else {
-		# Adopt the packages in $ids array
-		#
 		if (!empty($ids)) {
-			$dbh = db_connect();
-
-			# Adopt the packages in $ids array
-			#
-			$first = 1;
-			while (list($pid, $v) = each($ids)) {
-				if ($first) {
-					$first = 0;
-					$adopt = $pid;
-				} else {
-					$adopt .= ", ".$pid;
-				}
-			}
-
-		  $field = "MaintainerUID";
-			# NOTE: Only "orphaned" packages can be adopted at a particular
-			#       user class (TU/Dev or User).
-			#
-			$q = "UPDATE Packages ";
-			$q.= "SET ".$field." = ".uid_from_sid($_COOKIE["AURSID"])." ";
-			$q.= "WHERE ID IN (" . $adopt . ") ";
-			if ($atype == "User")
-			{
-				# Regular users may only adopt orphan packages from unsupported
-				# FIXME: We assume that LocationID for unsupported is "2"
-				$q.= "AND ".$field." = 0";
-				$q.= " AND LocationID = 2";
-			}
-			db_query($q, $dbh);
-
 			print "<p>\n";
 			print __("The selected packages have been adopted.");
 			print "</p>\n";
@@ -317,54 +396,12 @@ if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) {
 			print "</p>\n";
 		}
 	}
-
-
 } elseif ($_POST['action'] == "do_Vote" || isset($_POST['do_Vote'])) {
 	if (!$atype) {
 		print __("You must be logged in before you can vote for packages.");
 		print "<br />\n";
-
 	} else {
-		# vote on the packages in $ids array.
-		#
 		if (!empty($ids)) {
-			$dbh = db_connect();
-			$my_votes = pkgvotes_from_sid($_COOKIE["AURSID"]);
-			$uid = uid_from_sid($_COOKIE["AURSID"]);
-			# $vote_ids will contain the string of Package.IDs that
-			# the visitor hasn't voted for already
-			#
-			$first = 1;
-			while (list($pid, $v) = each($ids)) {
-				if (!isset($my_votes[$pid])) {
-					# cast a vote for this package
-					#
-					if ($first) {
-						$first = 0;
-						$vote_ids = $pid;
-						$vote_clauses = "(".$uid.", ".$pid.")";
-					} else {
-						$vote_ids .= ", ".$pid;
-						$vote_clauses .= ", (".$uid.", ".$pid.")";
-					}
-				}
-			}
-			# only vote for packages the user hasn't already voted for
-			#
-			$q = "UPDATE Packages SET NumVotes = NumVotes + 1 ";
-			$q.= "WHERE ID IN (".$vote_ids.")";
-			db_query($q, $dbh);
-
-			$q = "INSERT INTO PackageVotes (UsersID, PackageID) VALUES ";
-			$q.= $vote_clauses;
-			db_query($q, $dbh);
-
-			# Update the LastVoted field for this user
-			#
-			$q = "UPDATE Users SET LastVoted = UNIX_TIMESTAMP() ";
-			$q.= "WHERE ID = ".$uid;
-			db_query($q, $dbh);
-
 			print "<p>\n";
 			print __("Your votes have been cast for the selected packages.");
 			print "</p>\n";
@@ -375,99 +412,40 @@ if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) {
 			print "</p>\n";
 		}
 	}
-
-
 } elseif ($_POST['action'] == "do_UnVote" || isset($_POST['do_UnVote'])) {
 	if (!$atype) {
 		print __("You must be logged in before you can un-vote for packages.");
 		print "<br />\n";
-
 	} else {
-		# un-vote on the packages in $ids array.
-		#
 		if (!empty($ids)) {
-			$dbh = db_connect();
-			$my_votes = pkgvotes_from_sid($_COOKIE["AURSID"]);
-			$uid = uid_from_sid($_COOKIE["AURSID"]);
-			# $unvote_ids will contain the string of Package.IDs that
-			# the visitor has voted for and wants to unvote.
-			#
-			$first = 1;
-			while (list($pid, $v) = each($ids)) {
-				if (isset($my_votes[$pid])) {
-					# cast a un-vote for this package
-					#
-					if ($first) {
-						$first = 0;
-						$unvote_ids = $pid;
-					} else {
-						$unvote_ids .= ", ".$pid;
-					}
-				}
-			}
-			# only un-vote for packages the user has already voted for
-			#
-			$q = "UPDATE Packages SET NumVotes = NumVotes - 1 ";
-			$q.= "WHERE ID IN (".$unvote_ids.")";
-			db_query($q, $dbh);
-
-			$q = "DELETE FROM PackageVotes WHERE UsersID = ".$uid." ";
-			$q.= "AND PackageID IN (".$unvote_ids.")";
-			db_query($q, $dbh);
-
 			print "<p>\n";
 			print __("Your votes have been removed from the selected packages.");
 			print "</p>\n";
-
 		} else {
 			print "<p>\n";
 			print __("You did not select any packages to un-vote for.");
 			print "</p>\n";
 		}
 	}
-
-
 } elseif (isset($_GET["ID"])) {
-
 	if (!intval($_GET["ID"])) {
 		print __("Error trying to retrieve package details.")."<br />\n";
-		
 	} else {
 		package_details($_GET["ID"], $_COOKIE["AURSID"]);
 	}
-
 } elseif ($_POST['action'] == "do_Notify" || isset($_POST['do_Notify'])) {
-	# I realize that the implementation here seems a bit convoluted, but we want to
-	# ensure that everything happens as it should, even if someone called this page
-	# without having clicked a button somewhere (naughty naughty). This also leaves
-	# room to someday expand and allow to add oneself to multiple lists at once. -SL
 	if (!$atype) {
 		print __("You must be logged in before you can get notifications on comments.");
 		print "<br />\n";
 	} else {
 		if (!empty($ids)) {
-			$dbh = db_connect();
-			$uid = uid_from_sid($_COOKIE["AURSID"]);
-			# There currently shouldn't be multiple requests here, but the format in which
-			# it's sent requires this
-			while (list($pid, $v) = each($ids)) {
-				$q = "SELECT Name FROM Packages WHERE ID = " . $pid;
-				$pkgname = mysql_result(db_query($q, $dbh), 0);
-
-				$q = "SELECT * FROM CommentNotify WHERE UserID = ".$uid;
-				$q.= " AND PkgID = ".$pid;
-
-				if (!mysql_num_rows(db_query($q, $dbh))) {
-					$q = "INSERT INTO CommentNotify (PkgID, UserID) VALUES (".$pid.', '.$uid.')';
-					db_query($q, $dbh);
+			foreach ($ids as $pid => $v) {
+				if (!$notifypackages) {
 					print '<p>';
 					print __("You have been added to the comment notification list for %s.",
 						array("<b>" . $pkgname . "</b>"));
 					print '<br /></p>';
 				} else {
-					$q = "DELETE FROM CommentNotify WHERE PkgID = ".$pid;
-					$q.= " AND UserID = ".$uid;
-					db_query($q, $dbh);
 					print '<p>';
 					print __("You have been removed from the comment notification list for %s.",
 						array("<b>" . $pkgname . "</b>"));
@@ -481,8 +459,7 @@ if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) {
 		}
 	}			
 } else {
-	# just do a search
-	#
+	# Just do a search.
 	pkg_search_page($_COOKIE["AURSID"]);
 
 }
-- 
1.5.5.3




More information about the aur-dev mailing list