diff --git a/includes/handlers.inc b/includes/handlers.inc
index 2a33d5d..5eb9c81 100644
--- a/includes/handlers.inc
+++ b/includes/handlers.inc
@@ -1458,7 +1458,8 @@
  *   - left_field: The field we join to
  *   - type: either LEFT (default) or INNER
  *   - extra: An array of extra conditions on the join. Each condition is
- *     either a string that's directly added, or an array of items:
+ *     either a string that's directly added (potentially dangerous),
+ *     or an array of items:
  *   - - table: If not set, current table; if NULL, no table. If you specify a
  *       table in cached definition, Views will try to load from an existing
  *       alias. If you use realtime joins, it works better.
@@ -1467,7 +1468,8 @@
  *       @see SelectQueryInterface::addJoin()
  *   - - operator: defaults to =
  *   - - value: Must be set. If an array, operator will be defaulted to IN.
- *   - - numeric: If true, the value will not be surrounded in quotes.
+ *   - - numeric: OBSOLETE. From this version ignored. In earlier versions:
+ *       If true, the value will not be surrounded in quotes.
  *   - - extra type: How all the extras will be combined. Either AND or OR. Defaults to AND.
  */
 class views_join {
@@ -1505,7 +1507,6 @@
       if (!empty($this->definition['extra type'])) {
         $this->extra_type = strtoupper($this->definition['extra type']);
       }
-
       $this->type = !empty($this->definition['type']) ? strtoupper($this->definition['type']) : 'LEFT';
     }
   }
@@ -1547,55 +1548,59 @@
       if (is_array($this->extra)) {
         $extras = array();
         foreach ($this->extra as $info) {
-          $extra = '';
-          // Figure out the table name. Remember, only use aliases provided
-          // if at all possible.
-          $join_table = '';
-          if (!array_key_exists('table', $info)) {
-            $join_table = $table['alias'] . '.';
-          }
-          elseif (isset($info['table'])) {
-            // If we're aware of a table alias for this table, use the table
-            // alias instead of the table name.
-            if (isset($left) && $left['table'] == $info['table']) {
-              $join_table = $left['alias'] . '.';
+          if(is_array($info)) { //Code below only makes sence if extras are array
+            $extra = '';
+            // Figure out the table name. Remember, only use aliases provided
+            // if at all possible.
+            $join_table = '';
+            if (!array_key_exists('table', $info)) {
+              $join_table = $table['alias'] . '.';
+            }
+            elseif (isset($info['table'])) {
+              // If we're aware of a table alias for this table, use the table
+              // alias instead of the table name.
+              if (isset($left) && $left['table'] == $info['table']) {
+                $join_table = $left['alias'] . '.';
+              }
+              else {
+                $join_table = $info['table'] . '.';
+              }
+            }
+
+            // Convert a single-valued array of values to the single-value case,
+            // and transform from IN() notation to = notation
+            if (is_array($info['value']) && count($info['value']) == 1) {
+              if (empty($info['operator'])) {
+                $operator = '=';
+              }
+              else {
+                $operator = $info['operator'] == 'NOT IN' ? '!=' : '=';
+              }
+              $info['value'] = array_shift($info['value']);
+            }
+
+            if (is_array($info['value'])) {
+              // With an array of values, we need multiple placeholders and the
+              // 'IN' operator is implicit.
+              foreach ($info['value'] as $value) {
+                $placeholder_i = ':views_join_condition_' . $select_query->nextPlaceholder();
+                $arguments[$placeholder_i] = $value;
+              }
+
+              $operator = !empty($info['operator']) ? $info['operator'] : 'IN';
+              $placeholder = '( ' . implode(', ', array_keys($arguments)) . ' )';
             }
             else {
-              $join_table = $info['table'] . '.';
-            }
-          }
-
-          // Convert a single-valued array of values to the single-value case,
-          // and transform from IN() notation to = notation
-          if (is_array($info['value']) && count($info['value']) == 1) {
-            if (empty($info['operator'])) {
-              $operator = '=';
-            }
-            else {
-              $operator = $info['operator'] == 'NOT IN' ? '!=' : '=';
-            }
-            $info['value'] = array_shift($info['value']);
-          }
-
-          if (is_array($info['value'])) {
-            // With an array of values, we need multiple placeholders and the
-            // 'IN' operator is implicit.
-            foreach ($info['value'] as $value) {
-              $placeholder_i = ':views_join_condition_' . $select_query->nextPlaceholder();
-              $arguments[$placeholder_i] = $value;
+              // With a single value, the '=' operator is implicit.
+              $operator = !empty($info['operator']) ? $info['operator'] : '=';
+              $placeholder = ':views_join_condition_' . $select_query->nextPlaceholder();
+              $arguments[$placeholder] = $info['value'];
             }
 
-            $operator = !empty($info['operator']) ? $info['operator'] : 'IN';
-            $placeholder = '( ' . implode(', ', array_keys($arguments)) . ' )';
+            $extras[] = "$join_table$info[field] $operator $placeholder";
+          } elseif (is_string($info)) {
+            $extras[] = $info;
           }
-          else {
-            // With a single value, the '=' operator is implicit.
-            $operator = !empty($info['operator']) ? $info['operator'] : '=';
-            $placeholder = ':views_join_condition_' . $select_query->nextPlaceholder();
-            $arguments[$placeholder] = $info['value'];
-          }
-
-          $extras[] = "$join_table$info[field] $operator $placeholder";
         }
 
         if ($extras) {
@@ -1611,7 +1616,6 @@
         $condition .= " AND ($this->extra)";
       }
     }
-
     $select_query->addJoin($this->type, $right_table, $table['alias'], $condition, $arguments);
   }
 }