diff --git a/includes/handlers.inc b/includes/handlers.inc
index d4781d8a..b1ce1a31 100644
--- a/includes/handlers.inc
+++ b/includes/handlers.inc
@@ -1544,9 +1544,9 @@ function build_join($select_query, $table, $view_query) {
 
     // Tack on the extra.
     if (isset($this->extra)) {
-      if (is_array($this->extra)) {
-        $extras = array();
-        foreach ($this->extra as $info) {
+      $extras = array();
+      foreach ($this->extra as $info) {
+        if (is_array($info)) {
           $extra = '';
           // Figure out the table name. Remember, only use aliases provided
           // if at all possible.
@@ -1596,18 +1596,18 @@ function build_join($select_query, $table, $view_query) {
           }
           $extras[] = "$join_table$info[field] $operator $placeholder";
         }
-
-        if ($extras) {
-          if (count($extras) == 1) {
-            $condition .= ' AND ' . array_shift($extras);
-          }
-          else {
-            $condition .= ' AND (' . implode(' ' . $this->extra_type . ' ', $extras) . ')';
-          }
+        elseif (is_string($info)) {
+          $extras[] = $info;
         }
       }
-      elseif ($this->extra && is_string($this->extra)) {
-        $condition .= " AND ($this->extra)";
+
+      if ($extras) {
+        if (count($extras) == 1) {
+          $condition .= ' AND ' . array_shift($extras);
+        }
+        else {
+          $condition .= ' AND (' . implode(' ' . $this->extra_type . ' ', $extras) . ')';
+        }
       }
     }
 
@@ -1655,11 +1655,12 @@ function build_join($select_query, $table, $view_query) {
     $arguments = array();
 
     // Tack on the extra.
-    // This is just copied verbatim from the parent class, which itself has a bug: http://drupal.org/node/1118100
+    // This is just copied verbatim from the parent class, which itself has a
+    // bug: http://drupal.org/node/1118100
     if (isset($this->extra)) {
-      if (is_array($this->extra)) {
-        $extras = array();
-        foreach ($this->extra as $info) {
+      $extras = array();
+      foreach ($this->extra as $info) {
+        if (is_array($info)) {
           $extra = '';
           // Figure out the table name. Remember, only use aliases provided
           // if at all possible.
@@ -1688,18 +1689,18 @@ function build_join($select_query, $table, $view_query) {
           $extras[] = "$join_table$info[field] $operator $placeholder";
           $arguments[$placeholder] = $info['value'];
         }
-
-        if ($extras) {
-          if (count($extras) == 1) {
-            $condition .= ' AND ' . array_shift($extras);
-          }
-          else {
-            $condition .= ' AND (' . implode(' ' . $this->extra_type . ' ', $extras) . ')';
-          }
+        elseif (is_string($info)) {
+          $extras[] = $info;
         }
       }
-      elseif ($this->extra && is_string($this->extra)) {
-        $condition .= " AND ($this->extra)";
+
+      if ($extras) {
+        if (count($extras) == 1) {
+          $condition .= ' AND ' . array_shift($extras);
+        }
+        else {
+          $condition .= ' AND (' . implode(' ' . $this->extra_type . ' ', $extras) . ')';
+        }
       }
     }
 
