diff --git project_issue_availability.module project_issue_availability.module
index d563dac..bf68213 100644
--- project_issue_availability.module
+++ project_issue_availability.module
@@ -199,19 +199,25 @@ function project_issue_availability_user_form_submit($form, &$form_state) {
  * Implementation of hook_project_issue_assignees().
  */
 function project_issue_availability_project_issue_assignees(&$assignees, $node) {
-  // Select Users not available based on hiatus or capacity.
+  // Select users not available based on hiatus or capacity.
+
+  // Fetch the list of issue states that are considered "current".
   $states = variable_get('project_issue_availability_states', NULL);
   if (!$states) $states = _pia_default_states();
-  
-  $q = 'SELECT cfg.uid FROM {project_issue_availability_user_config} cfg
+  $states = array_values(array_filter($states));
+
+  $query = 'SELECT cfg.uid FROM {project_issue_availability_user_config} cfg
           LEFT JOIN (SELECT COUNT(assigned) AS issue_count, assigned FROM {project_issues} ';
-  if (count($states)) $q .= 'WHERE sid IN (' . implode(',', $states) . ') ';          
-  $q .= 'GROUP BY assigned) pi ON cfg.uid = pi.assigned 
+  if (count($states)) {
+    $query .= 'WHERE sid IN (' . db_placeholders($states) . ') ';
+    $args = $states;
+  }
+  $query .= 'GROUP BY assigned) pi ON cfg.uid = pi.assigned
           WHERE cfg.hiatus > %d OR pi.issue_count >= cfg.max';
-          
-  $r = db_query($q, time());
-  
-  while ($uid = db_result($r)) {
+  $args[] = time();
+  $result = db_query($query, $args);
+
+  while ($uid = db_result($result)) {
     _pia_unset($assignees, $node, $uid);
   }
   
@@ -224,18 +230,17 @@ function project_issue_availability_project_issue_assignees(&$assignees, $node)
       if ($term->vid == $issue_vocab) $tids[] = (int) $tid;
     }
     
-    // Unset assignees who have not selected the issue's terms
+    // Unset assignees who have not selected the issue's terms.
     if (count($tids)) {
-      $tids = implode(',', $tids);
       // This query assumes that users who have not selected any terms are
       // available for all issues.
-      $r = db_query("SELECT DISTINCT(uid) FROM {project_issue_availability_user_term} WHERE tid IN (%s)", $tids);
+      $result = db_query('SELECT DISTINCT(uid) FROM {project_issue_availability_user_term} WHERE tid IN (' . db_placeholders($tids) . ')', $tids);
       $valid_users = array();
-      while ($uid = db_result($r)) {
+      while ($uid = db_result($result)) {
         $valid_users[] = $uid;
       }
 
-      //Unset users not in the array of valid users.
+      // Unset users not in the array of valid users.
       foreach (array_keys($assignees) AS $uid) {
         if (!in_array($uid, $valid_users)) {
           _pia_unset($assignees, $node, $uid);
