Index: includes/alerts.inc.php
===================================================================
--- includes/alerts.inc.php	(revision 7719)
+++ includes/alerts.inc.php	(working copy)
@@ -604,8 +604,9 @@
   // Short circuit this check if the device is either disabled or ignored.
   if ($ignore && ($device['disable'] == 1 || $device['ignore'] == 1)) { return FALSE; }
 
-  $sql   = "SELECT COUNT(*) FROM `devices`";
-  $sql  .= " WHERE `device_id` = ?";
+  $sel   = "SELECT COUNT(*) FROM `devices` d";
+  $join = "";
+  $sql  = " WHERE d.`device_id` = ?";
   $param = array($device['device_id']);
 
   foreach ($attributes as $attrib)
@@ -614,24 +615,24 @@
     {
       case 'ge':
       case '>=':
-        $sql .= ' AND `' . $attrib['attrib'] . '` >= ?';
+        $sql .= ' AND d.`' . $attrib['attrib'] . '` >= ?';
         $param[] = $attrib['value'];
         break;
       case 'le':
       case '<=':
-        $sql .= ' AND `' . $attrib['attrib'] . '` <= ?';
+        $sql .= ' AND d.`' . $attrib['attrib'] . '` <= ?';
         $param[] = $attrib['value'];
         break;
       case 'gt':
       case 'greater':
       case '>':
-        $sql .= ' AND `' . $attrib['attrib'] . '` > ?';
+        $sql .= ' AND d.`' . $attrib['attrib'] . '` > ?';
         $param[] = $attrib['value'];
         break;
       case 'lt':
       case 'less':
       case '<':
-        $sql .= ' AND `' . $attrib['attrib'] . '` < ?';
+        $sql .= ' AND d.`' . $attrib['attrib'] . '` < ?';
         $param[] = $attrib['value'];
         break;
       case 'notequals':
@@ -638,7 +639,7 @@
       case 'isnot':
       case 'ne':
       case '!=':
-        $sql .= ' AND `' . $attrib['attrib'] . '` != ?';
+        $sql .= ' AND d.`' . $attrib['attrib'] . '` != ?';
         $param[] = $attrib['value'];
         break;
       case 'equals':
@@ -646,7 +647,7 @@
       case 'is':
       case '==':
       case '=':
-        $sql .= ' AND `' . $attrib['attrib'] . '` = ?';
+        $sql .= ' AND d.`' . $attrib['attrib'] . '` = ?';
         $param[] = $attrib['value'];
         break;
       case 'match':
@@ -653,7 +654,7 @@
       case 'matches':
         $attrib['value'] = str_replace('*', '%', $attrib['value']);
         $attrib['value'] = str_replace('?', '_', $attrib['value']);
-        $sql .= ' AND IFNULL(`' . $attrib['attrib'] . '`, "") LIKE ?';
+        $sql .= ' AND IFNULL(d.`' . $attrib['attrib'] . '`, "") LIKE ?';
         $param[] = $attrib['value'];
         break;
       case 'notmatches':
@@ -661,12 +662,12 @@
       case '!match':
         $attrib['value'] = str_replace('*', '%', $attrib['value']);
         $attrib['value'] = str_replace('?', '_', $attrib['value']);
-        $sql .= ' AND IFNULL(`'. $attrib['attrib'] . '`, "") NOT LIKE ?';
+        $sql .= ' AND IFNULL(d.`'. $attrib['attrib'] . '`, "") NOT LIKE ?';
         $param[] = $attrib['value'];
         break;
       case 'regexp':
       case 'regex':
-        $sql .= ' AND IFNULL(`' . $attrib['attrib'] . '`, "") REGEXP ?';
+        $sql .= ' AND IFNULL(d.`' . $attrib['attrib'] . '`, "") REGEXP ?';
         $param[] = $attrib['value'];
         break;
       case 'notregexp':
@@ -673,30 +674,35 @@
       case 'notregex':
       case '!regexp':
       case '!regex':
-        $sql .= ' AND IFNULL(`' . $attrib['attrib'] . '`, "") NOT REGEXP ?';
+        $sql .= ' AND IFNULL(d.`' . $attrib['attrib'] . '`, "") NOT REGEXP ?';
         $param[] = $attrib['value'];
         break;
       case 'in':
       case 'list':
-        $sql .= generate_query_values(explode(',', $attrib['value']), $attrib['attrib']);
+        $sql .= generate_query_values(explode(',', $attrib['value']), "d.".$attrib['attrib']);
         break;
       case '!in':
       case '!list':
       case 'notin':
       case 'notlist':
-        $sql .= generate_query_values(explode(',', $attrib['value']), $attrib['attrib'], '!=');
+        $sql .= generate_query_values(explode(',', $attrib['value']), "d.".$attrib['attrib'], '!=');
         break;
-      case 'include': // FIXME, what is this?
+      case 'include':
+      case 'includes': // FIXME, what is this?
         switch($attrib['attrib'])
         {
-          case 'group':
-
-          break;
+        case 'group':
+            $join .= " INNER JOIN `group_table` gt on d.`device_id`=gt.`device_id`";
+            $join .= " INNER JOIN `groups` g on g.`group_id`=gt.`group_id`";
+            $sql .= " AND g.`group_name` = ?";
+            $param[] = $attrib['value'];
+            break;
         }
         break;
     }
   }
 
+  $sql = $sel . $join . $sql;
   $device_count = dbFetchCell($sql, $param);
 
   if ($device_count == 0)